From 416ae1e974f4a7c5b84dd51bbfcfed8e05a84b93 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 6 Jan 2025 20:15:07 +0100 Subject: [PATCH 1/3] change service notif to AirPods not connected --- .../main/java/me/kavishdevar/aln/services/AirPodsService.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt b/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt index c2494a2..b1efcc1 100644 --- a/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt +++ b/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt @@ -148,8 +148,7 @@ class AirPodsService: Service() { notificationManager.createNotificationChannel(notificationChannel) val notification = NotificationCompat.Builder(this, "background_service_status") .setSmallIcon(R.drawable.airpods) - .setContentTitle("AirPods Service") - .setContentText("Service is running in the background") + .setContentTitle("AirPods are not connected") .setCategory(Notification.CATEGORY_SERVICE) .setPriority(NotificationCompat.PRIORITY_LOW) .build() @@ -287,8 +286,7 @@ class AirPodsService: Service() { } else { updatedNotification = NotificationCompat.Builder(this, "background_service_status") .setSmallIcon(R.drawable.airpods) - .setContentTitle("AirPods Service") - .setContentText("Service is running in the background!") + .setContentTitle("AirPods are not connected") .setCategory(Notification.CATEGORY_SERVICE) .setPriority(NotificationCompat.PRIORITY_LOW) .build() From baacc9f1e2266247db6fdc11eeadc711c2dcd342 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 6 Jan 2025 20:16:24 +0100 Subject: [PATCH 2/3] fix service killed by Android battery saver having an always-on/ongoing notification is required in order for Android not to kill it --- .../main/java/me/kavishdevar/aln/services/AirPodsService.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt b/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt index b1efcc1..72db385 100644 --- a/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt +++ b/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt @@ -151,6 +151,7 @@ class AirPodsService: Service() { .setContentTitle("AirPods are not connected") .setCategory(Notification.CATEGORY_SERVICE) .setPriority(NotificationCompat.PRIORITY_LOW) + .setOngoing(true) .build() try { @@ -281,6 +282,7 @@ class AirPodsService: Service() { } ?: ""}""") .setCategory(Notification.CATEGORY_SERVICE) .setPriority(NotificationCompat.PRIORITY_LOW) + .setOngoing(true) .build() } else { @@ -289,6 +291,7 @@ class AirPodsService: Service() { .setContentTitle("AirPods are not connected") .setCategory(Notification.CATEGORY_SERVICE) .setPriority(NotificationCompat.PRIORITY_LOW) + .setOngoing(true) .build() } From bd473ee589fb5d4cd6e3c4b93a8c2cc987cf881a Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 6 Jan 2025 20:17:46 +0100 Subject: [PATCH 3/3] improve notification to hide L/R/C when missing --- .../me/kavishdevar/aln/services/AirPodsService.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt b/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt index 72db385..d62082c 100644 --- a/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt +++ b/android/app/src/main/java/me/kavishdevar/aln/services/AirPodsService.kt @@ -261,21 +261,21 @@ class AirPodsService: Service() { updatedNotification = NotificationCompat.Builder(this, "background_service_status") .setSmallIcon(R.drawable.airpods) - .setContentTitle("""L: ${batteryList?.find { it.component == BatteryComponent.LEFT }?.let { + .setContentTitle("""AirPods –${batteryList?.find { it.component == BatteryComponent.LEFT }?.let { if (it.status != BatteryStatus.DISCONNECTED) { - "${if (it.status == BatteryStatus.CHARGING) "⚡" else ""} ${it.level}%" + " L:${if (it.status == BatteryStatus.CHARGING) "⚡" else ""} ${it.level}%" } else { "" } - } ?: ""} R: ${batteryList?.find { it.component == BatteryComponent.RIGHT }?.let { + } ?: ""}${batteryList?.find { it.component == BatteryComponent.RIGHT }?.let { if (it.status != BatteryStatus.DISCONNECTED) { - "${if (it.status == BatteryStatus.CHARGING) "⚡" else ""} ${it.level}%" + " R:${if (it.status == BatteryStatus.CHARGING) "⚡" else ""} ${it.level}%" } else { "" } - } ?: ""} C: ${batteryList?.find { it.component == BatteryComponent.CASE }?.let { + } ?: ""}${batteryList?.find { it.component == BatteryComponent.CASE }?.let { if (it.status != BatteryStatus.DISCONNECTED) { - "${if (it.status == BatteryStatus.CHARGING) "⚡" else ""} ${it.level}%" + " C:${if (it.status == BatteryStatus.CHARGING) "⚡" else ""} ${it.level}%" } else { "" }