【如何開發一個鎖屏應用】
想要開發一個鎖屏應用,似乎很難,其實並沒有想象中那么難。
從本質上來說,鎖屏界面也只是一個Activity而已,只是這個界面比較特殊,在我們點亮屏幕的時候,這個界面就會出現。
而且在此界面中,我們可以用一些行為來退出,比如點擊按鈕等。
還有一個特征是在這個界面的時候,我們通常是不能使用底部的三個按鈕的
關於如果屏蔽底部的三個按鈕,我已經在另一篇博客Android4.0+鎖屏程序開發——按鍵屏蔽篇進行了總結,有需要的朋友可以參看。
這篇博客我們主要討論如何讓一個Activity在屏幕點亮的時候出現,並且不觸發系統的鎖屏。
【設置自己的鎖屏頁面】
首先,點亮屏幕的時候,系統會發出一個廣播,ACTION_SCREEN_ON,我們可以通過一個BroadcastReceiver來監聽這個廣播,並啟動我們自己的Activity
例如下面的代碼:
private BroadcastReceiver screenReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals("android.intent.action.SCREEN_ON") || action.equals("android.intent.action.SCREEN_OFF")) { startActivity(toMainIntent); } } };
但是,光啟動我們的Activity還不夠,因為僅僅是啟動的話,系統的鎖屏還是會出現在界面上,那么效果就變成了,我們解鎖了系統的鎖屏看到了自定義的界面。
這顯然不是我們想看到的,我們想的是當屏幕一點亮就看到我們的界面。
我們可以通過對自定義界面的設置中關閉系統的鎖屏來實現這個需求。
代碼如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Window win = getWindow(); win.addFlags( WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//解除系統鎖屏 setContentView(R.layout.main_layout); setView();//設置關閉按鈕 }
通過上面的設置,我們就可以在點亮屏幕的時候看到自己的界面了。
一個完整的鎖屏例子我已經上傳到了GitHub上面,地址是:https://github.com/u3shadow/ScreenLocker
有需要的朋友可以進行參考。
通過這兩篇博客,我們就可以基本實現一個鎖屏應用了,在此基礎上,我們可以對自定義界面做更進一步的優化,美化,做出自己理想的鎖屏。
此系列就到這里,希望能幫助到大家,謝謝