本讲是android camera native framework专题的第6讲,我们介绍cameraserver manifest详解下。
更多资源:
资源 | 描述 |
---|---|
在线课程 | |
知识星球 | 星球名称:深入浅出android camera 星球id: 17296815 |
极客笔记圈 |
manifest.hal.version 用于指定使用的hal版本,决定使用哪个版本的接口
hidl
格式:major.minor
示例:
/frameworks/av/camera/cameraserver/manifest_android.frameworks.cameraservice.service@2.2.xml
其中
表示实现的hal接口为2.2版本。
aidl
格式:一个整数
示例:
/hardware/google/camera/common/hal/aidl_service/android.hardware.camera.provider@2.7-service-google.xml
其中
表示实现第1个版本的hal接口
manifest.hal.interface 指明hal包中具有实例名称的接口。一个
中可以有多个
元素,但名称必须不同。
- 示例:/frameworks/av/camera/cameraserver/manifest_android.frameworks.cameraservice.service@2.2.xml
icameraservice
default
- manifest.hal.interface.name:接口的名称
-
manifest.hal.interface.instance:实例名称,一个接口可以有多个实例,,但不能有重复的
元素。
fqname(完全限定软件包名称,fully qualified package name)。
-
对于 hidl hal,格式为
@major.minor::interface/instance
,他将版本和实例整合在一起了- 示例:
/device/generic/goldfish/manifest.camera.xml
@2.4::icameraprovider/legacy/0
- 示例:
-
对于 aidl hal,格式为
interface/instance
。- 示例:
/frameworks/av/drm/mediadrm/plugins/clearkey/aidl/android.hardware.drm-service.clearkey.xml
idrmfactory/clearkey
- 示例:
descriptor是interface的完整名。
示例:
- icameraservice hidl hal
const char* icameraservice::descriptor("android.frameworks.cameraservice.service@2.2::icameraservice");
- icameraprovider hidl hal
const char* icameraprovider::descriptor("android.hardware.camera.provider@2.7::icameraprovider");
- icameraprovider aidl hal
const char* icameraprovider::descriptor = "android.hardware.camera.provider.icameraprovider";
通过servicemanager获取service 实例时要传完整的实例名。
示例:
-
icameraservice hidl hal:
android.frameworks.cameraservice.service@2.2::icameraservice/default
-
视频讲解vndk如何获取icameraservice、cameraserver如何获取icameraprovider aidl hal
- trytoaddaidlproviderslocked(cameraprovidermanager.cpp)
- icameraservice::getservice(acameramanager.cpp)