iアプリ Audioのループ再生
さてと今日も i アプリの話題。
きのうはAudioのループ再生の挑戦したよ。
package rpg.core;
import com.nttdocomo.io.ConnectionException;
import com.nttdocomo.ui.AudioPresenter;
import com.nttdocomo.ui.MediaListener;
import com.nttdocomo.ui.MediaManager;
import com.nttdocomo.ui.MediaPresenter;
import com.nttdocomo.ui.MediaSound;
import com.nttdocomo.ui.UIException;
public class Sound {
private AudioPresenter as;
public Sound(String url) {
MediaSound ms = MediaManager.getSound(url);
try {
ms.use();
} catch (ConnectionException ce) {
ce.printStackTrace();
} catch (UIException uie) {
uie.printStackTrace();
}
as = AudioPresenter.getAudioPresenter();
as.setSound(ms);
}
public void play(int volume, int tempo, int keyShift, boolean repeat) {
if (repeat) {
MediaListener listener = new MediaListener() {
public void mediaAction(MediaPresenter source, int type, int param) {
if (type == AudioPresenter.AUDIO_COMPLETE) {
((AudioPresenter)source).play();
}
}
};
as.setMediaListener(listener);
}
as.setAttribute(AudioPresenter.SYNC_MODE, AudioPresenter.ATTR_SYNC_ON);
as.setAttribute(AudioPresenter.SET_VOLUME, volume);
as.setAttribute(AudioPresenter.CHANGE_TEMPO, tempo);
as.setAttribute(AudioPresenter.TRANSPOSE_KEY, keyShift);
as.play();
}
public void play() {
as.setAttribute(AudioPresenter.SYNC_MODE, AudioPresenter.ATTR_SYNC_ON);
as.play();
}
public void dispose() {
as.getMediaResource().dispose();
}
}
(なんかブログが勝手に改行いれちゃいます。かといってpreとると、
インデントが消えちゃうし・・
ブログにソース貼り付けるいい方法ってないのか?
に置換して貼るなんてめんどいし・・・)
とりあえず、こんなクラスをつくっとくとサウンド再生が
楽チンかもとおもったわけです。
#iアプリプログラミング素人なので、
# 「こんな余計なクラスは省リソースの敵じゃ!」
#みたいな話が正解なのかもしれないけど・・
ループ再生については、APIをパラ見するとこんな書き方が
できそうだけど&一応ループ再生したのだけれど、
ループのつなぎ目が綺麗に再生できるかどうかがちょっと疑問・・
昨日やったときは、データがそもそもループ用に綺麗にできてなかった
のもあって、ちょっとぎこちないループになってしまった。
データのせいじゃなく、
そもそもこのやり方じゃスムーズにできないという話なのかもしれない・・
今後要調査。
« アプリケーションに誤りがあります | トップページ | i アプリ すこしだけわかってきたっぽ »
「JAVA」カテゴリの記事
- ScratchPad & JarInflater & HTTP通信(2006.06.22)
- i アプリ すこしだけわかってきたっぽ(2006.06.21)
- iアプリ Audioのループ再生(2006.06.20)
- アプリケーションに誤りがあります(2006.06.19)
- iAppli初挑戦!(2006.06.18)
コメント