From dc3aef70be055cff164dd2b32678f99aae937dc4 Mon Sep 17 00:00:00 2001 From: Jaehoon-You <55170115+Jaehoon-You@users.noreply.github.com> Date: Tue, 1 Aug 2023 03:28:21 +0900 Subject: [PATCH] virtual-device-app: Add android service for managing app server (#28399) Signed-off-by: Jaehoon You Signed-off-by: Charles Kim --- .../App/app/src/main/AndroidManifest.xml | 2 + .../res/drawable/ic_launcher_background.xml | 0 .../res/drawable/ic_launcher_foreground.xml | 0 .../res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../res/mipmap-xhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin .../app/core/matter/MatterAppService.kt | 92 ++++++++++++++++++ .../core/matter/MatterAppServiceConstants.kt | 10 ++ 17 files changed, 104 insertions(+) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/drawable/ic_launcher_background.xml (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/drawable/ic_launcher_foreground.xml (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-hdpi/ic_launcher_round.png (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-mdpi/ic_launcher_round.png (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-xhdpi/ic_launcher_round.png (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-xxhdpi/ic_launcher_round.png (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename examples/virtual-device-app/android/App/{app => core/common}/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) create mode 100644 examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterAppService.kt create mode 100644 examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterAppServiceConstants.kt diff --git a/examples/virtual-device-app/android/App/app/src/main/AndroidManifest.xml b/examples/virtual-device-app/android/App/app/src/main/AndroidManifest.xml index a57ddde21a56eb..b971d9fb375a99 100644 --- a/examples/virtual-device-app/android/App/app/src/main/AndroidManifest.xml +++ b/examples/virtual-device-app/android/App/app/src/main/AndroidManifest.xml @@ -5,6 +5,7 @@ + + \ No newline at end of file diff --git a/examples/virtual-device-app/android/App/app/src/main/res/drawable/ic_launcher_background.xml b/examples/virtual-device-app/android/App/core/common/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/drawable/ic_launcher_background.xml rename to examples/virtual-device-app/android/App/core/common/src/main/res/drawable/ic_launcher_background.xml diff --git a/examples/virtual-device-app/android/App/app/src/main/res/drawable/ic_launcher_foreground.xml b/examples/virtual-device-app/android/App/core/common/src/main/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/drawable/ic_launcher_foreground.xml rename to examples/virtual-device-app/android/App/core/common/src/main/res/drawable/ic_launcher_foreground.xml diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-mdpi/ic_launcher.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/examples/virtual-device-app/android/App/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from examples/virtual-device-app/android/App/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to examples/virtual-device-app/android/App/core/common/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterAppService.kt b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterAppService.kt new file mode 100644 index 00000000000000..0bcbee73e5fcd2 --- /dev/null +++ b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterAppService.kt @@ -0,0 +1,92 @@ +package com.matter.virtual.device.app.core.matter + +import android.app.Notification +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.Service +import android.content.Intent +import android.os.Build +import android.os.IBinder +import androidx.core.app.NotificationCompat +import dagger.hilt.android.AndroidEntryPoint +import timber.log.Timber + +@AndroidEntryPoint +class MatterAppService : Service() { + + override fun onCreate() { + super.onCreate() + Timber.d("onCreate()") + } + + override fun onDestroy() { + super.onDestroy() + Timber.d("onDestroy()") + } + + override fun onBind(intent: Intent?): IBinder? { + Timber.d("onBind()") + return null + } + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + Timber.d("Hit") + + intent?.let { + when (it.action) { + MatterAppServiceConstants.ACTION_START_MATTER_APP_SERVICE -> { + Timber.i("Start matter app service") + startService() + } + MatterAppServiceConstants.ACTION_STOP_MATTER_APP_SERVICE -> { + Timber.i("Stop matter app service") + stopService() + } + else -> {} + } + } + + return START_REDELIVER_INTENT + } + + private fun createNotificationChannel() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val notificationChannel = + NotificationChannel( + MatterAppServiceConstants.NOTIFICATION_CHANNEL_ID, + MatterAppServiceConstants.NOTIFICATION_CHANNEL_NAME, + NotificationManager.IMPORTANCE_DEFAULT + ) + + val manager = getSystemService(NotificationManager::class.java) + manager?.createNotificationChannel(notificationChannel) + } + } + + private fun cancelNotificationChannel() { + val manager = getSystemService(NotificationManager::class.java) + manager?.cancel(MatterAppServiceConstants.NOTIFICATION_FOREGROUND_ID) + } + + private fun startService() { + Timber.d("Hit") + + createNotificationChannel() + + val notification: Notification = + NotificationCompat.Builder(this, MatterAppServiceConstants.NOTIFICATION_CHANNEL_ID) + .setContentTitle("MatterApp Service") + .setContentText("MatterApp is running") + .setSmallIcon(R.mipmap.ic_launcher) + .build() + + startForeground(MatterAppServiceConstants.NOTIFICATION_FOREGROUND_ID, notification) + } + + private fun stopService() { + Timber.d("Hit") + cancelNotificationChannel() + stopForeground(true) + stopSelf() + } +} diff --git a/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterAppServiceConstants.kt b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterAppServiceConstants.kt new file mode 100644 index 00000000000000..bcee27164c17de --- /dev/null +++ b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterAppServiceConstants.kt @@ -0,0 +1,10 @@ +package com.matter.virtual.device.app.core.matter + +object MatterAppServiceConstants { + const val ACTION_START_MATTER_APP_SERVICE = "ACTION_START_MATTER_APP_SERVICE" + const val ACTION_STOP_MATTER_APP_SERVICE = "ACTION_STOP_MATTER_APP_SERVICE" + + const val NOTIFICATION_CHANNEL_ID = "VIRTUAL_DEVICE" + const val NOTIFICATION_FOREGROUND_ID = 1 + const val NOTIFICATION_CHANNEL_NAME = "Matter App" +}