ARKitを使ったARアプリはエミュレータで動かせませんが、ARCoreを使ったARアプリはエミュレータで動かすことができます。
エミュレータで動かす際に少しハマったことがあるので共有します。
(Unityで作成したARアプリは、この記事とは違うやり方なので注意してください。)
必要な環境
- Android Studio 3.1以降
- Android Emulator 27.2.9以降
サンプルプロジェクトのダウンロード
この記事ではARCore SDKにあるサンプルプロジェクトを使用します。
ARCore SDKをDLします。
そして、samples/hello_ar_java
をAndroid Studioで開きます。
エミュレータ
エミュレータを起動します。
端末によってはARCoreをサポートしてないため、エミュレータはなるべく新しめの端末の方がいいです。
API Levelは27(Oreo)以降が必要です。(API Levelも最新の29が良さそう)
サンプルアプリの起動
ここからが少しハマったところです。
サンプルアプリを起動します。
すると...
This application requires the atest version of Google Play Services for AR. (このアプリを使用するには、最新バージョンのGooglePlay開発者サービス(AR)が必要です。)
と、出てきます。
どうやら、エミュレータでARアプリを使うにはGoogle Play Services for ARが必要らしいです。
CONTINUE
を押すとGoogle Play Storeに飛ばされます。
これをインストールしなきゃいけないのに
Your device isn't compatible with this version. (お使いのデバイスはこのバージョンに対応していません。)
って表示されて、インストールできなく、ARのサンプルアプリが無限にエミュレータで起動できない状態になってしまいます。
こんな時は、大人しくARCoreのドキュメントをみましょう!
どうやらGitHubのリリースページから最新のGoogle_Play_Services_for_AR.apk
をDLする必要があるっぽいです。
*現在(2019年11月時点)では、v1.13.0が最新
DLしたapkファイルをエミュレータ上にドラッグするか、エミュレータ起動中に、以下のadbコマンドを叩きます。
adb install -r Google_Play_Services_for_AR_1.13.0_x86_for_emulator.apk
無事、エミュレータでARアプリを動かせました!!!!
なぜか平面認識すると白くなるようです。他のアプリだとそうならないので、おそらくサンプルアプリの影響です。
エミュレータ内で動くためには以下のKeyを使います
platform | key |
---|---|
mac | option + WASD |
Linux, Windows | Alt + WASD |
ちなみに、エミュレータの右にある「・・・」の中にあるVirtual sensorsで、センサの値を直接いじっても動きます。 |
API Levelを28以下にすると...
API Levelを29じゃなく、28や27でやった場合、
this device does not support AR
と表示されてアプリが使えないです。apkファイルのバージョンを下げたらいけそう...って思ったのですが、そもそもGoogle_Play_Services_for_AR.apk
を認識してくれませんでした。
知見ある方、コメント待ってます。