0
こんにちは私はブール値が真であればサウンドを再生し、ブール値が偽であれば2番目のサウンドを再生するだけの完全なサウンドを再生しますAVDのが、デバイス上で実行すると、これはのonCreateエミュレータとは異なるデバイスで動作するアンドロイドコード
setContentView(screen);//pl
if(msg==true) {//boolean set from other activity
playInfo();
}else if(msg==false){
playSound();
}
}
でこれの再生を開始するが、第2の後にプレイインフォ方式である第二
にジャンプする前に、最初の音が完了してみましょうdoesintそれは電話でplaysoundメソッドにジャンプしますが、avdで完全に動作します
private void playInfo(){
mp = MediaPlayer.create(this, R.raw.msg);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
msg = false;
playSound();
}
});
}
これは、これは、デバイスなぜ彼らは異なる動作をし、それが解決されるだろうか上の任意のアイデアでしょう上のエミュレータ上で完璧に動作しなく再びplaysound方法
private void playSound() {
mp = MediaPlayer.create(this, song);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
playSound();//loop the sound
}
});
}
のですか?
デバイスとエミュレータとの違いは何ですか? –
mp.stop()を追加します。両方のAPIのonCompletion内でmp.release()を呼び出します。 – thepace