Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(10):其它
本篇是此系列文章的最后一篇。
一、Power
官方rom里如果有system\vendor\lib\hw\power.qcom.so
则可以加到proprietary-blobs.txt
其实同版本适配时,官方rom里的多数lib都可以替换到编译出来的msm-aosp里
二、拔电池掉时间问题
CM系统的时间服务只要在BoardConfig.mk里加一个语句BOARD_USES_QC_TIME_SERVICES := true
就行了,然后提取官方的lib/libtime_genoff.so
来用就搞定了
而msm-aosp则麻烦多了,它没有专门的配置项和代码
你得先用厨房工具合并odex,把官方rom的TimeService.apk提取出来用,并放到device/pantech/a870/etc文件夹
并在etc文件夹下新建一个Android.mk,内容如下
LOCAL_PATH:= $(call my-dir)
include \$(CLEAR_VARS)
LOCAL_MODULE := TimeService
LOCAL_MODULE_PATH := $(TARGET_OUT)/app/
LOCAL_SRC_FILES := TimeService.apk
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
include \$(BUILD_PREBUILT)
然后写到device.mk里
#TimeService.apk
PRODUCT_PACKAGES += TimeService
最后在proprietary-blobs.txt里添加
#TimeService.apk
lib/libtime_genoff.so
lib/libTimeService.so
三、按键灯、呼吸灯
这个也是各种手机不一样,而且还必须修改代码-_-
对于没有编程基础的读者,就直接用官方rom的system/lib/hw/lights.msm8960.so
1.首先通过调试确定各种灯的调用路径
开一个adb shell,并取得root权限
cd /sys/class/leds
ls
这样就可以列出当前有那些led设备,并记录下来
这里就以LG F200这种有实体按键的手机来举例吧
lcd背光
/sys/class/leds/lcd-backlight/brightness红灯
/sys/class/leds/led:red/brightness绿灯
/sys/class/leds/led:green/brightness蓝灯
/sys/class/leds/led:blue/brightness按键灯
/sys/class/leds/button-backlight/brightness
如果读者想具体试验一下用命令控制各种灯的话,笔者介绍几个命令
echo 200 > /sys/class/leds/lcd-backlight/brightness 设置背光值为200
echo 0 > /sys/class/leds/lcd-backlight/brightness 设置背光值为0echo 255 > /sys/class/leds/led:red/brightness 开红灯
echo 0 > /sys/class/leds/led:red/brightness 关红灯cat /sys/class/leds/led:red/brightness查看当前的灯亮度值
cat /sys/class/leds/led:red/max_brightness查看灯的最大亮度值
2.修改liblight代码
msm-aosp不像cm那样可以把liblight单独出来,所以咱就直接到源代码目录去修改
hardware/qcom/display/liblight
先把lights.c压缩备份一下
开始修改lights.c,首先修改三个颜色的呼吸灯调用地址
仿照呼吸灯的行,增加一行按键灯的路径
char const*const BUTTON_FILE= "/sys/class/leds/button-backlight/brightness";
下面的这些路径,如果读者的机型不支持(也就是没有这个路径),那就把这些代码删掉
在rgb_to_brightness下面添加一段按键灯的调用函数
static int
set_light_buttons(struct light_device_t* dev,struct light_state_t const* state)
{int err = 0;int on = is_lit(state);pthread_mutex_lock(&g_lock);err = write_int(BUTTON_FILE, on?255:0);pthread_mutex_unlock(&g_lock);return err;
}
然后拉到文件底部增加按键背光调用入口
else if (0 == strcmp(LIGHT_ID_BUTTONS, name))set_light = set_light_buttons;
这就是大概的步骤,对于没有编程基础的读者来说可能比较困难
请参考笔者提供的范例吧:
http://download.csdn.net/detail/benjaminwan/8452531
最后,提供一个泛泰A910的呼吸灯适配例子:
http://blog.csdn.net/benjaminwan/article/details/45112175
四、振动
这一段专门为泛泰而写
因为泛泰全系列机型内核里的振动代码都是非标准的
1.引用syhost对此部分的解析
http://blog.csdn.net/syhost/article/details/12125971
不论读者能否理解,咱们来实际调试一下就明白了
老套路了,开一个adb shell,并取得root权限
标准振动代码的手机,只要执行这句就能让手机振动起来,振动1秒
echo 1000 > /sys/class/timed_output/vibrator/enable
而泛泰手机官方内核必须是
echo 1311720 > /sys/class/timed_output/vibrator/enable
1311720这个值是如何得到的呢?
如果读者没有任何计算机基础,那么就以最直观的方式来试吧,打开window自带的计算器,使用程序员模式。
十进制输入数值1000,切换到十六进制,按Or键,再输入140000,按等于号,并切换到十进制显示就是1311720
简单来说,就是3E8|0x140000 = 1403E8,即,振动时间|0x140000
2.修改振动调用代码
对于cm来讲,振动代码可以BOARD_HAS_VIBRATOR_IMPLEMENTATION
来自定义
msm-aosp比较简陋啦,只好直接改代码了
hardware/libhardware_legacy/vibrator/vibrator.c
只要在sendit函数里添加一句timeout_ms = 0x140000 | timeout_ms;
即可
Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(10):其它相关推荐
- 鸿蒙系统研究之五:替换 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 ...
- Freeline - Android平台上的秒级编译方案
Freeline 技术揭秘 Freeline是什么? Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部 ...
- 如何编译各平台使用的库-以编译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 ...
- 高通sdm660平台编译安卓10
编译安卓10源码 在源码根目录执行 环境初始化 source build/envsetup.sh 可以使用lunch,查看当前有哪些板级编译选项 lunch 完整编译 ./build.sh dist ...
- Windows 10 使用WSL2下载和编译安卓10源码
一.背景介绍 对于想要在Windows OS上学习和使用Android源码的同学来说,视乎这不太友好,因为Android基于Linux内核,需要在Linux环境下编译. 对于只需要查阅源码同学来说 ...
- Window 10 使用WSL2下载编译Android 10 系统源码,并用sourceInsight 4 看系统源码
一.Window 10 安装WSL2 安装教程来自微软官网:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 步骤 1 - 启用适用 ...
- Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南
Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南 实验环境 下载Android源码树 在pixel3上安装手机驱动版本 编译Android源码 Android ...
- 树莓派3 Android Pie 编译适配
树莓派3 Android Pie 编译适配 1准备工作 2.下载源代码以及配置依赖项 2.1 配置Git与Repo 2.2 下载源代码 2.3 配置依赖项 3. 编译 3.1 编译内核 3.2 打补丁 ...
最新文章
- Postgresql创建只读用户,并开放部分表的权限
- volunteer research
- 【树莓派学习笔记】五、处理、自动重命名并另存为图片
- sql ntext 替换存储过程
- Laravel核心解读--Database(四) 模型关联
- 推荐5款好用的安卓版RSS应用
- Windows系统cmd常用命令详解
- html含有一级子元素,html – 根据父级内的计数设置子元素
- 飘云阁(PYG)番茄插件流氓弹窗清除方法
- javascript小说阅读器分页算法的实现
- 进不去系统rpc服务器不可用,rpc服务器不可用_详细解决方法,彻底修复
- 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合
- 量化股票交易接口如何一键执行委托下单?
- 计算机专业发展基金申报书,【计算机学院】国家自然科学基金申请书写作技巧及评审要点...
- 打开php文件url格式,url格式是什么
- puppy linux u盘 分区,让安装在U盘上的Puppy Linux像安装在硬盘上一样工作
- python画矢量场_Python中的图像渐变矢量场
- 计算 像素 密度 ppi
- linux桌面系统 9,红旗Linux系统RedFlag Linux Desktop 9.0安装教程
- M.2、PCIe、mSATA接口的SSD 速度性能如何?哪一个是装机首选
热门文章
- 2022年最新京东滑块验证码破解思路(算法过验)
- 菲尼克斯电源模块QUINT-PS3AC24DC40的组装说明
- 关于Mac学习C语言通过vscode如何编译运行代码
- 项目保密协议书(范本)
- Oracle基础--PL/SQL编程基本语法
- Rational Rose 2007安装使用教程
- 企业管理软件系统的重要性
- 课后自主练习(排序)1019. 文件排序 easy《编程思维与实践》个人学习笔记
- codesmith mysql 注释_代码生成工具:CodeSmith 安装、改造适配Mysql 字段注释、DLL修改 及批量生成实体类代码...
- Ubuntu添加开机自动运行程序