ホームに戻る
 待ち受け画面への対応(504i以降)


/*
*   待ち受け画面への対応(504i以降)
*/

import com.nttdocomo.ui.*;

public class matiuke extends MApplication
{
    nmCanvas nmc;

    public void start() {
        nmc = new nmCanvas();
        Display.setCurrent(nmc);

        try{
            /* CLOCK_TICK_EVENTを有効に */
            setClockTick(true);
        }
        catch(Exception e){}
    }

    public void processSystemEvent(int nType, int nParm)
    {
        try{
            /* 活性化状態になったとき */
            if(nType == MODE_CHANGED_EVENT){
                /* CLOCK_TICK_EVENTを有効に */
                setClockTick(true);
            }
            /* 毎分0秒に呼び出されるイベント */
            else if(nType == CLOCK_TICK_EVENT){

            }
            /* setWakeupTimerで設定した時間後に発生するイベント */
            else if(nType == WAKEUP_TIMER_EVENT){
                /* CLOCK_TICK_EVENTを有効に */
                setClockTick(true);
            }
            /* 折りたたみ時に発生するイベント */
            else if(nType == FOLD_CHANGED_EVENT){
                /* 閉じている */
                if(nParm == 0){

                }
                /* 開いている */
                else if(nParm == 1){

                }
            }
        }
        catch(Exception e){}
    }

    public class nmCanvas extends Canvas
    {
        String s1 = "abc";

        int font_width;
        int font_height;

        int screen_width;
        int screen_height;

        int position_x;
        int position_y;

        public nmCanvas()
        {
            /* ソフトキーの左側を「変更」にする */
            setSoftLabel(Frame.SOFT_KEY_1, "休眠");
            /* ソフトキーの右側を「終了」にする */
            setSoftLabel(Frame.SOFT_KEY_2, "終了");

            /* スクリーンの幅と高さを取得 */
            screen_width = getWidth();
            screen_height = getHeight();

            /* デフォルトのフォントを取得 */
            Font font = Font.getDefaultFont();

            /* 文字列のフォント情報を取得 */
            font_width = font.stringWidth(s1);
            font_height = font.getHeight();

            /* 文字列を中央に表示するための位置を算出 */
            position_x = (screen_width - font_width) / 2;
            position_y = (screen_height + font_height) / 2;
        }

        public void paint(Graphics g)
        {
            /* 描画を隠す */
            g.lock();
            /* 画面のクリア */
            g.clearRect(0, 0, screen_width, screen_height);
            /* 文字列の描画 */
            g.drawString(s1, position_x, position_y);
            /* 描画されたものを表示 */
            g.unlock(true);
        }

        public void processEvent(int nType, int nParm)
        {
            if(nType == Display.KEY_PRESSED_EVENT) {
                switch(nParm) {
                    case Display.KEY_SOFT1:
                        try{
                            /* CLOCK_TICK_EVENTを無効に */
                            setClockTick(false);
                            /* 180000ms後にWAKWUP_TIMER_EVENTを呼び出す */
                            setWakeupTimer(180000);
                            /* 非活性化状態へ(キーイベントを受け付けない) */
                            deactivate();
                            /* 休眠状態へ(全てのスレッドを止め省電力する) */
                            sleep();
                        }
                        catch(Exception e){}
                        break;
                    case Display.KEY_SOFT2:
			/* 終了 */
                        IApplication.getCurrentApp().terminate();
                        break;
                }
            }
            this.repaint();
        }
    }
}


待ち受け画面では3つの状態があるようです
活性化状態、非活性化状態、休眠状態の3つ
初期状態としてはiアプリとしての起動時には活性化状態
待ち受け起動時は非活性化状態のようです

上の例は活性化状態からソフトキー1で休眠を選ぶと
CLOCK_TICK_EVENTを止めて休眠させます
3分たつと非活性化状態に戻りCLOCK_TICK_EVENTを復活させます

JAMファイルのMyConciergeをYesにする必要あり

inserted by FC2 system