Mobile:NEWS 2002年10月11日 11:38 PM 更新

ビジネスiアプリ入門(9)
待ち受けビジネスIMの改良(1/3)

完成した待ち受けビジネスIMを使いやすいように改良を行う

 今回は完成したビジネスIMを、より使いやすいように改良を加えます。常に待ち受けとして起動しているアプリに、素早く操作できるような工夫をすることで、ちょっとした空き時間を有効に使うことができるようになります。

メッセージを自由に記述できるようにする

 インスタントメッセンジャーとしては、やはりメッセージは自由に記述もできなくては困ります。しかし、定型メッセージは素早い返信に有効なので、どちらも使用できるように改良します。

 メッセージの作成クラス(SendMessagePanel)を以下のように編集します。

class SendMessagePanel extends Panel implements SoftKeyListener {
 Panel back;
 
 ListBox to;
 ListBox mes;
 TextBox mestext; // 入力コンポーネントの追加
  :
 SendMessagePanel(Panel back) {
  :
  add(new Label("送信メッセージ"));
  mes = new ListBox(ListBox.CHOICE);
  mes.setItems(MESSAGE_LIST);
  mes.select(0);
  add(mes);
  
  mestext = new TextBox("", 30, 1, TextBox.DISPLAY_ANY);
  add(mestext);

  :
  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 = mestext.getText();
   if (message.length() == 0)
    mes.getItem(mes.getSelectedIndex());

   String toname = to.getItem(to.getSelectedIndex());
   network.sendMessage(data.myname, toname, message);
  }
  Display.setCurrent(back);
 }
  :
}


メッセージ作成実行画面

状態を記述できるようにする

 自分の状態として送信できる文字列はプログラムに記述され固定でしたが、これも自由に編集できるように変更します。状態は5つ設定可能とし、それぞれ自由に編集できるようにします。

 まず編集した状態を記録するために、writeData/readDataを参考に状態を記録するメソッドを作成します。

final int SP_STATE_POS = 1024;
void writeState(String[] state) {
 try {
  OutputStream os = Connector.openOutputStream("scratchpad:///0;pos=" + SP_STATE_POS);
  os.write(state.length);
  for (int i = 0; i < state.length; i++) {
   writeString(os, state[i]);
  }
  os.close();
 } catch (Exception e) {
  e.printStackTrace();
 }
}
String[] readState() {
 InputStream is = null;
 String[] state = null;
 try {
  is = Connector.openInputStream("scratchpad:///0;pos=" + SP_STATE_POS);
  
  int n = is.read();
  if (n > 0) {
   state = new String[n];
   for (int i = 0; i < n; i++) {
    state[i] = readString(is);
   }
  }
  is.close();
 } catch (Exception e) {
  e.printStackTrace();
  try {
   if (is != null)
    is.close();
  } catch (Exception e2) {
  }
 }
 return state; // エラー時にはnullを返す
}

[福野泰介, ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.

前のページ | 1/3 | 次のページ



モバイルショップ

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

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