2014-01-17 66 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

相關問題