0

I want to take signal measurements. My app activity takes masurements (and provide charts) when is in foreground and at the onPause event I call and bind a service to take measurements (and store them in the database) in order to replace the activity. However if the phone is unpluged the app stop taking measurements. I have study a lot of other posts and I have implemented in foreground with notification. Here is a code sample from the Service

 public int onStartCommand(Intent intent, int flags, int startId) {

        super.onStartCommand(intent,START_STICKY,startId);
        goForeground();
return Service.START_STICKY; }



private void goForeground() {
    Log.i(TAG ,"goForeground");
    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
            notificationIntent, 0);
    Notification n = new Notification.Builder(this)
            .setContentTitle("Measurements Service")
            .setContentText("App still collects measurements.")
              .setSmallIcon(R.drawable.myApp)
            .setContentIntent(pendingIntent)
            .setPriority(Notification.PRIORITY_DEFAULT)
            .setContentIntent(pendingIntent)
            .build();
    NotificationManager notificationManger =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManger.notify(01, n);
    startForeground(FOREGROUND_NOTIFICATION_ID, n);
}  

and the MainActivity

     Intent serviceIntent = new Intent(MainActivity.this, SnoopService.class);         
        if (SnoopService.isRunning()) {
        Log.d(TAG, "Service is running");
        doBindService(intent);
    } else {
        Log.d(TAG, "Service will run");
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            startForegroundService(intent);
        } else
            startService(intent);

        doBindService(intent);
    }

    isBound = true;
    }

Does anyone knows if I am doing something wrong? I have test it with Samsung Galaxy S8.

  • check this answer https://stackoverflow.com/a/52236155 . Give you hint to create Service for android 8 – Radesh Nov 17 '18 at 14:37
  • Do not bind the service it needs to run on a separate thread. If you need any reply form the service use BroadcastReciever, and instead of writing if(Build.VERSION... use `ContextCompat.startForegroundService(Mainacticity.this, intent);` – Sayok Majumder Nov 17 '18 at 16:52

0 Answers0