Я хотел бы, чтобы кнопка воспроизводила звуковой сигнал, чтобы указать, что он был нажат. Я хочу знать, как использовать звуковой сигнал по умолчанию для Android (например, при настройке громкости звонка) вместо импорта собственного mp3 файла или с помощью ToneGenerator?
Как получить доступ к звуковым сигналам по умолчанию Android по умолчанию?
Ответ 1
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();
}
}
Я нашел еще один ответ:
try {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
r.play();
} catch (Exception e) {
e.printStackTrace();
}
кредит отправляется fooobar.com/questions/47616/...
Ответ 2
... использовать звуковой сигнал по умолчанию для Android (например, при настройке громкость звонка)...
На моем Cyanogen 7 Nexus One и моем старом запасе T-Mobile Pulse Mini (последний из памяти), насколько я могу слышать, это точно звуковой сигнал по умолчанию при изменении громкости:
final ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);
tg.startTone(ToneGenerator.TONE_PROP_BEEP);
Кажется, вы просите альтернативу ToneGenerator
, но я думаю, что это дает вам именно то, что вы хотите в двух строках.
Вот несколько других возможных ToneGenerator
звуков, которые я пробовал, которые не соответствовали (первые два могут быть полезны в качестве альтернативы громкому звуку):
// 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);
Ответ 3
простой способ - использовать экземпляр класса 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
}