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?
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
... 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);
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
}