2014-01-17 36 views
0

我正在研究一个应用程序,该应用程序需要在特定条件下将屏幕锁定为特定活动。具体来说,我有一个服务在后台运行,检查GPS速度,如果速度超过了定义的数量,我需要打开一个活动,直到速度低于阈值数量时才能退出。我对android开发相对陌生,这是一个课程项目,我们还没有讨论唤醒锁或电源管理器,但我很高兴知道如果这是我需要做的。有没有办法在某些条件下使用Activity锁定屏幕?

我的代码对于这个问题我觉得不相干,因为我想要做的是独立于我已有的代码,但是如果需要的话我可以编辑并提供它。谢谢。

回答

0

总之:不,这是不可能的。

较长的答案 - 这取决于你的意思是“锁定屏幕”。当人们听到这句话时,他们通常认为这意味着要锁定设备,使用户不能做任何事情 - 安全屏幕可以防止他们在打开设备时走得太远(直到他们用引脚满足屏幕,模式,面部识别等)。

在你的问题中,你提到唤醒锁和电源管理器 - 这在安全锁屏中并不重要;如果您的真正意思是“锁定屏幕”或“不允许屏幕自动关闭”,则此功能非常重要。如果这就是你的意图,那么是的,你可以做到这一点。从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() 
+0

谢谢你的深刻解答。我的意思是“锁定它”,以便它们不能做任何其他事情,所以我猜想那个问题的答案,但我也想用这个唤醒锁来激活一个屏幕。我的后续问题是,我是否可以从待机状态下的Android中启动此唤醒锁定功能,并通过待机状态来表示何时从不活动状态变暗。 – kortex

+0

如果这是可能的,可能是通过设置广播接收器来接收事件,告诉你调光正在发生;您的接收器将启动活动(可能会使用唤醒锁继续)。这就是说,我不知道要收到适当的事件。我知道你可以接收android.intent.action.SCREEN_OFF,但可能太晚了(特别是如果启用立即锁定)。 http://stackoverflow.com/questions/4031740/where-is-the-all-android-broadcast-intent-list/15178266#15178266有一个不完整的应收事件列表。 – mah

相关问题