Android StudioでGoogle Analytics v4を組み込んだメモ

AdMobに続いて先日のアプリを作るときにGoogleAnalyticsを組み込んだときのメモを残しておきます。
参考:Working with Google Analytics API v4 for Android | Java Code Geeks

今回も基本的には公式のGoogle Analytics SDK v4 for Android – Getting Started – Google Analytics — Google Developersに沿ってますがTrackerのあたりはシンプルにしています(たぶん要らないと思って
環境:Android Studio (Beta) 0.8.2

1.Googleサービスのライブラリを組み込む

前回と同じGooglePlay開発者サービスを使うのですでに組み込んでるなら不要
メニューのFile->Project Structure…を選択
admob01
左のModulesから組み込みたいプロジェクトを選択して、Dependenciesタブの右上にある[+](Add)からLibrary dependencyを選択
admob02
Google Play Services (Wearableじゃないほう)を選択してOKで閉じていく
admob03
(見つからないときはAndroid SDK Mangerでインストールしていない可能性?)
するとbuild.gradleに追加されてプロジェクトのSyncが行われるはず

2.AndroidManifest.xmlへ追記

meta-data タグ

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
  <application ...>
    <meta-data android:name="com.google.android.gms.version"
               android:value="@integer/google_play_services_version" />
    <activity ...>
  </application>
</manifest>

uses-permission でネットワーク権限を設定(すでに組み込んでた)

<manifest ...>
  <application ...>
    <meta-data ...>
    <activity ...>
  </application>
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

3.設定xmlをつくる

/res/xmlにapp_tracker.xmlとして配置しました

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- How long a session exists before giving up -->
    <integer name="ga_sessionTimeout">300</integer>
    <!-- Enable automatic Activity measurement -->
    <bool name="ga_autoActivityTracking">true</bool>
    <!-- The screen names that will appear in reports -->
    <screenName name="com.アクティビティ">
        解析に表示させたいスクリーン名
    </screenName>
    <!--  The following value should be replaced with correct property id. -->
    <string name="ga_trackingId">UA-XXXXXXX-Y</string>
</resources>

4.Applicationクラスを継承する

トラッカーを取得するメソッドを定義しています、サンプルだとenum定義して使い分けている様子

import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;

public class MyApplication extends Application {
    Tracker mTracker;
    MyApplication(){
        super();
    }
    synchronized Tracker getTracker() {
        if(mTracker == null){
            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            mTracker = analytics.newTracker(R.xml.app_tracker);
        }
        return mTracker;
    }
}

あわせて、AndroidManifest.xmlも変更しておきます

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <application
        android:name=".MyApplication" ...>
        <activity ...>
    </application>
</manifest>

5.Activityに追記する

xmlのga_autoActivityTrackingをtrueにしたのでいけるのかなと思いきや、そのxmlをnewTrackerとして登録していないと動かない(当たり前か)のでそのあたりの追記が必要でした

import com.google.android.gms.analytics.GoogleAnalytics;
public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        // これが必要だった
        ((MyApplication)getApplication()).getTracker();
    }
    @Override
    protected void onStart() {
        super.onStart();
        GoogleAnalytics.getInstance(this).reportActivityStart(this);
    }
    @Override
    protected void onStop() {
        GoogleAnalytics.getInstance(this).reportActivityStop(this);
        super.onStop();
    }
}

これで実行するとGoogleAnalyticsのリアルタイムあたりでぴょこっと(少しの時間差で)でてくるはず
analytics

6.イベントをトラッキングする

上記は画面別ですが個々のイベントを送るにはEventBuilderを使うみたい

@Override
public void onClick(View v) {
    Tracker tracker = ((MyApplication)getApplication()).getTracker();
    tracker.send(new HitBuilders.EventBuilder()
            .setCategory("Category")
            .setAction("Action")
            .setLabel("Label")
            .build());
}

analytics2
お疲れ様でした。