在新版本的Android中加入SeLinux,权限更加的严禁,之前笔者已经写过通过SysFs将底层的驱动的接口暴露在上层用户面前,现在再贴一份app中怎么使用的例子。
APP初始运行,需要初始化一次GPIO状态
//GPIO96.writeGpioStatus(1);
try {
fw = new FileWriter("/sys/devices/soc/soc:mygpio@10212000/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:mygpio@10212000/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就会无法成功打开设备。现在我们使用的方法,不用去更改设备节点的权限即可操控设备了。