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

本文详细阐述了在Android系统中扩展硬件模块的两步流程:硬件和内核支持,以及在/system/etc/permissions/目录下添加XML配置文件。通过解析XML文件并利用PackageManager API,系统能够识别并支持特定的硬件模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

http://www.eoeandroid.com/thread-101514-1-1.html

  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/目录下。这部分代码默认是关闭的,需要打开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值