MediaPlayer stop playing after about 5 seconds

后端 未结 2 593
时光取名叫无心
时光取名叫无心 2020-12-06 00:35

I\'m currently developing a simple game and now it\'s time to add music and sound effect. I tried using MediaPlayer, just like described here: Android media pla

相关标签:
2条回答
  • 2020-12-06 01:19

    You should create an asychronous code to let media player play what he has to play in the background. Something like this:

    final MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.nomarxia);
    
    
                    Handler mHandler = new Handler();
                    mHandler.postDelayed(new Runnable() {
                        public void run() {
                            mp.start();
                        }
                    }, mp.getDuration());
    
    0 讨论(0)
  • 2020-12-06 01:20

    I had this problem too. It was probably due to having the MediaPlayer-object only existing within a method.

    For example:

    //ERROR, stops after 5 sec!
    public static void playMusic(int id)
    {
      MediaPlayer mediaPlayer = MediaPlayer.create(context, id);
      mediaPlayer.setLooping(true);
      mediaPlayer.start();
    }
    

    It is most likely that the garbage collector will come in and clean away the MediaPlayer-object.

    This fixed the error for me:

    //mediaPlayer-object will not we cleaned away since someone holds a reference to it!
    private static MediaPlayer mediaPlayer;
    
    public static void playMusic(int id)
    {
        mediaPlayer = MediaPlayer.create(context, id);
        mediaPlayer.setLooping(true);
        mediaPlayer.start();
    }
    
    0 讨论(0)
提交回复
热议问题