Я хотел бы, чтобы кнопка издавала звуковой сигнал, чтобы указать, что она была нажата. Я хочу знать, как использовать звук звукового сигнала Android по умолчанию (например, при настройке громкости звонка) вместо импорта моего собственного музыкального файла mp3 или использования ToneGenerator?
Как получить доступ к звуковому сигналу Android по умолчанию?
Ответы (4)
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();
}
}
Я нашел другой ответ:
try {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
r.play();
} catch (Exception e) {
e.printStackTrace();
}
кредит идет на https://stackoverflow.com/a/9622040/737925
mMediaPlayer.setLooping(true);
Почему вы хотите, чтобы этот звук зацикливался??
- person Simon Forsberg; 25.04.2012
mMediaPlayer.start()
?
- person ahcox; 02.05.2012
AudioManager.STREAM_AlARM
экземпляров на AudioManager.STREAM_NOTIFICATION
. См. AudioManager
документы для других вариантов, но здесь уведомление кажется правильным выбором.
- person ahcox; 02.05.2012
RingtoneManager.TYPE_NOTIFICATION
воспроизводит длинный полифонический сигнал о прибытии нового текстового сообщения. Я не вижу варианта, который заставит OP изменить стандартную громкость звукового сигнала.
- person ahcox; 02.05.2012
... использовать звуковой сигнал 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);
ToneGenerator.TONE_PROP_BEEP
.
- person ahcox; 10.02.2015
Вы можете получить доступ к звуковому сигналу Android по умолчанию через класс ToneGenerator.
import android.media.AudioManager;
import android.media.ToneGenerator;
ToneGenerator toneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, 200);
toneGenerator.startTone(ToneGenerator.TONE_CDMA_EMERGENCY_RINGBACK);
Дополнительная информация о том, как они звучат: https://developer.android.com/reference/android/media/ToneGenerator и https://www.youtube.com/watch?v=HVu7K9W1_BM
простой способ - использовать экземпляр класса 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
}