泛泰 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获取该服务。
- 泛泰 IM 870 L/S/K 通用LED闪烁方案
- LED:利用通用定时器定时闪烁
- LED闪烁
- LED闪烁
- led闪烁
- LED闪烁
- 用定时器实现led闪烁(间隔1s)
- J。。L。。O。。K。。Y。。S
- 【NYOJ 38 K r u s k a l】
- IM方案
- 2.led灯闪烁
- LED走马灯闪烁
- LED闪烁电路
- 闪烁的 LED
- Tiny210-----LED依次闪烁
- 定时器 LED 闪烁功能
- 1.LED闪烁实验
- LED 流水灯闪烁
- I2S音频总线学习(三)S3C2440的I2S控制器
- poj2942Knights of the Round Table
- Objective-C中NSString与NSMutableString的一些简单应用
- Dom4j解析XML
- 关于TestFlight的sdk是否在release时自动移除
- 泛泰 IM 870 L/S/K 通用LED闪烁方案
- 设计模式大集锦 程序员面试全攻略
- 将VirtualBox(vdi)的虚拟硬盘格式转换为VMWare (vmdk) 格式
- 【Twitter Storm系列】flume-ng+Kafka+Storm+HDFS 实时系统搭建
- 类加载器
- 使用sdk19编译带SlidingMenu库的项目
- 基于TCP和UDP网络应用程序的编写
- IOS 点击空白处隐藏键盘的几种方法
- 页面处理技术