Android相机框架在过去的几年里有了很大的发展。
在API 1期间,相机应用程序框架()使用JNI胶水层与本机相机服务(C++实现)进行交互,该层也实现了绑定。在更高的层次上,这一机制相当容易理解。
现在,我可以看到,对于API 2,JNI层被删除,应用程序框架使用aidl接口直接与本机相机服务对话。
参考架构图:https://source.android.com/devices/camera/index.html
尽管架构图同时显示了API 1和API 2路径,但是只为API 1提供了描述,我想知道API 2是如何工作的。
总之,有人能帮助我理解在不使用JNI的情况下,aidl是如何实现相同功能的吗?此外,更重要的是,改用这一新机制能带来什么好处?
发布于 2020-12-25 13:27:40
aidl如何在不使用JNI的情况下实现相同的功能?
您可以前往https://android.googlesource.com/platform/system/tools/aidl/+/brillo-m10-dev/docs/aidl-cpp.md了解详细信息。
改用这一新机制能带来什么好处?
Android摄像头API2并不是什么新鲜事,只不过是对诺基亚N9 Linux智能手机设计和架构的模仿而已,详见http://graphics.stanford.edu/projects/camera-2.0/。
附注:
马克·莱沃伊( Marc )已从斯坦福大学()退休,在谷歌( Google )领导一个团队。这个项目已不再活跃,斯坦福的弗兰肯卡米拉也无法购买。然而,在运行安卓版本"L“( FCam )的手机和平板电脑上,Camera2 API (应用程序编程接口)和HAL v3 (硬件抽象层)在这些设备上都是可用的。也请参阅斯坦福大学前PhD学生艾迪·塔尔瓦拉在Google I/O 2014的介绍,或Android警察的总结。苹果在iOS中提供了类似的API。
https://stackoverflow.com/questions/33255954
复制相似问题