Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(9):摄像头GPS传感器
一、传感器
先从最简单的传感器开始吧
传感器这部分没有源代码,只要从官方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传感器相关推荐
- 鸿蒙系统研究之五:替换 AOSP 预编译库,关闭 SELinux
这是我的鸿蒙系统研究系列文章的第五篇,有兴趣还可以看看前面的文章: 鸿蒙系统研究第一步:从源码构建系统镜像 鸿蒙系统研究之二:内核编译 鸿蒙系统研究之三:迈出平台移植第一步 鸿蒙系统研究之四:根文件系 ...
- 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 ...
- 如何编译各平台使用的库-以编译tolua为例
转载注明出处: https://www.jianshu.com/p/5a35602adef8?appinstall=0 做U3D手机游戏,最热门的技术组合是c#+lua,使用lua是因为可以热更新,而 ...
- 在arm64平台kkfileview和LibreOffice的编译使用
在arm64平台kkfileview和LibreOffice的编译使用 1.手动编译LibreOffice 1.1在arm64的机器上启动一个docker镜像 2.开始编译kkfileview的doc ...
- 【原创】IP摄像头技术纵览(一)---linux 内核编译,USB摄像头设备识别
IP摄像头技术纵览(一)- linux 内核编译,USB摄像头设备识别 开始正文之前先来认识一下我的开发环境: 系统:ubuntu 10.04 开发板:AT91SAM9260 + Linux-2.6. ...
- Android平台RTMP推流或轻量级RTSP服务(摄像头或同屏)编码前数据接入类型总结
很多开发者在做Android平台RTMP推流或轻量级RTSP服务(摄像头或同屏)时,总感觉接口不够用,以大牛直播SDK为例 (Github) 我们来总结下,我们常规需要支持的编码前音视频数据有哪些类型 ...
- 树莓派3 Android Pie 编译适配
树莓派3 Android Pie 编译适配 1准备工作 2.下载源代码以及配置依赖项 2.1 配置Git与Repo 2.2 下载源代码 2.3 配置依赖项 3. 编译 3.1 编译内核 3.2 打补丁 ...
- Android Studio 编译适配-NDK issue 解决
旧项目Android Studio 编译适配-NDK issue 问题点记录 旧的项目 在Android Studio新版本编译中遇到以下问题. 流水式总结记录一下 NDK getPlatformVe ...
- LiveGBS国标GB/T28181国标平台功能-电子地图移动位置订阅mobileposition地图定位GPS轨迹坐标位置获取redis获取位置
LiveGBS国标GB/T28181国标平台功能-电子地图移动位置订阅mobileposition地图定位GPS轨迹坐标位置获取redis获取位置 1.位置订阅 1.1.国标设备编辑 1.2.选择设备 ...
- Android AOSP 单独编译某一模块
由于AOSP 项目太大,我只修改了一个模块,比如设置. 那么只需要单独编译设置这个模块就可以了. 首先执行Source: source build/envsetup.sh 执行之后,就会有一些额外的命 ...
最新文章
- HTML/CSS[收藏]
- 共享X轴,分成上下两图
- C# 删除指定目录下全部文件
- 张睿:OpenH264拥有产品级的鲁棒性 欢迎contribute
- SAP Hybris Commerce product读取的调试截图
- 随机森林算法的随机性_理解随机森林算法的图形指南
- 网络技术术语英汉对照
- Cache占用过多内存导致Linux系统内存不足问题排查
- python 笔记本_Python笔记本
- 软件测试个人求职简历该怎么写,模板在这里
- java覆盖的概念_java中覆盖是什么意思?java方法覆盖的概念详解
- 双向链表的插入及删除图解
- ios silk to MP3
- 连续两次入围Gartner魔力象限的Quick BI到底有何魔力?
- Python自动生成代码 - 通过tkinter图形化操作生成代码框架
- 2345浏览器卸载之后如何找回收藏夹中的内容?
- 组播IGMP-原理介绍+报文分析+配置示例
- 玩《Minecraft我的世界》学python编程,可免费领|取电子学习版本
- 金山贝壳arp引起的不能上网故障
- Window10配置PHPnow
热门文章
- 数据库中的超键 候选键 主键 外键
- Android实现文本折叠效果
- 【math】 向量运算:叉乘
- leetcode 之 Merge k Sorted Lists
- request.getParameter、request.getParameterValues、request.getParameterMap用法详解
- AccessPort 0d 0a乱码
- ITF条码的外边框如何设置
- Loongson2f_龙芯逸珑8089A_扩容硬盘安装debian8(sd卡扩容)
- HTML中怎么从图片里取色,图片取色配色法——从电影画面中取色
- 浅谈霍尔电流传感器的原理及应用