56 votes

Comment puis-je accéder à Android par défaut du bip sonore?

Je voudrais faire un bouton de jouer un bip sonore pour indiquer qu'il a été pressé. Je veux savoir comment faire pour utiliser la valeur par défaut d'android bip sonore (comme lorsque vous réglez le volume de la sonnerie), au lieu d'importer mon propre fichier de musique mp3 ou à l'aide de ToneGenerator?

83voto

ahcox Points 1781

... utiliser la valeur par défaut d'android bip sonore (comme lorsque vous réglez l' le volume de la sonnerie) ...

Sur mon Cyanogen 7 Nexus One et mon vieux stock de T-Mobile Pulse Mini (le dernier de la mémoire), pour autant que je peux entendre, c'est exactement le défaut bip sonore sur le changement de volume:

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

Vous semblez être en demandant une alternative à l' ToneGenerator, mais je pense qu'il vous donne exactement ce que vous voulez en deux lignes.

Voici quelques autres susceptibles ToneGenerator sons que j'ai essayé qui n'ont pas été un match (les deux premiers pourraient être utiles à titre de suppléants pour le volume du bip):

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

77voto

MoshErsan Points 5119
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);
        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 va à http://stackoverflow.com/a/9622040/737925

1voto

mostaelectron Points 51

le plus simple est d'utiliser l'instance de ToneGenerator classe:

    //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
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X