Home > android > イマドキのAndroidアプリケーション開発方法

イマドキのAndroidアプリケーション開発方法

Google Talkクライアントを作る過程で、Androidアプリケーションの開発方法をご紹介します。

開発行程

大きく分けると2つ。

  • GUIをXMLで定義
  • Java言語仕様で実装
GUIを定義

AndroidのGUIはXMLファイルで定義するのが一般的です。
これをオンラインで簡単に設計できるサービスがDroidDrawです。
Java Appletで動作します。使い方は一般的なGUIビルダーと同じです。

右のアイコンをドラッグして、左のパースペクティブで直感的にGUIを構築し、右下でXMLを生成します。
かなり直感的でスピーディーです。

動作を実装する
ライブラリを利用する

GUIの設計が終われば、次は各要素の動作を実装していきます。
Google Talkクライアントを作りたいので、根源はXMPPです。
XMPPとはメッセンジャーやプレゼンス状態を通知するXMLベースのプロトコルです。
Android SDKで標準サポートされています。

しかし、今回はXMPP用ライブラリ「smack」を利用します。
Javaの潤沢なライブラリが流用できれば非常に開発が楽になります。

一般的なJavaライブラリをそのままAndroid開発に適用することはできません。
Android SDK用にパッチをあてる必要があります。
Android用にパッチをあてたsmackが公開されていますので、今回はそれを利用させていただきます。
(*このサイトでもXMPPを利用したGoogle Talkアプリが紹介されています)

ライブラリはeclipseプロジェクト内に配置してパスに設定するだけでOKです。

私の場合は以下の場所に配置しています。

${ECLIPSE_HOME}/gtalk_droid/lib/smack.jar
メッセンジャー機能の追加

smackを利用したメッセンジャー機能は非常に簡単に実装できます。
主な部分だけをご紹介します。

メッセージを送信する。

String HOST = "talk.google.com";
int PORT = 5222;
String SERVICE = "gmail.com";
String recipient = "recipient@address.com"; //set recipient address
String text = "Message body";
ConnectionConfiguration connConfig = new ConnectionConfiguration(HOST, PORT, SERVICE);
XMPPConnection connection = new XMPPConnection(connConfig);
Message msg = new Message(recipient, Message.Type.chat);
msg.setBody(text);
connection.sendPacket(msg);

ホストやポートを設定してサーバに接続し、メッセージ送信を実行します。
とても簡単です。

メッセージを受信して表示する。
メッセージ受信用のイベントリスナーを使います。

String msg_body;
connection.addPacketListener(new PacketListener() {
  public void processPacket(Packet packet) {
    Message message = (Message) packet;
    msg_body = message.getBody();
    /* construct view list */
}

受信したメッセージ(msg_body)をLinearLayoutでverticalに表示します。
ここではTextViewを利用した例です。

mHandler.post(
  new Runnable() {
    public void run() {
      TextView tv = new TextView(GtalkDroid.this);
      tv.setText(msg_body);
      mList.addView(tv, new LinearLayout.LayoutParams(WRAP, WRAP));
    }
  }
);

実行スレッドで実行されるオブジェクトのレイアウト構造を変更する場合、Handlerのpostで別スレッドを実行しなければなりません。
そうしないと、

Application Error:
An error has occurred in process com.adamrocker.android.gtalk.
Only the original thread that create a view hierarchy can touch its view.

というエラーが発生します。

実際の動作

スクリーンキャストで実際の動作をご覧下さい。

Download

いつも通り、eclipseプロジェクトをまとめてアップしておきます。ご自由に利用して下さい。
gtalk_droid.zip

おわりに

どこらへんがイマドキなのか…それが問題だ。
スピーディーな開発ってとこ?

追記(2008.02.24)

M5-RC14に対応させました

関連のありそうなエントリ

Comments:2

安藤恐竜 08-01-25 (金) 9:35

へぇ〜x3。GUIビルダーなんてあるんだ。

超低レベルなAndroid Applet開発。
o リソースのXMLは手打ち。というか、APIDemoからコピペ。
o API検索はdocsのhtmlをgrep-find。
o エラーがあれば、Eclipse様の言うとおり。

石器時代ですね、これではwww

adamrocker 08-01-27 (日) 0:27

DroidDrawはホント有り難いです。これのおかげで直感的なレイアウトができます。
まだ、機能不足があって改善の余地は残されてますが。

Comment Form
Remember personal info

*
To prove that you're not a bot, enter this code
Anti-Spam Image

Trackbacks:0

Trackback URL for this entry
http://www.adamrocker.com/blog/180/development_of_google_talk_client_for_android.html/trackback/
Listed below are links to weblogs that reference
イマドキのAndroidアプリケーション開発方法 from throw Life

Home > android > イマドキのAndroidアプリケーション開発方法

Search
Feeds
Meta

Return to page top