どんとこい!PC情報

iアプリを作ってみよう!

 

高レベルAPI型アプリの解説

時刻表アプリの解説

高レベルAPIを使用したiアプリを使用する上で必要な情報を解説します。

import com.nttdocomo.ui.*;
import java.io.*; 

1行目はiアプリを作成する時に必ず必要となるクラスです。
2行目は時刻取得のために必要となります。

// IApplicationクラス
public class Station extends IApplication {

	public void start(){
		StationPanel ap = new StationPanel(this);
		Display.setCurrent(ap);
	}
}

iアプリのアプリケーションとしての機能を持ったクラスでiアプリの起動用クラス。
必ずstart()から始まります。
表示用のクラスのインスタンスを作るときIApplicationのインスタンス「this」をパラメータで渡しています。
「Display.setCurrent(ap)」で作成したPanelのインスタンスを画面に表示しています。

//Panelクラス
class StationPanel extends Panel implements SoftKeyListener {

Panelクラスを継承して高レベルAPI(テキストボックス、リストボックスといったコンポーネント)が使えるようにしています。
ソフトキーを押した時にイベントを発生させるものをリスナーといい、インターフェイスというクラスでインプリメントして使用する必要があります。
インターフェイスを使用する時は、用意されたすべてのメソッドを用意する必要があります。

//上りデータ
	private int jikoku1[] = {
		347,3,4,3,3,
	};
//駅名データ
	private String eki[] = {
		"松本  ","長野  ","高尾  ","辰野  ","岡谷  ","立川  ","中津川 ","甲府  ",
	};

時刻データは発車時刻を分単位で表したもの(時×60+分)、次の駅までの乗車時間が3駅分、
目的駅コードの順に並んでいます。
駅名は1から時刻表に出てきた順に適当に設定しています。(データサイズの関係から到着駅が)

	// コンストラクタメソッド
	StationPanel(IApplication ap) {
		super();
		iApp = ap;

初期化処理(スーパークラスに渡す)を行い、インスタンスを渡しています。

		now = System.currentTimeMillis() / 60000;
		now = (now + 540) % 1440;
		sh = String.valueOf(now / 60);
		if (sh.length() == 1) sh = "0" + sh;
		sm = String.valueOf(now % 60);
		if (sm.length() == 1) sm = "0" + sm;

System.currentTimeMillis()で得られる時刻情報は1970/1/1 0:00:00から1/1000単位でカウントしている時刻情報です。
60000で割って分単位にしたのち、国際標準時なので日本の時差9時間分の修正を加えています。

		try{
			pic1 = new String(b,"SJIS");
			b[1] += 2;
			pic2 = new String(b,"SJIS");
		} catch (UnsupportedEncodingException e){}

iモードの絵文字を使用しています。
サポート外の場合はエラーが発生するので例外処理を行っています。

//リストボックス
		st1 = new ListBox(ListBox.CHOICE);
		lst1.append("松本(中央上り)");
		lst1.append("南松本(中央上り)");
		lst1.append("村井(中央上り)");
		lst1.append("広丘(中央上り)");
		lst1.append("塩尻(中央下り)");
		lst1.append("村井(中央下り)");
		lst1.append("南松本(中央下り)");
		lst1.select(0);
		add(lst1);

リストボックスを作成して選択項目を追加しています。
「select(0)」を使用して、初期位置を先頭にして画面に追加します。

		txt1 = new TextBox("",18,6,TextBox.DISPLAY_ANY);
		add(txt1);
		txt1.setEditable(false);

結果表示用のテキストボックスを作成します。
サイズは横18文字縦6行で、入力モードはデフォルトです。
「setEditable(false)」を使用して、内容の変更ができないようにして画面に追加します。

		// ソフトキー1の表示を変更
		setSoftLabel(Frame.SOFT_KEY_1, "検索");
		// ソフトキー2の表示を変更
		setSoftLabel(Frame.SOFT_KEY_2, "EXIT");
		// SoftKeyListenerを設定
		setSoftKeyListener(this);

ソフトキーの文字を変更します。
ソフトキーのイベント処理を開始させます。

	// キーを離した時のイベント処理
	public void softKeyReleased(int key) {
		switch(key){
			// ソフトキー2の処理
			case Frame.SOFT_KEY_1:

押し下げたソフトキーを離したときに呼ばれてきます。
switch文でキー毎に処理を行っています。

			rst = "";
			cnt = 0;
			sct = lst1.getSelectedIndex();
			if (sct < 4) {
				for (i = 0 ;i < honsuu1;i++) {
					if (jikoku1[i*5+sct] >= now && jikoku1[i*5+sct] > 0) {
					sh = String.valueOf((jikoku1[i*5+sct] % 1440) / 60);
					f (sh.length() == 1) sh = "0" + sh;
					sm = String.valueOf(jikoku1[i*5+sct] % 60);
					if (sm.length() == 1) sm = "0" + sm;
						rst = rst + sh + ":" + sm + " " + eki[jikoku1[i*5+4]-1];
					if (jikoku1[i*5+2] > 0) {
						rst = rst + pic1 + "\n";
					} else {
						rst = rst + pic2 + "\n";
					}
					cnt++;
					if (cnt >= 6) {
						i = honsuu1;
						break;
					}
				}
			}
		}
		txt1.setText(rst);
		break;

リストボックスで選択された項目番号を得ています。
現在時刻より後に発車する電車を検索してフォーマットを 整え絵文字をセットしています。
検索が終わったらテキストボックスのテキストに入れています。

		// ソフトキー2の処理
		case Frame.SOFT_KEY_2:
			iApp.terminate();

アプリの終了処理です。

	// 他のキーを押した時のイベント処理(使わない)
	public void softKeyPressed (int key) {}

前に書いたとおりインターフェイスに用意されたすべての メソッドを用意する必要があるので使わなくても 書いておく必要があります。

コメントの投稿


画像の中に見える文字を入力してください。

トラックバックURL

http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1147

サイト内検索

twitterTwitter

最新ブログ記事

2014年05月07日

BeagleBoardを使ってみる

BaegleBoardでLinuxをブートする

2011年10月12日

WindowsXPの見た目をWindows7風に変更

カレンダー表示をカスタマイズする

2011年09月14日

WindowsXPの見た目をWindows7風に変更

ウィンドウを半透明化する

2011年09月14日

WindowsXPの見た目をWindows7風に変更

Windows7風にカスタマイズ

2011年05月11日

WindowsXPの見た目をWindows7風に変更

使用ソフト概要説明

アクセスランキング

人気のコンテンツをご紹介!

1位

どんとこいPC情報

CD/DVDの仕組み CD編

3位

どんとこいPC情報

CD/DVDの仕組み DVD

4位

どんとこいPC情報

CD/DVDの仕組み DVD±R

ISL 情報戦略研究所

pagetopこのページの先頭へ戻る