<<前へ2014/02/13AndroidでWebViewとNativeのハイブリッドアプリ最近、WebViewを使ったWebとNativeのハイブリッドアプリが流行っている。iPhoneとAndroidで同一アプリを開発する場合、Web部分が共通化できるメリットが大きいからだろう。使ったハイブリッドアプリの作り方を調べてみた。互換性を無視しては意味ないのでやり方だけは調べて置きます。擬似的に実装するようです。参考:iPhoneのネイティブ機能をWebViewから呼び出す方法(2)JavaScriptとの接続方法としては無理が無く良い方法だと思われます。そのまま使えると言う直接的な方法です。参考:ソフトウェア技術ドキュメントを勝手に翻訳が、これ結構致命的なセキュリホールが報告されています。紛れ込むと何でも出来てしまいます。細心の注意を払う必要がありそうです。現実的にはかなりハードル高いっすね。この問題は解決されています。最初から持っていて以外に追加機能のネタが無かったりします。追加してさらにセキュリティホールを広げて見たいと思います。基本ドキュメントの通りですが登録しているのはファクトリです。拡張XMLHttpRequestファクトリの初期化。してみましたがダメでした。グローバルの直下のみに登録できるようです。呼び出し登録されたJavaオブジェクトの呼び出しはほぼそのままです。フィールドにはアクセス出来ません。...省略}ここで気になったのはメソッドへの引数です。変換ルールが見つけられませんでした。Java間の型変換とりあえず、プリミティブまでは大丈夫そうな気がします。JSON変換できるオブジェクトならこんな感じで渡せるようです。呼び出しドキュメントの通り以下で呼び出せます。webview.loadUrl("javascript:スクリプト");が、JS->Java->JSと呼び出すと例外になります。HandlerかAsyncTaskを経由する必要があるようです。オブジェクトの生成どうも無理そうです。JavaScript自体がJavaで実装されて無いと思われるので難しいのでしょう。側でパーズしてもらう事になりそうです。クロスドメインをjQueryでするために必要。最初から付いてました。実行結果:外部サイトからちゃんとデータを取って来ています。してスタブを2種類用意する感じでしょうか。コード共通化やWebからアプリが更新できるメリットは大きいですね。実装すると言う方がフレームワークの縛りが無い分楽かもしれません。サンプルのソースコード一式は以下のSVNにあります。注意:XMLHttpRequestXSはXSSのセキュリティホールを持ちます。技術検証以上の利用はしないで下さい。接続を試してみることにした。プログラミングの基礎知識これが分かってなくてちょっと苦労しました。各Bluetooth機器は固有のMACアドレスを持っている。NICのMACアドレスとは別採番。Bluetooth機器内の各サービスは固有のUUIDを持っている。独自プロトコルの場合はツールで生成したUUIDで良い。サーバとクライアントが認識していれば良いので衝突とかは考えなくてよい。Bluetoothは非公開にできる。PCやAndroidはデフォルト非公開になっている。非公開で有ってもペアリング済みなら接続できる。ペアリング未でも公開されていれば検索して接続できる。使い分ける必要があると言うことです。orz#まぁUSBの時はJavaですら無かった訳ですが。AndroidのAPIはいつもお世話になる「勝手に翻訳」さんのサイトに有ります。使い方は整理されているところが見つからずexampleを見ながら対応しました。オープンな実装は以下のプロジェクトが存在します。