Wie greife ich auf den Standard-Piepton von Android zu?

Lesezeit: 4 Minuten

Benutzer-Avatar
Benutzer812892

Ich möchte, dass eine Taste einen Piepton abspielt, um anzuzeigen, dass sie gedrückt wurde. Ich möchte wissen, wie ich den standardmäßigen Android-Piepton verwenden kann (z. B. wenn Sie die Klingellautstärke anpassen), anstatt meine eigene MP3-Musikdatei zu importieren oder ToneGenerator zu verwenden?

… verwenden Sie den Standard-Android-Piepton (wie wenn Sie die Klingeltonlautstärke einstellen) …

Auf meinem Cyanogen 7 Nexus One und meinem alten T-Mobile Pulse Mini (letzteres aus dem Gedächtnis) ist dies, soweit ich hören kann, genau der Standard-Piepton bei Lautstärkeänderung:

     final ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);
     tg.startTone(ToneGenerator.TONE_PROP_BEEP);

Sie scheinen nach einer Alternative zu fragen ToneGeneratoraber ich denke, es gibt Ihnen genau das, was Sie in zwei Zeilen wollen.

Hier sind einige andere wahrscheinlich ToneGenerator Sounds, die ich ausprobiert habe und die nicht zusammenpassten (die ersten beiden könnten als Alternative zum Lautstärke-Piep nützlich sein):

     // 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);

  • Am besten verwenden Sie einen kontinuierlichen Ton wie die von ToneGenerator.TONE_DTMF_0 bis ToneGenerator.TONE_DTMF_S, da sonst der Piepton unterbrochen und basierend auf der ausgewählten Tonbeschreibung erneut gestartet wird. Dies geschieht, wenn Ihre DauerMs (als Parameter in StartTone (int ToneType, Int DauerMs) übergeben) größer als die Dauer des Gesamttons ist.

    – Ungalcye

    10. Februar 2015 um 15:13 Uhr


  • Hallo @ungalcrys, ich bin im Moment nicht in der Lage, dies einfach zu überprüfen, aber der Fragesteller hat nach “Standard-Android-Piepton (wie wenn Sie die Klingeltonlautstärke einstellen)” gefragt. Als ich getestet habe, war das genau das, was ich oben angegeben habe: ToneGenerator.TONE_PROP_BEEP.

    – ahcox

    10. Februar 2015 um 16:17 Uhr


  • Hatte jemand Probleme mit dem S6 Edge? Der ToneGenerator funktioniert im S6 einwandfrei, aber der S6 Edge gibt mir nichts.

    – GR-Gesandter

    12. Juni 2015 um 17:53 Uhr

  • @GREnvoy Hallo, das ist interessant. Ich denke, es sollte jedoch eine eigene Frage sein. Oder noch besser, eine Supportanfrage an Samsung.

    – ahcox

    12. Juni 2015 um 18:37 Uhr

Benutzer-Avatar
Mohammed Ersan

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();
    }
}

Ich habe eine andere Antwort gefunden:

try {
    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
    r.play();
} catch (Exception e) {
    e.printStackTrace();
}

Gutschrift geht an https://stackoverflow.com/a/9622040/737925

  • Ich habe diesen Code verwendet und mich geärgert, dass sich der Ton wiederholte. Jetzt sehe ich das Problem: mMediaPlayer.setLooping(true); Warum willst du, dass dieser Sound loopt?

    – Simon Forsberg

    25. April 2012 um 15:25 Uhr

  • @SimonAndréForsberg hängt vom Wunsch des Entwicklers ab

    – Mohammad Ersan

    26. April 2012 um 21:01 Uhr

  • Spielt es eine Rolle, dass mMediaPlayer den Gültigkeitsbereich verlässt und für die Garbage-Collection verfügbar ist, bevor die Wiedergabe des Sounds beendet ist, oder wird der Sound bereits an Komponenten auf niedrigerer Ebene weitergeleitet, die sicherstellen, dass die Wiedergabe von beendet wird mMediaPlayer.start() Anruf?

    – ahcox

    2. Mai 2012 um 13:25 Uhr

  • Beachten Sie, dass dieser Code den Tonpegel für den Alarmstrom überprüft und darauf spielt. Für den Fall des Posters möchten Sie tauschen AudioManager.STREAM_AlARM Instanzen für AudioManager.STREAM_NOTIFICATION. Sehen AudioManager docs für andere Optionen, aber eine Benachrichtigung scheint hier die richtige Wahl zu sein.

    – ahcox

    2. Mai 2012 um 13:49 Uhr

  • Für mich, RingtoneManager.TYPE_NOTIFICATION spielt den langen polyphonen „Neue SMS eingetroffen“-Ton. Ich sehe keine Option, mit der das OP seine Standardlautstärke geändert bekommt.

    – ahcox

    2. Mai 2012 um 14:45 Uhr

Sie können über die ToneGenerator-Klasse auf den Standard-Beeb-Sound von Android zugreifen.

import android.media.AudioManager;
import android.media.ToneGenerator;
ToneGenerator toneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, 200);
toneGenerator.startTone(ToneGenerator.TONE_CDMA_EMERGENCY_RINGBACK);

Weitere Informationen zum Klang: https://developer.android.com/reference/android/media/ToneGenerator und
https://www.youtube.com/watch?v=HVu7K9W1_BM

  • Genial, danke. Für einen Moment dachte ich, ich müsste 3498734 Codezeilen schreiben, damit die App piept.

    – Pookie

    27. Juli 2020 um 22:47 Uhr

Der einfache Weg ist die Verwendung einer Instanz der ToneGenerator-Klasse:

    //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
    }

1168730cookie-checkWie greife ich auf den Standard-Piepton von Android zu?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy