Android camera framework7.0和6.0 主要差异
目前差异主要体现在接口封装和进程分离方面。
1.代码结构
1).android6.0代码
头文件:
源文件:
可以发现在Android6.0上,接口都是在native层以源码方式实现了。由于以I开头的文件都具有binder通信作用。所以在android7.0中,这些接口都以aidl文件来描述,不过它们本质上没什么区别,用起来都是一样的。
2).android7.0代码
头文件:
源文件:
前面也提到过,7.0把具有binder通信的接口都用aidl文件来描述。但是这里不会像java那边把aidl文件编译成.java文件,这里的aidl由编译系统编译成.h和.cpp文件。
编译后的产物:
1.头文件:
路径:obj/SHARED_LIBRARIES/libcamera_client_intermediates/aidl-generated/include
2.源文件:
路径:obj/SHARED_LIBRARIES/libcamera_client_intermediates/aidl-generated/src
.
└── aidl
└── android
└── hardware
├── camera2
│ ├── ICameraDeviceCallbacks.cpp
│ ├── ICameraDeviceCallbacks.o
│ ├── ICameraDeviceUser.cpp
│ └── ICameraDeviceUser.o
├── ICameraService.cpp
├── ICameraServiceListener.cpp
├── ICameraServiceListener.o
└── ICameraService.o
2.功能差异
1)android6.0 cameraService服务驻留在mediaserver进程中
2)android7.0 cameraServer单独成一个进程,暂时与mediaServer撇清关系了,cameraService服务驻留在cameraserver进程中