如果使用MediaPlayer播放,直接setVolume即可,经测试静音也能有声音,但是用户调节媒体音量到0就不行了,他是在媒体音量的基础上做了百分比

1
2
MediaPlayer mediaPlayer = MediaPlayer.create(this, raws[ringId]);
mediaPlayer.setVolume(1.0f, 1.0f);

比如某个需要提醒用户的时候,

1
2
3
4
5
6
7
8
9
10
11
audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
//获取媒体音量最大值
int streamMaxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
//获取系统当前媒体音量,用于闹钟关闭的时候 恢复成用户自己设置的音量
int streamVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, streamMaxVolume, 0);

//业务逻辑写在这,播放声音什么的

//完了再将媒体音量还原成用户设置的
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, streamVolume , 0);