Mobile:NEWS 2002年9月13日 10:13 PM 更新

ビジネスiアプリ入門(5)
待ち受けビジネスIMのクライアント(iアプリ)の作成(4/4)


前のページ

メッセージ送信画面

 メッセージ送信画面(SendMessagePanel)は、状態変更画面(ChangeStatePanel)とほぼ同じ形になります。

class SendMessagePanel extends Panel implements SoftKeyListener {
 Panel back;
 
 ListBox to;
 ListBox mes;
 
 String[] MESSAGE_LIST = { "電話求む", "メール読め", "助けて", "いいよ", "やだね" };
 SendMessagePanel(Panel back) {
  this.back = back;

  setTitle("メッセージ送信");
  
  add(new Label("送り先"));
  to = new ListBox(ListBox.CHOICE);
  String[] names = data.getMemberNames();
  if (names.length == 0) // メンバーが0なら何もせず終わる
   return;
  to.setItems(names);
  to.select(0);
  add(to);

  add(new Label("送信メッセージ"));
  mes = new ListBox(ListBox.CHOICE);
  mes.setItems(MESSAGE_LIST);
  mes.select(0);
  add(mes);

  setSoftLabel(Frame.SOFT_KEY_1, "OK");
  setSoftLabel(Frame.SOFT_KEY_2, "中止");
  setSoftKeyListener(this);
  Display.setCurrent(this);
 }
 
 public void softKeyPressed(int key) {
  if (key == Frame.SOFT_KEY_1) {
   String message = mes.getItem(mes.getSelectedIndex());
   String toname = to.getItem(to.getSelectedIndex());
   network.sendMessage(data.myname, toname, message);
  }
  Display.setCurrent(back);
 }
 public void softKeyReleased(int key) {
 }
}


メッセージ表示画面

メッセージ受信画面

 メッセージ受信画面(ReceiveMessagePanel)は、基本的にほかのパネルと同様にソフトキーによって遷移するのですが、引数のメッセージの配列の先頭を表示し、遷移時に配列を1つ短くし、再度メッセージ受信画面(ReceiveMessagePanel)に遷移します。このメッセージの配列がなくなった時点で元の画面に戻るようにします。

class ReceiveMessagePanel extends Panel implements SoftKeyListener {
 Panel back;
 
 Message[] message;
 
 ReceiveMessagePanel(Panel back, Message[] message) {
  this.back = back;
  this.message = message;
  if (message.length == 0)
   return;

  setTitle("メッセージ受信");
  
  add(new Label("送り主"));
  add(new TextBox(message[0].name, 20, 1, TextBox.DISPLAY_ANY));

  add(new Label("受信メッセージ"));
  add(new TextBox(message[0].message, 20, 1, TextBox.DISPLAY_ANY));
  
  setSoftLabel(Frame.SOFT_KEY_1, "OK");
  setSoftKeyListener(this);
  Display.setCurrent(this);
 }

 public void softKeyPressed(int key) {
  if (key == Frame.SOFT_KEY_1) {
   if (message.length > 1) { // 表示すべきメッセージがあれば
    Message[] m = new Message[message.length - 1];
    System.arraycopy(message, 1, m, 0, m.length);
    Display.setCurrent(new ReceiveMessagePanel(back, m));
   } else { // 表示すべきメッセージがなければ戻る
    Display.setCurrent(back);
   }
  }
 }
 public void softKeyReleased(int key) {
 }
}


メッセージ受信画面

iアプリの実行

 最後にiアプリの開始メソッドであるstartメソッドに初回登録画面を呼び出すように記述し、完成です。

 public void start() {
  new InitPanel();
 }

ソース全文はこちら

 今回はビジネスIMのiアプリ側を作成しました。次回は、サーバ側であるServletの実装と、今回ダミー実装としたiアプリの通信部を作成します。

著者紹介
福野泰介:UNI-LABO社長。イントラネットと携帯電話を、プロキシ認証と圧縮通信によって強固なセキュリティと通信費の削減効果を提供する「パケットセイバー」を開発。「半パケ」という名称でISP向けにも技術を提供、ニフティにも採用されている。



関連記事
▼ ビジネスiアプリ開発講座第1回
モバイルアプリケーションの新天地を切り開くiアプリ。本連載では、504iシリーズからの新仕様「待ち受けiアプリ」に触れながら、その実力を探り、ビジネスiアプリとしての有用性を検証する

▼ 第2回 待ち受けiアプリの実装テスト
ビジネスシーンで携帯アプリを利用するメリットは、手軽かつ高速に情報にアクセスできることだ。この特徴を最大限に生かせるのが、504iシリーズの新機能、待ち受けiアプリである

▼ 第3回 待ち受けビジネスIMを作る
常駐アプリケーションの例として、ビジネスIM(インスタントメッセンジャー)を待ち受けiアプリとして作成することを前提に仕様決定を行う

▼ 第4回 待ち受けビジネスIMのバックエンド設計
ビジネスiアプリの開発に必要になるサーバ側の環境を、Servletエンジン「Tomcat」とデータベース「MySQL」を用いて構築する

▼ ドコモ四国、iアプリコンテストを開催
ドコモ四国が504i向けiアプリのコンテストを開催する。全国からビジネスアプリやエンターテインメントアプリを募集し、iアプリの普及を目指す


関連リンク
▼ NTTドコモ四国
▼ アプリ★ゲット
▼ NTTドコモ四国 ニュースリリース

[福野泰介, ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.

前のページ | 4/4 | 最初のページ



モバイルショップ

最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!

最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!