Android things GPIO接口测试程序

package com.example.android_things;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;

import com.google.android.things.pio.Gpio;
import com.google.android.things.pio.GpioCallback;
import com.google.android.things.pio.PeripheralManager;

import java.io.IOException;

public class Gpio_test extends Activity {
//输入和输出GPIO引脚名称
private static final String GPIO_IN_85 = “GPIO_85”;
private static final String GPIO_IN_86= “GPIO_86”;
private static final String GPIO_IN_87 = “GPIO_1019”;//GPIO_1019是RESIN_N引脚 比较特殊
//输入和输出Gpio
private Gpio mGpio85;
private Gpio mGpio86;
private Gpio mGpio87;

private Button gpio_85;
private Button gpio_86;
private Button gpio_87;
private Handler mHandler = new Handler();

private GpioCallback mGpioCallback = new GpioCallback() {
    @Override
    public boolean onGpioEdge(Gpio gpio) {
        try {
            gpio.setValue(!gpio.getValue());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return true;
    }
};
private Runnable mBlinkRunnable = new Runnable() {
    @Override
    public void run() {
        try {
            if(mGpio85.getValue()){
                gpio_85.setBackgroundColor(Color.RED);
            }else{
                gpio_85.setBackgroundColor(Color.BLACK);
            }

            if(mGpio86.getValue()){
                gpio_86.setBackgroundColor(Color.RED);
            }else{
                gpio_86.setBackgroundColor(Color.BLACK);
            }

            if(mGpio87.getValue()){
                gpio_87.setBackgroundColor(Color.RED);
            }else{
                gpio_87.setBackgroundColor(Color.BLACK);
            }

            mHandler.postDelayed(mBlinkRunnable,100);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gpio_test);

    gpio_85 = findViewById(R.id.GPIO_85);
    gpio_86 = findViewById(R.id.GPIO_86);
    gpio_87 = findViewById(R.id.GPIO_87);

    PeripheralManager manager = PeripheralManager.getInstance();
    //打开并设置输入Gpio,监听输入信号变化(开关按钮的开关)
    try {
        mGpio85 = manager.openGpio(GPIO_IN_85);
        mGpio85.setDirection(Gpio.DIRECTION_IN);
        mGpio85.setEdgeTriggerType(Gpio.EDGE_BOTH);
        mGpio85.registerGpioCallback(mGpioCallback);

        mGpio86 = manager.openGpio(GPIO_IN_86);
        mGpio86.setDirection(Gpio.DIRECTION_IN);
        mGpio86.setEdgeTriggerType(Gpio.EDGE_BOTH);
        mGpio86.registerGpioCallback(mGpioCallback);

        mGpio87 = manager.openGpio(GPIO_IN_87);
        mGpio87.setDirection(Gpio.DIRECTION_IN);
        mGpio87.setEdgeTriggerType(Gpio.EDGE_BOTH);
        mGpio87.registerGpioCallback(mGpioCallback);
    }catch (IOException e){
        e.printStackTrace();
    }

    mHandler.post(mBlinkRunnable);

}

protected void onDestroy(){
    super.onDestroy();
    //关闭Gpio
    if (mGpio85 != null) {
        try {
            mGpio85.unregisterGpioCallback(mGpioCallback);
            mGpio85.close();
            mGpio85 = null;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    if (mGpio86 != null) {
        try {
            mGpio86.unregisterGpioCallback(mGpioCallback);
            mGpio86.close();
            mGpio86 = null;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    if (mGpio86 != null) {
        try {
            mGpio86.unregisterGpioCallback(mGpioCallback);
            mGpio86.close();
            mGpio86 = null;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

}

猜你喜欢

转载自blog.csdn.net/ruidongren/article/details/97272421