我有一个应用程序,可以在按下按钮时播放声音。这些声音连续循环,长度在 10-20 秒之间。
一切都完全正常工作,但是每当我通过按下电源按钮(锁定按钮)锁定手机时,MediaPlayer 就会开始滞后,循环不再无缝或连续,因此每个循环之间都有明显的间隙。
我正在使用 ogg 文件,当屏幕打开时,没有明显的间隙。
这导致相信我需要一个唤醒锁来确保 CPU 保持打开状态,但是即使使用它,当手机锁定时,媒体播放器仍然存在明显且显着的滞后。
这就是我所说的唤醒锁。以前有没有人遇到过同样的问题?
// Create a new MediaPlayer to play this sound
mp = MediaPlayer.create(this, resId);
mp.setLooping(true);
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"MyWakelockTag");
wakeLock.acquire();
mp.start();
您是否将媒体播放器用作服务?如果是这样:我遇到了类似的问题(媒体播放器在锁定屏幕模式下无法立即触发 oncompletelistener),我通过为活动和媒体播放器设置唤醒锁来解决此问题
//service:
mPlayer = new MediaPlayer();
mPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
//activity:
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myWakeLock");
wakeLock.acquire();