我正在创建一个执行某些音频处理并实时播放的应用程序。我面临的问题是,当手机通过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;
}