Autore Topic: Service in background con schermo spento  (Letto 410 volte)

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Service in background con schermo spento
« il: 09 Gennaio 2015, 20:23:32 CET »
0
Salve, avrei bisogno di creare un applicazione che appena, viene premuto un bottone, attivi un Service, che stia sempre attivo in background, e che ogni volta che lo schermo viene bloccato, tramite un BroadCastReceiver, richiami il Service per fare qualcosa. Allora ho creato il Service:

Service
Codice (Java): [Seleziona]
public class MyService extends Service {
        private static final String TAG = "MyService";
       
        @Override
        public IBinder onBind(Intent intent) {
                return null;
        }
       
        @Override
        public void onCreate() {
                Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
                Log.d(TAG, "onCreate");
               
                IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        BroadcastReceiver mReceiver = new ScreenReceiver();
        registerReceiver(mReceiver, filter);
        }

        @Override
        public void onDestroy() {
                Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
                Log.d(TAG, "onDestroy");
        }
       
        @Override
        public void onStart(Intent intent, int startid) {
                Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
                Log.d(TAG, "onStart");
               
                boolean screenOn = intent.getBooleanExtra("screen_state", false);
       
                if (screenOn) {
                       
        }else{

        }
        }
}


BroadCastReceiver
Codice (Java): [Seleziona]
public class ScreenReceiver extends BroadcastReceiver {
 
    private boolean screenOff;

        @Override
        public void onReceive(Context context, Intent intent) {
                if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            screenOff = true;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            screenOff = false;
        }
               
               
        Intent i = new Intent(context, MyService.class);
        i.putExtra("screen_state", screenOff);
        context.startService(i);
        }
 
}

Il mio problema è che, non appena lo schermo si spegne, il Service smette di funzionare in background.

Come posso fare in modo che il Service continui a lavorare in background anche quando lo schermo del dispositivo è spento?

Vincenzo Cimino @ Google Play Store