本篇是此系列文章的最后一篇。

一、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):其它相关推荐

  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. Freeline - Android平台上的秒级编译方案

    Freeline 技术揭秘 Freeline是什么? Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部 ...

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

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

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

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

  6. 高通sdm660平台编译安卓10

    编译安卓10源码 在源码根目录执行 环境初始化 source build/envsetup.sh 可以使用lunch,查看当前有哪些板级编译选项 lunch 完整编译 ./build.sh dist ...

  7. Windows 10 使用WSL2下载和编译安卓10源码

    一.背景介绍   对于想要在Windows OS上学习和使用Android源码的同学来说,视乎这不太友好,因为Android基于Linux内核,需要在Linux环境下编译. 对于只需要查阅源码同学来说 ...

  8. Window 10 使用WSL2下载编译Android 10 系统源码,并用sourceInsight 4 看系统源码

    一.Window 10 安装WSL2 安装教程来自微软官网:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 步骤 1 - 启用适用 ...

  9. Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

    Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南 实验环境 下载Android源码树 在pixel3上安装手机驱动版本 编译Android源码 Android ...

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

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

最新文章

  1. Postgresql创建只读用户,并开放部分表的权限
  2. volunteer research
  3. 【树莓派学习笔记】五、处理、自动重命名并另存为图片
  4. sql ntext 替换存储过程
  5. Laravel核心解读--Database(四) 模型关联
  6. 推荐5款好用的安卓版RSS应用
  7. Windows系统cmd常用命令详解
  8. html含有一级子元素,html – 根据父级内的计数设置子元素
  9. 飘云阁(PYG)番茄插件流氓弹窗清除方法
  10. javascript小说阅读器分页算法的实现
  11. 进不去系统rpc服务器不可用,rpc服务器不可用_详细解决方法,彻底修复
  12. 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合
  13. 量化股票交易接口如何一键执行委托下单?
  14. 计算机专业发展基金申报书,【计算机学院】国家自然科学基金申请书写作技巧及评审要点...
  15. 打开php文件url格式,url格式是什么
  16. puppy linux u盘 分区,让安装在U盘上的Puppy Linux像安装在硬盘上一样工作
  17. python画矢量场_Python中的图像渐变矢量场
  18. 计算 像素 密度 ppi
  19. linux桌面系统 9,红旗Linux系统RedFlag Linux Desktop 9.0安装教程
  20. M.2、PCIe、mSATA接口的SSD 速度性能如何?哪一个是装机首选

热门文章

  1. 2022年最新京东滑块验证码破解思路(算法过验)
  2. 菲尼克斯电源模块QUINT-PS3AC24DC40的组装说明
  3. 关于Mac学习C语言通过vscode如何编译运行代码
  4. 项目保密协议书(范本)
  5. Oracle基础--PL/SQL编程基本语法
  6. Rational Rose 2007安装使用教程
  7. 企业管理软件系统的重要性
  8. 课后自主练习(排序)1019. 文件排序 easy《编程思维与实践》个人学习笔记
  9. codesmith mysql 注释_代码生成工具:CodeSmith 安装、改造适配Mysql 字段注释、DLL修改 及批量生成实体类代码...
  10. Ubuntu添加开机自动运行程序