資源簡介
aidl 方式client端和服務端方式通信的例子
代碼片段和文件信息
/*
?*?This?file?is?auto-generated.??DO?NOT?MODIFY.
?*?Original?file:?/home/songhanqing/workspace/aidlexample/src/com/aidl/aidlservice/example.aidl
?*/
package?com.aidl.aidlservice;
public?interface?example?extends?android.os.IInterface
{
/**?Local-side?IPC?implementation?stub?class.?*/
public?static?abstract?class?Stub?extends?android.os.Binder?implements?com.aidl.aidlservice.example
{
private?static?final?java.lang.String?DEscriptOR?=?“com.aidl.aidlservice.example“;
/**?Construct?the?stub?at?attach?it?to?the?interface.?*/
public?Stub()
{
this.attachInterface(this?DEscriptOR);
}
/**
?*?Cast?an?IBinder?object?into?an?com.aidl.aidlservice.example?interface
?*?generating?a?proxy?if?needed.
?*/
public?static?com.aidl.aidlservice.example?asInterface(android.os.IBinder?obj)
{
if?((obj==null))?{
return?null;
}
android.os.IInterface?iin?=?obj.queryLocalInterface(DEscriptOR);
if?(((iin!=null)&&(iin?instanceof?com.aidl.aidlservice.example)))?{
return?((com.aidl.aidlservice.example)iin);
}
return?new?com.aidl.aidlservice.example.Stub.Proxy(obj);
}
@Override?public?android.os.IBinder?asBinder()
{
return?this;
}
@Override?public?boolean?onTransact(int?code?android.os.Parcel?data?android.os.Parcel?reply?int?flags)?throws?android.os.RemoteException
{
switch?(code)
{
case?INTERFACE_TRANSACTION:
{
reply.writeString(DEscriptOR);
return?true;
}
case?TRANSACTION_add:
{
data.enforceInterface(DEscriptOR);
int?_arg0;
_arg0?=?data.readInt();
int?_arg1;
_arg1?=?data.readInt();
int?_result?=?this.add(_arg0?_arg1);
reply.writeNoException();
reply.writeInt(_result);
return?true;
}
}
return?super.onTransact(code?data?reply?flags);
}
private?static?class?Proxy?implements?com.aidl.aidlservice.example
{
private?android.os.IBinder?mRemote;
Proxy(android.os.IBinder?remote)
{
mRemote?=?remote;
}
@Override?public?android.os.IBinder?asBinder()
{
return?mRemote;
}
public?java.lang.String?getInterfaceDescriptor()
{
return?DEscriptOR;
}
@Override?public?int?add(int?a?int?b)?throws?android.os.RemoteException
{
android.os.Parcel?_data?=?android.os.Parcel.obtain();
android.os.Parcel?_reply?=?android.os.Parcel.obtain();
int?_result;
try?{
_data.writeInterfaceToken(DEscriptOR);
_data.writeInt(a);
_data.writeInt(b);
mRemote.transact(Stub.TRANSACTION_add?_data?_reply?0);
_reply.readException();
_result?=?_reply.readInt();
}
finally?{
_reply.recycle();
_data.recycle();
}
return?_result;
}
}
static?final?int?TRANSACTION_add?=?(android.os.IBinder.FIRST_CALL_TRANSACTION?+?0);
}
public?int?add(int?a?int?b)?throws?android.os.RemoteException;
}
評論
共有 條評論