package com.basic.security.utils;
|
|
import android.hardware.Sensor;
|
import android.hardware.SensorEvent;
|
import android.hardware.SensorEventListener;
|
import android.hardware.SensorManager;
|
|
import com.alfeye.a1io.A1IoDevBaseUtil;
|
import com.alfeye.a1io.A1IoDevManager;
|
import com.alfeye.seriallib.Listener.OnDistanceListener;
|
import com.alfeye.seriallib.SerialDevice.DistanceSensor;
|
import com.alfeye.seriallib.android_serialport_api.SerialPortFinder;
|
import com.basic.security.base.BaseApplication;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
|
import static android.content.Context.SENSOR_SERVICE;
|
|
public class WhiteDevice {
|
public static List<Integer> integers = new ArrayList<>();
|
public static DistanceSensor sr04Device;
|
/**
|
* 距离感应器
|
*/
|
public static boolean isOpen = false;
|
|
public static int MaxCacheNumber = 5;
|
|
public static int MIN_SRDEV = 1000;
|
|
public static int SRDEVNO = 1400;
|
public static SensorManager sensorManager;
|
public static Sensor lightSensor;
|
public static String[] allDevices;
|
public static A1IoDevBaseUtil basUtil;
|
|
public static void initWhiteDevice() {
|
sr04Device = new DistanceSensor("/dev/ttyUSB0", new Sr04DeviceDate());
|
allDevices = new SerialPortFinder().getAllDevicesPath();
|
|
sensorManager = (SensorManager) BaseApplication.getApplication().activity.getSystemService(SENSOR_SERVICE);
|
|
lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
|
sensorManager.registerListener(new MySensorListener(), lightSensor, SensorManager.SENSOR_DELAY_NORMAL);
|
basUtil = A1IoDevManager.initIOManager();
|
basUtil.openDIST();
|
boolean open = sr04Device.open();
|
basUtil.closeLED();
|
basUtil.closeIRDA();
|
}
|
|
private static void serialDeviceOpenLamp(int distance) {
|
com.basic.security.activity.MainActivity activity = BaseApplication.getApplication().activity;
|
if (activity.needLight()) {
|
if (distance != 0) {
|
integers.add(distance);
|
if (integers.size() >= MaxCacheNumber) {
|
Collections.sort(integers);
|
if (integers.get(MaxCacheNumber - 1) <= MIN_SRDEV) {
|
activity.lastTimeDetectedFace = System.currentTimeMillis();
|
if (!isOpen) {
|
isOpen = true;
|
if (Constants.useLight) {
|
basUtil.openLED(100);
|
}
|
basUtil.openIRDA();
|
}
|
}
|
if (integers.get(MaxCacheNumber - 1) <= MIN_SRDEV && !isOpen) {
|
ProcessImageAndDrawResults.shouldExtractFeatureFirstTimeInWaitFace = 2;
|
if (activity.currentFragment == activity.fragment_home) {
|
activity.showFragment(activity.fragment_su_auto_wait_face);
|
}
|
} else if (integers.get(0) >= SRDEVNO && isOpen
|
) {
|
} else {
|
}
|
integers.clear();
|
if (System.currentTimeMillis() - activity.lastTimeDetectedFace > 2 * 1000) {
|
if (isOpen) {
|
isOpen = false;
|
if (Constants.useLight) {
|
basUtil.closeLED();
|
}
|
basUtil.closeIRDA();
|
}
|
}
|
}
|
} else {
|
integers.clear();
|
}
|
}
|
if (System.currentTimeMillis() - activity.lastTimeDetectedFace > 2 * 1000) {
|
if (isOpen) {
|
isOpen = false;
|
basUtil.closeLED();
|
basUtil.closeIRDA();
|
}
|
}
|
}
|
|
public static void close() {
|
basUtil.closeLED();
|
basUtil.closeDIST();
|
sr04Device.close();
|
}
|
|
public static class Sr04DeviceDate implements OnDistanceListener {
|
@Override
|
public void onRevData(final int i1) {
|
serialDeviceOpenLamp(i1);
|
}
|
}
|
|
public static class MySensorListener implements SensorEventListener {
|
@Override
|
public void onAccuracyChanged(Sensor sensor, int accuracy) {
|
}
|
|
@Override
|
public void onSensorChanged(SensorEvent event) {
|
}
|
}
|
}
|