Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(10):其它
来源:互联网 发布:java能写人工智能吗 编辑:程序博客网 时间:2024/06/04 19:45
本篇是此系列文章的最后一篇。
一、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 := TimeServiceLOCAL_MODULE_PATH := $(TARGET_OUT)/app/LOCAL_SRC_FILES := TimeService.apkLOCAL_MODULE_TAGS := optionalLOCAL_MODULE_CLASS := APPS LOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_CERTIFICATE := platforminclude \$(BUILD_PREBUILT)
然后写到device.mk里
#TimeService.apkPRODUCT_PACKAGES += TimeService
最后在proprietary-blobs.txt里添加
#TimeService.apklib/libtime_genoff.solib/libTimeService.so
三、按键灯、呼吸灯
这个也是各种手机不一样,而且还必须修改代码-_-
对于没有编程基础的读者,就直接用官方rom的system/lib/hw/lights.msm8960.so
1.首先通过调试确定各种灯的调用路径
开一个adb shell,并取得root权限
cd /sys/class/ledsls
这样就可以列出当前有那些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 设置背光值为200echo 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 intset_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):其它
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(3):寻找正确的代码版本
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(1):基础知识
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(5):显示、NFC、overlay
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(6):音频
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(7):信号通讯
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(8):wifi与蓝牙
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(9):摄像头GPS传感器
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(11):一些图片
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(2):开发环境及相关的使用技巧
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(4):验证代码并编写自己的device
- MSM-AOSP相机适配进阶教程(以泛泰A910为例)
- MSM平台上的AMSS
- MSM平台上的AMSS
- MSM平台上的AMSS
- MSM平台上的AMSS
- MSM平台上的AMSS
- MSM平台上的AMSS
- session 之session混乱解决方法
- pat 1090
- 二叉树的深度优先与广度优先遍历
- 解决 Android SDK Manager 不显示老版本API的问题
- HTTP2协议规范详述
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(10):其它
- 【JavaScript】JavaScript的对象-在函数中修改参数值的问题
- Windows 下安装 Jekyll
- OC方法和文件编译
- 【JavaScript】JavaScript的对象-内部对象
- D3DPRESENT_PARAMETERS详解
- UITableView 下拉刷新
- hdu3652 数位dp(含13且被能被13整除的数)
- 日经社説 20150222 ギリシャ危機の解決はこれからが本番だ