您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

监听电源键的单击或长按事件

时间:02-05来源:作者:点击数:

公司有Android设备,通过Intent.ACTION_SHUTDOWN广播可以接收到系统关机事件,收到此事件我会写日志保存到文件,有时候,我想知道是用户手动关机的,还是设备有问题自动关机的,这怎么办?最好的办法就是获取电源键的长按事件,如下:

	val receiver = object: BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            Log.i("ABCD", "收到了一个广播: ${intent?.action}")
            intent?.extras?.keySet()?.forEach {
                Log.i("ABCD", "$it = ${intent.extras?.get(it)}")
            }
        }
    }

    registerReceiver(receiver, IntentFilter().apply {
        addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
        addAction(Intent.ACTION_SCREEN_OFF)
        addAction(Intent.ACTION_SCREEN_ON)
    })
  • ACTION_SCREEN_OFF:屏幕熄灭了
  • ACTION_SCREEN_ON:屏幕亮了
  • ACTION_CLOSE_SYSTEM_DIALOGS:可以获取到屏幕熄灭、按了Home键、最近任务键、长按电源键,通过intent.getStringExtra(“reason”)来区分,值和对应含义如下:
  • lock 熄屏,公司有台android设备是dream
  • homekey Home键
  • recentapps 最近任务键
  • globalactions 长按电源键

当然,如果要监听电源长按事件,只注册Intent.ACTION_CLOSE_SYSTEM_DIALOGS这个广播就够了。至于监听电源的单击事件,至今仍然下落不明!

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门