我正在开发一个应用程序,该应用程序需要在特定条件下使用特定活动锁定屏幕。具体来说,我有一个在后台运行的服务,检查 GPS 速度,如果速度大于定义的量,我需要打开一个在速度低于阈值量之前无法退出的活动。我对 android 开发比较陌生,这是一个课程项目,我们还没有讨论过唤醒锁或电源管理器,但我很高兴知道这是否是我需要做的。
我认为我拥有的代码与这个问题无关,因为我想要做的与我已经拥有的代码是分开的,但如果需要,我可以编辑和提供它。谢谢你。
我正在开发一个应用程序,该应用程序需要在特定条件下使用特定活动锁定屏幕。具体来说,我有一个在后台运行的服务,检查 GPS 速度,如果速度大于定义的量,我需要打开一个在速度低于阈值量之前无法退出的活动。我对 android 开发比较陌生,这是一个课程项目,我们还没有讨论过唤醒锁或电源管理器,但我很高兴知道这是否是我需要做的。
我认为我拥有的代码与这个问题无关,因为我想要做的与我已经拥有的代码是分开的,但如果需要,我可以编辑和提供它。谢谢你。
简而言之:不,这是不可能的。
更长的答案——这取决于你所说的“锁定屏幕”是什么意思。当人们听到这个短语时,他们通常认为这意味着锁定设备,这样用户就无法做任何其他事情——当他们打开设备时,安全屏幕会阻止他们走得太远(直到他们用针来满足屏幕,模式、面部识别等)。
在您的问题中,您提到了唤醒锁和电源管理器——这在安全锁屏中并不重要;如果您真正的意思是在此活动处于活动状态时“锁定屏幕”或“不允许屏幕自动关闭”,这很重要。如果这就是您的意图,那么是的,您可以这样做。从如何让 Android WakeLock 工作?,您需要在清单中获得权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
您需要类似于以下的代码来启用唤醒锁:
private PowerManager.WakeLock wl;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNjfdhotDimScreen");
}//End of onCreate
@Override
protected void onPause() {
super.onPause();
wl.release();
}//End of onPause
@Override
protected void onResume() {
super.onResume();
wl.acquire();
}//End of onResume
当您准备好时,以下内容会禁用它:
w1.release()