安卓开发

安卓监听电量变化

2021-01-14  本文已影响0人  蓝不蓝编程

主要代码

class MainActivity : AppCompatActivity() {
    private lateinit var listener: BatteryListener
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        listener = BatteryListener(this)
        listener.register(object : BatteryStateListener {
            override fun onStateChanged() {
                toast("电量有变")
            }

            override fun onStateLow() {
                toast("电量低")
            }

            override fun onStateOkay() {
                toast("已充满")
            }

            override fun onStatePowerConnected() {
                toast("电源线已连接")
            }

            override fun onStatePowerDisconnected() {
                toast("电源线已断开")
            }
        })
    }

    private fun toast(msg: String) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
    }

    override fun onDestroy() {
        listener.unregister()
        super.onDestroy()
    }
}
class BatteryListener(private val mContext: Context) {
    private val receiver: BatteryBroadcastReceiver?
    private var mBatteryStateListener: BatteryStateListener? = null
    fun register(listener: BatteryStateListener?) {
        mBatteryStateListener = listener
        if (receiver != null) {
            val filter = IntentFilter()
            filter.addAction(Intent.ACTION_BATTERY_CHANGED)
            filter.addAction(Intent.ACTION_BATTERY_LOW)
            filter.addAction(Intent.ACTION_BATTERY_OKAY)
            filter.addAction(Intent.ACTION_POWER_CONNECTED)
            filter.addAction(Intent.ACTION_POWER_DISCONNECTED)
            mContext.registerReceiver(receiver, filter)
        }
    }

    fun unregister() {
        if (receiver != null) {
            mContext.unregisterReceiver(receiver)
        }
    }

    private inner class BatteryBroadcastReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            when (intent.action) {
                Intent.ACTION_BATTERY_CHANGED -> if (mBatteryStateListener != null) {
                    mBatteryStateListener!!.onStateChanged()
                }
                Intent.ACTION_BATTERY_LOW -> if (mBatteryStateListener != null) {
                    mBatteryStateListener!!.onStateLow()
                }
                Intent.ACTION_BATTERY_OKAY -> if (mBatteryStateListener != null) {
                    mBatteryStateListener!!.onStateOkay()
                }
                Intent.ACTION_POWER_CONNECTED -> if (mBatteryStateListener != null) {
                    mBatteryStateListener!!.onStatePowerConnected()
                }
                Intent.ACTION_POWER_DISCONNECTED -> if (mBatteryStateListener != null) {
                    mBatteryStateListener!!.onStatePowerDisconnected()
                }
            }
        }
    }

    interface BatteryStateListener {
        fun onStateChanged()
        fun onStateLow()
        fun onStateOkay()
        fun onStatePowerConnected()
        fun onStatePowerDisconnected()
    }

    init {
        receiver = BatteryBroadcastReceiver()
    }
}
上一篇 下一篇

猜你喜欢

热点阅读