From a8e7ab6f06849b5593102ae7bea1465170c6e73e Mon Sep 17 00:00:00 2001 From: estevez-dev Date: Wed, 8 Jul 2020 14:21:00 +0300 Subject: [PATCH] Location notification tweeks --- .../hassclient/LocationUpdatesService.java | 4 ++- .../hassclient/LocationUpdatesWorker.java | 4 ++- .../hassclient/LocationUtils.java | 28 ++++++++---------- .../main/res/drawable/mini_icon_location.png | Bin 0 -> 571 bytes .../settings/integration_settings.part.dart | 6 ++-- pubspec.yaml | 2 +- 6 files changed, 21 insertions(+), 23 deletions(-) create mode 100644 android/app/src/main/res/drawable/mini_icon_location.png diff --git a/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesService.java b/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesService.java index c9992c5..cb82f82 100644 --- a/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesService.java +++ b/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesService.java @@ -107,7 +107,9 @@ public class LocationUpdatesService extends Service { Log.i(TAG, "Requesting location updates. Every " + requestInterval + "ms with priority of " + priority); mLocationRequest.setPriority(priority); mLocationRequest.setInterval(requestInterval); - mLocationRequest.setFastestInterval(requestInterval); + if (priority == 102 && requestInterval > 60000) { + mLocationRequest.setFastestInterval(30000); + } startForeground(LocationUtils.SERVICE_NOTIFICATION_ID, LocationUtils.getNotification(this, null, LocationUtils.SERVICE_NOTIFICATION_CHANNEL_ID)); try { mFusedLocationClient.requestLocationUpdates(mLocationRequest, diff --git a/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesWorker.java b/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesWorker.java index c37cf30..e69c930 100644 --- a/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesWorker.java +++ b/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesWorker.java @@ -102,7 +102,9 @@ public class LocationUpdatesWorker extends ListenableWorker { int accuracy = LocationUtils.getLocationUpdatesPriority(getApplicationContext()); locationRequest.setPriority(accuracy); locationRequest.setInterval(5000); - locationRequest.setFastestInterval(1000); + if (accuracy == 102) { + locationRequest.setFastestInterval(1000); + } try { fusedLocationClient.requestLocationUpdates(locationRequest, callback, Looper.myLooper()); diff --git a/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUtils.java b/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUtils.java index 237f819..99f7c0a 100644 --- a/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUtils.java +++ b/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUtils.java @@ -46,7 +46,7 @@ class LocationUtils { } static int getLocationUpdatesPriority(Context context) { - return context.getSharedPreferences("FlutterSharedPreferences", Context.MODE_PRIVATE).getInt(KEY_LOCATION_UPDATE_PRIORITY, 102); + return context.getSharedPreferences("FlutterSharedPreferences", Context.MODE_PRIVATE).getInt(KEY_LOCATION_UPDATE_PRIORITY, 100); } static boolean showNotification(Context context) { @@ -69,15 +69,6 @@ class LocationUtils { .apply(); } - static String getLocationText(Location location) { - return location == null ? "Accuracy: unknown" : - "Accuracy: " + location.getAccuracy(); - } - - static String getLocationTitle(Location location) { - return location == null ? "Requesting location..." : "Location updated at " + DateFormat.getDateTimeInstance().format(new Date(location.getTime())); - } - static void startService(Context context) { Intent myService = new Intent(context, LocationUpdatesService.class); context.startService(myService); @@ -93,19 +84,24 @@ class LocationUtils { } static Notification getNotification(Context context, Location location, String channelId) { - CharSequence text = LocationUtils.getLocationText(location); + CharSequence title = "Location tracking"; + CharSequence text = location == null ? "Accuracy: unknown" : "Accuracy: " + location.getAccuracy() + " m"; + CharSequence bigText = location == null ? "Waiting for location..." : "Location updated at " + DateFormat.getDateTimeInstance().format(new Date(location.getTime())) + + System.getProperty("line.separator") + "Accuracy: " + location.getAccuracy() + " m" + + System.getProperty("line.separator") + "Location: " + location.getLatitude() + ", " + location.getLongitude(); - PendingIntent activityPendingIntent = PendingIntent.getActivity(context, 0, + PendingIntent activityPendingIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0); NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId) - .addAction(R.drawable.blank_icon, "Open HA Client", - activityPendingIntent) + .setContentIntent(activityPendingIntent) + .setContentTitle(title) .setContentText(text) + .setStyle(new NotificationCompat.BigTextStyle() + .bigText(bigText)) .setPriority(-1) - .setContentTitle(LocationUtils.getLocationTitle(location)) .setOngoing(true) - .setSmallIcon(R.drawable.mini_icon) + .setSmallIcon(R.drawable.mini_icon_location) .setWhen(System.currentTimeMillis()); return builder.build(); diff --git a/android/app/src/main/res/drawable/mini_icon_location.png b/android/app/src/main/res/drawable/mini_icon_location.png new file mode 100644 index 0000000000000000000000000000000000000000..08dbb4ee96b43b1d253494bcefde1726a1ff5073 GIT binary patch literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG?d}4kf#9d}?s_1_ zS>O>_%)r2R1cVulHqbM43^HVa@DsgL=vn{m}s6i5BLvVgtNqJ&XDnogBxn5>oc5!lIL8@MUQTpt6 RHc~)E44$rjF6*2UngGXM){X!G literal 0 HcmV?d00001 diff --git a/lib/pages/settings/integration_settings.part.dart b/lib/pages/settings/integration_settings.part.dart index 64bf713..b31e67d 100644 --- a/lib/pages/settings/integration_settings.part.dart +++ b/lib/pages/settings/integration_settings.part.dart @@ -13,10 +13,8 @@ class _IntegrationSettingsPageState extends State { static const platform = const MethodChannel('com.keyboardcrumbs.hassclient/native'); static final locationAccuracy = { - 100: "Highest", - 102: "Balanced (about 100 meters)", - 104: "Low (up to 10 kilometers)", - 105: "Passive (last known location)", + 100: "High", + 102: "Balanced" }; Duration _locationInterval; diff --git a/pubspec.yaml b/pubspec.yaml index 3797369..f7c8aa7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: hass_client description: Home Assistant Android Client -version: 1.3.0+1303 +version: 1.3.0+1304 environment: