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();
        }
    }

}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值