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

public class ChainPlay extends MIDlet implements CommandListener, MediaPlayerListener {
    private Form tmpForm = new Form ("ChainPlay");
    private Command stopCmd = new Command("Stop",Command.SCREEN,1);
    private Command playCmd = new Command("Play",Command.SCREEN,2);
 
    SmafPlayer player=new SmafPlayer();
    SmafData sound[]=new SmafData[3];
    int play_index;

    public ChainPlay() {

       play_index=0;
       tmpForm.addCommand(stopCmd);
       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");
 
        }catch(Exception e){
                 System.out.println(e.toString());
         }
         player.setData(sound[play_index]);
         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") {
            player.play();
            player.addMediaPlayerListener(this);
        }
        else {
            player.removeMediaPlayerListener(this);
            player.stop();
        }
    }
    public void playerRepeated(MediaPlayer play) {
    }
    public void playerStateChanged(MediaPlayer play) {
        if (play.getState() == MediaPlayer.READY) { //停止中
            player.removeMediaPlayerListener(this);
            player.setData(sound[play_index]);
            play_index++;
            if(play_index>=3)
            {
                 play_index =0;
            }
            player.play();
            player.addMediaPlayerListener(this);

        }
        if (play.getState() == MediaPlayer.ERROR) {  //エラー発生により停止中
        }
    }
}
赤字の部分が、前の項目のソースコードから変化した部分です。
ビルドボタンを押してください。
エラーが表示されたら、何かが間違っています。
通常のシミュレータは使用できませんので[Run]ボタンは押さないでください。
メニューの[Project]->[Package]->[Create Package]を実行します。
エミュレータでの動作確認
S! Appli MEXA Emulator を起動して、エミュレータ上の電源ボタンをクリックします。決定ボタンをクリックします。「Install」が選ればれているはずなので、決定ボタンをクリックします。
ChainPlayフォルダのbinフォルダにあるjad ファイルを選択しインストールします。セキュリティのメッセージが表示されるのでOKをクリックします。「Yes」が選ばれているので、決定ボタンをクリックします。「OK」が選ばれているので、決定ボタンをクリックします。
上下キーで「Launch」 を選択し、決定ボタンを押します。 インストールしたプログラムがあるので上下キーで選択し、決定ボタンを押します。
以上の操作で、エミュレータ上で動き、Playボタンで音楽が演奏されるはずです。ファイルの最後まで再生すると、次のファイルを再生します。
ファイルの再生中に、音が止まってしまうことがあります。デバッグ文などを入れていると、なりやすいです。
実機での動作確認
アプリゲットにアップロードして、実機で、動かしてみます。
ファイルのつなぎ目で、すこし間があると思いますが、正常な動作です。