【问题标题】:Playing sound as Media/Alarm/Ringtone?播放声音作为媒体/闹钟/铃声?
【发布时间】:2018-06-23 15:40:22
【问题描述】:

我的应用会播放闹钟。在 Android 声音设置中,此声音由“响铃音量”滑块而不是“闹钟音量”滑块控制。如何更改“闹钟音量”控制的声音?

 public void doAlarm(){ 

    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
    r = RingtoneManager.getRingtone(getApplicationContext(), notification);

    if (!r.isPlaying())
        r.play();
     }

我曾尝试使用 setAudioAttributes,但结果是“媒体音量”滑块控制了音量:

public void doAlarm(){

    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
    MediaPlayer mp = MediaPlayer.create(getApplicationContext(), notification);
    mp.setAudioAttributes(new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM).build());
    mp.setLooping(true);
    mp.start();
    }

我错过了什么?

【问题讨论】:

    标签: java android ringtone ringtonemanager


    【解决方案1】:

    我找到了解决方案:不使用.create() 方法。而是使用.setDataSource().prepare()。代码如下:

    public void ringAlarm() {
    
        Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        if (alarmUri == null) {
            alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        }
    
        if (alarmUri == null) {
            Log.e("ringAlarm" , "alarmUri null. Unable to get default sound URI");
            return;
        }
    
        MediaPlayer mp = new MediaPlayer();
        // This is what sets the media type as alarm
        // Thus, the sound will be influenced by alarm volume
        mp.setAudioAttributes(new AudioAttributes.Builder()
                                 .setUsage(AudioAttributes.USAGE_ALARM).build());
    
        try {
            mp.setDataSource(getApplicationContext(), alarmUri);
            mp.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        // To continuously loop the alarm sound
        mp.setLooping(true);
        mp.start();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多