java - 安卓实现熄屏功能。
迷茫
迷茫 2017-04-18 10:53:12
0
2
706

在APP中定义一个时间(假设为5分钟),记录两次操作APP之间的时间间隔,如果大于之前定义的时间,则APP端实现发出命令,手机屏幕熄灭。该功能要如何实现?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(2)
Ty80

第一點是鎖定畫面這個功能吧,可以參考:https://github.com/chniccs/Lo...
這個小專案就是鎖定螢幕功能的實現,程式碼量很少。

另外一點就是看你怎麼定義每次操作,這裡將把一個activity顯示到前台當作一次操作,你也可以重寫觸摸監聽去定義一些觸摸操作為一次操作。
1、寫個BaseActivity,在onResume(這裡用這個代表一次操作)中發出一個延時訊息(廣播或者其它handler),並記錄當前時間(存儲在自定義Application中或者一個全域單例或者持久化存儲)
2、根據前面發送延遲訊息的方式,如廣播,在收到發出的廣播訊息後,取當前時間值與1 步驟中記錄的時間值進行比較,如果小於定義的時間值,則再次取兩次時間值(儲存的與目前的)的差值作為延時再發出一個廣播。當下次再收到廣播時,再進行判斷,如果大於等於時間值,就呼叫鎖定畫面。

說明:第2 步中為什麼要取差值而不是重新發一個固定延時的廣播,這是因為在第一次發送廣播後,可能你會進行一些操作,這些操作就後續的,也就是說當你收到延時廣播時,最後一次操作的時間並不是發送廣播時記錄的時間,而是真實最後一次操作的時間。所以每次操作後都需要對記錄的時間值進行更新操作。

差值計算:定義的無操作固定最大時間 - (當前時間 - 最後一次操作時間)

左手右手慢动作

採用Handler的postDelayed(Runnable, long)方法
1.定義一個Handler類別

Handler handler=new Handler();  
Runnable runnable=new Runnable() {  
    @Override  
    public void run() {  
        // TODO Auto-generated method stub  
        //要做的事情  
        handler.postDelayed(this, 2000);  
    }  
};  

2.啟動計時器

handler.postDelayed(runnable, 2000);

3.停止計時器

handler.removeCallbacks(runnable); 

大概就是這麼一個路數吧,時間自己決定咯

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板