2013-04-26 2 views
3

В моем приложении я пытаюсь установить том при воспроизведении аудиоклипа на максимальный уровень, но он, похоже, не влияет. Я должен вручную настроить громкость на максимальный уровень. Вот мой код:Установите громкость на максимум в Android

MediaPlayer mp = new MediaPlayer(); 
mp.setVolume(1, 1); 

ответ

8

AudioManager

int origionalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0); 
+1

неправильно. Он меняет настройку пользователя –

+0

Его работа для меня –

+0

Итак, в чем цель setVolume для MediaPlayer? – AndroidDev

4

Использовать этот

она с для общего объема

AudioManager mgr = (AudioManager) appContext.getSystemService(Context.AUDIO_SERVICE); 
     int valuess = 9;//range(0-15) 
mgr.setStreamVolume(AudioManager.STREAM_MUSIC, valuess, 0); 

это для левого права в то время как текущая песня играет ...

AudioTrack m = (AudioTrack) appContext.getSystemService(Context.AUDIO_SERVICE); 
m.setStereoVolume(leftVolume, rightVolume); 

это работает для меня.

+0

Я получаю java.lang.ClassCastException: android.media.AudioManager не может быть передан в android.media. AudioTrack, когда я попробую ваше решение для текущей песни. любая идея почему? – SjoerdvGestel

+0

проверить импорт, в который вы импортировали неправильный аудио-менеджер .... –

+0

У вас есть дважды тот же getSystemService (Context.AUDIO_SERVICE), который был сначала выбран как AudioManager (правильно), а второй выбран как AudioTrack (неправильно) Предполагаю, что вторая служба должна быть чем-то другим, кроме AUDIO_SERVICE (или даже другой метод) –

1

Использование AudioManager позволяет контролировать громкость медиаплеера.

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0); 

также от MediaPlayer

public void setVolume (float leftVolume, float rightVolume) 

, например, вы можете использовать этот метод как,

int maxVolume = 100; 
float log1=(float)(Math.log(maxVolume-currVolume)/Math.log(maxVolume)); 
mp.setVolume(1-log1); 
+0

как получить currVolume? – Fer

Смежные вопросы