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">
-