package com.basic.security.activity; import android.content.Intent; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; import com.alfeye.a1io.A1IoDevBaseUtil; import com.alfeye.a1io.A1IoDevManager; import com.alfeye.a1io.DeviceControl; import com.alfeye.readcardlib.readcard.ReadCardUtil; import com.alfeye.seriallib.Listener.OnDistanceListener; import com.alfeye.seriallib.SerialDevice.DistanceSensor; import com.alfeye.seriallib.android_serialport_api.SerialPortFinder; import com.basic.security.R; import com.basic.security.activity.helper.MaLoggedInTimeoutToLogout; import com.basic.security.base.BaseApplication; import com.basic.security.manager.DatabaseManager; import com.basic.security.manager.IdCardManager; import com.basic.security.manager.impl.cblite.AccountManager; import com.basic.security.manager.impl.cblite.DeviceManager; import com.basic.security.manager.impl.sqlite.SlDeviceManager; import com.basic.security.receiver.WebRtcBroadCastReceiver; import com.basic.security.service.KeepLifeService; import com.basic.security.service.UpgradeAppService; import com.basic.security.utils.ANRWatchDog; import com.basic.security.utils.Constants; import com.basic.security.utils.KeyboardUtil; import com.basic.security.utils.MultipartUtility; import com.basic.security.utils.MultipartUtilityV2; import com.basic.security.utils.NetUtil; import com.basic.security.utils.PermissionHelper; import com.basic.security.utils.ProcessImageAndDrawResults; import com.basic.security.utils.ToastUtil; import com.basic.security.utils.socket.RelayServerUtil2; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; import java.util.ArrayList; import java.util.Collections; import java.util.List; import static com.basic.security.utils.Constants.isNewIDCardReader; @EActivity(R.layout.activity_main) public class MainActivity extends MaLoggedInTimeoutToLogout { public static long lastTimeDetectedFace = 0; public static boolean faceDbInitComplete = false; public static DistanceSensor distanceSensor; public boolean mainActivityInitComplete = false; //1是usb模式 0是串口模式 5.1.1 // public ReadUtil readUtil; //新的pad 白色 身份证读卡器 public ReadCardUtil readCardUtil; public A1IoDevBaseUtil basUtil; @ViewById LinearLayout id111; long startTime = 0; private List integers = new ArrayList<>(); private DistanceSensor sr04Device; private String[] allDevices; /** * 距离感应器 */ private boolean isOpen = false; //最大缓存数量 private int MaxCacheNumber = 5; //开灯距离 private int MIN_SRDEV = 1000; //关灯距离 private int SRDEVNO = 1400; private SensorManager sensorManager; private Sensor lightSensor; public MainActivity getActivity() { return this; } @Override protected void onDestroy() { super.onDestroy(); if (Constants.useAlf) { basUtil.closeLED(); basUtil.closeDIST(); sr04Device.close(); } } public boolean needLight() { return Constants.useLight && (currentFragment == fragment_su_auto_wait_face || currentFragment == fragment_su_logged_wait_face || currentFragment == fragment_su_logged_nic_wait_face || currentFragment == fragment_su_logged_ic_wait_face || currentFragment == fragment_door_access_result || currentFragment == fragment_admin_face_login || currentFragment == fragment_home || currentFragment == fragment_account_setting); } //开灯 private void serialDeviceOpenLamp(int distance) { if (needLight()) { if (distance != 0) { integers.add(distance); if (integers.size() >= MaxCacheNumber) { Collections.sort(integers); if (integers.get(MaxCacheNumber - 1) <= MIN_SRDEV) { lastTimeDetectedFace = System.currentTimeMillis(); if (!isOpen) { isOpen = true; basUtil.openLED(100); basUtil.openIRDA(); } } if (integers.get(MaxCacheNumber - 1) <= MIN_SRDEV && !isOpen) { ProcessImageAndDrawResults.shouldExtractFeatureFirstTimeInWaitFace = 2; if (currentFragment == fragment_home) { showFragment(fragment_su_auto_wait_face); } } else if (integers.get(0) >= SRDEVNO && isOpen ) { } else { } integers.clear(); if (System.currentTimeMillis() - lastTimeDetectedFace > 2 * 1000) { if (isOpen) { isOpen = false; basUtil.closeLED(); basUtil.closeIRDA(); } } } } else { integers.clear(); } } if (System.currentTimeMillis() - lastTimeDetectedFace > 2 * 1000) { if (isOpen) { isOpen = false; basUtil.closeLED(); basUtil.closeIRDA(); } } } @AfterViews protected void afterViews() { BaseApplication.getApplication().executorService.execute(new Runnable() { @Override public void run() { try { MultipartUtilityV2.uploadCrashDirectory(); }catch (Exception e) { e.printStackTrace(); } } }); DatabaseManager.setCustomDatabaseFiles(this); String ip = NetUtil.getIPAddress(true); Constants.erlangLocalNode = SlDeviceManager.getDeviceId() + "@" + ip; Constants.deviceId = DeviceManager.getDeviceId(); if (Constants.useAlf) { sr04Device = new DistanceSensor("/dev/ttyUSB0", new Sr04DeviceDate()); allDevices = new SerialPortFinder().getAllDevicesPath(); //获取SensorManager对象 sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); //获取Sensor对象 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(); } if (!PermissionHelper.hasWriteStoragePermission(this)) { PermissionHelper.requestWriteStoragePermission(this); } getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // 保持屏幕常亮 hideSystemUIThread(); addFragments(); addCameraToFragment(); addVideoViewToFragment(); addToolbarButtonsToFragment(); addTimeoutToBlank(); addIdCardPhoneComponent(); addBackgroundAndBorderComponent(); addCameras(); setUpClickHook(); addFaceComponents(); addSystemSettingTabs(); addSystemSettingHintTabs(); addPersonManagerComponents(); logoutChecker(); hideOneFragment(fragment_menu); hideOneFragment(fragment_person_identity); hideOneFragment(fragment_face_list); hideOneFragment(fragment_face_detail); hideOneFragment(fragment_system_setting_tabs); hideOneFragment(fragment_su_auto_ic_wait_phone); hideOneFragment(fragment_su_logged_ic_wait_idcard); hideOneFragment(fragment_su_logged_ic_compare_success); hideOneFragment(fragment_background_and_border); showFragment(fragment_home); mainActivityInitComplete = true; checkDeviceId(); // DeviceControl.sendInformationScreen(this, false); // DeviceControl.hideNavigationBar(this, true); // com.basic.security.utils.DeviceControl.devicesTatusbar(this, false); stopService(new Intent(this, KeepLifeService.class)); startService(new Intent(this, KeepLifeService.class)); stopService(new Intent(this, UpgradeAppService.class)); startService(new Intent(this, UpgradeAppService.class)); // System.out.println("MainActivity.afterViews"); if (Constants.useAlf) { DeviceControl.setSystemLauncher(BaseApplication.getApplication(), "com.basic.security"); DeviceControl.configCameraHdr(BaseApplication.getApplication(), true); } if (Constants.useAlf) { RelayServerUtil2.startOpenDoorThread(); } // WebRtcBroadCastReceiver webRtcBroadCastReceiver = new WebRtcBroadCastReceiver(); // IntentFilter intentFilter = new IntentFilter(); // intentFilter.addAction("video.call.status"); // registerReceiver(webRtcBroadCastReceiver, intentFilter); // new ANRWatchDog().start(); } @Override protected void onResume() { super.onResume(); WebRtcBroadCastReceiver.webRtcClientConnected = false; WebRtcBroadCastReceiver.webRtcServerStarted = false; // System.out.println("MainActivity.onResume"); if (Constants.needIdCardModule) { Intent intent1 = new Intent(); intent1.setPackage("com.basic.project.idcardservice"); intent1.setAction("com.basic.read.IDCard"); intent1.putExtra("type", "start_service"); intent1.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); startService(intent1); } } @Override protected void onPause() { super.onPause(); // System.out.println("MainActivity.onPause"); KeyboardUtil.hideSoftKeyboard(); } @Override protected void onStop() { super.onStop(); // System.out.println("MainActivity.onStop"); // exitApp(); } @Override public void onBackPressed() { long currentTime = System.currentTimeMillis(); if ((currentTime - startTime) >= 2000) { ToastUtil.show("再按一次退出"); startTime = currentTime; } else { // ErlangProcess.stopErlangProcess(); exitApp(); } } private void exitApp() { if (Constants.needIdCardModule) { if (isNewIDCardReader) { if (readCardUtil != null) { readCardUtil.stopReadCard(); readCardUtil.destroy(); } } else { IdCardManager.unRegisterBroadcast(this); } } finish(); System.exit(0); } public void upgradeAppThread() { // while(true) { // try { // // DeviceControl.startInstallApk( // BaseApplication.getApplication(), // "com.basic.security", // "/sdcard/download/"+Constants.updateApkFileName, // true, // true // ); // } catch (Exception e) { // e.printStackTrace(); // } // SystemClock.sleep(5000); // } } public class Sr04DeviceDate implements OnDistanceListener { @Override public void onRevData(final int i1) { serialDeviceOpenLamp(i1); } } public class MySensorListener implements SensorEventListener { @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { } } public boolean needCopyCameraData() { if ( // AccountManager.adminLoggedIn() currentFragment == fragment_su_logged_wait_face || currentFragment == fragment_su_logged_ic_wait_face || currentFragment == fragment_su_logged_nic_wait_face ) { // System.out.println("MainActivity.needCopyCameraData true"); return true; } else { // System.out.println("MainActivity.needCopyCameraData false"); return false; } } }