在某些条件下,有没有办法用活动锁定屏幕?

时间:2014-01-17 12:01:50

标签: android service android-activity screen-lock

我正在处理一个应用程序,该应用程序需要在特定条件下使用特定活动锁定屏幕。具体来说,我有一个在后台运行的服务检查GPS速度,如果速度超过规定的数量,我需要打开一个活动,直到速度低于阈值量,才能退出。我对Android开发相对较新,这是一个类的项目,我们还没有讨论唤醒锁或电源管理器,但我很高兴知道这是否是我需要做的。

我认为我的代码对于这个问题非常无关紧要,因为我想要做的是与我已有的代码分开,但如果需要我可以编辑和提供它。谢谢。

1 个答案:

答案 0 :(得分:1)

简而言之:不,这是不可能的。

更长的答案 - 这取决于“锁定屏幕”的含义。当人们听到这个短语时,他们通常会认为这意味着锁定设备,使用户无法做任何其他事情 - 安全屏幕阻止他们在打开设备时走远(直到他们用针脚满足屏幕,模式,面部识别等)。

在您的问题中,您提到了唤醒锁和电源管理器 - 这在安全锁定屏幕中并不重要;如果您真正想要的是“锁定屏幕”,或者在此活动处于活动状态时“不允许屏幕自动关闭”,这一点非常重要。如果这就是你的意图,那么是的,你可以做到。从How to get an Android WakeLock to work?开始,您需要在清单中获得权限:

<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()