ボリュームアップ/ダウンキーを押したときのデフォルトのアクションを防止するアプリの作成を検討しており、試して時間を無駄にするかどうかを確認するためにいくつかの入力を取得したいと考えています.
セットアップは次のとおりです。
Samsung Galaxy S3 を持っています。私は音楽を聴くのが好き。電話がロックされていてポケットに入っているときに、再生中の曲の音量を意図せずに変更することがよくあります。
最初は簡単だと思いました。音量キーの整数値を取得するための onKeyDown() メソッドの単純なオーバーライドをテストしました。すぐに、これは自分の電話をロックせず、そのアプリのみを開いたままにしておく場合にのみ機能することに気づきました.
次に、サービスに関する記事をいくつか見つけましたが、Activity のサブセットではなく、onKeyDown(); を実装していないため、これも私のニーズには不十分だと思います。私が間違っていない限り、ウェイクロックは実際に電話を起こしたり、ロックを解除したりしますか?
私は今あきらめるべきですか、それとも実際に達成可能ですか?
(実際には、この 1 つの機能のためにアプリに £3 を支払う必要がないということなので、可能である必要があります。笑)
注: 4.2.1 の実行
Android では初めてですが、Java ではありません。
スティーブ。
編集:ちょっと考えただけですが、Activityを自分のクラスに拡張し(そしてonKeyDownをオーバーライドし)、サービスで静的インスタンスとしてインスタンス化した場合、電話がロックされている間、そのカスタムアクティビティは持続しますか?
Edit2: FLAG_SHOW_WHEN_LOCKEDの使用を提案するこの SO 投稿を見つけました。家に帰ったらこれを見始めますが、提案やアドバイスはまだ受け付けています:D
編集 3:
ここでプロットが失われ始めたら教えてください...
放送受信機を使用して、ACTION_SCREEN_OFF フラグをリッスンします。それが呼び出されたら、(onKeyDown() オーバーライドを使用して) カスタム アクティビティを作成し、それを FLAG_SHOW_WHEN_LOCKED に設定してロック画面を引き継ぎます (画面がオフになっているので気にしません)。次に、レシーバーは ACTION_SCREEN_OFF をリッスンします。呼び出された場合、画面を表示する前にアクティビティを破棄します (または、画面がちらついても気にしません)。(一時停止して、ロック解除を検出した場合にのみ強制終了することもできます)。
また、@StoneBird にここまでたどり着いてくれたことに感謝します。