我正在制作一个执行一些音频处理并实时播放的应用程序。我面临的问题是,当手机通过 USB 电缆连接到计算机时,应用程序工作得很好,但是当电缆断开时,音频开始跳过并弹出。在断开电缆的情况下,如果我打开屏幕,则应用程序会恢复正常行为,但一旦屏幕关闭,就会再次出现问题。
对我来说,这听起来像是 CPU 进入省电模式并在连接 USB 电缆或屏幕打开时保持唤醒状态,所以我尝试通过获取PARTIAL_WAKE_LOCK
. 然而,这并没有解决问题。
有人可以告诉我可能是什么问题吗?我很确定我的唤醒锁代码没问题。有没有办法诊断 CPU 是否要休眠?
保持屏幕打开对我来说不是一个选择。
private static PowerManager.WakeLock wakeLock;
public static void acquire(Context ctx) {
Log.d(Utils.LOG_TAG, "Trying to acquire wakelock.");
if (wakeLock != null)
wakeLock.release();
PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Wakelock");
wakeLock.acquire(30 * 60 * 1000);
Log.d(Utils.LOG_TAG, "Partial wakelock acquired.");
}
public static void release() {
if (wakeLock != null) {
wakeLock.release();
Log.d(Utils.LOG_TAG, "Wakelock released.");
} else
Log.d(Utils.LOG_TAG, "No wakelock to release.");
wakeLock = null;
}
public static boolean getStatus() {
if (wakeLock == null)
return false;
else
return true;
}