播放 - >停止 - >播放 - >停止触摸音频

时间:2012-05-08 06:00:33

标签: android audio media-player

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

 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 ...我需要修理或实施它?

2 个答案:

答案 0 :(得分:0)

请查看MediaPlayer的{​​{3}}。

请注意:

  

一旦处于Stopped状态,在调用State Diagramprepare()将MediaPlayer对象再次设置为 Prepared 状态之前,无法开始播放。

您的代码中似乎也有一个错误,即您拨打mp.start()两次,并且永远不会调用mp1.start()

答案 1 :(得分:0)

首先取消这段代码......

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

然后每次启动mp之前,释放前一个并将setDataSource释放到音乐播放器对象,准备它......

像这样编辑你的代码......

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();
           }

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