1

今まではMediaPlayer、ストリームの音量を設定することで自分の音量を設定していました。ユーザー設定を台無しにするので、もうやりたくありません。SeekBar(0 から 100)から値を取得し、で使用する 0 から 1 の間の値valueFromSeekBar / 100を取得します。floatMediaPlayer.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が無視され、代わりにストリームのボリューム (この場合はアラーム ストリーム) が使用されるようです。ストリームの音量が最大に設定されているときに最も顕著になり、1 つはMediaPlayer.setVolume(1f, 1f)で、もう 1 つは で、2 つのオーディオ ファイルを再生しますMediaPlayer.setVolume(0.01f, 0.01f)。それらは互いにほとんど見分けがつきません。SeekBarユーザーがを 1 に配置してかろうじて聞こえる音、または 100 に配置して最大の音を出せるようにする方法が必要です。これは可能ですか、それともストリームをいじる必要がありますか?

4

2 に答える 2

0

"player" と "mediaPlayer" という 2 つのオブジェクトがありますか? ここではその API を使用しましたが、期待どおりに動作します。

于 2015-05-01T13:31:22.160 に答える
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);
于 2013-11-07T04:59:24.657 に答える