一、传感器

先从最简单的传感器开始吧
传感器这部分没有源代码,只要从官方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没有缺的话,就能正常使用摄像头了,顺带的,闪光灯也应该能用了。

关于此部分的内容,可以参考进阶教程:
http://blog.csdn.net/benjaminwan/article/details/45112505

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,然后刷机测试

Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(9):摄像头GPS传感器相关推荐

  1. 鸿蒙系统研究之五:替换 AOSP 预编译库,关闭 SELinux

    这是我的鸿蒙系统研究系列文章的第五篇,有兴趣还可以看看前面的文章: 鸿蒙系统研究第一步:从源码构建系统镜像 鸿蒙系统研究之二:内核编译 鸿蒙系统研究之三:迈出平台移植第一步 鸿蒙系统研究之四:根文件系 ...

  2. linux+4.4+android,Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法

    Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法跟Ubuntu 12.04 - 13.10 以及jellybean编译环境配置没多大区别, 顺便记录下而已: 64 ...

  3. 如何编译各平台使用的库-以编译tolua为例

    转载注明出处: https://www.jianshu.com/p/5a35602adef8?appinstall=0 做U3D手机游戏,最热门的技术组合是c#+lua,使用lua是因为可以热更新,而 ...

  4. 在arm64平台kkfileview和LibreOffice的编译使用

    在arm64平台kkfileview和LibreOffice的编译使用 1.手动编译LibreOffice 1.1在arm64的机器上启动一个docker镜像 2.开始编译kkfileview的doc ...

  5. 【原创】IP摄像头技术纵览(一)---linux 内核编译,USB摄像头设备识别

    IP摄像头技术纵览(一)- linux 内核编译,USB摄像头设备识别 开始正文之前先来认识一下我的开发环境: 系统:ubuntu 10.04 开发板:AT91SAM9260 + Linux-2.6. ...

  6. Android平台RTMP推流或轻量级RTSP服务(摄像头或同屏)编码前数据接入类型总结

    很多开发者在做Android平台RTMP推流或轻量级RTSP服务(摄像头或同屏)时,总感觉接口不够用,以大牛直播SDK为例 (Github) 我们来总结下,我们常规需要支持的编码前音视频数据有哪些类型 ...

  7. 树莓派3 Android Pie 编译适配

    树莓派3 Android Pie 编译适配 1准备工作 2.下载源代码以及配置依赖项 2.1 配置Git与Repo 2.2 下载源代码 2.3 配置依赖项 3. 编译 3.1 编译内核 3.2 打补丁 ...

  8. Android Studio 编译适配-NDK issue 解决

    旧项目Android Studio 编译适配-NDK issue 问题点记录 旧的项目 在Android Studio新版本编译中遇到以下问题. 流水式总结记录一下 NDK getPlatformVe ...

  9. LiveGBS国标GB/T28181国标平台功能-电子地图移动位置订阅mobileposition地图定位GPS轨迹坐标位置获取redis获取位置

    LiveGBS国标GB/T28181国标平台功能-电子地图移动位置订阅mobileposition地图定位GPS轨迹坐标位置获取redis获取位置 1.位置订阅 1.1.国标设备编辑 1.2.选择设备 ...

  10. Android AOSP 单独编译某一模块

    由于AOSP 项目太大,我只修改了一个模块,比如设置. 那么只需要单独编译设置这个模块就可以了. 首先执行Source: source build/envsetup.sh 执行之后,就会有一些额外的命 ...

最新文章

  1. HTML/CSS[收藏]
  2. 共享X轴,分成上下两图
  3. C# 删除指定目录下全部文件
  4. 张睿:OpenH264拥有产品级的鲁棒性 欢迎contribute
  5. SAP Hybris Commerce product读取的调试截图
  6. 随机森林算法的随机性_理解随机森林算法的图形指南
  7. 网络技术术语英汉对照
  8. Cache占用过多内存导致Linux系统内存不足问题排查
  9. python 笔记本_Python笔记本
  10. 软件测试个人求职简历该怎么写,模板在这里
  11. java覆盖的概念_java中覆盖是什么意思?java方法覆盖的概念详解
  12. 双向链表的插入及删除图解
  13. ios silk to MP3
  14. 连续两次入围Gartner魔力象限的Quick BI到底有何魔力?
  15. Python自动生成代码 - 通过tkinter图形化操作生成代码框架
  16. 2345浏览器卸载之后如何找回收藏夹中的内容?
  17. 组播IGMP-原理介绍+报文分析+配置示例
  18. 玩《Minecraft我的世界》学python编程,可免费领|取电子学习版本
  19. 金山贝壳arp引起的不能上网故障
  20. Window10配置PHPnow

热门文章

  1. 数据库中的超键 候选键 主键 外键
  2. Android实现文本折叠效果
  3. 【math】 向量运算:叉乘
  4. leetcode 之 Merge k Sorted Lists
  5. request.getParameter、request.getParameterValues、request.getParameterMap用法详解
  6. AccessPort 0d 0a乱码
  7. ITF条码的外边框如何设置
  8. Loongson2f_龙芯逸珑8089A_扩容硬盘安装debian8(sd卡扩容)
  9. HTML中怎么从图片里取色,图片取色配色法——从电影画面中取色
  10. 浅谈霍尔电流传感器的原理及应用