Mobile:NEWS |
2002年10月11日 11:43 PM 更新
|
ビジネスiアプリ入門(9)
待ち受けビジネスIMの改良(3/3)
前のページ
通信間隔を設定する
前回、実機にてビジネスIMとして使用した際、一定時間毎の通信が通信費と電力消費の点で問題になりました。しかし通信間隔を長くすると、レスポンスが遅くなってしまうため、通信間隔を選択できるようにします。
まず固定になっていた通信時間を変数にし、INTERVALをintervalに書き換えます。
int interval; // サーバとの通信間隔
static final int DEFAULT_INTERVAL = 10; // デフォルト:10秒おきにサーバと通信
この通信間隔もスクラッチパッドに保存しておく必要がありますから、書き込みと読み込みメソッドを用意します。
final int SP_INTERVAL_POS = 2048;
void writeInterval(int sec) {
try {
OutputStream os = Connector.openOutputStream("scratchpad:///0;pos=" + SP_INTERVAL_POS);
os.write(sec >> 8);
os.write(sec & 0xff);
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
int readInterval() {
InputStream is = null;
int sec = DEFAULT_INTERVAL;
try {
is = Connector.openInputStream("scratchpad:///0;pos=" + SP_INTERVAL_POS);
int n = is.read() & 0xff;
int m = is.read() & 0xff;
if (n > 0 || m > 0) {
sec = (n << 8) | m;
}
is.close();
} catch (Exception e) {
e.printStackTrace();
try {
if (is != null)
is.close();
} catch (Exception e2) {
}
}
return sec;
}
続いて通信間隔を選択するListBoxを状態表示クラス(StateVietPanel)に追加します。ComponentListenerによって通信間隔が変更されたらwirteIntervalによってスクラッチパッドに書き込むようにします。
class StateViewPanel extends Panel implements SoftKeyListener, Runnable, ComponentListener {
ListBox memberview;
ListBox intervalcaption;
String[] INTERVAL_CAPTION = { "10秒", "1分", "10分", "1時間", "10時間" };
int[] INTERVAL_SECOND = { 10, 1 * 60, 10 * 60, 1 * 60 * 60, 10 * 60 * 60 };
StateViewPanel() {
setKeyListener(A.this);
setTitle("ビジネスIM");
memberview = new ListBox(ListBox.SINGLE_SELECT, 9);
memberview.setItems(data.getMemberNamesAndState());
add(memberview);
intervalcaption = new ListBox(ListBox.SINGLE_SELECT, 1);
intervalcaption.setItems(INTERVAL_CAPTION);
add(intervalcaption);
// ソフトキーのラベルを設定し、ソフトキー受け取りを有効にする
setSoftLabel(Frame.SOFT_KEY_1, "状態"); // 状態変更
setSoftLabel(Frame.SOFT_KEY_2, "送信"); // メッセージ送信
setSoftKeyListener(this);
setComponentListener(this);
Display.setCurrent(this);
// 一定時間置きに更新するスレッドを起動する
new Thread(this).start();
}
:
public void componentAction(Component source, int type, int param) {
if (source == intervalcaption && type == SELECTION_CHANGED) {
interval = INTERVAL_SECOND[intervalcaption.getSelectedIndex()];
writeInterval(interval);
}
}
:
}
最後に通信間隔の初期値をiアプリ起動時に読み出すようにします。
public void start() {
interval = readInterval();
new InitPanel();
}

通信間隔設定実行画面
その他の拡張
以上で本連載で作成するビジネスIMはひとまず完成とします。今回はiアプリを中心に改良を進めましたが、サーバ側のインタフェースを拡張することで、PCを絡めたアプリケーションとすることも可能です。以下に改良アイデアを列挙しますので、ぜひ最良のビジネスIMとなるよう改良してみてください。
◆待ち受けビジネスIMソースコード改良版
iアプリ側改良案
- 定型メッセージを編集できるようにする
- 複数メンバーにメッセージを送れるようにする
- 状態の変更やメッセージ受信時に音やバイブで知らせる
- メンバーに電話で連絡できるようにする
- メッセージから電話がかけられるようにする
サーバ側改良案
- ウェブやPCからビジネスIMを使用可能にする
- メンバーのグループ管理をする
- 出退勤を管理する
- 特定のメッセージに自動応答する
待ち受けビジネスiアプリは、ビジネスにおけるちょっとした時間を有効に活用できることが最大のポイントです。次回は、商品化されているいくつかのビジネスiアプリを紹介し、今後の発展について考えてみます。
著者紹介 福野泰介:UNI-LABO社長。イントラネットと携帯電話を、プロキシ認証と圧縮通信によって強固なセキュリティと通信費の削減効果を提供する「パケットセイバー」を開発。「半パケ」という名称でISP向けにも技術を提供、ニフティにも採用されている。 |
関連記事
ビジネスiアプリ開発講座第1回
モバイルアプリケーションの新天地を切り開くiアプリ。本連載では、504iシリーズからの新仕様「待ち受けiアプリ」に触れながら、その実力を探り、ビジネスiアプリとしての有用性を検証する
第2回 待ち受けiアプリの実装テスト
ビジネスシーンで携帯アプリを利用するメリットは、手軽かつ高速に情報にアクセスできることだ。この特徴を最大限に生かせるのが、504iシリーズの新機能、待ち受けiアプリである
第3回 待ち受けビジネスIMを作る
常駐アプリケーションの例として、ビジネスIM(インスタントメッセンジャー)を待ち受けiアプリとして作成することを前提に仕様決定を行う
第4回 待ち受けビジネスIMのバックエンド設計
ビジネスiアプリの開発に必要になるサーバ側の環境を、Servletエンジン「Tomcat」とデータベース「MySQL」を用いて構築する
第5回 待ち受けビジネスIMのクライアント(iアプリ)の作成
今回は、クライアント/サーバ型のシステムである待ち受けビジネスIMの、クライアント部となるiアプリを作成する
第6回 待ち受けビジネスIMのデータベース周りの作成
クライアント/サーバ型のシステムである待ち受けビジネスIMの、サーバ側データベース周りを作成する
第7回 待ち受けビジネスIMのサーバ(Servlet)と通信部の作成
待ち受けビジネスIMの通信プロトコルを設計し、Servletとiアプリの通信部を作成する
第8回 待ち受けビジネスIMの実機テスト&評価
待ち受けビジネスIMを待ち受けiアプリとして完成させ、実機テストと評価を行う
ドコモ四国、iアプリコンテストを開催
ドコモ四国が504i向けiアプリのコンテストを開催する。全国からビジネスアプリやエンターテインメントアプリを募集し、iアプリの普及を目指す
関連リンク
NTTドコモ四国
アプリ★ゲット
NTTドコモ四国 ニュースリリース
[福野泰介, ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.
前のページ
| 3/3 | 最初のページ