Android开发 AIDL使用自定义对象作参数或返回值

默认,AIDL支持对象作参数,但需要该对象实现Parcelable接口,且aidl文件应该是该类在同一包下,需要单独给该类定义一个aidl文件.
定义模型类:

EnglishItem.java:


package com.pocketdigi.english.aidl;
 
import android.os.Parcel;
import android.os.Parcelable;
 
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import com.pocketdigi.english.utils.Constants;
import com.pocketdigi.english.utils.Des;
 
@DatabaseTable(tableName = "listenlist")
public class EnglishItem implements Parcelable {
	/**
	 * 
	 */
	private static final long serialVersionUID = -1756522544697525757L;
	@DatabaseField(id = true)
	private int id;
	@DatabaseField
	private String title;
	@DatabaseField
	private String category;
	@DatabaseField
	private String mp3url;
	@DatabaseField
	private String lrcurl;
	@DatabaseField
	private String txturl;
 
	public static final Parcelable.Creator<EnglishItem> CREATOR = new Parcelable.Creator<EnglishItem>() {
		public EnglishItem createFromParcel(Parcel in) {
			return new EnglishItem(in);
		}
 
		public EnglishItem[] newArray(int size) {
			return new EnglishItem[size];
		}
	};
 
	private EnglishItem(Parcel in)
	{
		readFromParcel(in);
	}
 
	public int getId() {
		return id;
	}
 
	public void setId(int id) {
		this.id = id;
	}
 
	public String getTitle() {
		return title;
	}
 
	public void setTitle(String title) {
		this.title = title;
	}
 
	public String getCategory() {
		return category;
	}
 
	public void setCategory(String category) {
		this.category = category;
	}
 
	public String getMp3url() {
		return Des.decodeValue(Constants.DES_KEY, mp3url);
	}
 
	public void setMp3url(String mp3url) {
		this.mp3url = mp3url;
	}
 
	public String getLrcurl() {
		return Des.decodeValue(Constants.DES_KEY, lrcurl);
	}
 
	public void setLrcurl(String lrcurl) {
		this.lrcurl = lrcurl;
	}
 
	public String getTxturl() {
		return Des.decodeValue(Constants.DES_KEY, txturl);
	}
 
	public void setTxturl(String txturl) {
		this.txturl = txturl;
	}
 
	@Override
	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}
 
	@Override
	public void writeToParcel(Parcel out, int flag) {
		// TODO Auto-generated method stub
		out.writeInt(id);
		out.writeString(title);
		out.writeString(category);
		out.writeString(mp3url);
		out.writeString(lrcurl);
		out.writeString(txturl);
	}
	/**
	 * 读
	 * @param in
	 */
	public void readFromParcel(Parcel in)
	{
		id=in.readInt();
		title=in.readString();
		category=in.readString();
		category=in.readString();
		lrcurl=in.readString();
		txturl=in.readString();
	}
}

Parcelable.Creator不可少。
同包下定义一个EnglishItem.aidl:

1
2
package com.pocketdigi.english.aidl;
parcelable EnglishItem;

最后是调用接口aidl:
PlayerAidl.aidl:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.pocketdigi.english.aidl;
 
import com.pocketdigi.english.aidl.EnglishItem;
 
interface PlayerAidl {
	/**
	*传入列表
	**/
	void putList(inout List<EnglishItem> item);
	/**
	*播放指定音频
	**/
	void play(int index);
	void pause();
	/**
	*暂停后恢复播放
	**/
	void resume();
	/**
	*删除指定项
	**/
	void delete(int position);
	/**
	*停止服务
	**/
	void stopService();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值