SDKの導入
picnic SDK をアプリにインポートすることで、地図やARなどの様々な機能を利用することができます。
次の手順で、picnic SDK をアプリにインポートすることができます。
(picnic SDKのファイル(picnic_v1.0.0.aar)は、事前に所定の場所からDLしておいてください。)

※本手順を全て行った状態のサンプルソースコードは[こちら]になります。
1. 空のプロジェクトを作る
まずはAndroid Studioを起動し、「Start a new Android Studio project」をクリックして新規プロジェクトを作成します。 Application nameに「TameshiApp」、Company nameに「example.com」と入れ、Project locationの右にある「…」ボタンをクリックします。 ダイアログが表示されるので、「C:¥」を選択した状態で「New Folder」のボタンをクリックします。 ダイアログが出てきます。 「AndroidStudioProjects」と入力し、OKをクリックします。 「C:¥AndroidStudioProjects」を選択した状態でOKボタンをクリックします。 Nextボタンをクリックします。 Phone and TableがチェックONになっており、「API 15: Android 4.0.3(IceCreamSandwich)」が選ばれている状態にしてNextボタンをクリックします。 「Blank Activity」を選んでNextボタンをクリックします。 そのままFinishを押します。 起動時にこちらのダイアログが出てきたら、「Show Tips on Startup」のチェックを外してからCloseボタンをクリックします。 Android Studioが開かれました。 画面左の「Project」をクリックすると、ソースを見ることができます。
この状態で暫く待ちましょう。 このような画面になったら、GradleファイルのSyncボタンを押します。 このような画面になります。これで空のプロジェクト作成は完了です。
しばらく待ってもこの画面にならない場合は、次の手順に進みましょう。
2. SDKをインポートする
「File > New > New Module」をクリック。 「Import .JAR/.AAR Package」を選んでNextボタンをクリックします。 「File name」の右にある「…」ボタンをクリックし、事前に入手しておいたpicnic SDKファイル(picnic_v1.0.0.aar)を選択してください。 このような表示になったら、Finishボタンをクリックします。
3. SDKを使うための設定を行う
「Gradle Scripts > build.gradle (Module: app)」を開きます。 「targetSdkVersion」という項目を 15 に変更します。 「dependences」に2つの項目を追記します。
追記をしたら、右上に表示されている「Sync Now」をクリックします。
// ↓この2つを追記する
compile 'com.google.android.gms:play-services:7.3.0'
compile project(':picnic_v1.0.0')
しばらく待ちます。画面下部にプログレスバーが表示されます。 しばらく待つと処理が完了します。
4. SDKの機能を呼び出してみる
「App > java > com.example.tameshiapp > MainActivity」を開きます。 SDKの初期化と、AR画面呼び出しのコードを、onCreateメソッド内に貼り付けます。
// picnicのSDKを初期化
Picnic.initialize(this, "your_api_key");
// AR画面を呼び出す
Intent intent = new Intent(getApplicationContext(), ARActivity.class);
startActivity(intent);
青い吹き出しが出てきたら、「Alt + Enter」キーを押します。 何回か出てくるので、出てこなくなるまで「Alt + Enter」キーを押します。 SDKの初期化で指定しているAPIキーを、自身のAPIキーで置き換えてください。
(正しいAPIキーに置き換えないと、アプリが実行できません。) 「app > manifests > AndroidManifest.xml」を開きます。 picnic SDKを利用するために必要な宣言を、マニフェストファイルに記述します。
以下のコードを参考に、「users-permission」「activity」「meta-data」を追記します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tameshiapp" >

    <!-- ■ここから■ [1] picnic SDKで必要なパーミッション -->
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- ■ここまで■ [1]  picnic SDKで必要なパーミッション -->

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- ■ここから■ [2] picnic SDKで必要な記述 -->
        <activity
            android:name="me.picnicapp.sdk.ar.ARActivity"
            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />

        <activity
            android:name="me.picnicapp.sdk.map.MapActivity"
            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar" />

        <activity
            android:name="me.picnicapp.sdk.contentdetail.ContentListActivity"
            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar" />

        <activity
            android:name="me.picnicapp.sdk.contentdetail.ContentDetailActivity"
            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar" />

        <activity
            android:name="me.picnicapp.sdk.framecamera.FrameCameraActivity"
            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />

        <activity
            android:name="me.picnicapp.sdk.framecamera.PicturePreviewActivity"
            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
        <!-- ■ここまで■ [2] picnic SDKで必要な記述 -->

        <!-- ■ここから■ [3] picnic SDKで必要な GoogleMap利用の記述 -->
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <!-- ■ここまで■ [3] picnic SDKで必要な GoogleMap利用の記述 -->

        <!-- ■ここから■ [4] picnic SDKで必要な GoogleMapのAPIキー -->
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyD_fvacAmyreopHc7x7UVdnB9rK6ZqInN0" />
        <!-- ■ここまで■ [4] picnic SDKで必要な GoogleMapのAPIキー -->

    </application>

</manifest>
アプリの実行ボタンをクリックします。 しばらく待つと、ダイアログが表示されます。
「Android virtual device」の右にある「…」ボタンをクリックします。 この画面で、アプリを実行させるための仮想Android端末を作成します。
左下の「Create Virtual Device」ボタンをクリックします。 Categoryで「Phone」、Nameで「NexusS」を選んでNextボタンをクリックします。 Release Name「Marshmallow」、API Level「23」、ABI「x86」、Target「GoogleAPIs」を選び、Nextボタンをクリックします。 ただし、「開発環境の準備」の最後でHAXMをインストールしなかった場合、ABIには「armeabi-v7a」を選んでください。 左下の「Show Advanced Settins」ボタンをクリックします。 以下のように設定します。
  • Camera > Back : Emulated
  • Memory and Strage > RAM : 768 MB(※KBで指定しないこと)
  • Memory and Strage > VM heap : 64 MB
Finishボタンをクリックします。 右上の✕ボタンを押します。 「Android virtual device」で、先ほど作成した仮想Android端末「Nexus S API 23」を選んでOKボタンをクリックします。 しばらく待つと、仮想Android端末が立ち上がります。
このようなアプリ画面が出てきたら成功です。

もしこのようなロック画面になったら、Android画面上でマウスを押したまま上にスライドさせてください。
ロックが解除され、しばらく待つとアプリが表示されます。