第23讲 Parcel对象相关的AIDL详解

https://deepinout.com/android-camera-native-framework/camera-java-fw-aidl-parcel-related-aidl-details.html
在这里插入图片描述在这里插入图片描述跨binder通信必须先将数据写到parcel里面

1 Camera2 Java FW AIDL有哪些自定义的Parcel对象

在AIDL的客户端和服务端通信的过程中,除了方法调用外,我们还需要传递一些数据,这些数据的类型都必须是parcelable的(需要实现 writeToParcel & readFromParcel

1.1 有哪些Parcel对象

frameworks/av/camera/aidl/android/hardware/camera2/impl/CameraMetadataNative.aidl

/** @hide */
parcelable CameraMetadataNative cpp_header "camera/CameraMetadata.h";
//定义一个 parcelable对象 名字叫做 CameraMetadataNative,编译成c++代码的时候需要引用头文件

针对 parcelable 对象一定要实现其 读写方法

frameworks/av/camera/aidl/android/hardware/camera2/impl/CaptureResultExtras.aidl

parcelable CaptureResultExtras cpp_header "camera/CaptureResult.h";

frameworks/av/camera/aidl/android/hardware/camera2/params/OutputConfiguration.aidl

parcelable OutputConfiguration cpp_header "camera/camera2/OutputConfiguration.h";
CaptureRequest

impl
    CameraMetadataNative
    CaptureResultExtras
    PhysicalCaptureResultInfo

params
    OutputConfiguration
    SessionConfiguration
    VendorTagDescriptor
    VendorTagDescriptorCache
utils
    CameraIdAndSessionConfiguration
    ConcurrentCameraIdCombination
    SubmitInfo

2 Camera2 Java FW不会生成中间文件的AIDL文件说明

  1. 如果一个AIDL文件没有被放在android.bp文件中,而仅仅是被其他AIDL文件import引用的话,在编译时不会生成对应的源代码(Java/C++)。
  2. 因为在Android编译系统中,只有在使用aidl规则,直接处理某个AIDL文件时才会生成相应的代码,当一个AIDL文件被import引用时,并不会单独处理该文件,而是一起处理引用它的AIDL文件。因此,即使在被引用的AIDL文件中定义了parcelable或interface关键字,也不会单独生成对应的源代码(Java/C++)。

3 Camera2 Java FW Parcel AIDL详解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值