Bonjour,
Je suis en train de développer une application, qui ne comporte qu'un Service qui s'exécute en arrière plan. Je veux que ce Service s'exécute que quand l'utilisateur utilise son téléphone, c.à.d quand on déverrouille le téléphone le Service se déclenche et enregistre les données des capteurs et quand on verrouille l'écran le Service s'arrête, mais le problème c'est que mon Service continue à enregistrer des données même quand l'écran est éteint.
J'ai le code suivant et je ne vois pas où est le problème !
code dans le manifest
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 public class ScreenReceiver extends BroadcastReceiver { private boolean wasScreenOn = true; @Override public void onReceive(Context context, Intent intent) { System.out.println(intent.getAction()); if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)){ wasScreenOn = true; }else{ if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { wasScreenOn = true; }else{ if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){ System.out.println(intent.getAction()); wasScreenOn = false; } } } Intent intent1 = new Intent(context, MyService.class); intent1.putExtra("statut", wasScreenOn); context.startService(intent1); } }
et dans mon service je fais appel au receiver
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <receiver android:name=".ScreenReceiver"> <intent-filter> <action android:name="android.intent.action.USER_PRESENT"/> </intent-filter> </receiver> <service android:name=".MyService" android:enabled="true" />
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 @Override public int onStartCommand(Intent intent, int flags, int startId) { boolean screenOn = intent.getBooleanExtra("statut", true); System.out.println("statut********************************************************"+screenOn); if(!screenOn){ System.out.println("FIN********************************************************"); try { unregisterReceiver(mReceiver); }catch(IllegalArgumentException e){} SM.unregisterListener(this, Accelerometre); SM.unregisterListener(this, Gyroscope); SM.unregisterListener(this, Gravity); stopSelf(); } return START_STICKY; }
A+.
Partager