我正在研究一個應用程序,該應用程序需要在特定條件下將屏幕鎖定爲特定活動。具體來說,我有一個服務在後臺運行,檢查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