2017-02-08 41 views
0

我想开发一个简单的测试项目,当我点击按钮时播放声音,并在播放声音几分钟后自动停止。Android如何完美地删除MediaPlayer

下面的代码片段:

代码播放:

if (mPlayer != null) mPlayer = null; 

mPlayer = MediaPlayer.create(this, R.raw.shush_v2); 

mPlayer.setLooping(true); 

mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
    @Override 
    public void onPrepared(MediaPlayer mediaPlayer) { 
      mediaPlayer.start(); 
    } 
}); 

代码停止:

if(mPlayer != null && mPlayer.isPlaying()) {    
    mPlayer.stop(); 

    mPlayer.reset(); 

    mPlayer.release(); 

    mPlayer = null; 
} 

但有时我仍然能听到两个声音后打我已经停止了这个声音。

以前曾见过这种行为吗?

回答

0
public class PlayerApp extends Activity { 
    Button btnStart; 
    MediaPlayer mediaPlayer = null; 

    // Use the handler to stop the Player, after specific time 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_player_app); 
     btnStart = (Button)findViewById(R.id.btnStart); 
     btnStart.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) 
      { 
       // Initialize Player and start it. 
       // Call the Handler same time. 
       mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.test); 
       mediaPlayer.start(); 
       startHandler(); 
      } 
     }); 
    } 
    private void startHandler() 
    { 
     final Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       // if Player is not null, then Stop it and Reset Null. 
       if(mediaPlayer!=null) 
       { 
        mediaPlayer.stop(); 
        mediaPlayer = null; 

       } 
      } 
     }, 2500); 
    } 

} 
+0

嗨Jaspreet 我检查你的答案,并尝试过,但同样 这里充满了我的代码。 –

+0

https://github.com/SelfnessAid/BabyShusher---Android/blob/master/app/src/main/java/babyshusher/babyshusher/com/babyshusher/MainActivity.java –

+0

请让我知道我的错在哪里 –