针对readme部分做性能优化,目标帧率120达成
This commit is contained in:
@@ -11,6 +11,7 @@ import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.provider.DocumentsContract
|
||||
import android.provider.OpenableColumns
|
||||
import android.view.Window // 🟢 必须包含
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.annotation.NonNull
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
@@ -32,6 +33,9 @@ class MainActivity : FlutterActivity() {
|
||||
private val PREF_NAME = "battery_health_prefs"
|
||||
private val KEY_SAF_URI = "saf_uri"
|
||||
|
||||
// 🟢 刷新率控制通道
|
||||
private val FRAME_RATE_CHANNEL = "com.lxh.battery_health/frame_rate"
|
||||
|
||||
private val chargeReceiver = object : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context?, intent: Intent?) {
|
||||
intent ?: return
|
||||
@@ -74,7 +78,6 @@ class MainActivity : FlutterActivity() {
|
||||
try {
|
||||
safUri = Uri.parse(uriString)
|
||||
android.util.Log.d("BatteryHealth", "通过 MethodChannel 恢复 URI: $safUri")
|
||||
// 同时保存到 SharedPreferences
|
||||
val prefs: SharedPreferences = getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE)
|
||||
prefs.edit().putString(KEY_SAF_URI, uriString).apply()
|
||||
} catch (e: Exception) {
|
||||
@@ -222,9 +225,34 @@ class MainActivity : FlutterActivity() {
|
||||
return fileUri?.let { readFile(it) }
|
||||
}
|
||||
|
||||
// 🟢 刷新率控制方法
|
||||
// 🟢 刷新率控制方法(使用 preferredRefreshRate,兼容性更好)
|
||||
private fun setHighRefreshRate() {
|
||||
try {
|
||||
val params = window.attributes
|
||||
params.preferredRefreshRate = 120f
|
||||
window.attributes = params
|
||||
android.util.Log.d("BatteryHealth", "setHighRefreshRate: 设置 120Hz")
|
||||
} catch (e: Exception) {
|
||||
android.util.Log.e("BatteryHealth", "setHighRefreshRate 失败: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
private fun clearRefreshRate() {
|
||||
try {
|
||||
val params = window.attributes
|
||||
params.preferredRefreshRate = 0f // 0 表示让系统自动决定
|
||||
window.attributes = params
|
||||
android.util.Log.d("BatteryHealth", "clearRefreshRate: 恢复默认")
|
||||
} catch (e: Exception) {
|
||||
android.util.Log.e("BatteryHealth", "clearRefreshRate 失败: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
|
||||
// 充电状态通道
|
||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHARGE_CHANNEL)
|
||||
.setMethodCallHandler { call, result ->
|
||||
if (call.method == "getChargeState") {
|
||||
@@ -247,6 +275,7 @@ class MainActivity : FlutterActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
// SAF 通道
|
||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, SAF_CHANNEL)
|
||||
.setMethodCallHandler { call, result ->
|
||||
when (call.method) {
|
||||
@@ -283,6 +312,23 @@ class MainActivity : FlutterActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
// 🟢 刷新率控制通道
|
||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, FRAME_RATE_CHANNEL)
|
||||
.setMethodCallHandler { call, result ->
|
||||
when (call.method) {
|
||||
"setHighRefreshRate" -> {
|
||||
setHighRefreshRate()
|
||||
result.success(true)
|
||||
}
|
||||
"clearRefreshRate" -> {
|
||||
clearRefreshRate()
|
||||
result.success(true)
|
||||
}
|
||||
else -> result.notImplemented()
|
||||
}
|
||||
}
|
||||
|
||||
// 事件通道
|
||||
EventChannel(flutterEngine.dartExecutor.binaryMessenger, EVENT_CHANNEL)
|
||||
.setStreamHandler(
|
||||
object : EventChannel.StreamHandler {
|
||||
|
||||
Reference in New Issue
Block a user