I have been looking everywhere how to play a ringtone/alarm sound in Android.
I press a button and I want to play a ringtone/alarm sound. I could not find an easy, straightforward sample. Yes, I already looked at Alarm clock source code... but it is not straightforward and I cannot compile it.
I cannot make this work:
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();
}
I get this error:
04-11 17:15:27.638: ERROR/MediaPlayerService(30): Couldn't open fd for
content://settings/system/ringtone
So.. please if somebody knows how to play a default ringtone/alarm let me know.
I prefer not to upload any file. Just play a default ringtone.
Copying an audio file to the sd card of the emulator and selecting it via media player as the default ringtone does indeed solve the problem.
You can push a MP3 file in your /sdcard folder using DDMS, restart the emulator, then open the Media application, browse to your MP3 file, long press on it and select "Use as phone ringtone".
Error is gone!
Edit: same trouble with notification sounds (e.g. for SMS) solved using Ringdroid application
This is the way I've done:
It is similar to markov00's way, but uses MediaPlayer instead of Ringtone which prevents interrupting other sounds, like music, that might already be playing in the background.
You can simply play a setted ringtone with this:
Here's some sample code: