編寫MTK6737平臺的GPIO驅動例程(六)
阿新 • • 發佈:2018-11-01
在新版本的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就會無法成功開啟裝置。現在我們使用的方法,不用去更改裝置節點的許可權即可操控裝置了。