Я везде искал, как воспроизвести мелодию звонка / звук будильника в Android.
Я нажимаю кнопку и хочу воспроизвести мелодию звонка / сигнал будильника. Я не мог найти простой и понятный образец. Да, я уже смотрел исходный код будильника ... но это непросто, и я не могу его скомпилировать.
Я не могу заставить это работать:
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(this, alert);
final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
player.setAudioStreamType(AudioManager.STREAM_ALARM);
player.setLooping(true);
player.prepare();
player.start();
}
Я получаю такую ошибку:
04-11 17:15:27.638: ERROR/MediaPlayerService(30): Couldn't open fd for
content://settings/system/ringtone
Итак .. пожалуйста, если кто-нибудь знает, как включить мелодию звонка / будильник по умолчанию, дайте мне знать.
Я предпочитаю не загружать файлы. Просто включите мелодию звонка по умолчанию.
android
android-emulator
Federico
источник
источник
Если пользователь никогда не устанавливал будильник на своем телефоне, TYPE_ALARM может вернуть null. Вы можете учесть это с помощью:
источник
null
неверным, даже если он не указывает на допустимый звук. Вы должны проверить возвращаемое значениеRingtoneManager.getRingtone()
дляnull
вместо / такжеВот как я поступил:
Он похож на способ markov00, но использует MediaPlayer вместо Ringtone, который предотвращает прерывание других звуков, таких как музыка, которые могут уже воспроизводиться в фоновом режиме.
источник
Ваш пример - это в основном то, что я использую. Однако он никогда не работает на эмуляторе, потому что по умолчанию эмулятор не имеет никаких мелодий звонка и
content://settings/system/ringtone
не разрешает ничего воспроизводимого. Он отлично работает на моем настоящем телефоне.источник
Это отлично работает:
источник
Для будущих гуглеров: используйте
RingtoneManager.getActualDefaultRingtoneUri()
вместоRingtoneManager.getDefaultUri()
. Судя по названию, он вернет фактический uri, поэтому вы можете свободно использовать его. Из документацииgetActualDefaultRingtoneUri()
:Между тем
getDefaultUri()
говорит это:источник
Вы можете поместить файл MP3 в папку / sdcard с помощью DDMS, перезапустить эмулятор, затем открыть приложение «Медиа», перейти к файлу MP3, нажать и удерживать его и выбрать «Использовать в качестве мелодии звонка для телефона».
Ошибка исчезла!
Изменить: такая же проблема со звуками уведомлений (например, для SMS) решена с помощью приложения Ringdroid
источник
источник
AlarmService
взялось?Копирование аудиофайла на SD-карту эмулятора и выбор его через медиаплеер в качестве мелодии звонка по умолчанию действительно решает проблему.
источник
Вы можете использовать этот пример кода:
источник
Может быть, уже поздно, но для всех, кто захочет, есть новое простое решение этого вопроса.
В котлине
Приведенный выше код будет воспроизводить мелодию по умолчанию, но если вы хотите будильник по умолчанию, измените
в
источник
Вот пример кода:
источник
mediaPlayer
вместоmp
.