java – How do I access Android's default beep sound?-ThrowExceptions

Exception or error:

I would like to make a button play a beep sound to indicate it has been pressed. I want to know how to use the default android beep sound (like when you adjust the ringer volume), instead of importing my own mp3 music file or using ToneGenerator?

How to solve:
public void playSound(Context context) throws IllegalArgumentException, 
                                              IOException {

    Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    MediaPlayer mMediaPlayer = new MediaPlayer();
    mMediaPlayer.setDataSource(context, soundUri);
    final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

    if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
        // Uncomment the following line if you aim to play it repeatedly
        // mMediaPlayer.setLooping(true);

I found another answer:

try {
    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);;
} catch (Exception e) {

credit goes to


… use the default android beep sound (like when you adjust the
ringer volume) …

On my Cyanogen 7 Nexus One and my old stock T-Mobile Pulse Mini (the latter from memory), as far as I can hear, this is is exactly the default beep sound on volume change:

     final ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);

You seem to be asking for an alternative to ToneGenerator, but I think it gives you exactly what you want in two lines.

Here are some other likely ToneGenerator sounds I tried that were not a match (the first two might be useful as alternates to the volume beep):

     // Double beeps:     tg.startTone(ToneGenerator.TONE_PROP_ACK);
     // Double beeps:     tg.startTone(ToneGenerator.TONE_PROP_BEEP2);
     // Sounds all wrong: tg.startTone(ToneGenerator.TONE_CDMA_KEYPAD_VOLUME_KEY_LITE);


the easy way is to use instance of ToneGenerator classe:

    ToneGenerator toneG;
    //using any where`
        toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); //200 is duration in ms

Leave a Reply

Your email address will not be published. Required fields are marked *