T

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にエクスポートする機能は公式には存在しないが、いちおうスクリプトが用意されてはいる。

Posted by on 1月 30, 2011 in Tuit, ,

コメントを残す