Android:控制按鍵燈亮滅【button-backlight】

/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

1.導包
import java.io.DataOutputStream;
import java.io.FileOutputStream;

Handler mHandler3;

2.新建handler對象

public void init(Context context, IWindowManager windowManager,
? ? ? ? ? ? WindowManagerFuncs windowManagerFuncs) {

?mHandler3 = new Handler();

3.延時處理方法

public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {


? ? ? ? // Basic policy based on interactive state.
? ? ? ? int result;
? ? ? ? boolean isWakeKey = (policyFlags & WindowManagerPolicy.FLAG_WAKE) != 0
? ? ? ? ? ? ? ? || event.isWakeKey();
? ? ? ? //*/?20210513. for backlight control
? ? ? ? if(interactive) {
? ? ? ? ? ? writeFile("/sys/class/leds/button-backlight/brightness", "1");
? ? ? ? ? ? mHandler3.removeMessages(0);
? ? ? ? ? ? mHandler3.postDelayed(new Runnable() {
? ? ? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? ? ? writeFile("/sys/class/leds/button-backlight/brightness", "0");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }, 5 * 1000);
? ? ? ? }
? ? ? ? //*/

? ? ? ? if (interactive || (isInjected && !isWakeKey)) {
? ? ? ? ? ? // When the device is interactive or the key is injected pass the
? ? ? ? ? ? // key to the application.
? ? ? ? ? ? result = ACTION_PASS_TO_USER;
? ? ? ? ? ? isWakeKey = false;

? ? ? ? ? ? if (interactive) {
? ? ? ? ? ? ? ? // If the screen is awake, but the button pressed was the one that woke the device
? ? ? ? ? ? ? ? // then don't pass it to the application
? ? ? ? ? ? ? ? if (keyCode == mPendingWakeKey && !down) {
? ? ? ? ? ? ? ? ? ? result = 0;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? // Reset the pending key
? ? ? ? ? ? ? ? mPendingWakeKey = PENDING_KEY_NULL;
? ? ? ? ? ? }
? ? ? ? } else if (!interactive && shouldDispatchInputWhenNonInteractive(event)) {
? ? ? ? ? ? // If we're currently dozing with the screen on and the keyguard showing, pass the key
? ? ? ? ? ? // to the application but preserve its wake key status to make sure we still move
? ? ? ? ? ? // from dozing to fully interactive if we would normally go from off to fully
? ? ? ? ? ? // interactive.
? ? ? ? ? ? result = ACTION_PASS_TO_USER;
? ? ? ? ? ? // Since we're dispatching the input, reset the pending key
? ? ? ? ? ? mPendingWakeKey = PENDING_KEY_NULL;
? ? ? ? } else {
? ? ? ? ? ? // When the screen is off and the key is not injected, determine whether
? ? ? ? ? ? // to wake the device but don't pass the key to the application.
? ? ? ? ? ? result = 0;
? ? ? ? ? ? if (isWakeKey && (!down || !isWakeKeyWhenScreenOff(keyCode))) {
? ? ? ? ? ? ? ? isWakeKey = false;
? ? ? ? ? ? }
? ? ? ? ? ? // Cache the wake key on down event so we can also avoid sending the up event to the app
? ? ? ? ? ? if (isWakeKey && down) {
? ? ? ? ? ? ? ? mPendingWakeKey = keyCode;
? ? ? ? ? ? }
? ? ? ? }

4.屏滅時寫0

?@Override
? ? public void screenTurningOff(ScreenOffListener screenOffListener) {
? ? ? ? mWindowManagerFuncs.screenTurningOff(screenOffListener);
? ? ? ? synchronized (mLock) {
? ? ? ? ? ? if (mKeyguardDelegate != null) {
? ? ? ? ? ? ? ? mKeyguardDelegate.onScreenTurningOff();
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? //*/ 20231017 for backlight control
? ? ? ? writeFile("/sys/class/leds/button-backlight/brightness", "0");
? ? ? ? //*/

? ? }
?

5.寫節點方法

//*/

private void writeFile(String filePath, String line) {
? ? ? ? File a = new File(filePath);
? ? ? ? if (a.exists()) {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? FileOutputStream fs = new FileOutputStream(a);
? ? ? ? ? ? ? ? DataOutputStream ds = new DataOutputStream(fs);
? ? ? ? ? ? ? ? ds.write(line.getBytes());
? ? ? ? ? ? ? ? ds.flush();
? ? ? ? ? ? ? ? ds.close();
? ? ? ? ? ? ? ? fs.close();
? ? ? ? ? ? } catch (Exception ex) {
? ? ? ? ? ? ? ? Log.e(TAG, "writeFile() Exception: " + filePath);
? ? ? ? ? ? }
? ? ? ? } else {
? ? ? ? ? ? Log.d(TAG, "writeFile() File not exist: " + filePath);
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? if (a.createNewFile()) {
? ? ? ? ? ? ? ? ? ? Log.d(TAG, "writeFile() File created: " + filePath);
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? FileOutputStream fs = new FileOutputStream(a);
? ? ? ? ? ? ? ? ? ? ? ? DataOutputStream ds = new DataOutputStream(fs);
? ? ? ? ? ? ? ? ? ? ? ? ds.write(line.getBytes());
? ? ? ? ? ? ? ? ? ? ? ? ds.flush();
? ? ? ? ? ? ? ? ? ? ? ? ds.close();
? ? ? ? ? ? ? ? ? ? ? ? fs.close();
? ? ? ? ? ? ? ? ? ? } catch (Exception ex) {
? ? ? ? ? ? ? ? ? ? ? ? Log.e(TAG, "writeFile() Exception: " + filePath);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? Log.d(TAG, "writeFile() Create file fail: " + filePath);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? Log.e(TAG, "writeFile() creatFile Exception: " + filePath);
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? //*/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166935.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166935.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166935.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

制作linux deb安裝包

dpkg 命令命令詳解 dpkg -i手動安裝軟件包(這個命令并不能解決軟件包之前的依賴性問題),如果在安裝某一個軟件包的時候遇到了軟件依賴的問題,可以用apt-get -f install在解決信賴性這個問題.     dpkg --info “軟件包名” --列出軟件包解包后的包名稱. dpkg -l–列出當前…

java 基礎面試題——問題+答案——第1期

一、問題 在Java基礎面試中,面試官可能會問及一系列基礎知識,以確保對Java語言的核心概念和基本特性有清晰的理解。以下是一些可能的問題: Java基礎: 解釋Java的基本特性。什么是Java虛擬機(JVM)&#xff…

2024深圳電子展,加快粵港澳電子信息發展,重點打造“灣區經濟”

在“十四五”期間,中國電子信息產業面臨著新形勢和新特點。隨著國家對5G、人工智能、工業互聯網、物聯網等“新基建”的加速推進,以及形成“雙循環”新格局的形勢,新型顯示、集成電路等產業正在加速向國內轉移。這一過程不僅帶來了新的應用前…

主從復制讀寫分離?

主從復制和讀寫分離是常見的數據庫架構策略,它們可以提高系統的性能和可靠性。下面是一個簡單的實現方法: 主從復制: 配置主數據庫:在主數據庫上啟用二進制日志(binary log),用于記錄所有修改數…

【ES6.0】-詳細模塊化、export與Import詳解

【ES6.0】-詳細模塊化、export與Import詳解 文章目錄 【ES6.0】-詳細模塊化、export與Import詳解一、模塊化概述二、ES6模塊化的語法規范三、export導出模塊3.1 單變量導出3.2 導出多個變量3.3 導出函數3.4 導出對象第一種第二種: 3.5 類的導出第一種第二種 四、imp…

FFNPEG編譯腳本

下面是一個ffmpeg編譯腳本: #!/bin/bash set -eu -o pipefail set eu o pipefailFFMPEG_TAGn4.5-dev build_path$1 git_repo"https://github.com/FFmpeg/FFmpeg.git" cache_tool"" sysroot"" c_compiler"gcc" cxx_compile…

2023年亞太地區數學建模大賽 C 題

我國新能源電動汽車的發展趨勢 新能源汽車是指以先進技術原理、新技術、新結構的非常規汽車燃料為動力來源(非常規汽車燃料指汽油、柴油以外的燃料),將先進技術進行汽車動力控制和驅動相結合的汽車。新能源汽車主要包括四種類型:…

【mybatis注解實現條件查詢】

文章目錄 步驟1: 引入MyBatis依賴步驟2: 創建數據模型步驟3: 創建Mapper接口步驟4: 配置MyBatis步驟5: 執行條件查詢 步驟1: 引入MyBatis依賴 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.x.…

MobaXterm連接節點一段時間后超時Session stopped

1、MobaXterm &#xff08;1&#xff09;設置ssh 超時時間 &#xff08;2&#xff09;設置保持連接 如果服務器端設置了超時時間&#xff0c;會以服務器為準&#xff0c;具體設置&#xff1a; 2、服務端 cat /etc/ssh/sshd_config | grep "ClientAlive" 可以把設置…

一穿一戴一世界 | 紫光展銳2023智能穿戴沙龍成功舉辦

11月23日&#xff0c;紫光展銳在深圳成功舉辦了以“一穿一戴一世界”為主題的2023智能穿戴沙龍。展銳智能穿戴沙龍已舉辦四屆&#xff0c;旨在為行業提供啟發性的觀點和前瞻性的創新理念。本屆沙龍吸引了終端廠商、行業翹楚、生態伙伴等行業各領域超過500人匯聚一堂&#xff0c…

【HTML5-webscoket實時通信(web)】

websocket是什么&#xff1f; 就是用來創建網絡聊天室&#xff0c;實時通信websocket的方法有哪些&#xff1f; https://developer.mozilla.org/zh-CN/docs/Web/API/WebSockets如何實現&#xff1a;&#xff08;以下實現流程&#xff09; 前端&#xff1a; // 直播中// 聊天web…

機器篇——決策樹(六) 細說 評估指標的交叉驗證

本小節&#xff0c;細說 評估指標的交叉驗證。 三. 評估指標 3. 交叉驗證(cross validation) (1). 概念 交叉驗證(cross validation, cv) 主要用于模型訓練或建模應用中&#xff0c;如分類預測、PCR、PLS 回歸建模等。在給定的樣本空間中&#xff0c;拿出大部分…

HCIA-RS基礎-靜態路由協議

摘要&#xff1a;靜態路由是一種在網絡中廣泛應用的路由選擇方案&#xff0c;它以其簡單的配置和低開銷而備受青睞。本文將介紹靜態路由的配置方法、默認路由的設置、路由的負載分擔和備份策略。通過學習本文&#xff0c;希望可以你能夠掌握靜態路由的基本概念和在華為模擬器中…

貪心算法個人見解

目錄 基本思想&#xff1a; 貪心算法的步驟&#xff1a; 示例&#xff1a; 貪心算法&#xff08;Greedy Algorithm&#xff09;是一種基于貪心策略的算法范式&#xff0c;它在每一步選擇中都采取當前狀態下的最優選擇&#xff0c;而不考慮全局最優解。貪心算法通常適用于那些…

U-Boot 之九 詳解 Pinctrl 子系統、命令、初始化流程、使用方法

嵌入式芯片中,引腳復用是一個非常常見的功能,U-Boot 提供一個類似 Linux Kernel 的 Pinctrl 子系統來處理引腳復用功能。正好最近用到了這部分功能,需要移植 Pinctrl 驅動,特此記錄一下學習過程。 架構 U-Boot 提供一個類似 Linux Kernel 的 Pinctrl 子系統,用來統一各芯…

Double 4 VR智能互動教學系統在小語種課堂中的教學應用

小語種課堂一直是教育領域的一個難點。由于語言本身的復雜性和文化背景的差異&#xff0c;小語種教學一直是一個挑戰。傳統的課堂教學方法往往難以激發學生的學習興趣和動力&#xff0c;教學效果不盡如人意。而Double 4 VR智能互動教學系統為小語種課堂帶來了新的可能。 Double…

視頻服務網關的三大部署(三)

視頻網關是軟硬一體的一款產品&#xff0c;可提供多協議&#xff08;RTSP/ONVIF/GB28181/海康ISUP/EHOME/大華、海康SDK等&#xff09;的設備視頻接入、采集、處理、存儲和分發等服務&#xff0c; 配合視頻網關云管理平臺&#xff0c;可廣泛應用于安防監控、智能檢測、智慧園區…

RK WiFi部分信道在部分地區無法使用的原因

不同國家支持的WiFi信道不一樣&#xff0c;需要正確設置wificountrycode 修改路徑&#xff1a; device\rockchip\common\BoardConfig.mk 修改內容&#xff1a;androidboot.wificountrycodeXX 該屬性會被解析為 ro.boot.wificountrycode framework層會在&#xff1a; framewor…

用好語言模型:temperature、top-p等核心參數解析

編者按&#xff1a;我們如何才能更好地控制大模型的輸出? 本文將介紹幾個關鍵參數&#xff0c;幫助讀者更好地理解和運用 temperature、top-p、top-k、frequency penalty 和 presence penalty 等常見參數&#xff0c;以優化語言模型的生成效果。 文章詳細解釋了這些參數的作用…

leetcode 343.整數拆分 198.打家劫舍(動態規劃)

OJ鏈接 &#xff1a;leetcode 343.整數拆分 代碼&#xff1a; class Solution {public int integerBreak(int n) {int[] dp new int[n1];//每個n&#xff0c;拆分多個整數乘積的最大值dp [0] 0;dp [1] 1; for(int i 2 ; i<n; i){for(int j 0 ; j < i; j){dp[i] Ma…