From 6aaea610b82087e4f74afb789e219f9e61ea28c7 Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Mon, 10 Apr 2023 16:29:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AA=BF=E6=95=B4=E5=B0=88=E6=A1=88=E7=B5=90?= =?UTF-8?q?=E6=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 6 +++--- .../{AlarmService.kt => ClockUpdateService.kt} | 11 ++++++----- .../com/ray650128/iosclockwidget/MainActivity.kt | 10 ++++++---- .../{ => receiver}/AutoStartReceiver.kt | 6 ++++-- .../iosclockwidget/{ => receiver}/IOSClockWidget.kt | 12 ++++++++---- .../iosclockwidget/{ => utils}/PermissionUtil.kt | 2 +- .../iosclockwidget/{ => utils}/PreferenceUtil.kt | 7 ++++--- .../iosclockwidget/{ => view}/IOSClockView.kt | 2 +- app/src/main/res/layout/activity_main.xml | 2 +- 9 files changed, 34 insertions(+), 24 deletions(-) rename app/src/main/java/com/ray650128/iosclockwidget/{AlarmService.kt => ClockUpdateService.kt} (91%) rename app/src/main/java/com/ray650128/iosclockwidget/{ => receiver}/AutoStartReceiver.kt (69%) rename app/src/main/java/com/ray650128/iosclockwidget/{ => receiver}/IOSClockWidget.kt (86%) rename app/src/main/java/com/ray650128/iosclockwidget/{ => utils}/PermissionUtil.kt (99%) rename app/src/main/java/com/ray650128/iosclockwidget/{ => utils}/PreferenceUtil.kt (74%) rename app/src/main/java/com/ray650128/iosclockwidget/{ => view}/IOSClockView.kt (99%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0cfa53e..3664fae 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,12 +27,12 @@ @@ -44,7 +44,7 @@ diff --git a/app/src/main/java/com/ray650128/iosclockwidget/AlarmService.kt b/app/src/main/java/com/ray650128/iosclockwidget/ClockUpdateService.kt similarity index 91% rename from app/src/main/java/com/ray650128/iosclockwidget/AlarmService.kt rename to app/src/main/java/com/ray650128/iosclockwidget/ClockUpdateService.kt index 5d68547..df2e2da 100644 --- a/app/src/main/java/com/ray650128/iosclockwidget/AlarmService.kt +++ b/app/src/main/java/com/ray650128/iosclockwidget/ClockUpdateService.kt @@ -5,23 +5,24 @@ import android.app.* import android.content.Intent import android.os.Build import android.os.IBinder -import android.os.PowerManager.WakeLock import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat +import com.ray650128.iosclockwidget.receiver.IOSClockWidget import java.util.* -class AlarmService : Service() { +class ClockUpdateService : Service() { private val timerThread = Thread { while (true) { if (!isServiceRunning) break val calendar = Calendar.getInstance() val second = calendar[Calendar.SECOND] + val millisecond = calendar[Calendar.MILLISECOND] // 計算時、分、秒的旋轉角度 - secondAngle = (second * 360f / 60f) + secondAngle = ((second + (millisecond / 1000f)) * 360f / 60f)//(second * 360f / 60f) sendWidgetIntent() - Thread.sleep(1000) + Thread.sleep(100) } } @@ -101,7 +102,7 @@ class AlarmService : Service() { } companion object { - private val TAG = AlarmService::class.java.simpleName + private val TAG = ClockUpdateService::class.java.simpleName const val SERVICE_ID = 0x101 diff --git a/app/src/main/java/com/ray650128/iosclockwidget/MainActivity.kt b/app/src/main/java/com/ray650128/iosclockwidget/MainActivity.kt index f6255e9..7505861 100644 --- a/app/src/main/java/com/ray650128/iosclockwidget/MainActivity.kt +++ b/app/src/main/java/com/ray650128/iosclockwidget/MainActivity.kt @@ -5,15 +5,17 @@ import android.content.Intent import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import com.ray650128.iosclockwidget.utils.PermissionUtil +import com.ray650128.iosclockwidget.utils.PreferenceUtil class MainActivity : AppCompatActivity() { private val callback = object : PermissionUtil.PermissionResultCallback { override fun onGrant() { PreferenceUtil.isGranted = true - if (AlarmService.isServiceRunning) return + if (ClockUpdateService.isServiceRunning) return startForegroundService( - Intent(this@MainActivity, AlarmService::class.java) + Intent(this@MainActivity, ClockUpdateService::class.java) ) } @@ -46,9 +48,9 @@ class MainActivity : AppCompatActivity() { ) } else { PreferenceUtil.isGranted = true - if (AlarmService.isServiceRunning) return + if (ClockUpdateService.isServiceRunning) return startForegroundService( - Intent(this@MainActivity, AlarmService::class.java) + Intent(this@MainActivity, ClockUpdateService::class.java) ) } } diff --git a/app/src/main/java/com/ray650128/iosclockwidget/AutoStartReceiver.kt b/app/src/main/java/com/ray650128/iosclockwidget/receiver/AutoStartReceiver.kt similarity index 69% rename from app/src/main/java/com/ray650128/iosclockwidget/AutoStartReceiver.kt rename to app/src/main/java/com/ray650128/iosclockwidget/receiver/AutoStartReceiver.kt index 81d94e4..db2d85a 100644 --- a/app/src/main/java/com/ray650128/iosclockwidget/AutoStartReceiver.kt +++ b/app/src/main/java/com/ray650128/iosclockwidget/receiver/AutoStartReceiver.kt @@ -1,9 +1,11 @@ -package com.ray650128.iosclockwidget +package com.ray650128.iosclockwidget.receiver import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.util.Log +import com.ray650128.iosclockwidget.ClockUpdateService +import com.ray650128.iosclockwidget.utils.PreferenceUtil class AutoStartReceiver : BroadcastReceiver() { @@ -11,7 +13,7 @@ class AutoStartReceiver : BroadcastReceiver() { Log.d("AutoStartReceiver", "intent: ${intent?.action}") if (context == null || intent == null) return if (!PreferenceUtil.isGranted) return - val i = Intent(context, AlarmService::class.java) + val i = Intent(context, ClockUpdateService::class.java) context.startForegroundService(i) Log.d("AutoStartReceiver", "Boot completed.") } diff --git a/app/src/main/java/com/ray650128/iosclockwidget/IOSClockWidget.kt b/app/src/main/java/com/ray650128/iosclockwidget/receiver/IOSClockWidget.kt similarity index 86% rename from app/src/main/java/com/ray650128/iosclockwidget/IOSClockWidget.kt rename to app/src/main/java/com/ray650128/iosclockwidget/receiver/IOSClockWidget.kt index 2fc000f..c9f274a 100644 --- a/app/src/main/java/com/ray650128/iosclockwidget/IOSClockWidget.kt +++ b/app/src/main/java/com/ray650128/iosclockwidget/receiver/IOSClockWidget.kt @@ -1,4 +1,4 @@ -package com.ray650128.iosclockwidget +package com.ray650128.iosclockwidget.receiver import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetProvider @@ -9,6 +9,8 @@ import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Canvas import android.widget.RemoteViews +import com.ray650128.iosclockwidget.ClockUpdateService +import com.ray650128.iosclockwidget.R /** * Implementation of App Widget functionality. @@ -21,7 +23,7 @@ class IOSClockWidget : AppWidgetProvider() { val appWidgetIds = appWidgetManager.getAppWidgetIds(ComponentName(context, IOSClockWidget::class.java)) when (intent?.action) { - AlarmService.SECOND_CHANGED -> { + ClockUpdateService.SECOND_CHANGED -> { for (appWidgetId in appWidgetIds) { updateAppWidget(context, appWidgetManager, appWidgetId) } @@ -58,10 +60,12 @@ internal fun updateAppWidget( // Construct the RemoteViews object val views = RemoteViews(context.packageName, R.layout.i_o_s_clock_widget) views.setTextViewText(R.id.appwidget_text, widgetText) - val bmpOriginal = BitmapFactory.decodeResource(context.applicationContext.resources, R.drawable.img_second_hand) + val bmpOriginal = BitmapFactory.decodeResource(context.applicationContext.resources, + R.drawable.img_second_hand + ) val bmpResult = Bitmap.createBitmap(285, 285, Bitmap.Config.ARGB_8888) val tempCanvas = Canvas(bmpResult) - tempCanvas.rotate(AlarmService.secondAngle, 285 / 2.toFloat(), 285 / 2.toFloat()) + tempCanvas.rotate(ClockUpdateService.secondAngle, 285 / 2.toFloat(), 285 / 2.toFloat()) tempCanvas.drawBitmap(bmpOriginal, 0f, 0f, null) views.setImageViewBitmap(R.id.imageView, bmpResult) diff --git a/app/src/main/java/com/ray650128/iosclockwidget/PermissionUtil.kt b/app/src/main/java/com/ray650128/iosclockwidget/utils/PermissionUtil.kt similarity index 99% rename from app/src/main/java/com/ray650128/iosclockwidget/PermissionUtil.kt rename to app/src/main/java/com/ray650128/iosclockwidget/utils/PermissionUtil.kt index 311e21e..b113f9f 100644 --- a/app/src/main/java/com/ray650128/iosclockwidget/PermissionUtil.kt +++ b/app/src/main/java/com/ray650128/iosclockwidget/utils/PermissionUtil.kt @@ -1,4 +1,4 @@ -package com.ray650128.iosclockwidget +package com.ray650128.iosclockwidget.utils import android.app.Activity import android.content.Intent diff --git a/app/src/main/java/com/ray650128/iosclockwidget/PreferenceUtil.kt b/app/src/main/java/com/ray650128/iosclockwidget/utils/PreferenceUtil.kt similarity index 74% rename from app/src/main/java/com/ray650128/iosclockwidget/PreferenceUtil.kt rename to app/src/main/java/com/ray650128/iosclockwidget/utils/PreferenceUtil.kt index 2e6e429..3cacca0 100644 --- a/app/src/main/java/com/ray650128/iosclockwidget/PreferenceUtil.kt +++ b/app/src/main/java/com/ray650128/iosclockwidget/utils/PreferenceUtil.kt @@ -1,7 +1,7 @@ -package com.ray650128.iosclockwidget +package com.ray650128.iosclockwidget.utils import android.content.Context -import java.lang.reflect.Type +import com.ray650128.iosclockwidget.MyApplication /** @@ -12,7 +12,8 @@ object PreferenceUtil { private const val MAIN_KEY = "iOS_Clock_Widget" private const val IS_GRANTED = "IS_GRANTED" - private val sharedPreferences = MyApplication.getAppContext().getSharedPreferences(MAIN_KEY, Context.MODE_PRIVATE) + private val sharedPreferences = MyApplication.getAppContext() + .getSharedPreferences(MAIN_KEY, Context.MODE_PRIVATE) var isGranted: Boolean get() = sharedPreferences.getBoolean(IS_GRANTED, false) diff --git a/app/src/main/java/com/ray650128/iosclockwidget/IOSClockView.kt b/app/src/main/java/com/ray650128/iosclockwidget/view/IOSClockView.kt similarity index 99% rename from app/src/main/java/com/ray650128/iosclockwidget/IOSClockView.kt rename to app/src/main/java/com/ray650128/iosclockwidget/view/IOSClockView.kt index 0002626..e6250bc 100644 --- a/app/src/main/java/com/ray650128/iosclockwidget/IOSClockView.kt +++ b/app/src/main/java/com/ray650128/iosclockwidget/view/IOSClockView.kt @@ -1,4 +1,4 @@ -package com.ray650128.iosclockwidget +package com.ray650128.iosclockwidget.view import android.content.Context import android.graphics.* diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a469333..2a77b48 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" tools:context=".MainActivity"> -