2012-01-20 10 views
7

Chcę utworzyć taką aplikację w Androidzie, która zostanie aktywowana po dwukrotnym naciśnięciu przycisku usypiania lub zasilania, czy można to zrobić, uruchamiając aplikację w tle i odsłuchując zdarzenia od przycisk zasilania ?aktywować aplikację po kliknięciu przycisku zasilania

kilka razy telefon przechodzi w tryb uśpienia, gdy jest bezczynny, a do korzystania z dowolnej aplikacji użytkownik musi nacisnąć przycisk uśpienia , a następnie musi wprowadzić określone hasło, aby aktywować telefon. Ale chcę sprawić, aby aktywował moją aplikację po kliknięciu przycisku zasilania bez żadnej innej interwencji.

+0

trzeba napisać usługę, aby to zrobić, nie spróbować, ale tutaj jest smiliar question.http: //stackoverflow.com/questions/5907102/home-button-listener – ocanal

Odpowiedz

13

Możesz spróbować tej sztuczki.

Zarejestruj odbiornik radiowy, który jest inicjowany po kliknięciu przycisku Powerbutton. Teraz w trybie OnReceive odbiornika rób to, co chcesz.

Na przykład:

w pliku spisu zarejestrowanie odbiornika:

<receiver android:name="com.test.check.MyReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.SCREEN_OFF"></action> 
      <action android:name="android.intent.action.SCREEN_ON"></action> 
      <action android:name="android.intent.action.ACTION_POWER_CONNECTED"></action> 
      <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"></action> 
      <action android:name="android.intent.action.ACTION_SHUTDOWN"></action> 
     </intent-filter> 
    </receiver> 

& & w onReceive() w odbiornika

public class MyReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 

     Log.v("#@%@%#", "Power button is pressed."); 

     Toast.makeText(arg0, "power button clicked",Toast.LENGTH_LONG).show(); 

     //perform what you want here 
    } 
} 

Teraz wykonywać żadnej operacji na onReceive() metoda odbiornika.

+1

Hey ponad podstępem pracował .... Zrobiłem ten kod i jego działanie i pokazuje toast, gdy przycisk zasilania jest podłączony lub odłączony .. Ja trochę zmodyfikowałem kod, więc redaguję powyższy post nieco .. mam nadzieję, że to ci pomoże ... –

+0

Czy możesz powiedzieć, jakie zmiany wprowadziłeś w powyższym kodzie? i wklej pełny kod najmłodszego pliku. dziękuje –

+0

z tego 5 działań, jedynymi działającymi, gdy telefone jest zablokowany, jest SCREEN_ON-Event. – bofredo

0

to jest kluczowy przypadek mocy, z którego możesz się zorientować, po prostu spróbuj tego pomysłu ... Nie próbowałem takiego działania, ale znalazłem to w menedżerze zasilania.

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) { 
     // do what you want with the power button 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+2

Działa to tylko wtedy, gdy działanie _onKeyDown_ jest uruchomione i aktywne – Moesio

Powiązane problemy