Titanium DeveloperでAndroid(4)
いろいろと発見することが多い反面、だんだんとまとまりがなくなっていくシリーズ。というか、Androidがマジで嫌いになってきましたシリーズ。
AndroidのUIWebViewが曲者だ。例えばcreateWebViewして、その中のHTMLにvideoタグを埋め込んで動画再生しようとしても、iPhoneでは動くのにAndroidでは動かない。
じゃあ、どうすればいいか?調べると、Titanium側でcreateWebViewした際にUIWebViewのインスタンスにsetPluginStateまたはsetPluginsEnabledが設定されていないので、Titanium Mobileのソースコードを眺めて、webviewの作成時にはsetPluginsEnabled(true)を呼ぶように指定してリビルドしてみたが効果がなかった。そこでさらに調べてみると、どうやらアプリ内で作成されるviewからはHTML5の機能が動作しないのが仕様らしい。
これだけならAndroid師ねで終わるのだが、驚いたことに今度はTitanium側からもキツい攻撃が。リモートのファイルを普通にcreateVideoPlayerに設定しても、例外を吐いてクラッシュする(Androidのみ。当然iPhoneでは動く)。
....... //どこかの大自然 var media_url = 'http://www.pocketjourney.com/downloads/pj/video/famous.3gp'; var activeMovie = Titanium.Media.createVideoPlayer({ contentURL:media_url, }); win.add(activeMovie); win.addEventListener('close', function(){ alert("Window closed"); activeMovie.stop(); }); activeMovie.play(); .......
まとめると:
(1)AndroidではvideoタグのようなHTML5の機能をアプリ内のwebviewから利用することは出来ない。これはAndroidの仕様なので、PhoneGapを使っていても同じ目に遭う
(2)Titanium Mobile (SDK 1.5)ではAndroidでcreateVideoPlayerからリモートの動画を読み込むことは出来ない。
つまり、Androidでリモートの動画を再生したければ、aタグでちょちょいとやっつけるか、PhoneGapでプラグインを作成するか、またはちゃんとJavaで書くしかない、ということ。プロジェクトをeclipseにエクスポートする機能は公式には存在しないが、いちおうスクリプトが用意されてはいる。
コメントを残す