4

私のアプリケーションでは、ボリューム キー イベントをキャプチャするために関数onKeyDown()と関数をオーバーライドしました。onKeyUp()アプリケーションのボリュームを制御するために、このようなイベントを使用します。音楽ストリームを使用してサウンドを再生します。このようなイベントを検出すると、カスタム トーストも表示します (Android で表示されるものに似ています)。このテイクで直面している問題は次のとおりです。

  1. Android は常にボリューム キー イベントでサウンドを再生します。
  2. その音は常に同じ強さで再生されます。

私が望むのは、デフォルトのサウンドが再生される強度 (再生されるストリームも) を次の方法で制御することです。可能。または、そのデフォルトのサウンドの再生を無効にして、設定したばかりの強度でカスタム サウンドを再生する方法。

4

2 に答える 2

9

実際にはサウンドは onKeyUp(...) で再生されるため、ボリューム キーに対して呼び出されたときにアクティビティでメソッドを単純にオーバーロードできます。

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) || (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) {
       return true;
    }
    return super.onKeyUp(keyCode, event);
}

これは私のために働いた:)

于 2011-06-16T12:47:09.593 に答える
0

私が同様の機能を書いていたのは奇妙ですが、ストリームの音量を上げるとAndroidが大きな音を出すようです。

am.setStreamVolume(AudioManager.STREAM_MUSIC, progress,AudioManager.FLAG_PLAY_SOUND);

それが私のアプリケーションで使用したものです。am は、次のように記述して取得できる AudioManager のインスタンスです。

AudioManager am = (AlarmManager) getSystemService(AUDIO_SERVICE);

サウンドを無効にするには、 AudioManager.FLAG_PLAY_SOUND を「0」値に置き換えて、無効にする必要があります。

これらのサウンドを AudioManager で置き換えることができるかどうかはわかりませんが、onKeyDown メソッド内で MediaPlayer を使用してこれらのカスタム サウンドを再生できます。

お役に立てれば。

于 2011-01-27T20:52:19.147 に答える