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 : 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);
 
 
    }
}
code dans le manifest

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" />
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
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;
    }
Merci.
A+.