▼MIDP2.0メモ▼
ビープ音を鳴らす


ビープ音を鳴らすプログラム。



プログラム
ToneEx.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

//ビープ音を鳴らす(本体)
public class ToneEx extends MIDlet {
    static ToneCanvas c;

    //コンストラクタ
    public ToneEx() {
        c=new ToneCanvas();
        Display.getDisplay(this).setCurrent(c);
    }

    //アプリの開始
    public void startApp() {
    }

    //アプリの一時停止
    public void pauseApp() {
    }

    //アプリの終了
    public void destroyApp(boolean flag) {
    }
}


ToneCanvas.java
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;

//ビープ音を鳴らす(キャンバス)
public class ToneCanvas extends Canvas {
    static final int NOTE[]={//鍵盤(0:白,1:黒)
        0,1,0,1,0,0,1,0,1,0,1,0,0};
    int    notePos;//鍵盤位置
    Player player; //プレイヤー

    //コンストラクタ
    ToneCanvas() {
        //シーケンス
        byte[] sequence=new byte[]{
            ToneControl.VERSION,1,    //バージョン
            ToneControl.TEMPO,22,     //テンポ
            60,16,62,16,64,16,65,16,64,16,62,16,60,16,//ドレミファミレド
            ToneControl.SILENCE,16,
            64,16,65,16,67,16,69,16,67,16,65,16,64,16,//ミファソラソファミ
            ToneControl.SILENCE,16};

        try {
            //トーンシーケンスを使ったプレイヤーの生成
            player=Manager.createPlayer(
                Manager.TONE_DEVICE_LOCATOR);
            player.realize();
            ToneControl tc=(ToneControl)
                player.getControl("ToneControl");
            tc.setSequence(sequence);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //描画
    public void paint(Graphics g) {
        int x;

        //背景描画
        g.setColor(255,255,255);
        g.fillRect(0,0,getWidth(),getHeight());

        //ピアノ描画
        x=0;
        g.setColor(0,0,0);
        for (int i=0;i<NOTE.length;i++) {
            if (NOTE[i]==0) {
                x+=16;
                g.drawRect(x-8,16,16,100);
            } else {
                g.fillRect(x+3,16,10,70);
            }
        }

        //カーソル描画
        x=0;
        g.setColor(255,100,255);
        for (int i=0;i<NOTE.length;i++) {
            if (NOTE[i]==0) {
                x+=16;
                if (i==notePos) g.fillArc(x-8+8-5,103,10,10,0,360);
            } else {
                if (i==notePos) g.fillArc(x+3,73,10,10,0,360);
            }
        }

        //文字列描画
        g.setColor(0,0,0);
        g.drawString("*キー:オート",8,120,g.LEFT|g.TOP);
    }

    //キーイベント
    protected void keyPressed(int keyCode) {
        switch (getGameAction(keyCode)) {
        //左
        case LEFT:
            if (notePos>0) notePos--;
            repaint();
            break;
        //右
        case RIGHT:
            if (notePos<12) notePos++;
            repaint();
            break;
        //トーン再生
        case FIRE:
            try {
                Manager.playTone(notePos+60,100,100);
            } catch (Exception e) {
            }
            break;
        }
        //トーンシーケンス再生
        if (keyCode==KEY_STAR) {
            try {
                player.setMediaTime(0);
                player.start();
            } catch (Exception e) {
            }
        }
    }
}


S!アプリ(3GC)のJADファイル
ToneEx.jad
MIDlet-1: ToneEx, , ToneEx
MIDlet-Jar-Size: 2229
MIDlet-Jar-URL: ToneEx.jar
MIDlet-Name: ToneEx
MIDlet-Vendor: My Vendor
MIDlet-Version: 1.0
MicroEdition-Profile: MIDP-2.0
MicroEdition-Configuration: CLDC-1.1
MIDxlet-ScreenSize: 240,260



−戻る−