1. 程式人生 > >編寫MTK6737平臺的GPIO驅動例程(六)

編寫MTK6737平臺的GPIO驅動例程(六)

在新版本的Android中加入SeLinux,許可權更加的嚴禁,之前筆者已經寫過通過SysFs將底層的驅動的介面暴露在上層使用者面前,現在再貼一份app中怎麼使用的例子。

APP初始執行,需要初始化一次GPIO狀態

        //GPIO96.writeGpioStatus(1);
        try {
            fw = new FileWriter("/sys/devices/soc/soc:[email protected]/mygpio96", true);
            //GPIO96.writeGpioStatus(1);
            fw.write("1");    //高電平關燈
            fw.close();
        }catch (IOException e) {
            e.printStackTrace();
        }
       LedCtrl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    fw = new FileWriter("/sys/devices/soc/soc:[email protected]/mygpio96", true);
                    if (TempKey == 0) {
                        //GPIO96.writeGpioStatus(1);
                        fw.write("1");    //高電平關燈
                        TempKey = 1;
                        LedCtrl.setBackgroundResource(R.mipmap.ledoff);

                    } else if (TempKey == 1) {
                        fw.write("0");    //高電平關燈
                        //GPIO96.writeGpioStatus(0);
                        TempKey = 0;
                        LedCtrl.setBackgroundResource(R.mipmap.ledon);
                    }
                    fw.close();
                }catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });

細心的讀者您會發現,GPIO96.writeGpioStatus(0);是之前條用JNI介面的函式,功能是一樣的,就是寫入GPIO的狀態,當沒有給定裝置的許可權時,APP就會無法成功開啟裝置。現在我們使用的方法,不用去更改裝置節點的許可權即可操控裝置了。