From 965def06b2a0c30c7ddafff19712e7861ab4bf21 Mon Sep 17 00:00:00 2001 From: James Rich Date: Tue, 17 Mar 2026 10:57:00 -0500 Subject: [PATCH] refactor(core:service): Move Android Service implementations to core:service --- app/src/main/AndroidManifest.xml | 10 ++++---- .../org/meshtastic/app/MeshServiceClient.kt | 4 +-- .../org/meshtastic/app/MeshUtilApplication.kt | 2 +- .../domain/worker/WorkManagerMessageQueue.kt | 1 + .../main/kotlin/org/meshtastic/app/ui/Main.kt | 2 +- conductor/tracks.md | 2 +- .../tracks/extract_services_20260317/plan.md | 2 +- .../meshtastic/core/model/DeviceVersion.kt | 5 ++++ .../src/androidMain}/res/raw/alert.mp3 | Bin core/service/build.gradle.kts | 1 + .../core}/service/AndroidMeshWorkerManager.kt | 4 +-- .../service/AndroidRadioControllerImpl.kt | 2 +- .../core}/service/BootCompleteReceiver.kt | 2 +- .../org/meshtastic/core}/service/Constants.kt | 2 +- .../core}/service/MarkAsReadReceiver.kt | 2 +- .../meshtastic/core}/service/MeshService.kt | 12 ++++----- .../service/MeshServiceNotificationsImpl.kt | 24 +++++++++--------- .../core}/service/MeshServiceStarter.kt | 8 +++--- .../core}/service/ReactionReceiver.kt | 2 +- .../meshtastic/core}/service/ReplyReceiver.kt | 2 +- .../core}/service/ServiceBroadcasts.kt | 2 +- .../service}/worker/MeshLogCleanupWorker.kt | 2 +- .../core/service}/worker/SendMessageWorker.kt | 2 +- .../service}/worker/ServiceKeepAliveWorker.kt | 10 ++++---- .../meshserviceexample/MainActivity.kt | 2 +- 25 files changed, 57 insertions(+), 50 deletions(-) rename {app/src/main => core/resources/src/androidMain}/res/raw/alert.mp3 (100%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/AndroidMeshWorkerManager.kt (93%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/BootCompleteReceiver.kt (97%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/Constants.kt (98%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/MarkAsReadReceiver.kt (98%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/MeshService.kt (97%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/MeshServiceNotificationsImpl.kt (97%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/MeshServiceStarter.kt (92%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/ReactionReceiver.kt (98%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/ReplyReceiver.kt (98%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core}/service/ServiceBroadcasts.kt (99%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core/service}/worker/MeshLogCleanupWorker.kt (98%) rename {app/src/main/kotlin/org/meshtastic/app/messaging/domain => core/service/src/androidMain/kotlin/org/meshtastic/core/service}/worker/SendMessageWorker.kt (97%) rename {app/src/main/kotlin/org/meshtastic/app => core/service/src/androidMain/kotlin/org/meshtastic/core/service}/worker/ServiceKeepAliveWorker.kt (93%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a19b6ff3c..7828802d9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -152,7 +152,7 @@ @@ -228,7 +228,7 @@ android:resource="@xml/device_filter" /> - @@ -252,9 +252,9 @@ android:path="com.geeksville.mesh" /> --> - - - + + + { } override fun compareTo(other: DeviceVersion): Int = asInt.compareTo(other.asInt) + + companion object { + const val MIN_FW_VERSION = "2.5.14" + const val ABS_MIN_FW_VERSION = "2.3.15" + } } diff --git a/app/src/main/res/raw/alert.mp3 b/core/resources/src/androidMain/res/raw/alert.mp3 similarity index 100% rename from app/src/main/res/raw/alert.mp3 rename to core/resources/src/androidMain/res/raw/alert.mp3 diff --git a/core/service/build.gradle.kts b/core/service/build.gradle.kts index 89476bb13..0d0b11699 100644 --- a/core/service/build.gradle.kts +++ b/core/service/build.gradle.kts @@ -36,6 +36,7 @@ kotlin { implementation(projects.core.data) implementation(projects.core.database) implementation(projects.core.model) + implementation(projects.core.navigation) implementation(projects.core.prefs) implementation(projects.core.proto) diff --git a/app/src/main/kotlin/org/meshtastic/app/service/AndroidMeshWorkerManager.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/AndroidMeshWorkerManager.kt similarity index 93% rename from app/src/main/kotlin/org/meshtastic/app/service/AndroidMeshWorkerManager.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/AndroidMeshWorkerManager.kt index 25e88a9ff..70d5571da 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/AndroidMeshWorkerManager.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/AndroidMeshWorkerManager.kt @@ -14,14 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import androidx.work.ExistingWorkPolicy import androidx.work.OneTimeWorkRequestBuilder import androidx.work.WorkManager import androidx.work.workDataOf import org.koin.core.annotation.Single -import org.meshtastic.app.messaging.domain.worker.SendMessageWorker +import org.meshtastic.core.service.worker.SendMessageWorker import org.meshtastic.core.repository.MeshWorkerManager @Single diff --git a/core/service/src/androidMain/kotlin/org/meshtastic/core/service/AndroidRadioControllerImpl.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/AndroidRadioControllerImpl.kt index b6a1b7273..cd4b317bd 100644 --- a/core/service/src/androidMain/kotlin/org/meshtastic/core/service/AndroidRadioControllerImpl.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/AndroidRadioControllerImpl.kt @@ -200,7 +200,7 @@ class AndroidRadioControllerImpl( // Ensure service is running/restarted to handle the new address val intent = android.content.Intent().apply { - setClassName("com.geeksville.mesh", "org.meshtastic.app.service.MeshService") + setClassName("com.geeksville.mesh", "org.meshtastic.core.service.MeshService") } context.startForegroundService(intent) } diff --git a/app/src/main/kotlin/org/meshtastic/app/service/BootCompleteReceiver.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/BootCompleteReceiver.kt similarity index 97% rename from app/src/main/kotlin/org/meshtastic/app/service/BootCompleteReceiver.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/BootCompleteReceiver.kt index 732be7b19..b01475b6d 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/BootCompleteReceiver.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/BootCompleteReceiver.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/kotlin/org/meshtastic/app/service/Constants.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/Constants.kt similarity index 98% rename from app/src/main/kotlin/org/meshtastic/app/service/Constants.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/Constants.kt index af5fdbdcd..4e0b5e7b8 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/Constants.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/Constants.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import org.meshtastic.core.api.MeshtasticIntent diff --git a/app/src/main/kotlin/org/meshtastic/app/service/MarkAsReadReceiver.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MarkAsReadReceiver.kt similarity index 98% rename from app/src/main/kotlin/org/meshtastic/app/service/MarkAsReadReceiver.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/MarkAsReadReceiver.kt index ebe68c74d..966569f4f 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/MarkAsReadReceiver.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MarkAsReadReceiver.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/kotlin/org/meshtastic/app/service/MeshService.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshService.kt similarity index 97% rename from app/src/main/kotlin/org/meshtastic/app/service/MeshService.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshService.kt index afd31361c..6141d9862 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/MeshService.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshService.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import android.app.Service import android.content.Context @@ -30,7 +30,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import org.koin.android.ext.android.inject -import org.meshtastic.app.BuildConfig + import org.meshtastic.core.common.hasLocationPermission import org.meshtastic.core.common.util.handledLaunch import org.meshtastic.core.common.util.toRemoteExceptions @@ -54,7 +54,7 @@ import org.meshtastic.core.repository.SERVICE_NOTIFY_ID import org.meshtastic.core.repository.ServiceBroadcasts import org.meshtastic.core.repository.ServiceRepository import org.meshtastic.core.service.IMeshService -import org.meshtastic.feature.connections.NO_DEVICE_SELECTED + import org.meshtastic.proto.PortNum @Suppress("TooManyFunctions", "LargeClass") @@ -102,8 +102,8 @@ class MeshService : Service() { startService(context) } - val minDeviceVersion = DeviceVersion(BuildConfig.MIN_FW_VERSION) - val absoluteMinDeviceVersion = DeviceVersion(BuildConfig.ABS_MIN_FW_VERSION) + val minDeviceVersion = DeviceVersion(DeviceVersion.MIN_FW_VERSION) + val absoluteMinDeviceVersion = DeviceVersion(DeviceVersion.ABS_MIN_FW_VERSION) } override fun onCreate() { @@ -143,7 +143,7 @@ class MeshService : Service() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { val a = radioInterfaceService.getDeviceAddress() - val wantForeground = a != null && a != NO_DEVICE_SELECTED + val wantForeground = a != null && a != "n" val notification = connectionManager.updateStatusNotification() as android.app.Notification diff --git a/app/src/main/kotlin/org/meshtastic/app/service/MeshServiceNotificationsImpl.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceNotificationsImpl.kt similarity index 97% rename from app/src/main/kotlin/org/meshtastic/app/service/MeshServiceNotificationsImpl.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceNotificationsImpl.kt index e790d8d0d..473c24f37 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/MeshServiceNotificationsImpl.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceNotificationsImpl.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import android.app.Notification import android.app.NotificationChannel @@ -40,11 +40,11 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.runBlocking import org.jetbrains.compose.resources.StringResource import org.koin.core.annotation.Single -import org.meshtastic.app.MainActivity -import org.meshtastic.app.R.raw -import org.meshtastic.app.service.MarkAsReadReceiver.Companion.MARK_AS_READ_ACTION -import org.meshtastic.app.service.ReactionReceiver.Companion.REACT_ACTION -import org.meshtastic.app.service.ReplyReceiver.Companion.KEY_TEXT_REPLY + +import org.meshtastic.core.resources.R.raw +import org.meshtastic.core.service.MarkAsReadReceiver.Companion.MARK_AS_READ_ACTION +import org.meshtastic.core.service.ReactionReceiver.Companion.REACT_ACTION +import org.meshtastic.core.service.ReplyReceiver.Companion.KEY_TEXT_REPLY import org.meshtastic.core.common.util.nowMillis import org.meshtastic.core.model.DataPacket import org.meshtastic.core.model.Message @@ -453,7 +453,7 @@ class MeshServiceNotificationsImpl( val summaryNotification = commonBuilder(NotificationType.DirectMessage) - .setSmallIcon(org.meshtastic.app.R.drawable.app_icon) + .setSmallIcon(context.applicationInfo.icon) .setStyle(messagingStyle) .setGroup(GROUP_KEY_MESSAGES) .setGroupSummary(true) @@ -697,14 +697,14 @@ class MeshServiceNotificationsImpl( // region Helper/Builder Methods private val openAppIntent: PendingIntent by lazy { - val intent = Intent(context, MainActivity::class.java).apply { flags = Intent.FLAG_ACTIVITY_SINGLE_TOP } + val intent = Intent(context, Class.forName("org.meshtastic.app.MainActivity")).apply { flags = Intent.FLAG_ACTIVITY_SINGLE_TOP } PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) } private fun createOpenMessageIntent(contactKey: String): PendingIntent { val deepLinkUri = "$DEEP_LINK_BASE_URI/messages/$contactKey".toUri() val deepLinkIntent = - Intent(Intent.ACTION_VIEW, deepLinkUri, context, MainActivity::class.java).apply { + Intent(Intent.ACTION_VIEW, deepLinkUri, context, Class.forName("org.meshtastic.app.MainActivity")).apply { flags = Intent.FLAG_ACTIVITY_SINGLE_TOP } @@ -717,7 +717,7 @@ class MeshServiceNotificationsImpl( private fun createOpenWaypointIntent(waypointId: Int): PendingIntent { val deepLinkUri = "$DEEP_LINK_BASE_URI/map?waypointId=$waypointId".toUri() val deepLinkIntent = - Intent(Intent.ACTION_VIEW, deepLinkUri, context, MainActivity::class.java).apply { + Intent(Intent.ACTION_VIEW, deepLinkUri, context, Class.forName("org.meshtastic.app.MainActivity")).apply { flags = Intent.FLAG_ACTIVITY_SINGLE_TOP } @@ -730,7 +730,7 @@ class MeshServiceNotificationsImpl( private fun createOpenNodeDetailIntent(nodeNum: Int): PendingIntent { val deepLinkUri = "$DEEP_LINK_BASE_URI/node?destNum=$nodeNum".toUri() val deepLinkIntent = - Intent(Intent.ACTION_VIEW, deepLinkUri, context, MainActivity::class.java).apply { + Intent(Intent.ACTION_VIEW, deepLinkUri, context, Class.forName("org.meshtastic.app.MainActivity")).apply { flags = Intent.FLAG_ACTIVITY_SINGLE_TOP } @@ -811,7 +811,7 @@ class MeshServiceNotificationsImpl( type: NotificationType, contentIntent: PendingIntent? = null, ): NotificationCompat.Builder { - val smallIcon = org.meshtastic.app.R.drawable.app_icon + val smallIcon = context.applicationInfo.icon return NotificationCompat.Builder(context, type.channelId) .setSmallIcon(smallIcon) diff --git a/app/src/main/kotlin/org/meshtastic/app/service/MeshServiceStarter.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceStarter.kt similarity index 92% rename from app/src/main/kotlin/org/meshtastic/app/service/MeshServiceStarter.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceStarter.kt index 96ea0d9bf..afeccff7f 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/MeshServiceStarter.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceStarter.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import android.app.ForegroundServiceStartNotAllowedException import android.content.Context @@ -23,8 +23,8 @@ import androidx.work.OneTimeWorkRequestBuilder import androidx.work.OutOfQuotaPolicy import androidx.work.WorkManager import co.touchlab.kermit.Logger -import org.meshtastic.app.BuildConfig -import org.meshtastic.app.worker.ServiceKeepAliveWorker + +import org.meshtastic.core.service.worker.ServiceKeepAliveWorker // / Helper function to start running our service fun MeshService.Companion.startService(context: Context) { @@ -36,7 +36,7 @@ fun MeshService.Companion.startService(context: Context) { // Before binding we want to explicitly create - so the service stays alive forever (so it can keep // listening for the bluetooth packets arriving from the radio. And when they arrive forward them // to Signal or whatever. - Logger.i { "Trying to start service debug=${BuildConfig.DEBUG}" } + Logger.i { "Trying to start service debug=${false}" } val intent = createIntent(context) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { diff --git a/app/src/main/kotlin/org/meshtastic/app/service/ReactionReceiver.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/ReactionReceiver.kt similarity index 98% rename from app/src/main/kotlin/org/meshtastic/app/service/ReactionReceiver.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/ReactionReceiver.kt index fec13effb..7a3e026a7 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/ReactionReceiver.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/ReactionReceiver.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/kotlin/org/meshtastic/app/service/ReplyReceiver.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/ReplyReceiver.kt similarity index 98% rename from app/src/main/kotlin/org/meshtastic/app/service/ReplyReceiver.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/ReplyReceiver.kt index e09f6c656..4e82a735d 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/ReplyReceiver.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/ReplyReceiver.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import android.content.BroadcastReceiver import android.content.Context diff --git a/app/src/main/kotlin/org/meshtastic/app/service/ServiceBroadcasts.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/ServiceBroadcasts.kt similarity index 99% rename from app/src/main/kotlin/org/meshtastic/app/service/ServiceBroadcasts.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/ServiceBroadcasts.kt index 8b4ffc1a2..321968908 100644 --- a/app/src/main/kotlin/org/meshtastic/app/service/ServiceBroadcasts.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/ServiceBroadcasts.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.service +package org.meshtastic.core.service import android.content.Context import android.content.Intent diff --git a/app/src/main/kotlin/org/meshtastic/app/worker/MeshLogCleanupWorker.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/worker/MeshLogCleanupWorker.kt similarity index 98% rename from app/src/main/kotlin/org/meshtastic/app/worker/MeshLogCleanupWorker.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/worker/MeshLogCleanupWorker.kt index 11495b645..ed686d984 100644 --- a/app/src/main/kotlin/org/meshtastic/app/worker/MeshLogCleanupWorker.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/worker/MeshLogCleanupWorker.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.worker +package org.meshtastic.core.service.worker import android.content.Context import androidx.work.CoroutineWorker diff --git a/app/src/main/kotlin/org/meshtastic/app/messaging/domain/worker/SendMessageWorker.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/worker/SendMessageWorker.kt similarity index 97% rename from app/src/main/kotlin/org/meshtastic/app/messaging/domain/worker/SendMessageWorker.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/worker/SendMessageWorker.kt index 19fb3324e..c12957eb7 100644 --- a/app/src/main/kotlin/org/meshtastic/app/messaging/domain/worker/SendMessageWorker.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/worker/SendMessageWorker.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.messaging.domain.worker +package org.meshtastic.core.service.worker import android.content.Context import androidx.work.CoroutineWorker diff --git a/app/src/main/kotlin/org/meshtastic/app/worker/ServiceKeepAliveWorker.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/worker/ServiceKeepAliveWorker.kt similarity index 93% rename from app/src/main/kotlin/org/meshtastic/app/worker/ServiceKeepAliveWorker.kt rename to core/service/src/androidMain/kotlin/org/meshtastic/core/service/worker/ServiceKeepAliveWorker.kt index b83fc9aff..088644f3a 100644 --- a/app/src/main/kotlin/org/meshtastic/app/worker/ServiceKeepAliveWorker.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/worker/ServiceKeepAliveWorker.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.worker +package org.meshtastic.core.service.worker import android.app.Notification import android.content.Context @@ -26,9 +26,9 @@ import androidx.work.ForegroundInfo import androidx.work.WorkerParameters import co.touchlab.kermit.Logger import org.koin.android.annotation.KoinWorker -import org.meshtastic.app.R -import org.meshtastic.app.service.MeshService -import org.meshtastic.app.service.startService + +import org.meshtastic.core.service.MeshService +import org.meshtastic.core.service.startService import org.meshtastic.core.repository.MeshServiceNotifications import org.meshtastic.core.repository.SERVICE_NOTIFY_ID @@ -81,7 +81,7 @@ class ServiceKeepAliveWorker( // We use "my_service" which matches NotificationType.ServiceState.channelId in MeshServiceNotificationsImpl return NotificationCompat.Builder(applicationContext, "my_service") - .setSmallIcon(R.drawable.ic_launcher_foreground) + .setSmallIcon(applicationContext.applicationInfo.icon) .setContentTitle("Resuming Mesh Service") .setPriority(NotificationCompat.PRIORITY_LOW) .setOngoing(true) diff --git a/mesh_service_example/src/main/kotlin/com/meshtastic/android/meshserviceexample/MainActivity.kt b/mesh_service_example/src/main/kotlin/com/meshtastic/android/meshserviceexample/MainActivity.kt index 758e9c0b3..26063e2b7 100644 --- a/mesh_service_example/src/main/kotlin/com/meshtastic/android/meshserviceexample/MainActivity.kt +++ b/mesh_service_example/src/main/kotlin/com/meshtastic/android/meshserviceexample/MainActivity.kt @@ -134,7 +134,7 @@ class MainActivity : ComponentActivity() { Log.i(TAG, "Found service in package: ${serviceInfo.packageName}") } else { Log.w(TAG, "No service found for action com.geeksville.mesh.Service. Falling back to default.") - intent.setClassName("com.geeksville.mesh", "org.meshtastic.app.service.MeshService") + intent.setClassName("com.geeksville.mesh", "org.meshtastic.core.service.MeshService") } val success = bindService(intent, serviceConnection, BIND_AUTO_CREATE)