もともとUnlimited Handを使った何かを作成せよとのお達しがあったので、思い立った企画第一弾として、ARとUnlimited Handの連動となりました。

ARは「Android版PanicARの導入」で試してみたPanicARを使用します。
と言うのも、マーカー連動型ARだと、いちいちマーカーを登録する必要がありそうだったので、位置情報連動型にしたかったのと、表示するPOIを将来的にアニメーションさせたりしたかったので、こちらを採用することにしました。
ただし、これはMulti Dexへの対応が面倒なので製品として機能を拡張するときは、少し難がありそう・・・。
アプリの内容としては、
  • 現在地付近に一匹の「うなぎ」を表示する
  • ランダムな時間毎に「うなぎ」 が放電状態になる
  • 放電状態の「うなぎ」にタッチするとUnlimited Handから電気刺激が発生する(Unlimited Handがない場合はスマホが震える)
となります。画面は以下のような感じになります。


※ 起動時に「Search and connect to Unlimited Hand」プログレスダイアログが表示されますが、Unlimited Handと連動したくない場合は、バックキーを押下してキャンセルするとUnlimited Handを使用せずに動作するようになります(その場合、代わりにバイブレーションが動作します)。

ソースはこちら(Tag: v1.1)に公開しています。
※ サブモジュールはそれぞれ、以下の場所に公開しています。
  • Unlimited Handの制御をサポートするモジュール => こちら
  • Bluetoothの制御をサポートするモジュール => こちら
  • 細々としたラッパーメソッドなど => こちら 

主要な構成は以下のようになります。
  1. jp.eq_inc.aranduh.ARandUHApplication
    com.dopanic.panicarkit.lib.PARApplicationを継承したApplicationインスタンス。「public String setApiKey()」をオーバーライドしたのみ。ライセンスを購入したら、こちらのメソッドを書き換えて、その値を返却する。
  2. jp.eq_inc.aranduh.AROnCameraActivity
    android.support.v7.app.AppCompatActivityを継承したActivityインスタンス。このActivityの起動時、カメラと位置情報に対するランタイムパーミッションの確認を実施する。
  3. jp.eq_inc.aranduh.fragment.AROnCameraFragment
    com.dopanic.panicarkit.lib.PARFragmentを継承したFragmentインスタンス。com.dopanic.panicarkit.lib.PARCameraViewやcom.dopanic.panicarkit.lib.PARViewやcom.dopanic.panicarkit.lib.PARRadarViewなどのインスタンスの管理や、うなぎの制御(表示位置の決定や通常状態・放電状態の切り替え)などを行っている。
  4. jp.eq_inc.aranduh.poi.POIImageView
    com.dopanic.panicarkit.lib.PARPoiを継承したPARPoiインスタンス。処理自体は指定されたBitmapやDrawableリソースを表示しているのみ。 

コメントの投稿