【发布时间】:2021-03-23 19:53:13
【问题描述】:
如果 Kotlin 使用广播接收器在 Android Studio 中电池电量低于 10%,我如何显示通知?
【问题讨论】:
-
这就像三个问题合二为一。 1)如何显示通知,2)如何检查电池电量,3)如何重复调用广播接收器。请准确地缩小您遇到的问题。
标签: android kotlin notifications battery
如果 Kotlin 使用广播接收器在 Android Studio 中电池电量低于 10%,我如何显示通知?
【问题讨论】:
标签: android kotlin notifications battery
用这个在
中创建一个新的Android项目将 AndroidX 支持库添加到您的模块 build.gradle(其他implementation 是:
dependencies {
implementation 'androidx.core:core-ktx:1.3.2'
}
MainActivity.kt 导入:
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.BatteryManager
import android.os.Build
import android.os.Bundle
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.NotificationCompat
import kotlin.concurrent.thread
MainActivity.kt:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
thread {
val mNotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val mChannel = NotificationChannel("default", "default", NotificationManager.IMPORTANCE_DEFAULT)
mNotificationManager.createNotificationChannel(mChannel)
while (true) {
val batteryStatus: Intent? = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter ->
this.registerReceiver(null, ifilter)
}
val batteryPct: Float = batteryStatus?.let { intent ->
val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
level * 100 / scale.toFloat()
} ?: 100f
if (batteryPct <= 10) {
val notif = NotificationCompat.Builder(this, "default").setContentText("Low Battery: ${batteryPct.toInt()}%").setSmallIcon(R.drawable.ic_launcher_foreground).build()
mNotificationManager.notify(1, notif) // re-use notification in tray
}
Thread.sleep(20000) // check every 20 seconds
}
}
}
}
【讨论】:
在清单中添加权限。注册您的广播接收器。在本教程中阅读更多内容 https://developer.android.com/training/monitoring-device-state/battery-monitoring
【讨论】: