電話がディープ スリープ モードのときに、音量アップ/ダウンのプレス イベントをキャッチしようとしています。私はいくつかの記事を読みましたが、ここで私がやったことです。
アクティビティonCreate
メソッドでは、WakeLock
PowerManager mgr = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
これを設定すると、画面がロックされていても、アプリケーションがイベントに応答することを読みました。また、Android マニフェストにアクセス許可を追加しました。
<uses-permission android:name="android.permission.WAKE_LOCK" />
次に、onCreate
メソッドでブロードキャストレシーバーを宣言します
VolReceiver volumeBroadcastReceiver = new VolReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.media.VOLUME_CHANGED_ACTION");
registerReceiver(volumeBroadcastReceiver, filter);
これはすべて非常にうまく機能し、アプリケーションはフォアグラウンドまたはバックグラウンドにありますが、電源ボタンを押して携帯電話の画面をロックし、アプリケーションのブロードキャストイベントの受信を停止しますPowerManager
。この問題を解決する必要があると思いますが、そうではありません. だから私を助けてください、いくつかの情報を提供してください。