Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(9):摄像头GPS传感器
2015-02-22 20:24
423 查看
一、传感器
先从最简单的传感器开始吧传感器这部分没有源代码,只要从官方rom里提取相关lib就行了
#sensor lib/hw/sensors.msm8960.so lib/hw/sensors_native_hal.so lib/hw/sensors_qcom.so lib/libsensor_reg.so lib/libsensor1.so lib/libyas530.so
一般msm8960平台就这几个lib,其中libyas530是电子罗盘的lib
再说说找lib方法,有2种方法互补
首先,把lib/hw/sensorxxx传送到手机,然后重启系统,通过log查看缺少的lib并补齐
如果还缺,就用ultraedit打开lib/hw/sensorxxx,然后搜索lib关键字,找到其依赖的其它缺少的lb,在通过打开这些缺的lib再次搜索缺少的lib
补齐了所有lib后,用z硬件测试来试验所有传感器是否正常。
二、相机
1.修改BoardConfig.mk
#Camera USE_DEVICE_SPECIFIC_CAMERA := true BOARD_USES_CAMERA_FAST_AUTOFOCUS := true USE_CAMERA_STUB := true
提示:USE_DEVICE_SPECIFIC_CAMERA 这句意思是不编译提供的通用相机代码,我们通过使用官方lib去实现相机功能。但对于aosp来说这项不起作用,这项是给cm用的。
2.寻找相机lib
摄像头(相机)与传感器类似,但lib更多摄像头(相机)hw可以通过编写代码而编译出来,但显然不适合没有基础的初学者,我们只要使用官方的hw和lib就行了
某些手机会把相机的firmware集成到boot.img里,就像泛泰CExxx.bin,那么在ramdisk就得添加相应的内容,其它手机可能不需要
首先system/lib下含chromatix的lib全都要添加,这里以泛泰a870为例
lib/libchromatix_imx074_default_video.so lib/libchromatix_imx074_preview.so lib/libchromatix_imx074_video_hd.so lib/libchromatix_imx074_zsl.so lib/libchromatix_imx091_default_video.so lib/libchromatix_imx091_preview.so lib/libchromatix_imx091_video_hd.so lib/libchromatix_imx135_default_video.so lib/libchromatix_imx135_preview.so lib/libchromatix_imx135_video_hd.so lib/libchromatix_imx135_video_hdr.so lib/libchromatix_imx135_zsl.so lib/libchromatix_mt9e013_default_video.so lib/libchromatix_mt9e013_preview.so lib/libchromatix_mt9e013_video_hfr.so lib/libchromatix_ov2720_default_video.so lib/libchromatix_ov2720_hfr.so lib/libchromatix_ov2720_preview.so lib/libchromatix_ov2720_zsl.so lib/libchromatix_ov5647_default_video.so lib/libchromatix_ov5647_preview.so lib/libchromatix_ov8825_default_video.so lib/libchromatix_ov8825_preview.so lib/libchromatix_ov8825_video_hfr.so lib/libchromatix_ov8825_video_hfr_60fps.so lib/libchromatix_ov8825_video_hfr_90fps.so lib/libchromatix_ov8825_video_hfr_120fps.so lib/libchromatix_ov8825_zsl.so lib/libchromatix_ov9726_default_video.so lib/libchromatix_ov9726_preview.so lib/libchromatix_s5k3l1yx_default_video.so lib/libchromatix_s5k3l1yx_hfr_60fps.so lib/libchromatix_s5k3l1yx_hfr_90fps.so lib/libchromatix_s5k3l1yx_hfr_120fps.so lib/libchromatix_s5k3l1yx_preview.so lib/libchromatix_s5k3l1yx_video_hd.so lib/libchromatix_s5k3l1yx_zsl.so lib/libchromatix_s5k4e1_default_video.so lib/libchromatix_s5k4e1_preview.so
然后传送官方rom的lib/hw/camera.msm8960.so到手机
并通过前面介绍的2种找lib方法来补齐所有lib
以下同样是泛泰a870的参考
#camera mm-qcamera-daemon lib/hw/camera.msm8960.so lib/liboemcamera.so lib/libmmjpeg.so lib/libgemini.so lib/libmercury.so lib/libmmcamera_faceproc.so lib/libmmcamera_frameproc.so lib/libmmcamera_hdr_lib.so lib/libmmcamera_image_stab.so lib/libmmcamera_imx091.so lib/libmmcamera_interface.so lib/libmmcamera_interface2.so lib/libmmcamera_plugin.so lib/libmmcamera_statsproc31.so lib/libmmcamera_wavelet_lib.so lib/libadsprpc.so lib/libmmjpeg_interface.so lib/libmmstillomx.so lib/libimage-jpeg-dec-omx-comp.so lib/libimage-jpeg-enc-omx-comp.so lib/libimage-omx-common.so lib/libOlaEngine.so lib/libmorpho_easy_hdr.so lib/libVDFaceAPI.so lib/libmmipl.so
最后是这个特殊的lib,如果编译出来的能用,那测试一下没问题就用编译出来的
如果不能用就必须从官方rom提取出来替换到编译的aosp里才行
lib/libcamera_client.so
如果这时硬件编解码相关的lib没有缺的话,就能正常使用摄像头了,顺带的,闪光灯也应该能用了。
关于此部分的内容,可以参考进阶教程:
/article/8890499.html
3.相机程序的分辨率支持
反编译官方的Camera程序以及自己编译相机程序进行对比找res\values\arrays.xml和strings.xml,类似如下这种
<string-array name="pref_camera_picturesize_entryvalues"> <item>5248x3936</item> <item>4992x3744</item>
把支持的像素值加进去,测试好了就可以加到device/pantech/a870/overlay里
三、GPS
笔者直接改用了CM的gps代码,因为简单好用。1.修改源代码
对比cm与 msm-aosp的hardware/qcom/gpsgps文件夹整个替换成cm的,全!部!替!换!
然后修改hardware/qcom/gps/loc_api/Android.mk
去掉第一行和最后一行
ifneq ($(TARGET_PROVIDES_GPS_LOC_API),true) endif#TARGET_PROVIDES_GPS_LOC_API
修改hardware/qcom/gps/loc_api/Android.mk
去掉第一行和最后一行
ifneq ($(TARGET_PROVIDES_GPS_LOC_API),true) endif#TARGET_PROVIDES_GPS_LOC_API
2.修改BoardConfig.mk
# GPS TARGET_NO_RPC := true BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE := $(TARGET_BOARD_PLATFORM) 或把这句改成这样也行 BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE :=msm8960
3.libloc_api_v02.so
如果最后没有生成libloc_api_v02.so的话,从其它手机的cm11里提取一个libloc_api_v02.so来用,最后如果测试可用后,集成到device.mk里4.gps.conf
可以从官方rom里提取,或读者自己可以去网上找到很多优化好的配置文件5.修改device.mk
去除原来的gps项,添加如下项目# GPS PRODUCT_PACKAGES += \ libloc_adapter \ libloc_eng \ libloc_api_v02 \ libgps.utils \ gps.msm8960
6.不要使用任何官方的gps lib
这些官方lib都不要使用:system/lib/ liblocxxx
vendor/lib/liblocxxx,liblocationservice,libgeofence.so
也不要使用使用官方的lib/hw/gps.default.so
否则会造成冲突
7.重新编译
如果正常,会生成lib\hw\gps.msm8960.so以及相关lib,然后刷机测试相关文章推荐
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(11):一些图片
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(5):显示、NFC、overlay
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(6):音频
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(7):信号通讯
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(1):基础知识
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(8):wifi与蓝牙
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(2):开发环境及相关的使用技巧
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(10):其它
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(3):寻找正确的代码版本
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(4):验证代码并编写自己的device
- 在Mac平台使用Docker搭建AOSP(Android源代码)编译环境
- MSM-AOSP_LED呼吸灯适配(泛泰IM-A910)
- MSM-AOSP相机适配进阶教程(以泛泰A910为例)
- 在nant中改变编译的目标平台
- 在Linux平台下如何编译一个C++工程
- flex 在Dev-C++平台上的编译指南
- Boost全平台编译方法
- Linux3.6.7在OK6410平台的移植(二)编译配置linux3.6.7
- readline-6.3 之arm平台交叉编译
- 请问各位老大,windows平台下用nmake编译的c程序用甚末debug?