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