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

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章