Wie kann ich den Wert aktualisieren, den ich mit Jetpack Compose zeichne?Android

Forum für diejenigen, die für Android programmieren
Anonymous
 Wie kann ich den Wert aktualisieren, den ich mit Jetpack Compose zeichne?

Post by Anonymous »

Ich versuche eine Android -App zu machen, die den Batterieprozentsatz erhält und anzeigt, aber ich kann es nicht zum Aktualisieren bringen. Meine vielen Versuche, diesen Wert zu aktualisieren. Ich bin mir nicht einmal sicher, ob UpdateBatteryPCT sogar funktioniert. Ich würde mich freuen, wenn mir jemand eingehend erklären könnte, wie dies funktioniert, weil ich nicht wirklich alles untersuche. Ich kann in Kotlin codieren und Sachen machen, aber ich kann nichts tun, was für Android funktioniert. < /P>

Code: Select all

class MainActivity : ComponentActivity() {
var batteryStatus: Intent? = null
var batteryPct: MutableState = mutableStateOf(0)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(/* savedInstanceState = */ savedInstanceState)
setContent {
this.batteryStatus = getBatteryStatusReceiver()
this.batteryPct = remember {
mutableStateOf(0)
}
BatterySaverAppTheme {
// A surface container using the 'background' color from the theme
Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) {
getBatteryPct(this.batteryStatus, this.batteryPct)
DisplayBatteryPercentage(batteryPercentage = this.batteryPct)
}
}
}
}
suspend fun updateBatteryPct () {
while (true) {
getBatteryPct(this.batteryStatus, this.batteryPct)
delay(1000)
Log.d("customTest", "updateBatteryPct: Looping")
}
}
}

class BatteryManagerBroadcastReceiver(
private val onReceiveIntent: (Intent) -> Unit,
) : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
onReceiveIntent(intent)
}
}
@Composable
fun updateBatteryPct(batteryStatus: Intent?, batteryPct: MutableState) {
while (true) {
getBatteryPct(batteryStatus, batteryPct)
DisplayBatteryPercentage(batteryPercentage = batteryPct)
}
}

fun getBatteryPct(batteryStatus: Intent?, batteryPct: MutableState){
batteryPct.value =  batteryStatus?.let { intent ->
val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
level * 100 / scale
}!!
}

@Composable
fun getBatteryStatusReceiver(): Intent? {
val batteryStatus: Intent? = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter ->
LocalContext.current.applicationContext.registerReceiver(null, ifilter)
}
return batteryStatus
}

@Composable
fun DisplayBatteryPercentage(batteryPercentage: MutableState) {
Column(Modifier.padding(16.dp)) {
Text("battery is at ${batteryPercentage.value}%") }
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post