From 37b0526e36436e874d8e8d08fbd633dd3e9deff1 Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Mon, 8 May 2023 10:53:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E8=9E=A2=E5=B9=95=E9=96=8B?= =?UTF-8?q?=E5=95=9F/=E9=97=9C=E9=96=89=E5=81=B5=E6=B8=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../iosclockwidget/ClockUpdateService.kt | 45 ++++++++++++++++--- .../receiver/AutoStartReceiver.kt | 8 +++- 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3664fae..88e7ccb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,6 +5,7 @@ + isScreenOn = false + Intent.ACTION_SCREEN_ON -> isScreenOn = true + } + } + } + + private val screenOnOffIntentFilter: IntentFilter by lazy { + IntentFilter().apply { + this.addCategory(Intent.CATEGORY_DEFAULT) + this.addAction(Intent.ACTION_SCREEN_ON) + this.addAction(Intent.ACTION_SCREEN_OFF) + } + } + + private var isScreenOn = true + override fun onBind(intent: Intent): IBinder { throw UnsupportedOperationException("Not yet implemented") } @@ -36,6 +62,9 @@ class ClockUpdateService : Service() { isServiceRunning = true startForeground() + + registerReceiver(screenOnOffReceiver, screenOnOffIntentFilter) + Log.i(TAG, "Service on, register Broadcast Receiver.") } @SuppressLint("WakelockTimeout") @@ -47,7 +76,9 @@ class ClockUpdateService : Service() { override fun onDestroy() { super.onDestroy() + unregisterReceiver(screenOnOffReceiver) isServiceRunning = false + Log.i(TAG, "Service off, Unregister Broadcast Receiver and stop self.") } //region Foreground Service 必要通知 diff --git a/app/src/main/java/com/ray650128/iosclockwidget/receiver/AutoStartReceiver.kt b/app/src/main/java/com/ray650128/iosclockwidget/receiver/AutoStartReceiver.kt index db2d85a..c279db0 100644 --- a/app/src/main/java/com/ray650128/iosclockwidget/receiver/AutoStartReceiver.kt +++ b/app/src/main/java/com/ray650128/iosclockwidget/receiver/AutoStartReceiver.kt @@ -10,11 +10,15 @@ import com.ray650128.iosclockwidget.utils.PreferenceUtil class AutoStartReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { - Log.d("AutoStartReceiver", "intent: ${intent?.action}") + Log.d(TAG, "intent: ${intent?.action}") if (context == null || intent == null) return if (!PreferenceUtil.isGranted) return val i = Intent(context, ClockUpdateService::class.java) context.startForegroundService(i) - Log.d("AutoStartReceiver", "Boot completed.") + Log.d(TAG, "Boot completed.") + } + + companion object { + private val TAG = AutoStartReceiver::class.java.simpleName } } \ No newline at end of file