Android应用层如何执行脚本文件

 

java层是用Runtime.getRuntime().exec(cmd) 来执行脚本的,注意root权限的使用。

 

增加GPIO口控制wifi模组电源,需要java层控制GPIO:

有两种方法:

1.      写一个字符设备的驱动,硬件抽象层,JNI层添加封装,Java层调用

2.     写一个脚本,脚本直接写寄存器,在java层用Runtime.getRuntime().exec(cmd)调用

 

实际上最后的解决方法:

1.kernel\drivers\amlogic\i2c\aml_i2c.c中更改支持脚本控制GPIO的I2C驱动(特定方案的更改) 
2.kernel下i2c中设置(特定方案的更改) 
请打开宏Device Drivers

->Amlogic Device Drivers

->Amlogic I2C CONFIG

->Amlogic i2c hardware  bus support

->Amlogic I2C Driver

保证有/sys/class/i2c/cbus_reg文件

3.那两个脚本正确,各有三行,在开机后vi查看没有多余的字符,且在串口命令下执行这两个脚本打印3行提示寄存器设置正确

4.那两个脚本放在\device\amlogic\c03ref 下的,AndroidBoard.mk 下添加

file := $(TARGET_OUT_EXECUTABLES)/GPIO_B4_on.sh
ALL_PREBUILT += $(file)
$(file) : $(LOCAL_PATH)/GPIO_B4_on.sh | $(ACP)
$(transform-prebuilt-to-target)
file := $(TARGET_OUT_EXECUTABLES)/GPIO_B4_off.sh
ALL_PREBUILT += $(file)
$(file) : $(LOCAL_PATH)/GPIO_B4_off.sh | $(ACP)
$(transform-prebuilt-to-target)
5. init.rc添加:
chmod 0777 /sys/class/i2c/cbus_reg
service wifipwon /system/bin/logwrapper /system/bin/GPIO_B4_on.sh
    disabled
    oneshot
service wifipwoff /system/bin/logwrapper /system/bin/GPIO_B4_off.sh
    disabled
    oneshot
大约放在:(没强制要求)
service ueventd /sbin/ueventd
    critical
之前
6.
应用层
frameworks\base\services\java\com\android\server\WifiService.java中添加:

import android.os.SystemProperties;

关wifi电源

SystemProperties.set("ctl.start", "wifipwoff");

开wifi电源

SystemProperties.set("ctl.start", "wifipwon");

7. make clean 全编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值