ここの初心者。SoundPoolオブジェクトを含むクラスがあります。クラスにParcelableを実装して、そのインスタンスをアクティビティ間で受け渡せるようにしたい(サウンドを1回だけロードするようにする)。
しかし、SoundPoolオブジェクトをパーセルに書き込む際に問題が発生しています。それが可能かどうか教えてもらえますか?(たぶんSoundPoolはParcelableを実装していませんか?)
public class SoundSamples { // implements Parcelable{
SoundPool sound;
AudioManager am;
int soundId[] = new int[4];
Context ctxt;
public SoundSamples(Context context) {
ctxt = context;
}
public void makeSound() {
Context context = ctxt;
sound = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundId[0] = sound.load(context, R.raw.c4, 0);
soundId[1] = sound.load(context, R.raw.cs4, 0);
soundId[2] = sound.load(context, R.raw.d4, 0);
soundId[3] = sound.load(context, R.raw.ds4, 0);
}
public SoundPool getSound() {
return sound;
}
public int[] getSoundId() {
return soundId;
}
/*
private SoundSamples(Parcel in) {
// STUCK HERE
sound = in.readParcelable(null);
soundId = in.readArray(Integer);
}
public static final Parcelable.Creator<SoundSamples> CREATOR
= new Parcelable.Creator<SoundSamples>() {
public SoundSamples createFromParcel(Parcel in) {
return new SoundSamples(in);
}
public SoundSamples[] newArray(int size) {
return new SoundSamples[size];
}
};
public void writeToParcel(Parcel out, int flags) {
// AND STUCK HERE
out.writeIntArray(soundId);
out.writeParcelable((Parcelable)sound,0);
}
*/
}
どんな助けでも大歓迎です。これが物事を行う正しい方法であるかどうかを指摘してください。ありがとう。