Service auf Hardwaretasten reagieren lassen

Mugendon

Mugendon

Stammgast
134
Edit: Threadtitel angepasst.

Hallo erstmal, bin ja jetzt ganz neu hier :)

Ich habe angefangen mich in die Entwicklung von Android Apps einzuarbeiten und will jetzt mal erste für mich nützliche Apps schreiben. Allerdings fehlt mir gerade eine bestimmte Sache:

Nun würde ich gerne auf die Benutzung von den Hardwaretasten reagieren (in meinem Fall lauter/leiser) und das nicht nur, während ich mich in einer App befinde, sondern die ganze Zeit. In einer App wäre das mit dem KeyListener kein Problem gewesen, bei einem Service kriege ich das aber nicht wirklich hin. Ich habe auch schon über einen BroadcastReceiver nachgedacht, aber da weiß ich nicht welches Event ich fangen muss.

Das muss doch irgendwie möglich sein, da ich schon Apps im Market gesehen habe, die auf die Lautstärkeregelung reagieren können.

Danke für die hilfreichen Antworten, gerne auch Hinweise auf andere Threads, falls ich gerade falsch gesucht habe =)
 
Zuletzt bearbeitet:
Möglicherweise über BroadcastReceiver und den Intents aus folgendem Post: [android-beginners] Re: intent filter to know when user change the volum
Ansonsten kannst du ja vielleicht nett bei dem Hersteller von der museek-App nachfragen. Bei der App kann man im gesperrten Handy-Zustand über Longclick auf ne Volume-Taste das Lied wechseln. Funktioniert aber z.B. auf nem Samsung Galaxy S I9000 nicht.

BroadcastReceiver ist meiner Meinung nach die einzige Option für sowas.
 
  • Danke
Reaktionen: Mugendon
Gute Idee, habe jetzt mal bei 2 Entwicklern angefragt wie die das machen (Museek, RingGuard).

Der in dem Thread erwähnte Intent klingt eigentlich ganz vielversprechend, funktioniert bei mir aber nicht so wirklich. Vielleicht mache ich ja noch einen dummen Anfängerfehler :)

Ich habs so gebastelt:

Code:
public class MyReceiver extends BroadcastReceiver {
    public void onReceive(Context arg0, Intent arg1) {
        System.out.println("Received Intent");
    }
}

Im Manifest steht dann:

<receiver android:name="MyReceiver" android:enabled="true">
 <intent-filter>
  <action android:name="AudioManager.VOLUME_CHANGED_ACTION" />
 </intent-filter>
</receiver>
Muss ich jetzt noch irgendwas anderes tun, damit der Broadcast Receiver was mitbekommt? Momentan funktioniert es wie gesagt nicht, ich habe keine Ausgabe in LogCat :(
edit: Wobei, wenn ich mal meinen eigenen Intent über sendBroadcast verschicke, dann klappt alles und es wird 'Received Intent' bei LogCat ausgegeben...
 
Zuletzt bearbeitet:
Leider hat sich bisher nur der Museek Entwickler gemeldet und der benutzt die Volumetasten ganz normal, nur dass er zuvor beim AudioManager den Stream als Media angibt.
Kennt noch jemand eine App, die so wie Ringguard funktioniert? Dann könnte ich dort auch noch einmal nachfragen.
 

Ähnliche Themen

S
Antworten
9
Aufrufe
1.151
swa00
swa00
B
Antworten
4
Aufrufe
430
bb321
B
M
  • maksimilian
Antworten
7
Aufrufe
1.034
maksimilian
M
Zurück
Oben Unten