web-dev-qa-db-ja.com

Androidでメディアの音量を変更しますか?

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

_setVolumeControlStream(AudioManager.STREAM_MUSIC);
_

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

だから誰かがonCreate()でメディアボリュームを変更する方法を教えてくれて、後でシークバーを修正することができます。

50
carefacerz

使用する正しい方法は、AudioManagersetStreamVolume になります。こんな感じ

_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_を使用できます。使用はフィードバックthoを取得する必要があります。可聴か視覚かは関係ありません。

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

85
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);
    }
}
38
trgraglia

次のコードを使用して、SeekBarを使用してボリュームを処理できます。

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

SeekBar sbVolumeBooster = (SeekBar) findViewById(R.id.sbVolumeBooster);
sbVolumeBooster.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); 
sbVolumeBooster.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));  

sbVolumeBooster.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
{
    @Override
    public void onStopTrackingTouch(SeekBar arg0) 
    {
    }

    @Override
    public void onStartTrackingTouch(SeekBar arg0) 
    {
    }

    @Override
    public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) 
    {
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                progress, 0);  // 0 can also be changed to AudioManager.FLAG_PLAY_SOUND
    }
});
8
Xar E Ahmer

フラグに0を指定すると、視覚および音声インジケータを取得しなくなります。独自のオーディオバーとインジケーターを実装していて、Androidに何かを追加したくない場合に適しています。

4
Yoni

adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, flags);を使用します

http://developer.Android.com/reference/Android/media/AudioManager.html#adjustStreamVolume(int 、int、int)

1
Computerish