- 締切済み
Androidアプリで本体の音量変更イベント
何故、こんな事を考えているの?と不思議がる人もいるかと思いますが質問させてください。 Androidアプリを作っています。 少々カスタマイズしたAndroid機器で、音量変更ボタンに”ある機能”を同時起動するようにしています。そして、アプリ側から本体の音量変更ボタンを押した(音量up)状態と同じ挙動をさせたいと思っています。 音量を設定するには、AudioManagerクラスのsetStreamVolumeメソッドがありますが、音量変更のハードボタンを押して読み出されるイベントと同じ事をさせるには、どうしたらいいのでしょうか? 何卒よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
>このonKeyDownイベント自体をアプリから発生させる事はできないのでしょうか? イベントだけを発生させるのですか? こういうことですか? KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_VOLUME_DOWN); dispatchKeyEvent(event); Activityでこんな具合にKeyEventを作成してdispatchKeyEventすれば、イベントをディスパッチできます。そういうことでしょうか。
ボリュームボタンを押したときの処理を実装したい、ということでしょうか。 ハードウェアキーを押したときの処理というのは、ViewのonKeyDown/onKeyUpを利用して行えます。メソッド内で、発生したイベントのkeyCodeがKEYCODE_VOLUME_UP/KEYCODE_VOLUME_DOWNならば、ボリュームのアップ・ダウンのキーが押されたことがわかります。こんな感じですね。 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { // ここでボリュームダウンの処理 } if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { // ここでボリュームアップの処理 } return super.onKeyDown(keyCode, event); }
補足
ご回答ありがとうございます。 しかし、ハードキーを押されたことを検知する事を行いたいわけではなく、このonKeyDownイベント自体をアプリから発生させる事はできないのでしょうか?
お礼
トライしてみましたができませんでした。 そもそもの音量マークも出ませんでした。 もし、何かヒントになることがあれば是非お願いします。
補足
>イベントだけを発生させるのですか? そうです。 やってみます。貴重な情報です。 結果はまた報告します。 ありがとうございました。