reply->writeInt32(getCardReaderSize()); int mid = data.readInt32();
package com.zlc.provider;
import android.os.Parcel;
import android.os.Parcelable;
public class Students implements Parcelable{
private int stu_id;
private String stu_name;
public Students(Parcel source){
stu_id = source.readInt();
stu_name = source.readString();
}
public int getStu_id() {
return stu_id;
}
public void setStu_id(int stu_id) {
this.stu_id = stu_id;
}
public String getStu_name() {
return stu_name;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeInt(stu_id);
dest.writeString(stu_name);
}
//Interface that must be implemented and provided as a public CREATOR field that generates instances of your Parcelable class from a Parcel.
public final static Parcelable.Creator<Students> CREATOR = new Parcelable.Creator<Students>() {
@Override
public Students createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new Students(source);
}
@Override
public Students[] newArray(int size) {
// TODO Auto-generated method stub
return new Students[size];
}
};
}
package com.zlc.aidl;
import com.zlc.aidl.DemoParcelable;
import com.zlc.aidl.AIDLCallback;
interface IMyAidlService{
void registerClient(AIDLCallback cb);//注册回调
void saveDemoInfo(in DemoParcelable demo);//实际调用方法
}
package com.zlc.aidl;
import com.zlc.aidl.DemoParcelable;
import java.util.List;
interface AIDLCallback {
int returnResult(out List<DemoParcelable> list,int a);//回调给客户端
void testMethod(out Bundle params);//用来测试参数in/out的使用
}
package com.zlc.aidl; parcelable DemoParcelable;
mRemote.transact(Stub.TRANSACTION_testMethod, _data, _reply, 0);
_reply.readException();
if ((0!=_reply.readInt())) {
params.readFromParcel(_reply);
}
if ((params!=null)) {
_data.writeInt(1);
params.writeToParcel(_data, 0);
}
else {
_data.writeInt(0);
}
mRemote.transact(Stub.TRANSACTION_testMethod, _data, _reply, 0);
_reply.readException();
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.d(TAG, "MyAidlService onBind");
return mBinder;
}
private final IMyAidlService.Stub mBinder = new IMyAidlService.Stub() {
private AIDLCallback cb;
@Override
public void saveDemoInfo(DemoParcelable demo) throws RemoteException {
if (demo != null) {
if ("meinv1".equals(demo.getDemo_name())) {
demo.setDemo_name("meinv2");
}
list.add(demo);
Log.d(TAG, "saveDemoInfo list.size = " + list.size() + " list = " + list);
cb.returnResult(list, 5);
Bundle params = new Bundle();
cb.testMethod(params);
int width = params.getInt("width", 0);
int height = params.getInt("height", 0);
Log.d(TAG, "width = " + width + " height = "+height);
}
}
@Override
public void registerClient(AIDLCallback cb) throws RemoteException {
cb.asBinder().linkToDeath(new DeathRecipient() {
@Override
public void binderDied() {
try {
Log.i(TAG, "[ServiceAIDLImpl]binderDied.");
} catch (Throwable e) {
}
}
}, 0);
}
};
private ServiceConnection mRemoteConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
Log.d(TAG, "onServiceDisconnected");
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
Log.d(TAG, "onServiceConnected");
mRemoteService = (IMyAidlService) IMyAidlService.Stub
.asInterface(service);
if(mRemoteService != null)
Log.d(TAG, "onServiceConnected success");
}
};
……
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String actionName = "com.zlc.aidl.server.MyAidlService";
Intent intent = new Intent(actionName);
boolean ret = bindService(intent, mRemoteConnection,
Context.BIND_AUTO_CREATE);
Log.d(TAG, " ret ?=" + ret);
if (ret) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
DemoParcelable demo = new DemoParcelable();
List<String> list = new ArrayList<String>();
list.add("like dance");
demo.setDemo_id((Integer) img.getTag());
demo.setDemo_name("meinv1");
demo.setDemo_list(list);
mRemoteService.registerClient(callback);
mRemoteService.saveDemoInfo(demo);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
});
}
……
private final AIDLCallback callback = new AIDLCallback.Stub() {
@Override
public int returnResult(List<DemoParcelable> list, int a)
throws RemoteException {
if (list != null)
Log.d(TAG, "list.size = " + list.size()+" a="+a);
for (DemoParcelable demoParcelable : list) {
doFresh(demoParcelable);
}
return 0;
}
@Override
public void testMethod(Bundle outParams) throws RemoteException {
// TODO Auto-generated method stub
if (outParams != null) {
outParams.putInt("width", 11);
outParams.putInt("height", 12);
}
}
};
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有