一:Kernel层:
将s3c6410_leds.c文件放入\kernel\drivers\char目录下
修改 此目录下makefile文件 添加obj-y += s3c6410_leds.o
二:HAL层:
将libtestled文件夹放入\hardware目录下
将led.h文件放入\hardware\libhardware\include\hardware目录下
三:Farmworks层:
1:将forlinx文件夹放入\frameworks\base\core\java\android目录下
在\frameworks\base目录下的Android.mk文件中
LOCAL_SRC_FILES += \ 下加入
(185行)core/java/android/forlinx/ILedService.aidl\
core/java/android/forlinx/IPwmService.aidl\
aidl_files := \ 下加入
(339行)frameworks/base/core/java/android/forlinx/ILedService.aidl\
frameworks/base/core/java/android/forlinx/IPwmService.aidl\
2:frameworks\base\services\jni中加入com_android_server_LedService.cpp文件
此目录下的Android.mk文件中
LOCAL_SRC_FILES:= \ 下加入
(13行)com_android_server_LedService.cpp\
此目录下的Onlod.cpp文件中
namespace android 下加入
(31行)intregister_android_server_LedService(JNIEnv* env);
extern "C" jint JNI_OnLoad(JavaVM*vm, void* reserved ) 下加入
(55行)register_android_server_LedService(env);
\frameworks\base\services\java\com\android\server目录下加入 LedService.java文件
3:frameworks/base/core/java/android/content/Context.java: 下加入
(1950行) public static final String LED_SERVICE = "led";
4:添加调用远程服务的文件
frameworks/base/services/java/com/android/server/ SerialService.java//这个文件下加入
(139行)LedService ledservice = null;
(597行) try {
Slog.i(TAG, "LedService");
// Serial port support
ledservice = newLedService(context);
ServiceManager.addService(Context.LED_SERVICE, ledservice);
} catch (Throwable e) {
Slog.e(TAG, "Failurestarting LedService", e);
}
5:\frameworks\base\core\java\android\app\ContextImpl.java 文件中加入
(46行)importandroid.forlinx.ILedService;
importandroid.forlinx.LedManager;
(469行)registerService(LED_SERVICE, newServiceFetcher() {
public ObjectcreateService(ContextImpl ctx) {
IBinder b =ServiceManager.getService(LED_SERVICE);
Return new LedManager(ctx,ILedService.Stub.asInterface(b));
}});
四:把系统重新编译后就可以在代码中调用
在eclipse中可以导入classes.jar包测试。
privateLedManager mLedManager = null;
mLedManager= (LedManager) getSystemService(Context.LED_SERVICE);
booleanmledmanagerinit=mLedManager.init();//初始化
booleanmledmanageroff=mLedManager.LedOff(3);//设置背光拉低
booleanmledmanageron=mLedManager.LedOn(3);//设置背光拉高