53

メディアの音量を変更できますか? そしてどうやって?私はこれまでこれを使用しました:

setVolumeControlStream(AudioManager.STREAM_MUSIC);

ただし、シークバーがあり、呼び出し音の音量ではなく、メディアの音量を変更したい。

それで、誰かがメディアの音量を変更する方法を教えてくれませんかonCreate()。後でシークバーを修正します。

4

5 に答える 5

89

使用する適切な方法は、 のsetStreamVolumeですAudioManager。このように見えるかもしれません

AudioManager audioManager = 
    (AudioManager)getSystemService(Context.AUDIO_SERVICE);

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                             [int value],
                             [if desired a flag]);

フラグの使用例は、音量を設定するときにビープ音を鳴らして、ユーザーが結果を聞くことができるようにすることです。そのためのフラグはAudioManager.FLAG_PLAY_SOUND.

AudioManager.FLAG_SHOW_UIサウンドを再生するのではなく、現在の値でトーストを表示する場合に使用できます。使用にはフィードバックが必要です。聴覚的か視覚的かは関係ありません。

指定されたストリームの最大有効値を取得するには、 を呼び出しgetStreamMaxVolume()AudioManager、ボリュームの最大有効値を表す整数を取得します。

于 2010-11-14T20:23:01.503 に答える
37
private AudioManager audio;

onCreate の内部:

audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

onKeyDown をオーバーライドします。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_VOLUME_UP:
        audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
        return true;
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
        return true;
    default:
        // return false;
        // Update based on @Rene comment below:
        return super.onKeyDown(keyCode, event);
    }
}
于 2011-03-27T00:22:00.490 に答える
4

フラグに 0 を指定すると、ビジュアルおよびオーディオ インジケータの取得が回避されます。これは、独自のオーディオ バーとインジケーターを実装し、Android に何も追加させたくない場合に適しています。

于 2014-05-31T15:52:34.343 に答える
1

使用するadjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, flags);

http://developer.android.com/reference/android/media/AudioManager.html#adjustStreamVolume(int , int, int)

于 2010-11-14T18:45:27.860 に答える