メモ帳で下記のようなプログラムを記述し、ChainPlay.javaという名前でsrcフォルダの下に保存します。
クラスの名前を変えただけで、前の項目のソースコードと同じです。 |
import com.nttdocomo.ui.*;
public class ChainPlay extends IApplication {
public void start()
{
Display.setCurrent(new MainCanvas());
}
}
|
MainCanvas.javaには、何ファイル目を再生中かのカウンタと再生ファイルを切り替える処理を書き足します。
下記のように記述し、MainCanvas.javaという名前でsrcフォルダの下に保存します。 |
import com.nttdocomo.ui.*;
class MainCanvas extends Canvas implements MediaListener
{
AudioPresenter ap;
int play_index;
MediaSound sound[] = new MediaSound[3];
public MainCanvas()
{
play_index=0;
setSoftLabel(Frame.SOFT_KEY_1,"再生");
setSoftLabel(Frame.SOFT_KEY_2,"停止");
ap = AudioPresenter.getAudioPresenter();
ap.setMediaListener(this);
try{
sound[0] = MediaManager.getSound("resource:///sound/test1.mld");
sound[1] =
MediaManager.getSound("resource:///sound/test2.mld");
sound[2] =
MediaManager.getSound("resource:///sound/test3.mld");
sound[0].use();
sound[1].use();
sound[2].use();
}catch(Exception s){
Dialog dialog
= new Dialog(Dialog.DIALOG_INFO, "エラー");
dialog.setText("Soundでエラーが発生。");
dialog.show();
IApplication.getCurrentApp().terminate();
}
}
public void paint( Graphics g ) {}
public void processEvent( int type, int param )
{
if( type == Display.KEY_PRESSED_EVENT
)
{
if( param ==
Display.KEY_SOFT1 )
{
ap.setSound(sound[play_index]);
ap.play();
}
else if(
param == Display.KEY_SOFT2 )
{
ap.stop();
}
}
}
public void mediaAction( MediaPresenter source, int type, int
param )
{
if( type ==
AudioPresenter.AUDIO_COMPLETE )
{
play_index++;
if(play_index==3)
{
play_index=0;
}
ap.setSound(sound[play_index]);
ap.play();
}
}
} |
赤い部分が、前の項目から書き足したり修正したりした部分です。
ビルドボタンを押してください。
エラーが表示されたら、何かが間違っています。 |
[起動]ボタンをクリックして、エミュレータ画面を呼び出します。再生をおし、曲が終了すると、
次の曲を再生するはずです。前の曲が終わってから、少し間があいてしまいますが、正常な動作です。 |