メディアの音量を変更できますか?そしてどうやって?私はこれまでこれを使用しました:
_setVolumeControlStream(AudioManager.STREAM_MUSIC);
_
ただし、シークバーがあり、呼び出し音量ではなくメディアの音量を変更したい。
だから誰かがonCreate()
でメディアボリュームを変更する方法を教えてくれて、後でシークバーを修正することができます。
使用する正しい方法は、AudioManager
で setStreamVolume になります。こんな感じ
_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を取得する必要があります。可聴か視覚かは関係ありません。
指定されたストリームの最大有効値を取得するには、AudioManager
でgetStreamMaxVolume()
を呼び出し、ボリュームの最大有効値を表す整数を取得します。
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);
}
}
次のコードを使用して、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
}
});
フラグに0を指定すると、視覚および音声インジケータを取得しなくなります。独自のオーディオバーとインジケーターを実装していて、Androidに何かを追加したくない場合に適しています。
adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, flags);
を使用します
http://developer.Android.com/reference/Android/media/AudioManager.html#adjustStreamVolume(int 、int、int)