Release RuleGel 1.0.1 with Realbooru

This commit is contained in:
2026-05-25 14:33:59 +03:00
parent 16e86fb9d5
commit ea39cf8567
28 changed files with 1217 additions and 263 deletions
@@ -1,7 +1,9 @@
package com.example.gel_rule_app
import android.content.ContentValues
import android.content.Context
import android.os.Build
import android.os.BatteryManager
import android.os.Environment
import android.provider.MediaStore
import io.flutter.embedding.android.FlutterActivity
@@ -29,6 +31,25 @@ class MainActivity : FlutterActivity() {
result.error("save_failed", error.message, null)
}
}
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "rulegel/device")
.setMethodCallHandler { call, result ->
try {
when (call.method) {
"getBatteryLevel" -> result.success(batteryLevel())
"getSupportedRefreshRates" -> result.success(supportedRefreshRates())
"setPreferredRefreshRate" -> {
val hz = call.argument<Double>("hz")
?: call.argument<Int>("hz")?.toDouble()
?: 60.0
setPreferredRefreshRate(hz.toFloat())
result.success(null)
}
else -> result.notImplemented()
}
} catch (error: Throwable) {
result.error("device_failed", error.message, null)
}
}
}
private fun saveToDownloads(path: String, fileName: String, mimeType: String): String {
@@ -61,4 +82,34 @@ class MainActivity : FlutterActivity() {
}
return destination.absolutePath
}
private fun batteryLevel(): Int? {
val manager = getSystemService(Context.BATTERY_SERVICE) as? BatteryManager ?: return null
val level = manager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
return if (level in 0..100) level else null
}
private fun supportedRefreshRates(): List<Double> {
val display = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) display else windowManager.defaultDisplay
return display?.supportedModes
?.map { it.refreshRate.toDouble() }
?.distinct()
?.sorted()
?: emptyList()
}
private fun setPreferredRefreshRate(targetHz: Float) {
val display = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) display else windowManager.defaultDisplay
val mode = display?.supportedModes?.minByOrNull {
kotlin.math.abs(it.refreshRate - targetHz)
} ?: return
val attrs = window.attributes
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
attrs.preferredDisplayModeId = mode.modeId
} else {
@Suppress("DEPRECATION")
attrs.preferredRefreshRate = mode.refreshRate
}
window.attributes = attrs
}
}