From 77acc8c2e9a14ead80e86339f263ccc99418f46a Mon Sep 17 00:00:00 2001 From: hjw <hjw@ma.nodka.com> Date: Sat, 27 Jan 2024 14:02:49 +0000 Subject: [PATCH] 霍盛版本开机时开启红外感应读取(gpio95) --- app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java | 81 +++++++++++++++++++++++++++++++++++++--- 1 files changed, 74 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java b/app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java index 3c35eb9..b81bd45 100644 --- a/app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java +++ b/app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java @@ -2,25 +2,34 @@ import com.jwipc.nodka_reboot_under.utils.Utils; +import com.nodka.api.NodkaAPI; import android.app.Service; +import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.os.Message; +import android.os.PowerManager; +import android.os.SystemClock; + +import java.io.DataOutputStream; +import java.io.IOException; public class The_Service extends Service{ - + Utils mUtils = null; public static Handler handler; public static final int apk_feed_dog = 1; - - - - + + private NodkaAPI mNodkaAPI = MyApplication.getApplication().getNodkaAPI(); + private Thread gpioThread; + private static boolean gpioRead; + @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub @@ -38,9 +47,67 @@ receive_BroadcastReceiver_byService(); mUtils.stop_watch_dog_apk_feed(); - + + if (Build.DISPLAY.startsWith("Android-11-V7.009")) { + + // 霍盛版本红外感应功能 gpio口95 + startGpioThread(); + } } - + + private void startGpioThread() { + mNodkaAPI.gpio_export(95); + gpioRead = true; + gpioThread = new Thread(() -> { + while (gpioRead) { + if (!isInteractive() && isActive()) { + keycodePower(); + } + SystemClock.sleep(500); + } + }); + gpioThread.start(); + } + + private boolean isActive() { + return mNodkaAPI.gpio_read(95) == 1; + } + + private void keycodePower() { + execRootCmdSilent("input keyevent KEYCODE_POWER"); + } + + private boolean isInteractive(){ + PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); + return powerManager.isInteractive(); + } + + public static int execRootCmdSilent(String cmd) { + int result = -1; + DataOutputStream dos = null; + + try { + Process p = Runtime.getRuntime().exec("su"); + dos = new DataOutputStream(p.getOutputStream()); + dos.writeBytes(cmd + "\n"); + dos.flush(); + dos.writeBytes("exit\n"); + dos.flush(); + p.waitFor(); + result = p.exitValue(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (dos != null) { + try { + dos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return result; + } private void receive_BroadcastReceiver_byService() { -- Gitblit v1.6.2