2012-09-24 3 views
11

Wenn ein Benutzer die Lautstärketaste nach oben oder unten drückt, ist es möglich, sie in meinem Rundfunkempfänger zu erkennen? Ich brauche den vollständigen Code.Android BroadCastReceiver für Lautstärketaste nach oben und unten

Hier ist meine Absicht Filter

IntentFilter filter = new IntentFilter(); 
filter.addAction("android.media.VOLUME_CHANGED_ACTION"); 

und meine onReceive Methode

ist
public void onReceive(Context arg0, Intent intent) { 
     KeyEvent ke = (KeyEvent)intent.getExtras().get(Intent.EXTRA_KEY_EVENT); 
     if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) { 
       System.out.println("I got volume up event"); 
     }else if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { 
       System.out.println("I got volume key down event"); 
     } 
    } 

Es gibt mir ein null KeyEvent ... irgendeine Idee?

Antwort

11

Die Absicht hat kein zusätzliches EXTRA_KEY_EVENT. Es hat ein extra android.media.EXTRA_VOLUME_STREAM_VALUE, das das neue Volume enthält.

int volume = (Integer)intent.getExtras().get("android.media.EXTRA_VOLUME_STREAM_VALUE"); 

Wenn Sie den alten Wert speichern, können Sie ableiten, ob die Lautstärke erhöht oder verringert wurde.

+0

danke für Ihre Antwort, aber es gibt mir die gleiche Lautstärke Wert = 1 wenn Telefon ist leise oder vibrieren oder auf Rufton Lautstärke ist auf den ersten Schritt. Wie kann ich feststellen, Telefon ist leise oder vibrieren oder kein erster Wert? –

+1

Mit dem AudioManager können Sie feststellen, ob Sie sich im Vibrations-, Ruhe- oder Normalmodus befinden: http://stackoverflow.com/questions/2048427/how-can-i-detect-whether-the-android-phone-in-silent -mode-programmatisch – Theus

+0

Bei Lautstärkeänderung bei Max startete ich die App aber wenn Musikplayer auf Gerät läuft dann möchte ich meine App nicht über Volumenänderung hinaus öffnen.Alle Hilfe –