您的位置:首页 > 移动开发 > Android开发

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

2011-12-31 11:52 399 查看
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 全编译
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: