web-dev-qa-db-fra.com

Comment accéder au bip sonore par défaut d'Android?

Je voudrais qu'un bouton émette un bip pour indiquer qu'il a été enfoncé. Je veux savoir comment utiliser le son par défaut Android bip (comme lorsque vous ajustez le volume de la sonnerie), au lieu d'importer mon propre fichier de musique mp3 ou d'utiliser ToneGenerator?

53
user812892
public void playSound(Context context) throws IllegalArgumentException, 
                                              SecurityException, 
                                              IllegalStateException,
                                              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) {
        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
        // Uncomment the following line if you aim to play it repeatedly
        // mMediaPlayer.setLooping(true);
        mMediaPlayer.prepare();
        mMediaPlayer.start();
    }
}

J'ai trouvé une autre réponse:

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

le crédit revient à https://stackoverflow.com/a/9622040/737925

74
Mohammad Ersan

... utilisez la valeur par défaut Android bip sonore (comme lorsque vous ajustez le volume de la sonnerie) ...

Sur mon Cyanogen 7 Nexus One et mon ancien stock T-Mobile Pulse Mini (ce dernier de mémoire), d'après ce que je peux entendre, c'est exactement le bip par défaut lors du changement de volume:

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

Vous semblez demander une alternative à ToneGenerator, mais je pense que cela vous donne exactement ce que vous voulez en deux lignes.

Voici quelques autres sons probables ToneGenerator que j'ai essayés et qui ne correspondaient pas (les deux premiers pourraient être utiles comme substituts au bip de volume):

     // 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);
76
ahcox

le moyen le plus simple est d'utiliser une instance de la classe ToneGenerator:

    //declaration
    ToneGenerator toneG;
    //using any where`
    if(val>=taux_max)
    {
        taux_text.setTextColor(warnning_col);
        toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); //200 is duration in ms
    }
1
amine.b