【问题标题】:Android alarm clock sound using the alarm volume setting?Android闹钟声音使用闹钟音量设置?
【发布时间】:2017-05-20 01:09:15
【问题描述】:

我正在尝试为 Android 构建自定义类型的闹钟,并且我已经设置了一个设置页面以允许用户选择他们想要使用的闹钟声音。他们选择后,将其放入 SharedPreferences 中,非常简单。

我遇到的问题是如何在使用 RingtoneManager.TYPE_ALARM 时播放他们选择的闹钟,以便音量基于系统警报声音而不是系统通知音量。

我已经尝试了多种方法来让它使用闹钟音量,但似乎没有任何效果。

1.

Uri currentRingtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
currentRingtone = RingtoneManager.getRingtone(context, currentRingtoneUri);
currentRingtone.play();

2.

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String syncConnPref = sharedPref.getString("alarm_new_alarm_sound", null);

if (syncConnPref != null) {
  RingtoneManager.getRingtone(this, Uri.parse(syncConnPref)).play();
}

我似乎找不到任何其他直接播放实际闹钟音量的方法。网上的一切看起来都只是播放铃声。

如果有人对使用闹钟音量有任何见解,我将不胜感激。

【问题讨论】:

    标签: android audio alarmmanager alarm ringtonemanager


    【解决方案1】:

    有点旧的线程,但也许这会对将来的某人有所帮助。
    我目前正在自己​​制作闹钟,我正在这样做:

    int audioFile = prefs.getInt("audioFile", R.raw.yourFile);
    MediaPlayer mp = new MediaPlayer();
    
    try {
        mp.reset();
    
        mp.setDataSource(PlayerActivity.this,    
        Uri.parse("android.resource://your.package.here/" + audioFile));
    
        mp.setAudioStreamType(STREAM_ALARM);
        mp.setLooping(true);
        mp.prepare();
        mp.start();
    }
    
    catch (...) {
        ...
    }
    

    对我来说效果很好。

    【讨论】:

    • setAudioStreamType 已弃用 >= Lollipop。改用这个:mp.setAudioAttributes(AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM).build())
    猜你喜欢
    • 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
    相关资源
    最近更新 更多