Compare commits
2
Commits
2e20e7deab
...
4a29b3adc9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a29b3adc9 | ||
|
|
78a682b664 |
@@ -1,7 +1,6 @@
|
|||||||
package com.sw.dualscreen.presentation
|
package com.sw.dualscreen.presentation
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.R.attr.visibility
|
|
||||||
import android.app.Presentation
|
import android.app.Presentation
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
@@ -36,6 +35,7 @@ import com.sw.dualscreen.model.response.UserNutritionData
|
|||||||
import com.sw.dualscreen.utils.Debouncer
|
import com.sw.dualscreen.utils.Debouncer
|
||||||
import com.sw.dualscreen.utils.GlideUtils
|
import com.sw.dualscreen.utils.GlideUtils
|
||||||
import com.sw.dualscreen.viewmodel.UserViewModel
|
import com.sw.dualscreen.viewmodel.UserViewModel
|
||||||
|
import com.sw.plate.utils.LightManager
|
||||||
import com.sw.plate.utils.ToastUtils
|
import com.sw.plate.utils.ToastUtils
|
||||||
import com.sw.plate.utils.arcface.ConfigUtil
|
import com.sw.plate.utils.arcface.ConfigUtil
|
||||||
import com.sw.plate.utils.arcface.ErrorCodeUtil
|
import com.sw.plate.utils.arcface.ErrorCodeUtil
|
||||||
@@ -162,6 +162,8 @@ class SecondaryScreenPresentation(
|
|||||||
fun step1() {
|
fun step1() {
|
||||||
Timber.d("step1")
|
Timber.d("step1")
|
||||||
currentStep = 1
|
currentStep = 1
|
||||||
|
LightManager.closeGreenLight()
|
||||||
|
LightManager.openRedLight()
|
||||||
//回复上一次的设置
|
//回复上一次的设置
|
||||||
// lastWeight = 0.0
|
// lastWeight = 0.0
|
||||||
dinnerTypeInfo = null
|
dinnerTypeInfo = null
|
||||||
@@ -186,7 +188,8 @@ class SecondaryScreenPresentation(
|
|||||||
fun step2(foodInfo: FoodInfo) {
|
fun step2(foodInfo: FoodInfo) {
|
||||||
Timber.d("step2")
|
Timber.d("step2")
|
||||||
currentStep = 2
|
currentStep = 2
|
||||||
|
LightManager.openRedLight()
|
||||||
|
LightManager.openGreenLight()
|
||||||
dinnerTypeInfo = null
|
dinnerTypeInfo = null
|
||||||
userNutritionData = null
|
userNutritionData = null
|
||||||
recognitionWeight = 0.0
|
recognitionWeight = 0.0
|
||||||
@@ -233,6 +236,7 @@ class SecondaryScreenPresentation(
|
|||||||
*/
|
*/
|
||||||
fun step3() {
|
fun step3() {
|
||||||
Timber.d("step3")
|
Timber.d("step3")
|
||||||
|
LightManager.closeRedLight()
|
||||||
currentStep = 3
|
currentStep = 3
|
||||||
stepChangeCallback(currentStep)
|
stepChangeCallback(currentStep)
|
||||||
if (currentFood == null) {
|
if (currentFood == null) {
|
||||||
|
|||||||
@@ -0,0 +1,175 @@
|
|||||||
|
package com.sw.plate.utils;
|
||||||
|
|
||||||
|
import android.os.SystemClock;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Administrator on 2018/11/9.
|
||||||
|
*/
|
||||||
|
public class GpioUtils {
|
||||||
|
|
||||||
|
private static final String TAG = "GpioUtils";
|
||||||
|
|
||||||
|
/*
|
||||||
|
给export申请权限
|
||||||
|
*/
|
||||||
|
public static void upgradeRootPermissionForExport() {
|
||||||
|
upgradeRootPermission("/sys/class/gpio/export");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
配置一个gpio路径
|
||||||
|
*/
|
||||||
|
public static boolean exportGpio(int gpio) {
|
||||||
|
return writeNode("/sys/class/gpio/export", "" + gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
给获取io口的状态的路径申请权限,该方法需要在exportGpio后调用
|
||||||
|
*/
|
||||||
|
public static void upgradeRootPermissionForGpio(int gpio) {
|
||||||
|
upgradeRootPermission("/sys/class/gpio/gpio" + gpio + "/direction");
|
||||||
|
upgradeRootPermission("/sys/class/gpio/gpio" + gpio + "/value");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
设置io口为输入或输出
|
||||||
|
*/
|
||||||
|
public static boolean setGpioDirection(int gpio, int arg) {
|
||||||
|
String gpioDirection = "";
|
||||||
|
if (arg == 0) gpioDirection = "out";
|
||||||
|
else if (arg == 1) gpioDirection = "in";
|
||||||
|
else return false;
|
||||||
|
return writeNode("/sys/class/gpio/gpio" + gpio + "/direction", gpioDirection);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
获取io口的状态为输出还是输入
|
||||||
|
*/
|
||||||
|
public static String getGpioDirection(int gpio) {
|
||||||
|
String gpioDirection = "";
|
||||||
|
gpioDirection = readNode("/sys/class/gpio/gpio" + gpio + "/direction");
|
||||||
|
return gpioDirection;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
给输出io口写值,高电平或低电平
|
||||||
|
*/
|
||||||
|
public static boolean writeGpioValue(int gpio, String arg) {
|
||||||
|
return writeNode("/sys/class/gpio/gpio" + gpio + "/value", arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取当前gpio是高还是低
|
||||||
|
public static String getGpioValue(int gpio) {
|
||||||
|
return readNode("/sys/class/gpio/gpio" + gpio + "/value");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static boolean upgradeRootPermission(String path) {
|
||||||
|
Process process = null;
|
||||||
|
DataOutputStream os = null;
|
||||||
|
try {
|
||||||
|
String cmd = "chmod 777 " + path;
|
||||||
|
process = Runtime.getRuntime().exec("su"); //切换到root帐号
|
||||||
|
os = new DataOutputStream(process.getOutputStream());
|
||||||
|
os.writeBytes(cmd + "\n");
|
||||||
|
os.writeBytes("exit\n");
|
||||||
|
os.flush();
|
||||||
|
process.waitFor();
|
||||||
|
} catch (Exception e) {
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (os != null) {
|
||||||
|
os.close();
|
||||||
|
}
|
||||||
|
process.destroy();
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return process.waitFor() == 0;
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean writeNode(String path, String arg) {
|
||||||
|
Log.d(TAG, "Gpio_test set node path: " + path + " arg: " + arg);
|
||||||
|
if (path == null || arg == null) {
|
||||||
|
Log.e(TAG, "set node error");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
FileWriter fileWriter = null;
|
||||||
|
BufferedWriter bufferedWriter = null;
|
||||||
|
try {
|
||||||
|
fileWriter = new FileWriter(path);
|
||||||
|
fileWriter.write(arg);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e(TAG, "Gpio_test write node error!! path" + path + " arg: " + arg);
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (fileWriter != null) {
|
||||||
|
fileWriter.close();
|
||||||
|
}
|
||||||
|
if (bufferedWriter != null) {
|
||||||
|
bufferedWriter.close();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static long mTime = 0;
|
||||||
|
private static int mFailTimes = 0;
|
||||||
|
|
||||||
|
private static String readNode(String path) {
|
||||||
|
String result = "";
|
||||||
|
|
||||||
|
FileReader fread = null;
|
||||||
|
BufferedReader buffer = null;
|
||||||
|
try {
|
||||||
|
fread = new FileReader(path);
|
||||||
|
buffer = new BufferedReader(fread);
|
||||||
|
String str = null;
|
||||||
|
while ((str = buffer.readLine()) != null) {
|
||||||
|
result = str;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mFailTimes = 0;
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.e(TAG, "IO Exception");
|
||||||
|
e.printStackTrace();
|
||||||
|
if (mTime == 0 || SystemClock.uptimeMillis() - mTime < 1000) {
|
||||||
|
mFailTimes++;
|
||||||
|
}
|
||||||
|
if (mFailTimes >= 3) {
|
||||||
|
Log.d(TAG, "read format node continuous failed three times, exist thread");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (buffer != null) {
|
||||||
|
buffer.close();
|
||||||
|
}
|
||||||
|
if (fread != null) {
|
||||||
|
fread.close();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.sw.plate.utils;
|
||||||
|
|
||||||
|
public class LightManager {
|
||||||
|
private static final String TAG = "LightManager";
|
||||||
|
|
||||||
|
public static void openGreenLight() {
|
||||||
|
L.e(TAG, "openGreenLight");
|
||||||
|
GpioUtils.writeGpioValue(41, "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void closeGreenLight() {
|
||||||
|
L.e(TAG, "closeGreenLight");
|
||||||
|
GpioUtils.writeGpioValue(41, "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void openRedLight() {
|
||||||
|
L.e(TAG, "openRedLight");
|
||||||
|
GpioUtils.writeGpioValue(40, "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void closeRedLight() {
|
||||||
|
L.e(TAG, "closeRedLight");
|
||||||
|
GpioUtils.writeGpioValue(40, "0");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user