1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Service auf Hardwaretasten reagieren lassen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Mugendon, 27.02.2011.

  1. Mugendon, 27.02.2011 #1
    Mugendon

    Mugendon Threadstarter Android-Experte

    Beiträge:
    524
    Erhaltene Danke:
    126
    Registriert seit:
    27.02.2011
    Phone:
    Nexus 6
    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: 01.03.2011
  2. Boni2k, 28.02.2011 #2
    Boni2k

    Boni2k Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    14
    Registriert seit:
    10.11.2009
    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.
     
    Mugendon bedankt sich.
  3. Mugendon, 28.02.2011 #3
    Mugendon

    Mugendon Threadstarter Android-Experte

    Beiträge:
    524
    Erhaltene Danke:
    126
    Registriert seit:
    27.02.2011
    Phone:
    Nexus 6
    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: 28.02.2011
  4. Mugendon, 01.03.2011 #4
    Mugendon

    Mugendon Threadstarter Android-Experte

    Beiträge:
    524
    Erhaltene Danke:
    126
    Registriert seit:
    27.02.2011
    Phone:
    Nexus 6
    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.
     

Diese Seite empfehlen