プロが教えるわが家の防犯対策術!

何故、こんな事を考えているの?と不思議がる人もいるかと思いますが質問させてください。

Androidアプリを作っています。
少々カスタマイズしたAndroid機器で、音量変更ボタンに”ある機能”を同時起動するようにしています。そして、アプリ側から本体の音量変更ボタンを押した(音量up)状態と同じ挙動をさせたいと思っています。

音量を設定するには、AudioManagerクラスのsetStreamVolumeメソッドがありますが、音量変更のハードボタンを押して読み出されるイベントと同じ事をさせるには、どうしたらいいのでしょうか?

何卒よろしくお願いします。

A 回答 (2件)

>このonKeyDownイベント自体をアプリから発生させる事はできないのでしょうか?



イベントだけを発生させるのですか?
こういうことですか?

KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_VOLUME_DOWN);
dispatchKeyEvent(event);

Activityでこんな具合にKeyEventを作成してdispatchKeyEventすれば、イベントをディスパッチできます。そういうことでしょうか。

この回答への補足

>イベントだけを発生させるのですか?
そうです。

やってみます。貴重な情報です。
結果はまた報告します。

ありがとうございました。

補足日時:2011/07/05 14:57
    • good
    • 0
この回答へのお礼

トライしてみましたができませんでした。
そもそもの音量マークも出ませんでした。
もし、何かヒントになることがあれば是非お願いします。

お礼日時:2011/07/07 17:04

ボリュームボタンを押したときの処理を実装したい、ということでしょうか。



ハードウェアキーを押したときの処理というのは、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イベント自体をアプリから発生させる事はできないのでしょうか?

補足日時:2011/07/05 11:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!