Изменение громкости мультимедиа в Android?
можно ли изменить громкость мультимедиа? и как? Я использовал это до сих пор:
setVolumeControlStream(AudioManager.STREAM_MUSIC);
но есть seekbar и хотите изменить громкость мультимедиа, а не громкость звонка.
Так может кто-то показать мне, как просто изменить громкость мультимедиа на onCreate() и я исправляю панель поиска позже.
5 ответов
правильный метод для использования будет 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 Если вы не хотите воспроизводить звук, но дисплей тост с текущим значением. Польза должна получить обратную связь tho. Не имеет значения, слышно это или нет. визуальный.
чтобы получить максимальное допустимое значение для данного потока, вы просто называете getStreamMaxVolume() на AudioManager и получить целое число, которое представляет ... ну максимальное допустимое значение для объема.
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);
    }
}
для обработки Тома с помощью панели поиска можно использовать следующий код:
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)
