From 4b752857d8434e0216ad425532b8f47569e1ab02 Mon Sep 17 00:00:00 2001 From: Daniel Kao Date: Sat, 28 May 2022 23:24:11 +0800 Subject: [PATCH] refactor: use Activity to make sure the refresh mode change is fast enough. --- app/build.gradle | 8 ++++ app/src/main/AndroidManifest.xml | 8 +++- .../quickrotate/BaseRefreshModeTileService.kt | 18 +-------- .../quickrotate/RefreshModeActivity.kt | 38 +++++++++++++++++++ .../RefreshModeFastQualityTileService.kt | 2 +- .../quickrotate/RefreshModeFastTileService.kt | 2 +- .../RefreshModeNormalTileService.kt | 2 +- .../quickrotate/RefreshModeTileService.kt | 4 +- .../quickrotate/RefreshModeXTileService.kt | 2 +- .../main/res/layout/activity_refresh_mode.xml | 9 +++++ build.gradle | 2 +- 11 files changed, 70 insertions(+), 25 deletions(-) create mode 100644 app/src/main/java/info/plateaukao/quickrotate/RefreshModeActivity.kt create mode 100644 app/src/main/res/layout/activity_refresh_mode.xml diff --git a/app/build.gradle b/app/build.gradle index 247d2e1..093baf7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,6 +17,11 @@ android { } buildTypes { + releaseDebuggable { + debuggable true + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } release { minifyEnabled true shrinkResources true @@ -27,6 +32,9 @@ android { dependencies { implementation 'com.onyx.android.sdk:onyxsdk-device:1.2.6' + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5b6c632..1dbe80e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,11 +11,15 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true"> + + android:exported="true"> + @@ -29,6 +33,7 @@ + @@ -42,6 +47,7 @@ + diff --git a/app/src/main/java/info/plateaukao/quickrotate/BaseRefreshModeTileService.kt b/app/src/main/java/info/plateaukao/quickrotate/BaseRefreshModeTileService.kt index e9e0f34..de8550f 100644 --- a/app/src/main/java/info/plateaukao/quickrotate/BaseRefreshModeTileService.kt +++ b/app/src/main/java/info/plateaukao/quickrotate/BaseRefreshModeTileService.kt @@ -2,24 +2,8 @@ package info.plateaukao.quickrotate import android.content.Intent import android.service.quicksettings.TileService -import com.onyx.android.sdk.api.device.epd.UpdateOption -import com.onyx.android.sdk.device.BaseDevice -import com.onyx.android.sdk.device.Device open class BaseRefreshModeTileService : TileService() { - protected var device: BaseDevice? = null - - override fun onStartListening() { - device = Device.currentDevice() - } - - override fun onStopListening() { - device = null - } - @Suppress("DEPRECATION") - override fun onClick() { - super.onClick() - baseContext.sendBroadcast(Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) - } + override fun onClick() = baseContext.sendBroadcast(Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) } diff --git a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeActivity.kt b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeActivity.kt new file mode 100644 index 0000000..a6e090c --- /dev/null +++ b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeActivity.kt @@ -0,0 +1,38 @@ +package info.plateaukao.quickrotate + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.onyx.android.sdk.api.device.epd.UpdateOption +import com.onyx.android.sdk.device.Device + +private val device = Device.currentDevice + +class RefreshModeActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + handleIntent() + finish() + } + + private fun handleIntent() { + val updateOption = findUpdateOption(intent.getIntExtra(ARG_UPDATE_OPTION, UpdateOption.NORMAL.ordinal)) + device.systemRefreshMode = updateOption + } + + private fun findUpdateOption(value: Int): UpdateOption = + UpdateOption.values().firstOrNull { it.ordinal == value } ?: UpdateOption.NORMAL + + companion object { + private const val ARG_UPDATE_OPTION = "update_option" + + fun createIntent(context: Context, option: UpdateOption): Intent { + return Intent(context, RefreshModeActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + putExtra(ARG_UPDATE_OPTION, option.ordinal) + } + } + } + +} diff --git a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeFastQualityTileService.kt b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeFastQualityTileService.kt index 38ed842..040f091 100644 --- a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeFastQualityTileService.kt +++ b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeFastQualityTileService.kt @@ -5,6 +5,6 @@ import com.onyx.android.sdk.api.device.epd.UpdateOption class RefreshModeFastQualityTileService : BaseRefreshModeTileService() { override fun onClick() { super.onClick() - device?.systemRefreshMode = UpdateOption.FAST_QUALITY + startActivity(RefreshModeActivity.createIntent(this, UpdateOption.FAST_QUALITY)) } } diff --git a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeFastTileService.kt b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeFastTileService.kt index b2eadf0..da1da09 100644 --- a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeFastTileService.kt +++ b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeFastTileService.kt @@ -5,6 +5,6 @@ import com.onyx.android.sdk.api.device.epd.UpdateOption class RefreshModeFastTileService : BaseRefreshModeTileService() { override fun onClick() { super.onClick() - device?.systemRefreshMode = UpdateOption.FAST + startActivity(RefreshModeActivity.createIntent(this, UpdateOption.FAST)) } } diff --git a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeNormalTileService.kt b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeNormalTileService.kt index f672b0a..1978d1b 100644 --- a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeNormalTileService.kt +++ b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeNormalTileService.kt @@ -5,6 +5,6 @@ import com.onyx.android.sdk.api.device.epd.UpdateOption class RefreshModeNormalTileService : BaseRefreshModeTileService() { override fun onClick() { super.onClick() - device?.systemRefreshMode = UpdateOption.NORMAL + startActivity(RefreshModeActivity.createIntent(this, UpdateOption.NORMAL)) } } diff --git a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeTileService.kt b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeTileService.kt index b27b034..03cd6fd 100644 --- a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeTileService.kt +++ b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeTileService.kt @@ -6,7 +6,7 @@ import com.onyx.android.sdk.api.device.epd.UpdateOption class RefreshModeTileService : BaseRefreshModeTileService() { override fun onClick() { super.onClick() - device?.systemRefreshMode = - if (EpdController.isInFastMode()) UpdateOption.NORMAL else UpdateOption.FAST + val option = if (EpdController.isInFastMode()) UpdateOption.NORMAL else UpdateOption.FAST + startActivity(RefreshModeActivity.createIntent(this, option)) } } diff --git a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeXTileService.kt b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeXTileService.kt index d42a8ad..14afb73 100644 --- a/app/src/main/java/info/plateaukao/quickrotate/RefreshModeXTileService.kt +++ b/app/src/main/java/info/plateaukao/quickrotate/RefreshModeXTileService.kt @@ -5,6 +5,6 @@ import com.onyx.android.sdk.api.device.epd.UpdateOption class RefreshModeXTileService : BaseRefreshModeTileService() { override fun onClick() { super.onClick() - device?.systemRefreshMode = UpdateOption.FAST_X + startActivity(RefreshModeActivity.createIntent(this, UpdateOption.FAST_X)) } } diff --git a/app/src/main/res/layout/activity_refresh_mode.xml b/app/src/main/res/layout/activity_refresh_mode.xml new file mode 100644 index 0000000..aa96cb7 --- /dev/null +++ b/app/src/main/res/layout/activity_refresh_mode.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index ec159c8..7ab09f3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id 'com.android.application' version '7.2.0' apply false id 'com.android.library' version '7.2.0' apply false - id 'org.jetbrains.kotlin.android' version '1.6.20' apply false + id 'org.jetbrains.kotlin.android' version '1.6.21' apply false } task clean(type: Delete) {