オーディオ処理を行い、リアルタイムで再生するアプリケーションを作成しています。私が直面している問題は、電話が 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;
}