研究テーマ->音楽ソフトの開発->携帯用アプリ開発->Softbank S!アプリ->アプリの終了ボタンを設置し終了処理を加える  
  携帯電話用アプリケーションの開発について紹介します。  
プロジェクトの作成
[New Project]ボタンをクリックして、新しいプロジェクトを作成します。「QuitApp」という名前にします。ClassNameも「QuitApp」にします。
新規作成でプロジェクト名とクラス名を入力した後に表示されるウィンドウで以下の事を設定してください。
API SelectionのページでCustomを選択し、MIDP 2.0 CLDC 1.1 を選択してください。
User Definedのページで、プロパティー名:MIDxlet-API、プロパティー値:JSCL-1.2.2を追加してください。
処理の流れ
前の項目までで作成したアプリに終了ボタンをつけ、終了の処理を加えます。
音楽ファイルの用意
前の項目と同じです。 resフォルダの下にsoundという名前のフォルダを作成します。拡張子がMMFの音楽ファイルを6つ用意します。test1.mmf〜test6という名前にしてそれを、soundフォルダの下におきます。
ソースコードの記述
QuitAppというクラスをソースコードとして記述する必要があります。プロジェクト用の「QuitApp」フォルダというのが何処かのフォルダ(おそらく\WTK25\apps)の下に出来ているはずですから、その下のsrcフォルダの下にソースコードを置かなければなりません。メモ帳で下記のようなプログラムを記述し、QuitApp.javaという名前でsrcフォルダの下に保存します。
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import com.jblend.media.smaf.*;
import com.jblend.media.*;
import java.io.*;
import java.util.Random;

public class QuitApp extends MIDlet implements CommandListener, MediaPlayerListener {
    private Form tmpForm = new Form ("QuitApp");
    private Command stopCmd = new Command("Stop",Command.SCREEN,2);
    private Command playCmd = new Command("Play",Command.SCREEN,2);
    private Command quitCmd = new Command("Quit",Command.SCREEN,1);

    SmafPlayer player=new SmafPlayer();
    SmafData sound[]=new SmafData[6];
    int play_index;

    Random rnd = new Random();
    public QuitApp() {
       tmpForm.addCommand(quitCmd);
       tmpForm.addCommand(playCmd);
       tmpForm.setCommandListener(this);
    }
    public void startApp() {
         try {    
            sound[0] =new SmafData("sound/test1.mmf");
            sound[1] =new SmafData("sound/test2.mmf");
            sound[2] =new SmafData("sound/test3.mmf");
            sound[3] =new SmafData("sound/test4.mmf");
            sound[4] =new SmafData("sound/test5.mmf");
            sound[5] =new SmafData("sound/test6.mmf");
          }catch(Exception e){
                 System.out.println(e.toString());
         }
         play_index = rnd.nextInt(6);
         player.setData(sound[play_index]);
         Display.getDisplay(this).setCurrent(tmpForm);
    }
    public void pauseApp() {
    }
    public void destroyApp(boolean flag){
    }
    public void commandAction(Command c, Displayable d){
        if (c.getLabel() == "Play") {
            tmpForm.removeCommand(playCmd);
            tmpForm.addCommand(stopCmd);

            player.play();
            player.addMediaPlayerListener(this);
        }
        else if (c.getLabel() == "Stop") {
            tmpForm.removeCommand(stopCmd);
            tmpForm.addCommand(playCmd);
            player.removeMediaPlayerListener(this);
            player.stop();
        }

        else {
                 destroyApp(false);
                 notifyDestroyed(
);
        }
    }
    public void playerRepeated(MediaPlayer play) {
    }
    public void playerStateChanged(MediaPlayer play) {
        if (play.getState() == MediaPlayer.READY) { //停止中
            player.removeMediaPlayerListener(this);
            play_index = rnd.nextInt(6);
            player.setData(sound[play_index]);
            player.play();
            player.addMediaPlayerListener(this);
        }
        if (play.getState() == MediaPlayer.ERROR) {  //エラー発生により停止中
        }

    }
}
赤字の部分が、前の項目のソースコードから変化した部分です。
ビルドボタンを押してください。
エラーが表示されたら、何かが間違っています。
通常のシミュレータは使用できませんので[Run]ボタンは押さないでください。
メニューの[Project]->[Package]->[Create Package]を実行します。
エミュレータでの動作確認
S! Appli MEXA Emulator を起動して、エミュレータ上の電源ボタンをクリックします。決定ボタンをクリックします。「Install」が選ればれているはずなので、決定ボタンをクリックします。
QuitAppフォルダのbinフォルダにあるjad ファイルを選択しインストールします。セキュリティのメッセージが表示されるのでOKをクリックします。「Yes」が選ばれているので、決定ボタンをクリックします。「OK」が選ばれているので、決定ボタンをクリックします。
上下キーで「Launch」 を選択し、決定ボタンを押します。 インストールしたプログラムがあるので上下キーで選択し、決定ボタンを押します。
以上の操作で、エミュレータ上で動き、Playボタンで演奏が開始され、ボタンの表示がStopになります。Quitボタンを押すと、アプリケーションが終了します。