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