2015-09-04 90 views
0

当我点击一个按钮,一个音频播放,但如果在我的应用程序中播放另一个音频剪辑的第一个并没有停止,但两个音频剪辑同时运行。如果我多次单击按钮,音频文件的多个实例运行,则存在此问题。我想一次仅运行一个音频文件。如果我单击另一个音频文件,则应自动停止以前的音频文件。Android:音频问题

的java文件代码

button_audio2.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      mysound = MediaPlayer.create(MyActivity.this, R.raw.audio2); 
      if(mysound.isPlaying()){ 
       button_audio2.setText("play"); 
       mysound.pause();} 
      else{ 
       button_audio2.setText("pause"); 
       mysound.start(); 
       mysound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer mp) { 
         mp.release(); 
        } 
       }) 
       ; 
      } 
     } 
    }); 
+0

'MediaPlayer'对象具有'isPlaying'和'stop'方法。 – Michael

+0

isPlaying()或setOnCompletionListener()? – 18446744073709551615

+0

isPlaying在我的代码中没有工作..我再次粘贴了我的代码...但它不起作用。 –

回答

0

至于在帖子中说,每次按钮单击此创建一个新的MediaPlayer

你可以做你的代码稍加改变,以测试是否mysound已经初始化。

button_audio2.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     if (mysound == null){ 
      mysound = MediaPlayer.create(MyActivity.this, R.raw.audio2); 
      mysound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       @Override 
       public void onCompletion(MediaPlayer mp) { 
        mp.release(); 
        mysound = null; 
       } 
      }); 
     } 
     if(mysound.isPlaying()){ 
      button_audio2.setText("play"); 
      mysound.pause(); 
     } 
     else{ 
      button_audio2.setText("pause"); 
      mysound.start(); 
     } 
    } 
}); 
+0

通过这段代码现在解决了这个问题......但是它引起了新的问题..音频完成后,我再次尝试通过点击按钮应用程序崩溃来运行音频。异常是:java.lang.IllegalStateException at android.media.MediaPlayer.isPlaying(Native Method) at com.baswal.neeraj.myfirstapp.MyActivity $ 2.onClick(MyActivity.java:72) at android.view.View。 performClick(View.java:4761) –

+0

我编辑了代码,添加了'mysound = null',这将重新创建一个新的MediaPlayer,如果你不想发布mediaplayer,你必须添加'mp.reset();'而不是'mp.release();'和'mysound = null;' – Hacketo

+0

@neerajbaswal如果我的回答帮助了你,随时接受它 – Hacketo