diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java index d9824fc..4cbceb0 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java @@ -5,6 +5,7 @@ import android.content.BroadcastReceiver; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.os.Build; import android.support.design.widget.BottomNavigationView; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; @@ -132,10 +133,17 @@ public class MainActivity extends AppCompatActivity { if (isTutor) { - Intent intent = new Intent(getApplicationContext(), BackgroundLocalizationService.class); - startService(intent); + Intent intent = new Intent(getApplicationContext(), BackgroundLocalizationService.class); - } else { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + startForegroundService(intent); + } else { + startService(intent); + } + + + } else { Toast.makeText(getApplicationContext(), "Please enable the gps", Toast.LENGTH_SHORT).show(); } } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java b/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java index cc19101..e9afd01 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java @@ -3,15 +3,20 @@ package com.uam.wmi.findmytutor.service; import android.Manifest; import android.annotation.SuppressLint; import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; import android.app.Service; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Color; import android.location.Location; import android.location.LocationManager; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; +import android.support.annotation.RequiresApi; import android.support.v4.app.ActivityCompat; import android.support.v4.app.NotificationCompat; import android.util.Log; @@ -104,10 +109,17 @@ public class BackgroundLocalizationService extends Service { Log.e(TAG, "onCreate"); - Notification notification = new NotificationCompat.Builder(this, "NOTIFICATION_CHANNEL") - .setContentText("Content").build(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) + startMyOwnForeground(); + else { + Notification notification = new NotificationCompat.Builder(this, "NOTIFICATION_CHANNEL") + .setContentText("Content").build(); + + startForeground(1001, notification); + + } + - startForeground(1001, notification); initializeLocationManager(); @@ -142,7 +154,26 @@ public class BackgroundLocalizationService extends Service { intent = new Intent(str_receiver); } + @RequiresApi(api = Build.VERSION_CODES.O) + private void startMyOwnForeground(){ + String NOTIFICATION_CHANNEL_ID = "com.example.simpleapp"; + String channelName = "My Background Service"; + NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE); + chan.setLightColor(Color.BLUE); + chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); + NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + assert manager != null; + manager.createNotificationChannel(chan); + + NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID); + Notification notification = notificationBuilder.setOngoing(true) + .setContentTitle("App is running in background") + .setPriority(NotificationManager.IMPORTANCE_MIN) + .setCategory(Notification.CATEGORY_SERVICE) + .build(); + startForeground(2, notification); + } private void fn_getlocation() { @@ -220,6 +251,9 @@ public class BackgroundLocalizationService extends Service { } + + + private class TimerTaskToGetLocation extends TimerTask{ @Override public void run() {