Android 从驱动到应用层添加代码流程

一: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);//设置背光拉高


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值