java - 安卓實現熄屏功能。
問題描述
在APP中定義一個時間(假設為5分鐘),記錄兩次操作APP之間的時間間隔,如果大于之前定義的時間,則APP端實現發出命令,手機屏幕熄滅。該功能要如何實現?
問題解答
回答1:第一點是鎖屏這個功能吧,可以參考:https://github.com/chniccs/Lo...這個小項目就是鎖屏功能的實現,代碼量很少。
另外一點就是看你怎么定義每次操作,這里將把一個activity顯示到前臺當作一次操作,你也可以重寫觸摸監聽去定義一些觸摸操作為一次操作。1、寫個BaseActivity,在onResume(這里用這個代表一次操作)中發出一個延時消息(廣播或者其它handler),并記錄當前時間(存儲在自定義Application中或者一個全局單例或者持久化存儲)2、根據前面發送延時消息的方式,如廣播,在收到發出的廣播消息后,取當前時間值與 1 步中記錄的時間值進行比較,如果小于定義的時間值,則再次取兩次時間值(存儲的與當前的)的差值作為延時再發出一個廣播。當下次再收到廣播時,再進行判斷,如果大于等于時間值,就調用鎖屏。
說明:第 2 步中為什么要取差值而不是重新發一個固定延時的廣播,這是因為在第一次發送廣播后,可能你會進行一些操作,這些操作就后續的,也就是說當你收到延時廣播時,最后一次操作的時間并不是發送廣播時記錄的時間,而是真實最后一次操作的時間。所以在每次操作后都需要對記錄的時間值進行更新操作。
差值計算:定義的無操作固定最大時間 - (當前時間 - 最后一次操作時間)
回答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);
大概就是這么一個路數吧,時間自己決定咯
相關文章:
1. macos - mac下docker如何設置代理2. dockerfile - 為什么docker容器啟動不了?3. javascript - webapp業務流程基本一致,多套主題(樣式基本不一樣,交互稍有偏差)管理,并且有不斷有新增主題,該如何設計組件化架構?4. javascript - 用rem寫的頁面,安卓手機顯示文字是正常的,蘋果顯示的文字是特別小的是為什么呢5. javascript - 移動端,當出現遮罩層的時候,遮罩層里有div是超出高度scroll的,怎么避免滑動div的時候,body跟隨滑動?6. 請教各位大佬,瀏覽器點 提交實例為什么沒有反應7. 新手 - Python 爬蟲 問題 求助8. apache - 本地搭建wordpress權限問題9. javascript - 從mysql獲取json數據,前端怎么處理轉換解析json類型10. javascript - JS設置Video視頻對象的currentTime時出現了問題,IE,Edge,火狐,都可以設置,反而chrom卻...
