Android硬件访问服务---添加Service

本文详细介绍如何在Android系统中创建LED服务。从创建AIDL文件到实现服务类,并将其注册为系统服务,最后编译生成所需的jar文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在frameworks/base/core/java/android/os/目录下新建ILedService.aidl文件,这个aidl文件是让安卓系统自动生成ILedService.java文件,这个java文件给app使用,来调用jni提供的ledCrtl函数,app只需要点灯或者灭灯,它不需要其他操作,所以只需要实现ledCtrl方法:
package android.os;

/** {@hide} */
interface ILedService
{
    int ledCtrl(int val);
}

2.修改frameworks/base/Android.mk,添加" core/java/android/os/ILedService.aidl\",然后使用"mmm frameworks/base/"命令编译,在out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/os/目录下会生成ILedService.java文件。

3.新建frameworks/base/services/core/java/com/android/server/LedService.java文件:
package com.android.server;
import android.os.ILedService;

public class LedService extends ILedService.Stub {
    private static final String TAG = "LedService";

    /* call native c function to access hardware */
    public int ledCtrl(int val) throws android.os.RemoteException
    {   
            return ctrl_native(val);
    }   

    public LedService() {
            init_native();
    }

    public static native int init_native();
    public static native void deinit_native();
    public static native int ctrl_native(int val);
}
编译:mmm frameworks/base/services/core/
在out/target/common/obj/JAVA_LIBRARIES/services.core_intermediates/下会生成javalib.jar文件。

4.
在frameworks/base/services/java/com/android/server/SystemServer.java文件中添加LedService服务:
Slog.i(TAG, "Led Service");
ServiceManager.addService("led", new LedService());
编译:mmm frameworks/base/services/
在out/target/product/msm8909/system/framework/下会生成services.jar文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值