Android/eclairのWebSocketsは未完
未完ねた2本目。
というか、年末からの色々2本目。
beagle-board有るから動かして試せば良いやぁって思ってたけど、
動かない動かない(WebSockets以外が)ってことでソースを追う。
現状、Chromeでしか動かないんだけどその実装は以下っぽい。
http://src.chromium.org/viewvc/chrome/trunk/src/net/websockets/
ってWebKitじゃないのか・・・と思いつつもwebkitのwebcoreのsvnにコードはある
http://trac.webkit.org/browser/trunk/WebCore/websockets
一方、eclairのwebkitはというとこれ。
http://android.git.kernel.org/?p=platform/external/webkit.git;a=tree;f=WebCore/websockets
79 bool WebSocket::send(const String&, ExceptionCode& ec)
80 {
81 if (m_state != OPEN) {
82 ec = INVALID_STATE_ERR;
83 return false;
84 }
85 // FIXME: send message on WebSocketChannel.
86 return false;
87 }orz
使える分けね~。r47029辺りでsyncしてそれっきりぽい。
v8入ってコードもあるから動くかと思った…。コードの中見なかったのが敗因。
強引にWebKit入れ替えようかとも思ったものの、Nexsus OneちゅうかAndroid 2.1が公開されてサポート状況見てからにしよう。
Nexsus OneもブラウザのUserAgent見てるとAppleWebKit/530.17ベース(Safari 4.0ぐらい?)で変わってないぽくって期待は出来ないのだが…
beagleboard-eclairでマウス(未完
年末ぐらいからの色々。その1。
WebSocket が Android 2.0 (eclair) で使えたら良いなぁと思いつつ、
BeagleBoardでeclair動かしてみてたものの。
マウスが標準のAndroidだと未サポートってことで、ちょっと作りかけ。
色々なAndroidの実装というかリポジトリ覗いたんだけど、Android側に手を入れてる実装が多い。
Android側の更新が頻繁なことを考えるとKernel側でマウスを仮想タッチパネルに仕立て上げるほうが
良さそうっていう発想の元色々。
はじめはフィルタドライバで実装してたんだけど、Androidが拾ってくれない。
/dev/input/mouse とかは Android の EventHub は見てなくて/dev/input/event を見てる。
ということで evdev.c で EV_REL を EV_ABS にごまかしたりする仮想デバイスぽいドライバを。
カーソルの描画はOVL2使えば良いやって思ってたけど、微妙に失敗してるっぽい。
っていうか、androidがfbのダブルバッファリングに使ってるのか?
fbconかもしれん…けど見切れてない。
あと、画面の電源が入ってないときはタッチパネルのイベントを無視するっていうコードが、
Android側に入っていてそこだけは面倒でAndroid側修正した。
frameworks/base/services/java/com/android/server/KeyInputQueue.java:502 if (ev.type == RawInputEvent.EV_ABS) { send = true; }
とりあえずな現状のkernelパッチは続きに。