研究テーマ->音楽ソフトの開発->携帯用アプリ開発->DoCoMo iアプリ->アプリの終了ボタンを設置し終了処理を加える  
  携帯電話用アプリケーションの開発について紹介します。  
プロジェクトの作成
iαppli Development Kit for DoJa-5.0を起動します。
[プロジェクト新規作成]ボタンをクリックして、新しいプロジェクトを作成します。「QuitApp」という名前にします。
処理の流れ
前の項目までで作成したアプリに終了ボタンをつけ、終了の処理を加えます。
音楽ファイルの用意
前の項目と同じです。resフォルダの下にsoundという名前のフォルダを作成します。test1.mld〜test6.mldという名前の6つの音楽ファイルを、soundフォルダの下におきます。
ソースコードの記述
メモ帳で下記のようなプログラムを記述し、QuitApp.javaという名前でsrcフォルダの下に保存します。 クラスの名前を変えただけで、前の項目のソースコードと同じです。
import com.nttdocomo.ui.*;

public class QuitApp extends IApplication {
    public void start()
    {
        Display.setCurrent(new MainCanvas());
    }
}
 
MainCanvas.javaには、乱数を発生させて再生ファイルを切り替える処理を書き足します。 また、ファイルの数が増えてきたので、forによるループ処理を取り入れています。
下記のように記述し、MainCanvas.javaという名前でsrcフォルダの下に保存します。
import com.nttdocomo.ui.*;
import java.util.Random;

class MainCanvas extends Canvas implements MediaListener
{
    AudioPresenter ap;
    int play_index;
    MediaSound sound[] = new MediaSound[6];
    Random rnd = new Random();
    boolean playing = false;

    public MainCanvas()
    {
        setSoftLabel(Frame.SOFT_KEY_1,"再生");
        setSoftLabel(Frame.SOFT_KEY_2,"終了");

        ap = AudioPresenter.getAudioPresenter();
        ap.setMediaListener(this);
        try{
            int i;
            for(i=0;i<6;i++)
            {
                sound[i] = MediaManager.getSound("resource:///sound/test" + (i+1) + ".mld");
                sound[i].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 )
            {
                if(playing ==false)
                {

                    playing = true;
                    play_index = rnd.nextInt(6);
                    ap.setSound(sound[play_index]);
                    ap.play();
                    setSoftLabel(Frame.SOFT_KEY_1,"停止");
                 }

                 else
                 {
                    playing = false;
                    ap.stop();
                    setSoftLabel(Frame.SOFT_KEY_1,"再生");
                 }

            }
            else if( param == Display.KEY_SOFT2 )
            {
                ap.stop();
                int i;
                for(i=0;i<6;i++)
                {
                     sound[i].unuse();
                     sound[i].dispose();
                }
 
                IApplication.getCurrentApp().terminate();

            }
        }
    }
    public void mediaAction( MediaPresenter source, int type, int param )
    {           
        if( type == AudioPresenter.AUDIO_COMPLETE )
        {
             play_index = rnd.nextInt(6);
             ap.setSound(sound[play_index]);
             ap.play();
        }
    }
}

 

赤い部分が、前の項目から書き足したり修正したりした部分です。
ビルドボタンを押してください。
エラーが表示されたら、何かが間違っています。
[起動]ボタンをクリックして、エミュレータ画面を呼び出します。再生をおし、曲が終了すると、 次の曲を再生するはずです。前の曲が終わってから、少し間があいてしまいますが、正常な動作です。
実機での動作確認
Download.htmlと、Text.jamをメモ帳で開き、URLの部分を確認します。おそらく変更しなくて大丈夫なはずです。
サーバーにアップし、携帯にメールでDownload.htmlのURLを送ります。携帯からダウンロードして、動作の確認を行います。