Изменить громкость в Android?
Можно ли изменить громкость мультимедиа? и как? Я использовал это до сих пор:
setVolumeControlStream(AudioManager.STREAM_MUSIC);
Но у вас есть стрелка и вы хотите изменить громкость носителя, а не громкость звонка.
Так может кто-нибудь показать мне, как просто изменить объем носителя в onCreate()
, и позже я исправлю ссылку.
Ответы
Ответ 1
Правильный метод использования будет 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
и получаете целочисленное число назад, которое представляет... ну максимальное допустимое значение для тома.
Ответ 2
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);
}
}
Ответ 3
Вы можете использовать следующий код для обработки тома с помощью 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
}
});
Ответ 4
Предоставление 0 - в флагах позволяет избежать визуального и звукового индикатора.
Это хорошо, когда вы реализуете свой собственный звуковой бар и индикатор, и вы не хотите, чтобы андроид добавлял что-нибудь.
Ответ 5
Используйте adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, flags);
http://developer.android.com/reference/android/media/AudioManager.html#adjustStreamVolume(int, int, int)
Ответ 6
final SeekBar volumnRocker=findViewById(R.id.seekBar);
volumnRocker.setMax(maxVolumn);
volumnRocker.setProgress(currentVolumn);
volumnRocker.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
volumnProgress=progress;
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,volumnProgress,0);
}
});
в настоящее время он изменяет громкость audioManger с помощью панели поиска. Как я могу изменить прогресс панели поиска с помощью кнопки регулировки громкости?