参考链接:
(1)例如你有一个文件
musicController.aidl,内容如下,其中
Mp3InfoBean为你自己创建的类,这是要导入这个类的方法如下。
musicController.aidl
package com.lau.music.aidl;
import com.lau.music.aidl.srvCallBack;
import com.lau.music.aidl.Mp3InfoBean;
interface musicController {
boolean playNext(in Mp3InfoBean mp3);
boolean playPre(in Mp3InfoBean mp3);
void pause();
boolean start(in Mp3InfoBean mp3);
void play();
double getMp3Length();
double getMp3CurrPos();
void setProgress(int prog);
boolean isPlaying();
void registCallBack(srvCallBack cb);
}
(2)第一步,首先创建一个文件 Mp3InfoBean.aidl,代码如下
Mp3InfoBean.aidl
package com.lau.music.aidl;
parcelable Mp3InfoBean;
同时需要把他们放在同一个包名下面,如下所示。
(3)同时,
Mp3InfoBean.java需要实现
Parcelable接口,这样就需要重写方法,同时需要定义成员变量CREATOR,如下所示,要注意函数
writeToParcel中
writeString
的顺序得跟你读出来的顺序是一致的。
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(path);
}
public static final Parcelable.Creator<Mp3InfoBean> CREATOR = new Parcelable.Creator<Mp3InfoBean>() {
@Override
public Mp3InfoBean createFromParcel(Parcel source) {
return new Mp3InfoBean(source);
}
@Override
public Mp3InfoBean[] newArray(int size) {
return new Mp3InfoBean[size];
}
};
public Mp3InfoBean(Parcel source) {
name = source.readString();
path = source.readString();
}
Mp3InfoBean.java
public class Mp3InfoBean implements Parcelable{
private String name;
private String path;
public static final Parcelable.Creator<Mp3InfoBean> CREATOR = new Parcelable.Creator<Mp3InfoBean>()
{
@Override
public Mp3InfoBean createFromParcel(Parcel source) {
return new Mp3InfoBean(source);
}
@Override
public Mp3InfoBean[] newArray(int size) {
return new Mp3InfoBean[size];
}
};
public Mp3InfoBean() {
}
public Mp3InfoBean(String n, String p) {
this.name = n;
this.path = p;
}
public Mp3InfoBean(Mp3InfoBean in) {
this.name = in.name;
this.path = in.path;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
@Override
public int describeContents() {
return 0;
}
public Mp3InfoBean(Parcel source) {
name = source.readString();
path = source.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(path);
}
}
(4)如果在你自己创建的类里面包含着另一个自己创建的类的List,如下,其中 LrcSentenceBean为自定义类,这个时候,要这样处理。
public class LrcBean implements Parcelable {
private String lrcName = null;
private String lrcPath = null;
private List<LrcSentenceBean> lrcContent = null;
...
}
public LrcBean(Parcel source) {
lrcName = source.readString();
lrcPath = source.readString();
source.readList(lrcContent, null);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(lrcName);
dest.writeString(lrcPath);
dest.writeList(lrcContent);
}