Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Android - Intercettare pressione tasti in background
Forum - Android - Intercettare pressione tasti in background

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedė, 01/01/1970
Ho pensato ad un'applicazione che permettesse di usare la pressione prolungata dei tasti per avviarsi dal background, dunque ho iniziato a guardare come funziona la ricezione di eventi Broadcast, non ho trovato nulla sulla pressione prolungata quindi ho pensato di usare il tasto HOME premuto ripetutamente pių volte (2 o 3 penso).
Intanto ho iniziato per vedere se riesco a fare una semplice app che intercetta i tasti.

Ho inserito questo codice in <application> sul file manifest:

Codice sorgente - presumibilmente Plain Text

  1. <receiver android:name="daf.android.test.readKey.RemoteKeyControl">
  2.   <intent-filter android:priority="@integer/rec_priority">
  3.     <action android:name="android.intent.action.MEDIA_BUTTON" />
  4.   </intent-filter>
  5. </receiver>



dove rec_priority č dichiarato integer 1000. (Max System Priority)
e ho creato la classe daf.android.test.readKey.RemoteKeyControl:

Codice sorgente - presumibilmente C#

  1. public class RemoteKeyControl extends BroadcastReceiver {
  2.  
  3.         @Override
  4.         public void onReceive(Context context, Intent intent) {
  5.                 String s = "Action";
  6.                 if(Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
  7.                         s += " Media Button";
  8.                         KeyEvent e = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
  9.                         if(e != null) {
  10.                                 switch(e.getAction()) {
  11.                                         case KeyEvent.ACTION_DOWN:
  12.                                                 s += " DOWN";
  13.                                         break;
  14.                                         case KeyEvent.ACTION_UP:
  15.                                                 s += " UP";
  16.                                         break;
  17.                                 }
  18.                         }
  19.                 }
  20.                 Toast.makeText(context, s, Toast.LENGTH_LONG);
  21.         }
  22.  
  23. }



Non viene mai mostrato nessun Toast. :( (Neanche "Action" e basta!)

Potete aiutarmi? Non so proprio pių cosa provare...

Grazie in anticipo :k:

Probabilmente č un errore banale, ma non so proprio dove cercare...

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 23:11
Domenica, 16/06/2013
Scusa...prima di fare i controlli sul tasto premuto...prova a fare una cosa del genere:
Codice sorgente - presumibilmente Java

  1. public class RemoteKeyControl extends BroadcastReceiver {
  2.  
  3.         @Override
  4.         public void onReceive(Context context, Intent intent) {
  5.                 Toast.makeText(context, "Pressed", Toast.LENGTH_LONG);
  6.         }
  7.  
  8. }



Cosė quando viene premuto un qualsiasi pulsante(menu, home o indietro), ti visualizza un toast!

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 0:42
Lunedė, 17/06/2013
Testo quotato

Postato originariamente da LittleHacker:

Scusa...prima di fare i controlli sul tasto premuto...prova a fare una cosa del genere:
Codice sorgente - presumibilmente Java

  1. public class RemoteKeyControl extends BroadcastReceiver {
  2.  
  3.         @Override
  4.         public void onReceive(Context context, Intent intent) {
  5.                 Toast.makeText(context, "Pressed", Toast.LENGTH_LONG);
  6.         }
  7.  
  8. }



Cosė quando viene premuto un qualsiasi pulsante(menu, home o indietro), ti visualizza un toast!



Quello che faccio nel codice dovrebbe fare un Toast con scritto almeno "Action" in qualiasi caso entri nella funzione onReceive()

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 21:41
Lunedė, 17/06/2013
Testo quotato

Postato originariamente da Dario DF:

Testo quotato

Postato originariamente da LittleHacker:

Scusa...prima di fare i controlli sul tasto premuto...prova a fare una cosa del genere:
Codice sorgente - presumibilmente Java

  1. public class RemoteKeyControl extends BroadcastReceiver {
  2.  
  3.         @Override
  4.         public void onReceive(Context context, Intent intent) {
  5.                 Toast.makeText(context, "Pressed", Toast.LENGTH_LONG);
  6.         }
  7.  
  8. }



Cosė quando viene premuto un qualsiasi pulsante(menu, home o indietro), ti visualizza un toast!



Quello che faccio nel codice dovrebbe fare un Toast con scritto almeno "Action" in qualiasi caso entri nella funzione onReceive()



Magari hai sbagliato a scrivere nella classe che hai creato? Quello che faccio io, prima di costruire tutta l'app completa, č ad ogni azione corrisponde un debug(toast, alert o un Log), cosė da vedere se il codice che ho scritto fa esattamente quello che voglio faccia!

PM Quote