2017-11-02 1 views
1

マイコードネームワンアプリは、ユーザーが画面をタップするとバックグラウンドでオーディオ再生を行います。私が使用するオーディオはmp3です。ユーザが画面部品が変更と私はplaySoundメソッドにtrueを渡すタップコードネーム1のiOSでオーディオ再生を停止できません

public static void playSound(boolean stop) { 

sound.reset(); // The input stream needs to go back to the beginning 
Media myClip = MediaManager.createMedia(sound, "audio/mp3",() -> { 
       // If there is no order to stop playback, we keep playing when it has completed (looping) 
       playSound(false); 
      }); 

      if (!stop) { 
       myClip.play(); 
      } else { 
       myClip.cleanup(); 
      } 
} 

そう編:ここでは、私はメディアの再生を使用する方法です。 Androidでは、現在の再生は、iPhone 4

アプリが最小化されますとき(中央のボタンが押された)ことに注意してください、私は私がやるMediacleanup()を呼び出さない場合でも再生が(停止してiOSの上ではない停止しますアプリが最小化されるとAndroidは再生を止める)。

iPhoneで再生を停止するにはどうすればよいですか?

すべてのヘルプ感謝、

+1

は、新しいメディアインスタンスを毎回作成し、唯一の新しいことを停止しないでくださいメディアを再生する代わりに? –

+0

私に正しい方向を指してくれてありがとうShai。だから私は 'myClip'をさらに上に宣言しましたが、それだけでは不十分でした。私はメディアを停止させる可能性なしに野生の中にいるのを防ぐために 'createMedia'に' if(myClip == null ||!myClip.isPlaying()) 'のみを持たなければなりませんでした。私はそれがAndroid上で働いたという事実に気を散らしました! – HelloWorld

答えて

1

@Shaiが最終的に使用されるコードであるので、ここで正しい方向に私を指摘:

Media myClip = null; 

public static void playSound(boolean stop) { 

sound.reset(); // The input stream needs to go back to the beginning 



    /** 
    * If the media is playing we don't create it 
    * otherwise we would have several media in the wild 
    * that could not be stopped 
    */ 
if (myClip == null || !myClip.isPlaying()) { 

     myClip = MediaManager.createMedia(sound, "audio/mp3",() -> { 
       // If there is no order to stop playback, we keep playing when it has completed (looping) 
       playSound(false); 
      }); 
    } 

      if (!stop) { 
       myClip.play(); 
      } else { 
       myClip.cleanup(); 
      } 
} 
関連する問題