node.jsとwebsocket 頑張る第2段 androidアプリ側編

まず http://code.google.com/p/weberknecht/ からライブラリごっそりもってくる。
んで中にあるdeフォルダごとsrc下に置く。
通信用のクラスを作る。
WebSocketManager.java

package com.example.game;

import java.net.URI;
import java.net.URISyntaxException;

import android.util.Log;
import de.roderick.weberknecht.WebSocket;
import de.roderick.weberknecht.WebSocketConnection;
import de.roderick.weberknecht.WebSocketEventHandler;
import de.roderick.weberknecht.WebSocketException;

public class WebSocketManager {
	
	
	private static WebSocket websocket;
	
	public static void connect(String url, WebSocketEventHandler handler) {
		
		try {
			URI uri   = new URI(url);
			websocket = new WebSocketConnection(uri);

			Log.d("DEBUG", "websocket connect start");
			websocket.setEventHandler(handler);
			websocket.connect();

		} catch (WebSocketException wse) {
			wse.printStackTrace();
		} catch (URISyntaxException use) {
			use.printStackTrace();
		}
	}
	
	public static void send(String message) {
		try {
			Log.d("DEBUG", "websocket connect send");
			websocket.send(message);
		} catch (WebSocketException wse) {
			wse.printStackTrace();
		}
	}
	
	public static void close() {
		try {
			Log.d("DEBUG", "websocket connect close");
			websocket.close();
		} catch (WebSocketException wse) {
			wse.printStackTrace();
		}
	}
}

メインアクティビティで直接通信しようとするとエラーになるのでasynctask継承したクラスつくって非同期にする。
AsyncSocketRequest.java

package com.example.game;

import java.util.HashMap;

import de.roderick.weberknecht.WebSocketEventHandler;
import de.roderick.weberknecht.WebSocketMessage;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.net.Uri.Builder;
import android.os.AsyncTask;
import android.util.Log;


public class AsyncSocketRequest extends AsyncTask<Uri.Builder, Void, String> {
    private Activity mainActivity;

    public AsyncSocketRequest(Activity activity) {
        mainActivity = activity; // 呼び出し元のアクティビティ
    }

	@Override
	protected String doInBackground(Builder... params) {
		WebSocketManager.connect("ws://xxx.xxx.x.xx:xxxx/", new WebSocketEventHandler() { //接続開始時の処理.
			public void onOpen() {
				Log.d("DEBUG", "websocket connect open");
			}

			@Override
			public void onMessage(WebSocketMessage message) { // メッセージ受信時の処理
          Log.d("DEBUG", "message:" + message.getText());
			}

			//接続終了時の処理.
			public void onClose() {
				Log.d("DEBUG", "websocket connect close");
			}
		});
				
		//送信.
		WebSocketManager.send("check");
		return null;
	}
}

で、メインからはこんな感じで使う。

		Uri.Builder builder = new Uri.Builder();
		AsyncSocketRequest task = new AsyncSocketRequest(this);
		task.execute(builder);