嗨,我开发了一个简单的应用程序,如果布尔值为真,则播放声音,然后在完成时播放另一个声音,或者如果布尔值为假则播放第二个声音,并且它在avd上完美运行但在设备上运行时它不会让第一个声音在跳到第二个
之前完成这是在onCreate
setContentView(screen);//pl
if(msg==true) {//boolean set from other activity
playInfo();
}else if(msg==false){
playSound();
}
}
这是开始播放的播放信息方法,但是在一秒之后它跳到了手机上的playound方法,但在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();
}
});
}
这是playound方法
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
}
});
}
这再次在模拟器上运行完美,但在设备上没有,为什么它们会采取不同的行为以及如何解决它的任何想法?
答案 0 :(得分:0)
活动在设备上设置为横向模式,这导致活动在启动后非常快速地重绘,因此它开始被破坏并再次启动,布尔值设置为false但是在模拟器上这不会发生它只是绘制了一旦处于横向模式,活动就会通过使用2个不同的媒体播放器来解决问题,而只是播放第一个短音而不是重写代码。