繁体   English   中英

android代码在设备上的作用与模拟器不同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM