Звук будильника Android с использованием настройки громкости будильника?

Я пытаюсь создать собственный тип будильника для 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();
}

Кажется, я не могу найти каких-либо других прямых способов воспроизвести реальный звук громкости будильника. Все онлайн смотрит только на проигрывание рингтонов.

Я был бы очень признателен, если бы кто-нибудь имел представление об использовании громкости будильника.

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 (...) {
    ...
}

Это работает нормально для меня.

Другие вопросы по тегам