人体感应代码逻辑
需求:
人靠近马上灯亮,人离开等待5s后灯灭,使用Theard和Hander
private boolean isTurnONLed = false; //标志位,是否打开开关@Overridepublic void onCreate() {super.onCreate();startDetectionTP();}@Nullable@Overridepublic IBinder onBind(Intent intent) {return null;}private void startDetectionTP(){Log.i(TAG, "startDetectionTP.....................");Handler mHandler=new Handler(){@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 1: //灯灭Log.d(TAG,"------------Extinguish-------------------------------1");isTurnONLed = false;setNodeString("/sys/class/gpio/gpio1248/value","0");setNodeString("/sys/class/gpio/gpio1249/value","0");setNodeString("/sys/class/gpio/gpio1250/value","0");setNodeString("/sys/class/gpio/gpio1251/value","0");setNodeString("/sys/class/gpio/gpio1255/value","0");setNodeString("/sys/class/gpio/gpio1229/value","0");break;case 2: //灯亮isTurnONLed = true;Log.d(TAG,"-----------------light--------------------------2");setNodeString("/sys/class/gpio/gpio1248/value","1");setNodeString("/sys/class/gpio/gpio1249/value","1");setNodeString("/sys/class/gpio/gpio1250/value","1");setNodeString("/sys/class/gpio/gpio1251/value","1");setNodeString("/sys/class/gpio/gpio1255/value","1");setNodeString("/sys/class/gpio/gpio1229/value","1");break;} //end switch} //handleMessage}; //end handlernew Thread(){UsbManager mUsbManager = (UsbManager) USBDetectionService.this.getSystemService(Context.USB_SERVICE);@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)@Overridepublic void run() {super.run();// Log.i(TAG, "getUSBName().....................");while(true) {String value=readFile("/sys/bus/iio/devices/iio:device0/in_voltage0_raw");Log.d(TAG,"value--------------------------------------------------"+value);int valueInt=Integer.parseInt(value);if(valueInt>500){Log.i(TAG_WP, ".....light......");if(!isTurnONLed){Log.i(TAG_WP, "light.....11......");mHandler.removeMessages(1); //移除handle状态值mHandler.sendEmptyMessage(2);}}//end ifelse{Log.i(TAG_WP, "Extinguish..............");if(isTurnONLed){isTurnONLed = false; //此时设置开关状态,防止小于5s时候再次靠近操作Log.i(TAG_WP, "Extinguish.......11.......");mHandler.sendEmptyMessageDelayed(1,5000); //延迟5s发送}}//end elsetry {sleep(1000); //1s check 1 time} catch (InterruptedException e) {e.printStackTrace();}///} //end while}}.start(); //end Theard}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
