泛泰 IM 870 L/S/K 通用LED闪烁方案

来源:互联网 发布:云计算定岗培训生骗局 编辑:程序博客网 时间:2024/06/01 10:52

在Android中,硬件服务一般运行在一个独立进程中为各种应用程序提供服务(也有特别的,如上一篇开头我们说的上层应用也可以单独写自己的JNI层代码,那样书写比较简单,但是只能为该应用提供服务),因此,APP与这些硬件服务之间的通信需要通过代理来实现。(刚刚发现一个错误。。临时改来了,大家重新看一遍吧[em]e142[/em]高通和mtk的机型通用。。视情况有些文件位置会改动请开发者注意)

 

一)

添加AIDL接口文件     进入frameworks/base/core/java/android/os/目录,新增IBreathLedsService.aidl文件: package android.os; /** @hide */ interface IBreathLedsService { void turnOnLeds(); void turnOffLeds(); void setLedsBrightness(int which, int level); } IBreathLedsService这里只提供了打开呼吸灯,关闭呼吸灯和调节呼吸灯亮度三个接口服务。IBreathLedsService.aidl文件不是必须放在该目录下,放在其他目录也可以,只要在相应Android.mk中加入编译路径就行。     另外注意,上面的/** @hide */必须要加,否则new整个系统的时候会报错,会提示make update-api之类的。


 二)

在Android中添加编译路径     打开frameworks/base/Android.mk文件,在LOCAL_SRC_FILES变量中加入: core/java/android/os/IBreathLedsService.aidl \ 编译后,系统会自动生成对应的IBreathLedsService.Stub接口类。


 三)

新建java文件,编写Framework接口的具体实现     进入frameworks/base/services/java/com/android/server/目录,新增BreathLedsService.java: package com.android.server; import android.os.IBreathLedsService; public class BreathLedsService extends IBreathLedsService.Stub { //亮度等级(32级) private static final int[] BRIGHTNESS_LEVEL = { 0, 1, 2, 4, 6, 10, 13, 18, 22, 28, 33, 39, 46, 53, 61, 69, 78, 86, 96, 106, 116, 126, 138, 149, 161, 173, 186, 199, 212, 226, 240, 255, }; BreathLedsService () { init_native(); } public void turnOnLeds() { set_brightness_native(0x80); } public void turnOffLeds() { set_brightness_native(0x00); } public void setLedsBrightness(int which, int level) { if ((which > 12) || (which < 1)) return; level = level % 32; int data = ((0x80 | which) << 8) | BRIGHTNESS_LEVEL[level]; set_brightness_native(data); } private native void init_native(); private native void set_brightness_native(int data); }


 四)

将新服务添加进系统服务中去     打开上述同目录下的SystemServer.java文件,在ServerThread::run()方法中添加加载代码: try { Slog.i(TAG, "BreathLeds Service"); ServiceManager.addService("breath_leds", new BreathLedsService()); } catch (Throwable e) { Slog.e(TAG, "Failure starting BreathLeds Service", e); } 注意,要记住这个tag字符串"breath_leds",APP会通过该tag获取该服务。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机密号忘了怎么办 qq号忘了账号怎么办 推特密码忘了怎么办 沃邮箱改密码短信延迟怎么办 被qq好友拉黑了怎么办 网易邮箱字体变小了怎么办 邮箱注册不了全拼怎么办 家用电器接入两相火线后怎么办 手机充电板坏了怎么办 闪电宝商户乱跳怎么办 网易邮箱发错了怎么办 苹果手机邮件无法连接服务器怎么办 好记星平板电脑开不了机怎么办 邮箱里的文件过期了怎么办 小米手机邮件发不了怎么办 有人加我qq邮箱怎么办 文件太大发邮件太慢怎么办 爱又米发信息怎么办 手机上电子邮件己停止运行怎么办 苹果电子邮件密码忘了怎么办 玩游戏时电脑烫怎么办 qq邮箱独立密码忘记了怎么办 qq邮箱中转站容量不足怎么办 qq邮箱忘记密码了怎么办 qq邮箱超大附件过期怎么办 忘记qq邮箱独立密码怎么办 网易邮箱账号忘了怎么办 微信登录密码忘了怎么办 微信太久没登录登录不上怎么办 邮箱独立密码忘记了怎么办 苹果设置id没有邮箱怎么办 苹果手机设置id没有邮箱怎么办 邮箱的附件过期了怎么办 邮箱里的附件过期了怎么办 邮箱中附件过期了怎么办 扣扣邮箱附件过期怎么办 公司网页版邮箱进不去了怎么办 农行客户端密码忘记了怎么办 中国银行客户端密码忘记了怎么办 建行客户端登录密码忘记了怎么办 中国移动客户端密码忘记了怎么办