DeteMin
2020-01-15 7584a724d8ff312cae1ae57c6918df10ea72b686
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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) {
        }
    }
}