diff --git a/app/build.gradle b/app/build.gradle
index 47d383f..c1f6bc4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,8 +10,8 @@ android {
applicationId "info.plateaukao.quickrotate"
minSdk 25
targetSdk 32
- versionCode 1090
- versionName "1.9"
+ versionCode 2000
+ versionName "2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 05f854b..855e0c6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -11,6 +11,10 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true">
+
+
@@ -166,6 +170,16 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/info/plateaukao/quickrotate/FrontLightActivity.kt b/app/src/main/java/info/plateaukao/quickrotate/FrontLightActivity.kt
new file mode 100644
index 0000000..1ceef21
--- /dev/null
+++ b/app/src/main/java/info/plateaukao/quickrotate/FrontLightActivity.kt
@@ -0,0 +1,105 @@
+package info.plateaukao.quickrotate
+
+import android.app.Activity
+import android.app.AlertDialog
+import android.content.Context
+import android.os.Build
+import android.os.Bundle
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.SeekBar
+import androidx.annotation.RequiresApi
+import com.onyx.android.sdk.api.device.FrontLightController
+
+class FrontLightActivity : Activity() {
+ @RequiresApi(Build.VERSION_CODES.O)
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+
+ val dialog = AlertDialog.Builder(this)
+ .setView(R.layout.front_light_adjust_layout)
+ .show()
+ dialog.window?.setLayout(300.dp(this), ViewGroup.LayoutParams.WRAP_CONTENT)
+ dialog.window?.setBackgroundDrawableResource(android.R.color.transparent);
+ initViews(dialog)
+ }
+
+ @RequiresApi(Build.VERSION_CODES.O)
+ private fun initViews(dialog: AlertDialog) {
+ val seekbarTemperature = dialog.findViewById(R.id.seekbar_light_temperature)
+ val seekbarBrightness = dialog.findViewById(R.id.seekbar_light_brightness)
+ val toggleButton = dialog.findViewById(R.id.iv_frontlight)
+ val isLightOn = FrontLightController.isColdLightOn(this)
+ toggleButton.setImageResource(if (isLightOn) R.drawable.ic_light_on else R.drawable.ic_light_off)
+ toggleButton.setOnClickListener {
+ if (FrontLightController.isColdLightOn(this)) {
+ enableFrontLight(false)
+ toggleButton.setImageResource(R.drawable.ic_light_off)
+ } else {
+ enableFrontLight(true)
+ toggleButton.setImageResource(R.drawable.ic_light_on)
+ }
+ }
+ val warmButton = dialog.findViewById(R.id.iv_temperature)
+ warmButton.setOnClickListener { seekbarTemperature.progress = 0 }
+
+ seekbarBrightness.max = 500
+ seekbarBrightness.min = 0
+ seekbarBrightness.progress = FrontLightController.getColdLightConfigValue(this) + FrontLightController.getWarmLightConfigValue(this)
+
+ var offSet = currentOffset
+ seekbarTemperature.max = 100
+ seekbarTemperature.min = -100
+ seekbarTemperature.progress = offSet
+
+ seekbarBrightness.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
+ override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
+ FrontLightController.setColdLightDeviceValue(this@FrontLightActivity, progress / 2)
+ FrontLightController.setWarmLightDeviceValue(
+ this@FrontLightActivity,
+ progress/2 + offSet
+ )
+ }
+
+ override fun onStartTrackingTouch(seekBar: SeekBar) {}
+
+ override fun onStopTrackingTouch(seekBar: SeekBar) {}
+ })
+ seekbarTemperature.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
+ override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
+ val coldBrightness =
+ FrontLightController.getColdLightConfigValue(this@FrontLightActivity)
+ offSet = progress
+ FrontLightController.setWarmLightDeviceValue(
+ this@FrontLightActivity,
+ coldBrightness + offSet
+ )
+ }
+
+ override fun onStartTrackingTouch(seekBar: SeekBar) {}
+
+ override fun onStopTrackingTouch(seekBar: SeekBar) {}
+ })
+ }
+
+ private val currentOffset = FrontLightController.getWarmLightConfigValue(this) -
+ FrontLightController.getColdLightConfigValue(this)
+
+ private fun enableFrontLight(isEnabled: Boolean) {
+ if (isEnabled) {
+ FrontLightController.openColdLight()
+ FrontLightController.openWarmLight()
+ } else {
+ FrontLightController.closeColdLight()
+ FrontLightController.closeWarmLight()
+ }
+ }
+}
+
+fun Int.dp(context: Context): Int {
+ val metrics = context.resources.displayMetrics
+ return (this * (metrics.densityDpi / 160f)).toInt()
+}
+
diff --git a/app/src/main/java/info/plateaukao/quickrotate/service/FrontLightTileService.kt b/app/src/main/java/info/plateaukao/quickrotate/service/FrontLightTileService.kt
index b9ee67d..2533516 100644
--- a/app/src/main/java/info/plateaukao/quickrotate/service/FrontLightTileService.kt
+++ b/app/src/main/java/info/plateaukao/quickrotate/service/FrontLightTileService.kt
@@ -1,20 +1,109 @@
package info.plateaukao.quickrotate.service
import android.app.AlertDialog
+import android.content.Context
import android.content.Intent
+import android.os.Build
import android.service.quicksettings.TileService
-import java.util.*
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.ImageView
+import android.widget.SeekBar
+import androidx.annotation.RequiresApi
+import com.onyx.android.sdk.api.device.FrontLightController
+import info.plateaukao.quickrotate.FrontLightActivity
+import info.plateaukao.quickrotate.R
+import info.plateaukao.quickrotate.dp
class FrontLightTileService: TileService() {
+ @RequiresApi(Build.VERSION_CODES.O)
override fun onClick() {
- // show an alert dialog with progress bar
- // when the progress bar is changed, send a broadcast to the service
- AlertDialog.Builder(this)
- .setTitle("Front Light")
- .setView(R.layout.front_light_dialog)
- .setPositiveButton("OK") { dialog, _ ->
- dialog.dismiss()
+ val it = Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
+ baseContext.sendBroadcast(it)
+
+ startActivity(
+ Intent(this, FrontLightActivity::class.java).apply {
+ addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ }
+ )
+// val dialog = AlertDialog.Builder(this)
+// .setView(R.layout.front_light_adjust_layout)
+// .create()
+// dialog.window?.setType(WindowManager.LayoutParams.TYPE_APPLICATION_PANEL)
+// dialog.show()
+//
+// dialog.window?.setLayout(300.dp(this), ViewGroup.LayoutParams.WRAP_CONTENT)
+// initViews(dialog)
+ }
+
+ @RequiresApi(Build.VERSION_CODES.O)
+ private fun initViews(dialog: AlertDialog) {
+ val seekbarTemperature = dialog.findViewById(R.id.seekbar_light_temperature)
+ val seekbarBrightness = dialog.findViewById(R.id.seekbar_light_brightness)
+ val toggleButton = dialog.findViewById(R.id.iv_frontlight)
+ val isLightOn = FrontLightController.isColdLightOn(this)
+ toggleButton.setImageResource(if (isLightOn) R.drawable.ic_light_on else R.drawable.ic_light_off)
+ toggleButton.setOnClickListener {
+ if (FrontLightController.isColdLightOn(this)) {
+ enableFrontLight(false)
+ toggleButton.setImageResource(R.drawable.ic_light_off)
+ } else {
+ enableFrontLight(true)
+ toggleButton.setImageResource(R.drawable.ic_light_on)
+ }
+ }
+ val warmButton = dialog.findViewById(R.id.iv_temperature)
+ warmButton.setOnClickListener { seekbarTemperature.progress = 0 }
+
+ seekbarBrightness.max = 500
+ seekbarBrightness.min = 0
+ seekbarBrightness.progress = FrontLightController.getColdLightConfigValue(this) + FrontLightController.getWarmLightConfigValue(this)
+
+ var offSet = currentOffset
+ seekbarTemperature.max = 100
+ seekbarTemperature.min = -100
+ seekbarTemperature.progress = offSet
+
+ seekbarBrightness.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
+ override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
+ FrontLightController.setColdLightDeviceValue(this@FrontLightTileService, progress / 2)
+ FrontLightController.setWarmLightDeviceValue(
+ this@FrontLightTileService,
+ progress/2 + offSet
+ )
}
- .show()
+
+ override fun onStartTrackingTouch(seekBar: SeekBar) {}
+
+ override fun onStopTrackingTouch(seekBar: SeekBar) {}
+ })
+ seekbarTemperature.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
+ override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
+ val coldBrightness =
+ FrontLightController.getColdLightConfigValue(this@FrontLightTileService)
+ offSet = progress
+ FrontLightController.setWarmLightDeviceValue(
+ this@FrontLightTileService,
+ coldBrightness + offSet
+ )
+ }
+
+ override fun onStartTrackingTouch(seekBar: SeekBar) {}
+
+ override fun onStopTrackingTouch(seekBar: SeekBar) {}
+ })
+ }
+
+ private val currentOffset = FrontLightController.getWarmLightConfigValue(this) -
+ FrontLightController.getColdLightConfigValue(this)
+
+ private fun enableFrontLight(isEnabled: Boolean) {
+ if (isEnabled) {
+ FrontLightController.openColdLight()
+ FrontLightController.openWarmLight()
+ } else {
+ FrontLightController.closeColdLight()
+ FrontLightController.closeWarmLight()
+ }
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/res/drawable/ic_frontlight.xml b/app/src/main/res/drawable/ic_frontlight.xml
new file mode 100644
index 0000000..1a19e7c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_frontlight.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_light_off.xml b/app/src/main/res/drawable/ic_light_off.xml
new file mode 100644
index 0000000..e162d8a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_light_off.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_light_on.xml b/app/src/main/res/drawable/ic_light_on.xml
new file mode 100644
index 0000000..2da8796
--- /dev/null
+++ b/app/src/main/res/drawable/ic_light_on.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_warm.xml b/app/src/main/res/drawable/ic_warm.xml
new file mode 100644
index 0000000..340c8b7
--- /dev/null
+++ b/app/src/main/res/drawable/ic_warm.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/app/src/main/res/layout/activity_front_light.xml b/app/src/main/res/layout/activity_front_light.xml
new file mode 100644
index 0000000..25b3efc
--- /dev/null
+++ b/app/src/main/res/layout/activity_front_light.xml
@@ -0,0 +1,9 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/front_light_adjust_layout.xml b/app/src/main/res/layout/front_light_adjust_layout.xml
index 61d4872..76d1d8d 100644
--- a/app/src/main/res/layout/front_light_adjust_layout.xml
+++ b/app/src/main/res/layout/front_light_adjust_layout.xml
@@ -1,23 +1,47 @@
+ android:paddingHorizontal="10dp">
-
+ android:orientation="horizontal">
+
+
-
+
+ android:orientation="horizontal">
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 73a1a24..8cebbd9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -13,4 +13,5 @@
upside down
Back
Home
+ Frontlight
\ No newline at end of file