0

2 つの異なるテキストビューでタッチを使用して 2 つのオーディオを再生するプロジェクトを作成しました。これは1つのテキストビューの簡単なコードです

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

ここmpに とmp12 つのメディア プレーヤーがあります。tv=textview.タッチプレイtv時。mpそして、tvもう一度タッチすると停止します、、、もう一度タッチすると停止した後、再びオーディオを再生しません.しかし、このプロセス内でこれをすべてのタッチで作成したいtv....Play -->Stop-->Play-->Stop....continuousまたはそれを実装しますか?

4

2 に答える 2

0

まず、このコードの塊を取り除きます.....

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

それから毎回mpを起動する前に、前のものを解放し、DataSourceをMusicプレーヤーオブジェクトに設定し、準備します...

このようにコードを変更してください...

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 に答える
0

の状態図をご覧くださいMediaPlayer

ご注意ください:

Stopped 状態になると、MediaPlayer オブジェクトを再度Prepared状態に設定するために呼び出されるまでprepare()、再生を開始することはできません。prepareAsync()

mp.start()また、コードに2 回呼び出すバグがあり、mp1.start()呼び出されないようです。

于 2012-05-08T06:10:41.220 に答える