[Android]ARライブラリMetaioをFragmentで使いたいよね | アドカレ2013 : SP #5

2013.12.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ARとMetaio

AR = Augmented Reality = 拡張現実

拡張現実って名前に心惹かれます。拡張する意識…セカイ…ヒカリ…☆*…

ARと言えば何でしょう?古くはセカイカメラからロッテ爽の ももクロ AR Live、コカコーラの自販機も最近ARカメラ機能を使った試みがされているようです。さらに最近一番面白くてオススメのアプリが怪人百面相で、カメラに写った顔をマーカーとして他の顔をうまく組み合わせているようです。お酒を飲みながらや打ち合わせの合間にこのアプリで勝手にマスクを貼って笑う遊びがにわかに流行りました。楽しいARです。
AR自体、最近は以前ほど注目されない感がありますが、端末のスペック的にも技術の熟成度的にも割と普通に使われるようになったためと思ってます。

数あるARライブラリの中でも開発者にとって優しい部類に入ると思われるのがMetaioです。Metaio/Metaio社は2003年からARの開発をしているその世界では歴史あるドイツの会社です。他のオープンソースのライブラリと比較しても学習コストが低い事や、チュートリアルがしっかりしている事、コード量が低減されている事がメリットに感じます。
但し、ライセンス購入しようとすると30〜50万円程度し、個人で購入するにはITセレブでない限りハードルが高いです。但し、Metaioのスプラッシュが出るのが気にならなければ無料で使えますのでご安心を。

と、書いたのですが、1日目(iOS 7とmetaioでARアプリを作ろう)にも同じような事が書かれてました。

AndroidでFragmentにARカメラを乗せたい

導入は省略しますが、公式ページとアドベントカレンダー初日のiOSの記事が参考になります。
Metaio SDKはライブラリプロジェクトとして参照します。ハマりどころとしては、android-support-v4.jar をMetaio SDKプロジェクトと自前のプロジェクトでも持っていて、そのバージョンが異なっていた場合にビルドエラーになるので、自前プロジェクトで持っているandroid-support-v4.jarを捨てる事で回避できます。これはMetaioに限った事ではありませんが。

SDKをダウンロードするとサンプルコードが何個かありますが、Fragmentを使ったサンプルがありません。とは言え最近のAndroid開発はFragment無しには語れないので、FragmentにMetaioを乗せましょう。今回はマーカーを認識したら動画をマーカー上に表示します。(動画はMetaioのサンプル動画そのままです)

長いので ソースはこちら

ソースが全てなのですが、基本的にはActivityのライフサイクルに乗っていたものをFragment用に移行したものです。ただ、それでも動作しなくて公式ヘルプデスクに問い合わせましたが。対応は早かったです。
エラーハンドルや細々した箇所は改善の余地があると思います。

ただ1つ残念なのは、SDKはユーザー登録してダウンロードする為に一緒に配布出来ません。なので別途ダウンロードしてAndroidプロジェクトとして参照しないとコンパイルエラーになります。

コンパイルして実機で下の画像をかざせは動画が再生されるはずです。

マーカー画像 maker

認識されてる様子
metaio_movie

 

まとめ

割と苦労したので、MetaioをAndroidでFragment上で使いたい場合に是非是非参考にして頂きたいなと思います。そして笑えるアプリや、すげーってアプリを溢れさせましょう。