人体感应代码逻辑

 需求:

人靠近马上灯亮,人离开等待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}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部