Android Media Player setVolume问题

时间:2013-11-07 04:45:52

标签: android android-mediaplayer

到目前为止,我通过设置流量来设置MediaPlayer音量。我不想再这样做,因为它与用户设置混淆。我现在从SeekBar(0到100)获取值并执行valueFromSeekBar / 100以获得0到1之间的float以在MediaPlayer.setVolume(float, float)中使用。

问题是音量水平似乎没有变化。以下是我设置MediaPlayer

的方法
player.setAudioStreamType(AudioManager.STREAM_ALARM);
player.setLooping(true);
player.prepare();

float alarmVolume = AudioUtils.getMediaPlayerScaledVolume(100, alarm.volume);
if(NetworkUtils.isInCall(context)) {
    alarmVolume = IN_CALL_VOLUME;
}
mediaPlayer.setVolume(alarmVolume, alarmVolume); //I've even tried hardcoding 0.1f

无论我做什么,似乎我放在MediaPlayer.setVolume中的值都会被忽略,而流的音量(在本例中是警报流)会被使用。当流量设置为max时,最明显的是,我播放两个音频文件,一个带有MediaPlayer.setVolume(1f, 1f),另一个带有MediaPlayer.setVolume(0.01f, 0.01f)。它们几乎无法区分。我需要一种方法让我的用户能够将SeekBar定位在1并获得几乎听不到的声音,或者在100并且具有最大声音。这是可能的,还是我不得不回去搞乱溪流?

2 个答案:

答案 0 :(得分:0)

设置音量:

它会将最大值(100)设置为警报流。

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

mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
amanager.setStreamVolume(AudioManager.STREAM_ALARM, amanager.getStreamMaxVolume(AudioManager.STREAM_ALARM), AudioManager.FLAG_PLAY_SOUND);

答案 1 :(得分:0)

你可以拥有两个对象"播放器"和" mediaPlayer"?在这里,我刚刚使用了该API,它的工作原理可以预期。