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