Как получить доступ к звуковому сигналу по умолчанию Android?
Я хотел бы, чтобы кнопка воспроизводила звуковой сигнал, чтобы указать, что он был нажат. Я хочу знать, как использовать звуковой сигнал android по умолчанию (например, когда вы регулируете громкость звонка), вместо импорта моего собственного музыкального файла mp3 или использования ToneGenerator?
3 ответа:
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
... используйте звуковой сигнал 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);