diff --git a/app/src/main/java/org/traccar/client/MainApplication.java b/app/src/main/java/org/traccar/client/MainApplication.java
index 49e8b3a..85af3be 100644
--- a/app/src/main/java/org/traccar/client/MainApplication.java
+++ b/app/src/main/java/org/traccar/client/MainApplication.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com)
+ * Copyright 2016 - 2017 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,14 +15,36 @@
*/
package org.traccar.client;
+import android.annotation.TargetApi;
import android.app.Application;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.graphics.Color;
+import android.os.Build;
public class MainApplication extends Application {
+ public static final String PRIMARY_CHANNEL = "default";
+
@Override
public void onCreate() {
super.onCreate();
System.setProperty("http.keepAliveDuration", String.valueOf(30 * 60 * 1000));
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ registerChannel();
+ }
+ }
+
+ @TargetApi(Build.VERSION_CODES.O)
+ private void registerChannel() {
+ NotificationChannel channel = new NotificationChannel(
+ PRIMARY_CHANNEL, getString(R.string.channel_default), NotificationManager.IMPORTANCE_MIN);
+ channel.setLightColor(Color.GREEN);
+ channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
+ ((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);
}
}
diff --git a/app/src/main/java/org/traccar/client/TrackingService.java b/app/src/main/java/org/traccar/client/TrackingService.java
index b778fc8..ffa41a4 100644
--- a/app/src/main/java/org/traccar/client/TrackingService.java
+++ b/app/src/main/java/org/traccar/client/TrackingService.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 - 2015 Anton Tananaev (anton.tananaev@gmail.com)
+ * Copyright 2012 - 2017 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,11 +23,9 @@ import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.IBinder;
+import android.support.v4.app.NotificationCompat;
import android.util.Log;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
public class TrackingService extends Service {
private static final String TAG = TrackingService.class.getSimpleName();
@@ -37,32 +35,12 @@ public class TrackingService extends Service {
private static Notification createNotification(Context context) {
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0);
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-
- return new Notification.Builder(context)
+ return new NotificationCompat.Builder(context, MainApplication.PRIMARY_CHANNEL)
.setContentTitle(context.getString(R.string.app_name))
.setContentText(context.getString(R.string.settings_status_on_summary))
.setContentIntent(pendingIntent)
- .setPriority(Notification.PRIORITY_MIN)
+ .setPriority(NotificationCompat.PRIORITY_MIN)
.build();
-
- } else {
-
- Notification notification = new Notification(android.R.drawable.stat_notify_sync_noanim, null, 0);
- try {
- Method method = notification.getClass().getMethod("setLatestEventInfo", Context.class, CharSequence.class, CharSequence.class, PendingIntent.class);
- try {
- method.invoke(notification, context, context.getString(R.string.app_name), context.getString(R.string.settings_status_on_summary), pendingIntent);
- } catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
- Log.w(TAG, e);
- }
- } catch (SecurityException | NoSuchMethodException e) {
- Log.w(TAG, e);
- }
- return notification;
-
- }
}
@TargetApi(Build.VERSION_CODES.ECLAIR)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ef47cf3..dfeb930 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -5,6 +5,7 @@
Traccar - Start
Traccar - Stop
Traccar - SOS
+ Primary Channel
Device identifier
Server URL
Tracking server URL