プロセス間通信binderメカニズム-独自のシステムサービスを追加
1378 ワード
1.システムレベルのサービス(ServiceManagerが管理するシステムサービス)の方法appにアクセスさせたい/h2a_0529$ cd frameworks/base/core/java/android/os h2a_0529/frameworks/base/core/java/android/os$ vim IHelloService.aidl frameworks/baseディレクトリに戻り、Android.mkファイルを開き、LOCAL_を変更します.SRC_FILES変数の値、core/java/android/os/IHelloService.aidl/ を増加 h2a_0529$ mmm frameworks/base/ コンパイル2のaidlはstubとproxy を生成する frameworks/base/services/java/com/android/serverディレクトリにアクセスし、HelloService.javaを追加
8.呼び出し
package android.os;
interface IHelloService {
void setVal(int val);
int getVal();
}
package com.android.server;
import android.content.Context;
import android.os.IHelloService;
import android.util.Log;
public class HelloService extends IHelloService.Stub{
public void setVal(int val){
Log.d("yzy","setVal......"+val);
}
public int getVal(){
return 0;
}
}
7. 同じディレクトリのSystemServer.javaファイルを変更し、Server Thread::run関数にHelloServiceをロードするコードを追加します.ServiceManager.addService("hello", new HelloService());
8.呼び出し
IHelloService hs= IHelloService.Stub.asInterface(ServiceManager.getService("hello"));
hs.setVal(123);