在设备的媒体音量关闭时播放闹钟声音

时间:2017-12-17 18:21:55

标签: android android-mediaplayer android-audiomanager

我正在创建一种警报类型的应用程序。当我打开一个特定的活动时,我想播放具有警报音量级别设备的自定义声音。 如果设备的媒体音量已关闭且闹钟音量已打开,则应播放我的自定义声音。

我已尝试过什么:

 private void playAlarmSound(String fileName) {
    MediaPlayer p = new MediaPlayer();
    AudioManager audioManager= (AudioManager) getSystemService(AUDIO_SERVICE);
    try {
        AssetFileDescriptor afd = this.getAssets().openFd(fileName);
        int volumeLevel=audioManager.getStreamVolume(AudioManager.STREAM_ALARM);
        p.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
        p.setVolume(volumeLevel,volumeLevel);
        afd.close();
        p.prepare();
    } catch (Exception e) {
        e.printStackTrace();
    }
    p.start();
}

但是当媒体音量开启时,它正在播放声音但是当媒体音量关闭时它没有播放声音。

1 个答案:

答案 0 :(得分:1)

您正在读取闹钟音量级别,但这并不意味着音频将通过该流播放。

您需要在MediaPlayer上构建和设置AudioAttributes,表示USAGE_ALARM。

换句话说:

p.setAudioAttributes(
    new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_ALARM)
        .build()
);