您的位置:首页 > 其它

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/gps

gps文件夹整个替换成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,然后刷机测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: