我正在研究一个应用程序,该应用程序需要在特定条件下将屏幕锁定为特定活动。具体来说,我有一个服务在后台运行,检查GPS速度,如果速度超过了定义的数量,我需要打开一个活动,直到速度低于阈值数量时才能退出。我对android开发相对陌生,这是一个课程项目,我们还没有讨论唤醒锁或电源管理器,但我很高兴知道如果这是我需要做的。有没有办法在某些条件下使用Activity锁定屏幕?
我的代码对于这个问题我觉得不相干,因为我想要做的是独立于我已有的代码,但是如果需要的话我可以编辑并提供它。谢谢。
我正在研究一个应用程序,该应用程序需要在特定条件下将屏幕锁定为特定活动。具体来说,我有一个服务在后台运行,检查GPS速度,如果速度超过了定义的数量,我需要打开一个活动,直到速度低于阈值数量时才能退出。我对android开发相对陌生,这是一个课程项目,我们还没有讨论唤醒锁或电源管理器,但我很高兴知道如果这是我需要做的。有没有办法在某些条件下使用Activity锁定屏幕?
我的代码对于这个问题我觉得不相干,因为我想要做的是独立于我已有的代码,但是如果需要的话我可以编辑并提供它。谢谢。
总之:不,这是不可能的。
较长的答案 - 这取决于你的意思是“锁定屏幕”。当人们听到这句话时,他们通常认为这意味着要锁定设备,使用户不能做任何事情 - 安全屏幕可以防止他们在打开设备时走得太远(直到他们用引脚满足屏幕,模式,面部识别等)。
在你的问题中,你提到唤醒锁和电源管理器 - 这在安全锁屏中并不重要;如果您的真正意思是“锁定屏幕”或“不允许屏幕自动关闭”,则此功能非常重要。如果这就是你的意图,那么是的,你可以做到这一点。从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()
谢谢你的深刻解答。我的意思是“锁定它”,以便它们不能做任何其他事情,所以我猜想那个问题的答案,但我也想用这个唤醒锁来激活一个屏幕。我的后续问题是,我是否可以从待机状态下的Android中启动此唤醒锁定功能,并通过待机状态来表示何时从不活动状态变暗。 – kortex
如果这是可能的,可能是通过设置广播接收器来接收事件,告诉你调光正在发生;您的接收器将启动活动(可能会使用唤醒锁继续)。这就是说,我不知道要收到适当的事件。我知道你可以接收android.intent.action.SCREEN_OFF,但可能太晚了(特别是如果启用立即锁定)。 http://stackoverflow.com/questions/4031740/where-is-the-all-android-broadcast-intent-list/15178266#15178266有一个不完整的应收事件列表。 – mah