欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

人体感应代码逻辑

程序员文章站 2022-04-19 10:32:55
需求:人靠近马上灯亮,人离开等待5s后灯灭,使用Theard和Hander private boolean isTurnONLed = false; //标志位,是否打开开关 @Override public void onCreate() { super.onCreate();startDetectionTP(); } @Nullable @Override public IBinder onBind(Intent in....

 需求:

人靠近马上灯亮,人离开等待5s后灯灭,使用Theard和Hander

 private boolean isTurnONLed = false; //标志位,是否打开开关

    @Override
    public void onCreate() {
        super.onCreate();
		startDetectionTP();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    private void startDetectionTP(){
    Log.i(TAG, "startDetectionTP.....................");
                Handler mHandler=new Handler(){
            @Override
            public 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 handler
        

        new Thread(){
            UsbManager mUsbManager = (UsbManager) USBDetectionService.this.getSystemService(Context.USB_SERVICE);
            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public 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 if
                    else{
                            Log.i(TAG_WP, "Extinguish..............");
                            if(isTurnONLed){
                                isTurnONLed = false;    //此时设置开关状态,防止小于5s时候再次靠近操作
                                Log.i(TAG_WP, "Extinguish.......11.......");
                                mHandler.sendEmptyMessageDelayed(1,5000); //延迟5s发送
                            }
                        }//end else
                        try {
                            sleep(1000);    //1s check 1 time
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    ///////////////////////////////////////
                } //end while
            }

        }.start();  //end Theard
    }

 

本文地址:https://blog.csdn.net/yhm2046/article/details/107215086