Saya telah mencari kemana-mana cara memainkan nada dering / suara alarm di Android.
Saya menekan sebuah tombol dan saya ingin memutar nada dering / alarm. Saya tidak dapat menemukan sampel yang mudah dan langsung. Ya, saya sudah melihat kode sumber jam Alarm ... tetapi tidak langsung dan saya tidak dapat menyusunnya.
Saya tidak bisa membuat ini berhasil:
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();
}
Saya mendapatkan kesalahan ini:
04-11 17:15:27.638: ERROR/MediaPlayerService(30): Couldn't open fd for
content://settings/system/ringtone
Jadi .. tolong jika ada yang tahu cara memainkan nada dering / alarm default, beri tahu saya.
Saya memilih untuk tidak mengunggah file apa pun. Mainkan saja nada dering default.
android
android-emulator
Federico
sumber
sumber
Jika pengguna tidak pernah menyetel alarm di ponselnya, TYPE_ALARM dapat mengembalikan null. Anda dapat menjelaskan ini dengan:
sumber
null
meskipun tidak mengarah ke suara yang valid. Anda harus menguji nilai kembalianRingtoneManager.getRingtone()
untuknull
sebagai gantinya / jugaIni adalah cara yang saya lakukan:
Ini mirip dengan cara markov00, tetapi menggunakan MediaPlayer daripada Ringtone yang mencegah interupsi suara lain, seperti musik, yang mungkin sudah diputar di latar belakang.
sumber
Contoh Anda pada dasarnya adalah apa yang saya gunakan. Namun, ini tidak pernah berfungsi pada emulator, karena emulator tidak memiliki nada dering apa pun secara default, dan
content://settings/system/ringtone
tidak menyelesaikan apa pun yang dapat dimainkan. Ini berfungsi dengan baik di ponsel saya yang sebenarnya.sumber
Ini berfungsi dengan baik:
sumber
Untuk calon karyawan Google: gunakan
RingtoneManager.getActualDefaultRingtoneUri()
sebagai penggantiRingtoneManager.getDefaultUri()
. Sesuai dengan namanya, itu akan mengembalikan uri yang sebenarnya, jadi Anda bisa dengan bebas menggunakannya. Dari dokumentasigetActualDefaultRingtoneUri()
:Sementara itu
getDefaultUri()
mengatakan ini:sumber
Anda dapat mendorong file MP3 di folder / sdcard Anda menggunakan DDMS, restart emulator, kemudian buka aplikasi Media, telusuri file MP3 Anda, tekan lama padanya dan pilih "Use as phone ringtone".
Kesalahan hilang!
Edit: masalah yang sama dengan suara notifikasi (misalnya untuk SMS) diselesaikan menggunakan aplikasi Ringdroid
sumber
sumber
AlarmService
asalnyaMenyalin file audio ke kartu sd emulator dan memilihnya melalui pemutar media sebagai nada dering default memang menyelesaikan masalah.
sumber
Anda dapat menggunakan kode contoh ini:
sumber
Mungkin terlambat tetapi ada solusi sederhana baru untuk pertanyaan ini untuk siapa pun yang menginginkannya.
Di kotlin
Kode di atas akan memainkan nada dering default tetapi jika Anda ingin alarm default, ubah
untuk
sumber
Berikut beberapa contoh kode:
sumber
mediaPlayer
bukanmp
.