Androidセットアップガイド
Android Studioプロジェクトのセットアップ
Android Studioプロジェクトをセットアップするには、空のプロジェクトを作成します。必要な手順は以下のとおりです。また、これらの手順をすでに実装したWikitude SDK Androidパッケージに同梱されているサンプルも使用することができます。
-
新しいAndroidアプリケーションプロジェクトを作成します。
-
Library/wikitudesdk.aar
ファイルをモジュールのlibsフォルダ (<project-root>/<module-name>/libs
)にコピーします。 -
モジュールの
build.gradle
を開きます。以下のコードのように、wikitudesdk.aar
を依存関係として追加し、libsフォルダが検索されるようにします。
android {
...
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation (name: 'wikitudesdk', ext:'aar')
implementation 'com.android.support:appcompat-v7:21.0.3'
implementation 'com.google.ar:core:1.1.0'
}
repositories {
flatDir{
dirs 'libs'
}
}
- ライセンスをご購入済みの場合は、指定したパッケージ名を
applicationId
として設定します。
defaultConfig {
applicationId "xxxx"
}
- AndroidManifest.xmlに以下の権限を追加します。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.location" android:required="true" />
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
<uses-feature android:name="android.hardware.sensor.compass" android:required="true" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
- アクティビティを保持する
architectView
と呼ばれるARビューにConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.KeyboardHidden | Android.Content.PM.ConfigChanges.ScreenSize
を下記の通り設定しなければいけません。 これはWikitude Xamarinコンポーネントの例です。
[Activity(Label = "SimpleArActivity", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.KeyboardHidden | Android.Content.PM.ConfigChanges.ScreenSize)]
public class SimpleArActivity : Activity
{
...
}
- 有効なトライアルライセンスキーを入力します。トライアルライセンスキーを入手するには、このセクションを参照してください。
アクティビティ内のArchitectView
Wikitude SDKは、他のSDKのようなネイティブのAndroid SDKではないことに注意してください。基本概念は、ArchitectView
をプロジェクトに追加し、このビューにライフサイクルイベントを通知することです。ArchitectView
は、カメラビューを作成してセンサーイベントを処理します。ARchitect WorldはJavaScriptで実装され、アプリケーションのassetsフォルダーまたは独自のサーバーにパッケージ化されます(このプロジェクトではassetsフォルダーを使用します)。ARchitect WorldはHTMLとJavaScriptで記述され、WikitudeのAR
-namespace(例: AR.GeoObject
)のメソッドを呼び出します。
AR
namespaceを使用するには、HTMLファイルに次の行をインクルードする必要があります。
<script src="https://wikitude.com/libs/architect.js"></script>
そうすると、それらのHTMLファイルがarchitectView
によって適切に処理されます。ARchitect Worldをデスクトップブラウザでテストするには、JavaScriptエラーを回避するため、および開発コンソールを表示するために、ade.js
ツールをインクルードする必要があります。
ARchitect Worldは別々のActivityで処理することを推奨します。レイアウトXMLの内部でArchitectView
を宣言します。たとえば、FrameLayoutの親タグ内に以下のコードを追加します。
<com.wikitude.architect.ArchitectView android:id="@+id/architectView"
android:layout_width="fill_parent" android:layout_height="fill_parent"/>
ArchitectViewはカメラビューを作成するので、アプリケーションの他の場所でカメラを使用する場合は適切にカメラを解放してください。カメラ(フロントカメラまたはバックカメラ)のほかにコンパスと加速度計の値も利用されます。これらすべての機能を使用するには、サポートされているAndroidデバイス
を参照してください。
現在のデバイスが必要なすべてのハードウェアおよびソフトウェアを備えているかどうかを確認するには、ArchitectView.isDeviceSupported(Context context)
を使用します。
ArchitectView
にActivityのライフサイクルイベントを通知することは非常に重要です。ArchitectViewのonCreate()、onPostCreate()、onPause()、onResume()、onDestroy()
をActivityのライフサイクルメソッド内で呼び出します。ベストプラクティスは、ArchitectView
用のメンバ変数をActivityで定義することです。これはActivityのonCreate()
でsetContentView
の直後に設定し、以降はそのメンバ変数を通じてArchitectView
にアクセスします。
this.architectView = (ArchitectView)this.findViewById( R.id.architectView );
final ArchitectStartupConfiguration config = new ArchitectStartupConfiguration();
config.setLicenseKey( * license key */ );
this.architectView.onCreate( config );
architectView.onCreate( config )
を呼び出す前に、アプリにカメラランタイムのアクセス権があることを確認する必要があります。
ActivityのonPostCreate()
は、ARchitect Worldをロードするのに最も適した場所です。
this.architectView.onPostCreate();
this.architectView.load( "YOUR-AR-URL" );
architectView.load()
の引数には、ARchitect Worldを定義したHTMLファイルへのパスを指定します。これには、assetsフォルダーのルートからの相対パスまたはWeb URL(http://
またはhttps://
で始まる)を使用できます。たとえば、architectView.load('arexperience.html')
はプロジェクトのassets
フォルダーにあるHTMLファイルを開き、architectView.load('http://your-server.com/arexperience.html')
はサーバーからファイルをロードします。
architectView.load('arexperience.html?myarg=1')
ロケーション
ロケーション(位置情報)の管理は、ロケーションベース型ARアプリケーションにおいて重要です。ロケーションはGPSまたはネットワークを介して取得され、毎秒更新されることもあれば、更新間隔が長いこともあります。SDKExamplesアプリケーションサンプルはLocationProvider
の基本的な実装を提供しますが、これはAndroidで使用可能な最良のロケーションストラテジーとは言えません。
特別な要件がある場合は、独自に作成した高度なロケーションストラテジー実装を使用してください。