通話中にデバイスが顔の近くにある場合、PROXIMITY_SCREEN_OFF_WAKE_LOCK を使用して画面をオフにしたいと考えています。ただし、一部のデバイスで画面がオフになるとすぐに onPause() および onStop() が呼び出されるため、呼び出しが中断されます。たとえば、HTC One では機能しましたが、Samsung Galaxy S6 では機能しませんでした。中断を防ぐために別のサービスで呼び出しを処理する必要がありますか、それとも必要なものを取得する簡単な方法はありますか?
可能であれば、通話接続処理を別の Service に任せたくありません。それは大変な労力になるからです。どのような方法が一般的ですか?Skype や WhatsApp などのことを考えると、珍しい使用例ではないと思います...
これは、ウェイクロックを取得する方法です。
int field = 0x00000020;
try {
field = PowerManager.class.getClass().getField("PROXIMITY_SCREEN_OFF_WAKE_LOCK").getInt(null);
} catch (Throwable ignored) {
}
proximityWakeLock = pm.newWakeLock(field, "My Tag1");
proximityWakeLock.acquire();