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