音量ボタンを引き継ぐだけでなく、Androidで音量変更のイベントを聞く方法はありますか?
私が見つけた唯一の機能はここにありますが、ボリュームコントロールが消えた後にのみ機能します。
すべてのデバイスに音量ボタンがあるわけではありません。音量ダイアログが消えた後ではなく、音量の変化が発生したらすぐにキャプチャする必要があります。
音量ボタンを引き継ぐだけでなく、Androidで音量変更のイベントを聞く方法はありますか?
私が見つけた唯一の機能はここにありますが、ボリュームコントロールが消えた後にのみ機能します。
すべてのデバイスに音量ボタンがあるわけではありません。音量ダイアログが消えた後ではなく、音量の変化が発生したらすぐにキャプチャする必要があります。
ブロードキャスト レシーバーの VOLUME_CHANGED_ACTION を使用してから、AudioManager を使用して現在の音量を取得します。
<receiver android:name="VolumeChangeReceiver" >
<intent-filter>
<action android:name="android.media.VOLUME_CHANGED_ACTION" />
</intent-filter>
</receiver>
使用できます: registerMediaButtonEventReceiver (ComponentName eventReceiver) コンポーネントを MEDIA_BUTTON インテントの唯一のレシーバーとして登録します。
// in your activity.
MediaButtonReceiver receiver = new MediaButtonReceiver();
// in onCreate put
registerMediaButtonEventReceiver(receiver);
class MediaButtonReceiver implements BroadcastReceiver {
void onReceive(Intent intent) {
KeyEvent ke = (KeyEvent)intent.getExtra(Intent.EXTRA_KEY_EVENT);
if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) {
//action when volume goes down
}
if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) {
//action when volume goes up
}
}
}
//In both onStop and onPause put :
unregisterMediaButtonEventReceiver(receiver);
ここで行っているのは、ACTION_MEDIA_BUTTON を処理する BroadcastReceiver を定義することです。ブロードキャストが押されたものを取得し、それに基づいて動作する原因となったキーイベントを含む EXTRA_KEY_EVENT を使用します。