package com.basic.security.utils;
|
|
import android.content.Context;
|
import android.hardware.Sensor;
|
import android.hardware.SensorEvent;
|
import android.hardware.SensorEventListener;
|
import android.hardware.SensorManager;
|
import android.os.SystemClock;
|
|
import com.alfeye.a1io.A1IoDevBaseUtil;
|
import com.alfeye.a1io.A1IoDevManager;
|
import com.alfeye.readcardlib.readcard.ReadCardUtil;
|
import com.alfeye.seriallib.Listener.OnRadarDistanceListener;
|
import com.alfeye.seriallib.SerialDevice.RadarDistanceSensor;
|
import com.alfeye.seriallib.android_serialport_api.SerialPortFinder;
|
import com.basic.security.activity.MainActivity;
|
import com.basic.security.base.BaseApplication;
|
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
|
public class BlackDevice {
|
int lightStrong = 10;
|
public ReadCardUtil readCardUtil;
|
public static A1IoDevBaseUtil basUtil;
|
public static RadarDistanceSensor distanceSensor;
|
long startTime = 0;
|
private static List<Integer> integers = new ArrayList<>();
|
private static String[] allDevices;
|
private static boolean isOpen = false;
|
private static int MaxCacheNumber = 5;
|
private static int MIN_SRDEV = 1000;
|
private static int SRDEVNO = 1400;
|
private static SensorManager sensorManager;
|
private static Sensor lightSensor;
|
public static synchronized void serialDeviceOpenLamp(int distance) {
|
MainActivity activity = BaseApplication.getApplication().activity;
|
if (BaseApplication.getApplication().activity.needLight()) {
|
if (distance != 0) {
|
integers.add(distance);
|
if (integers.size() >= MaxCacheNumber) {
|
Collections.sort(integers);
|
if (integers.get(MaxCacheNumber - 1) <= MIN_SRDEV) {
|
MainActivity.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;
|
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 initBlackDevice() {
|
BaseApplication.getApplication().executorService.execute(()->{
|
while (true) {
|
try {
|
serialDeviceOpenLamp(0);
|
SystemClock.sleep(1*1000);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
});
|
if (Constants.useAlf) {
|
distanceSensor = new RadarDistanceSensor("/dev/ttyUSB0", new OnRadarDistanceListener() {
|
@Override
|
public void onRevData(final int data) {
|
if (data > 0) {
|
serialDeviceOpenLamp(data);
|
} else {
|
serialDeviceOpenLamp(-data);
|
}
|
}
|
|
@Override
|
public void onCmdResult(final String result) {
|
BaseApplication.getApplication().activity.runOnUiThread(new Runnable() {
|
@Override
|
public void run() {
|
if (result.contains("OK") || result.contains("TH")) {
|
System.out.println("MainActivity.run " + result);
|
}
|
}
|
});
|
}
|
});
|
distanceSensor.open();
|
allDevices = new SerialPortFinder().getAllDevicesPath();
|
sensorManager = (SensorManager) BaseApplication.getApplication().activity. getSystemService(Context.SENSOR_SERVICE);
|
lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
|
|
sensorManager.registerListener(new MySensorListener(), lightSensor, SensorManager.SENSOR_DELAY_NORMAL);
|
|
basUtil = A1IoDevManager.initIOManager();
|
basUtil.openDIST();
|
|
basUtil.closeLED();
|
// basUtil.closeIRDA();
|
basUtil.openIRDA();
|
}
|
|
}
|
|
public static void close() {
|
|
if (Constants.useAlf) {
|
basUtil.closeLED();
|
basUtil.closeDIST();
|
distanceSensor.close();
|
basUtil.closeIRDA();
|
}
|
}
|
|
public static class MySensorListener implements SensorEventListener {
|
|
@Override
|
public void onAccuracyChanged(Sensor sensor, int accuracy) {
|
}
|
|
@Override
|
public void onSensorChanged(SensorEvent event) {
|
}
|
|
}
|
|
|
}
|