我的音频仅在满足某些条件时才播放。我想只在播放时增加音频音量,完成后音量应设置为默认系统音量。目前,我将音量设置为最大,这在播放音频时工作正常,但即使在音频完成后也能将系统音量保持在该水平。当说来电时,这会给用户带来非常糟糕的情况,它会使设备非常嘈杂。我很困惑要做到这一点。我还读到使用audioManager设置音量不是一个好的做法,它有副作用。
这是我试图控制音量的东西:
public void resume() {
AudioManager audioManager = (AudioManager) MobieFitSdkApplication.singleton().getSystemService(Context.AUDIO_SERVICE);
if (player != null) {
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
player.setVolume(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
}
}
那么,如何仅在播放音频时增加音量呢?
- 首先做一件事,获取系统的当前音量:
AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);
int volume_level= am.getStreamVolume(AudioManager.STREAM_MUSIC);
音频完成后或当您在那时释放媒体播放器时,设置音频播放前获得的默认音量。
am.setStreamVolume(AudioManager.STREAM_MUSIC,volume_level,0);
从上述答案中获得一些帮助,我已经实现了我在问题中提出的问题。
首先,我获得原始系统音量,一旦音频开始,我将系统音量设置为70%。
int originalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int maxDeviceVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float percent = 0.7f;
int seventyVolume = (int) (maxDeviceVolume*percent);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, seventyVolume, 0);
音频结束后,我将设备音量重置为原始音量。
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, originalVolume, 0);