国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
Android 添加系統(tǒng)服務(wù)
Android系統(tǒng)本身提供了很多系統(tǒng)服務(wù),如WindowManagerService,PowerManagerService等。下面描述一下添加一個(gè)系統(tǒng)服務(wù)的具體步驟。


1、  撰寫一個(gè)aidl文件,定義服務(wù)的接口,將在編譯過(guò)程中通過(guò)aidl工具生成對(duì)應(yīng)的java接口。一般系統(tǒng)服務(wù)的aidl文件都放在framework\base\core\java\android\os目錄中。

以我所寫的IMyTool.aidl為例。在.aidl中定義自己需要加入的方法,編寫規(guī)則和java接口差不多,這里不多說(shuō)。


2、  將aidl文件名添加到frameworks\base\目錄下的Android.mk編譯腳本文件中。

如:

LOCAL_SRC_FILES += \

         core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl\

         …\

         core/java/android/os/IMyTool.aidl\

         …

IMyTool.aidl即我加進(jìn)去的aidl文件,加入后才能在make過(guò)程中編譯到,否則將在后面的SystemServer添加系統(tǒng)服務(wù)時(shí)會(huì)報(bào)錯(cuò)提示找不到對(duì)應(yīng)類。


3、  編寫真正工作的服務(wù)類,繼承IMyTool.Stub類(AIDL文件名.Stub,aidl生成的接口中的內(nèi)部類,是一個(gè)Binder)。

服務(wù)類一般都放在framework\base\services\java\com\android\server目錄中。

例如:

public class MyToolService extends IMyTool.Stub {

           實(shí)現(xiàn)IMyTool.aidl中定義的接口。

}


4、  將自定義服務(wù)注冊(cè)到SystemServer,使得開(kāi)機(jī)過(guò)程中被添加。

在framework\base\services\java\com\android\server目錄中的SystemServer中啟動(dòng)服務(wù)代碼處加入:

try {

           Slog.i(TAG, "MyToolService");

           ServiceManager.addService(Context.MY_TOOL_SERVICE,new MyToolService(context));// MyToolService構(gòu)造函數(shù)自己定義,一般都會(huì)用到Context

} catch(Throwable e) {

           Slog.e(TAG, "Failure startingMyToolService", e);

}

上面代碼中Context.MY_TOOL_SERVICE是自己在Context類中定義的常量,也就是給服務(wù)定義的名字,使用常量方便獲取服務(wù),而不需要記住注冊(cè)服務(wù)時(shí)用的名字,且想換名字時(shí)只需改一個(gè)常量的值。

5、  由于在工程中添加了自己定義的類及常量,系統(tǒng)的api沒(méi)有更新,因此需要先在工程中make clean然后make update-api,執(zhí)行完后會(huì)發(fā)現(xiàn)frameworks\base\api\current.xml文件中多出自己定義的一些東西。current.xml這個(gè)文件包含了所有系統(tǒng)所有能被應(yīng)用層使用的類及其方法等。

之后再使用make編出來(lái)的固件及jar包就能包含自定義的接口。



編譯后如何使用:

將編出來(lái)的jar包通過(guò)lib方式導(dǎo)入工程。jar包位置:out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar

調(diào)用以下代碼獲取自定義服務(wù):

IMyTool myTool = IMyTool.Stub.asInterface(ServiceManager.getService(MY_TOOL_SERVICE));

MY_TOOL_SERVICE即在Context中定義的常量。獲取到myTool后就可以調(diào)用在aidl文件中定義的接口了。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【Android】Service
Android 使用【AIDL】調(diào)用外部服務(wù)
[z]android 應(yīng)用程序Activity之間數(shù)據(jù)傳遞與共享的幾種途徑
Android Service服務(wù)(三) bindService與remoteServic...
Android 進(jìn)程間通信(AIDL)使用詳解
Android常用功能攔截短信電話
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服