为Android扩展一个硬件模块

转自:http://blog.csdn.net/a345017062/article/details/6450211


为Android扩展一个硬件模块需要做两件事:

1、硬件和内核支持。

2、/system/etc/permissions/下面添加xml配置文件。/framework/base/data/etc/下面有一些已经写好的,可以根据需要直接复制过去。

 

这样,通过PackageManager的hasSystemFeature或getSystemAvailableFeatures就可以确定系统是否支持哪个模块,然后使用对应API了。

XML配置文件不管有多少,它们的语法是一样的,完全可以把它们放进一个XML文件里面。

每一个XML文件必须要有一个顶级标签<permissions>,至于子标签,可以支持这么几种:

group,安装到系统中的所有APK都具备的组ID。

permission,可以指定一个权限与几个组ID对应。当一个APK被授予这个权限时,它也同时属于这几个组了。

assign-permission,把一个权限赋予一个UID,当进程使用这个UID运行时,就具备了这个权限。

library,为系统添加一些扩展库用的。对应的.jar文件放在/system/framework/目录下。比如Google Map相关的库,可以看看下面的参考文章。

feature,每添加一个硬件,都要增加对应的feature。

 

对这些XML文件的解析是由/framework/base/services/java/com/android/server/PackageManagerService.java中的readPermissions()负责的。解析时会先解析其它XML文件,最后解析platform.xml。

解析结果放入mSystemPermissions,mSharedLibraries,mSettings.mPermissions,mAvailableFeatures等几个集合中供系统查询和权限配置使用。

 

举两个例子

多点触摸:

硬件和内核支持以后

/system/etc/permission下面几个xml文件,可以看一下/framework/base/data/android.hardware.multitouch.*几个文件,根据支持的功能选择添加。

 

Google地图的支持

这个不需要硬件的支持,但需要先添加Google Map的库,然后再向/system/etc/permissions/下面添加相应的xml文件。具体过程可以看看下面参考文章。

 

像重力加速、多点触摸、WIFI等,只要系统支持,就要往/system/etc/permissions/下面添加对应的XML配置文件。因为APK使用这些功能之前很有可能先调用PackageManager.hasSystemFeature查询是否支持这个某个硬件模块。

/framework/base/data/etc/handheld_core_hardware.xml里面包含了一些系统的核心硬件模块配置文件。/framework/base/data/etc/Android.mk中会把这一块儿在编译时复制到/system/etc/permissions/目录下。这部分代码默认是关闭的,需要打开。

 

参考文章:

为Android添加Market和Map应用程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值