Как получить доступ к звуковому сигналу Android по умолчанию? - PullRequest
53 голосов
/ 24 июня 2011

Я бы хотел, чтобы кнопка воспроизводила звуковой сигнал, указывающий, что она нажата.Я хочу знать, как использовать звуковой сигнал андроида по умолчанию (например, при настройке громкости звонка) вместо импорта собственного музыкального mp3-файла или использования ToneGenerator?

Ответы [ 3 ]

76 голосов
/ 02 мая 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);
74 голосов
/ 14 июля 2011
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

1 голос
/ 22 февраля 2013

Самый простой способ - использовать экземпляр 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
    }
...