- 2008-01-25 1:30
- android
Google Talkクライアントを作る過程で、Androidアプリケーションの開発方法をご紹介します。
大きく分けると2つ。
- GUIをXMLで定義
- Java言語仕様で実装
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です。
私の場合は以下の場所に配置しています。
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で別スレッドを実行しなければなりません。
そうしないと、
An error has occurred in process com.adamrocker.android.gtalk.
Only the original thread that create a view hierarchy can touch its view.
というエラーが発生します。
スクリーンキャストで実際の動作をご覧下さい。
いつも通り、eclipseプロジェクトをまとめてアップしておきます。ご自由に利用して下さい。
gtalk_droid.zip
どこらへんがイマドキなのか…それが問題だ。
スピーディーな開発ってとこ?
- Newer: Androidのアニメーションいろいろ
- Older: ComicViewer3 -Androidで電子ブックリーダ-
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はホント有り難いです。これのおかげで直感的なレイアウトができます。
まだ、機能不足があって改善の余地は残されてますが。
Trackbacks:1
- 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
- trackback from Google Android覚書 09-06-13 (土) 13:27
-
AndroidのUIデザインツール「DoroidDraw」の…
Google Androidのユーザインターフェース(以降UI)を設計するためのツールとして「DoroidDraw」と言うツールがあります。 当初、このツールはW (more…)
