package com.demo
import android.app.KeyguardManager
import android.content.Context
import android.os.*
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatButton
import java.lang.ref.WeakReference
import android.os.Looper
class MainActivity : AppCompatActivity() {
private val mMyHandler = Handler(Looper.getMainLooper())
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById<AppCompatButton>(R.id.lockBtn).setOnClickListener {
mTimeCounterRunnable.run()
}
}
private fun doTask() {
val lockStatus = getSystemService(UserManager::class.java).isUserUnlocked
Log.i("YYC", "lockStatus = $lockStatus")
//屏幕是否亮屏:
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
//true为打开,false为关闭
val ifOpen = powerManager.isScreenOn
Log.i("YYC", "屏幕是否亮屏,ifOpen = $ifOpen")
//屏幕是否解锁:
val mKeyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
val flag = mKeyguardManager.inKeyguardRestrictedInputMode()
//当前的屏幕锁有五种设置,分别是没有设置屏幕锁,滑动解锁,图案解锁,PIN码解锁,密码解锁。
//如果没有设置屏幕锁,返回值会一直为FALSE。如果用户设置了屏幕锁(包括后四种锁中的任何一种),屏幕不亮时返回TRUE,
// 屏幕亮时,解锁前返回TRUE,解锁后返回FALSE。
Log.i("YYC", "屏幕是否解锁: = $flag")
Log.i("YYC", "-------------------------------------------")
}
private fun doTask2(){
val screenStatus = getScreenStatus()
Log.i("YYC", "设备是否解锁: = $screenStatus")
Log.i("YYC", "-------------------------------------------")
}
/**
*
*/
private fun getScreenStatus(): Boolean {
//屏幕是否亮屏:
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
//true为打开,false为关闭
val ifOpen = powerManager.isScreenOn
Log.i("YYC", "屏幕是否亮屏,ifOpen = $ifOpen")
if(!ifOpen){
return false
}
//屏幕是否解锁:
//当前的屏幕锁有五种设置,分别是没有设置屏幕锁,滑动解锁,图案解锁,PIN码解锁,密码解锁。
//如果没有设置屏幕锁,返回值会一直为FALSE。
// 如果用户设置了屏幕锁(包括后四种锁中的任何一种),屏幕不亮时返回TRUE,
// 屏幕亮时,解锁前返回TRUE,解锁后返回FALSE。
val mKeyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
val flag = mKeyguardManager.inKeyguardRestrictedInputMode()
Log.i("YYC", "屏幕是否解锁: = $flag")
return ifOpen && !flag
}
private val mTimeCounterRunnable: Runnable = object : Runnable {
override fun run() { //在此添加需轮寻的接口
doTask2() //getUnreadCount()执行的任务
mMyHandler.postDelayed(this, 3 * 1000)
}
}
override fun onDestroy() {
mMyHandler.removeCallbacks(mTimeCounterRunnable)
super.onDestroy()
}
}
Android判断屏幕锁屏状态
最新推荐文章于 2023-04-28 17:09:58 发布
本文详细介绍了如何在Android应用中检测屏幕的锁屏状态,包括使用Java和Kotlin两种方式。通过监听设备的电源管理和屏幕事件,实时获取屏幕是否锁定,为你的应用提供智能化的交互体验。

943

被折叠的 条评论
为什么被折叠?



