[英]android code acting differently on device than emulator
您好,我开发了一个简单的应用程序,如果布尔值是true,则应播放声音,然后在完成时再播放另一种声音;如果布尔值是false,则仅播放第二种声音,并且在avd上都可以正常运行,但是在设备上运行时,它不会第一个声音完成,然后跳到第二个
这是在onCreate
setContentView(screen);//pl
if(msg==true) {//boolean set from other activity
playInfo();
}else if(msg==false){
playSound();
}
}
这是开始播放的播放信息方法,但过一秒钟它会跳到电话上的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
}
});
}
再次,这在模拟器上完美运行,但在设备上却不完美,为什么他们的行为有所不同,以及如何解决该问题的想法?
该活动在设备上设置为横向模式,这导致该活动在启动后很快被重绘,因此它被销毁并以布尔值设置为false重新开始,但是在模拟器上并没有发生,它只是一次绘制活动横向模式通过使用2个不同的媒体播放器解决了该问题,并且只播放了另一个声音,而不是重新编写代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.