ARアプリの作り方メモ

AndroidでARアプリ的なものを作るときのためのメモ

やるべきこと

  • カメラ映像の表示
  • オーバーレイ表示
  • センサーから端末の向きを取得
  • 現在位置の取得

※ マーカーについては扱わない。マーカーを使う場合、ARToolKitOpenCVといったライブラリを使用する。

カメラ映像の表示

  • AndroidManifest.xmlにカメラの使用と許可を宣言
    • uses-featureにandroid.hardware.camera
    • uses-permissionにandroid.permission.CAMERA
  • SurfaceViewに表示させる
  • カメラの画角はCamera#getHorizontalViewAngle(),Camera#getVerticalViewAngle()で取得できる
// 関連クラス/インタフェース
import android.hardware.Camera;
import android.view.SurfaceView;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;

※ API21以降では、android.hardware.camera2.*を使うらしい。しらんけど。

オーバーレイ表示

  • FrameLayoutに複数のViewを配置するだけで重ね表示になる
  • ARGB形式で色指定し半透明表示する
  • 透過PNGの画像リソースを使う
  • Canvasのtranslate()/scale()/rotate()とsave()/restore()

センサーから端末の向きを取得

  • 地磁気センサと加速度センサから向きを計算
    • SensorManager.getOrientation()を使用
// 関連クラス/インタフェース
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

現在位置の取得

  • AndroidManifest.xmlに位置情報の許可を宣言
  • 逆ジオコーディング(経度・緯度から住所を取得)
    • Geocoder#getFromLocation()
// 関連クラス/インタフェース
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.Geocoder;
import android.location.Address;