0

我做了一个项目,其中两个音频使用触摸两个不同的文本视图播放。这是一个文本视图的简单代码

 tv.setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event)   
   {  
       if(event.getAction() == MotionEvent.ACTION_DOWN)  
       {  
           if( v == findViewById( R.id.CustomFontText ))
           {


               if (mp != null && mp.isPlaying()) {
                   mp.stop();
               }
               else
               {
                   mp.start();
               }


               if (mp1 != null && mp1.isPlaying()) {
                   mp1.pause();
               }
                mp.start();


       }  

   }
    return false;  
   }

这里mpmp1是两个媒体播放器。tv=textview.当tv触摸mp播放。并且当tv再次触摸它停止时,如果我再次触摸它停止后tv它不会再次播放音频。但我想在这个过程中的每次触摸中让它Play -->Stop-->Play-->Stop....continuous............我需要修复它或实施它?

4

2 回答 2

0

请看一下状态MediaPlayer

请注意:

一旦处于 Stopped 状态,播放将无法开始,直到prepare()或被prepareAsync()调用以将 MediaPlayer 对象再次设置为Prepared状态。

您的代码中似乎也有一个错误,您调用mp.start()了两次,并且mp1.start()从未调用过。

于 2012-05-08T06:10:41.220 回答
0

先把这段代码去掉.....

if (mp1 != null && mp1.isPlaying()) {
               mp1.pause();
           }
            mp.start();

然后每次在启动mp之前,释放上一个并将setDataSource设置为Music player对象,准备它...

像这样更改您的代码...

if (mp != null && mp.isPlaying()) {
               mp.stop();
           }
           else
           {
               mp.release(); // this will bring mp to idle state
               mp.setDataSource(MEDIA_PATH + File.separator + songs.get(position));
               mp.prepare();
               mp.start();
           }

我认为现在它肯定会工作......

于 2012-05-08T06:15:27.583 回答