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 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) { } } }