在设备的媒体音量关闭时播放警报声

问题描述 投票:2回答:1

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

我已经尝试了什么:

 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();
}

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

android android-mediaplayer android-audiomanager
1个回答
1
投票

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

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

换一种说法:

p.setAudioAttributes(
    new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_ALARM)
        .build()
);
© www.soinside.com 2019 - 2024. All rights reserved.