AndroidStudio+GoogleAnalytics。またまたコピペで実装できるようにまとめてみたよ！スクリーンとイベントの測定をワンライナーで書けるようにしてみたよ！

#はじめに
前回の記事：<a href="http://qiita.com/Kaki_Shoichi/items/8053ae5d716e8a1cc7b6">AndroidStudio×FacebookSDK。SDKの導入からシェアの実装までコピペで出来るようにまとめてみました。</a>

開発を進めていくと必ず計測ツールを導入しますよね。
今回は「GoogleAnalytics」の導入方法を基本的には**コピペで実装**できるようにしたので、まとめてみました。
また、導入の敷居を下げるために**スクリーンとイベントの測定を１行でかける**メソッドも用意しました！是非使ってみてください！

#開発環境
AndroidStudio v1.1.0
googleAnalytics


#導入編
##Google-Play-Serviceの導入
File->Project Structure->Dependenciesから下記図のように追加します。
![Choose_Library_Dependency_と_Project_Structure_と_MeasurementGAManager_java_-__app__-_pasti_android_-____AndroidStudioProjects_pasti_android_.png](https://qiita-image-store.s3.amazonaws.com/0/49347/80ecced2-e72c-8c78-2c82-4e06306fbed1.png)



##AndroidManifest.xmlに記述その1

```xml:AndroidManifest.xml
<!-- <application ~ </application>内に記述 -->
<meta-data
   android:name="com.google.android.gms.version"
   android:value="@integer/google_play_services_version" />
```

```xml:AndroidManifest.xml
<!--権限の追加-->
<!-- <manifest ~ </manifest>内に記述 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```

##xmlディレクトリにファイルを追加・編集（コピペ）
###ファイルを追加
下記図のようにxmlディレクトリ内に「ecommerce_tracker.xml」「global_tracker.xml」を追加します。(xmlディレクトリがない場合は作成してください)

![220a3bdd-85ae-5acc-535a-00f0569ca01e.png](https://qiita-image-store.s3.amazonaws.com/0/49347/c40df42c-3572-43a5-c2cd-fc2893dca355.png)

###ファイルを編集
「ecommerce_tracker.xml」「global_tracker.xml」それぞれに下記をコピペしてください。

```xml:ecommerce_tracker.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="ga_sessionTimeout">60</integer>
    <!-- Idは任意のものに変更してください -->
    <string name="ga_trackingId">UA-00000000-0</string>
</resources>
```

```xml:global_tracker.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="ga_sessionTimeout">300</integer>
    <bool name="ga_autoActivityTracking">false</bool>
    <!-- Idは任意のものに変更してください -->
    <string name="ga_trackingId">UA-00000000-0</string>
</resources>
```

##MeasurementGAManagerの作成
任意のディレクトリにMeasurementGAManager.javaを作成し、下記をコピペしてください。
(パッケージ名は任意の名前に変更してください)

```java:MeasurementGAManager.java
package com.example.hogehoge;

import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Logger;
import com.google.android.gms.analytics.Tracker;
import com.google.android.gms.analytics.GoogleAnalytics;
import android.app.Application;
import android.content.Context;
import java.util.HashMap;
import com.example.hogehoge.R;



public class MeasurementGAManager extends Application {
    private enum TrackerName {
        APP_TRACKER,
        GLOBAL_TRACKER,
        ECOMMERCE_TRACKER,
    }

    HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
    public MeasurementGAManager() {
        super();
    }
    private synchronized Tracker getTracker(TrackerName trackerId) {
        if (!mTrackers.containsKey(trackerId)) {
            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
            Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
                    : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(
                    R.xml.global_tracker)
                    : analytics.newTracker(R.xml.ecommerce_tracker);
            t.enableAdvertisingIdCollection(true);
            mTrackers.put(trackerId, t);
        }
        return mTrackers.get(trackerId);
    }

    public static void sendGAScreen(Context context, String screenName) {
        Tracker t = ((MeasurementGAManager) context.getApplicationContext()).getTracker(MeasurementGAManager.TrackerName.APP_TRACKER);
        t.setScreenName(screenName);
        t.send(new HitBuilders.AppViewBuilder().build());
    }

    public static void sendGAEvent(Context context, String category, String action, String label) {
		if(label.length() == 0){
			label = "-";
		}
        Tracker t = ((MeasurementGAManager) context.getApplicationContext()).getTracker(TrackerName.APP_TRACKER);
        t.send(new HitBuilders.EventBuilder()
                .setCategory(category)
                .setAction(action)
                .setLabel(label)
                .setValue(0)
                .build());
    }
}
```

##AndroidManifest.xmlに記述その2
下記図のように<applicaitonのandroid:nameを変更してください。

![main_AndroidManifest_xml_-__app__-_pasti_-____AndroidStudioProjects_pasti_.png](https://qiita-image-store.s3.amazonaws.com/0/49347/29300ddf-84e3-ac29-dd19-6a1e65edcd85.png)

```xml:AndroidManifest.xml
com.example.hogehoge.MeasurementGAManager
```
を追加。（com.example.hogehogeの部分は任意のものに変更してください）

ここまで導入になります！では実際に計測してみましょう！

#計測編
##スクリーン・イベントの計測
まずは下記をインポート(com.example.hogehogeは任意のものに変更してください)

```java:MainActivity
import com.example.hogehoge.MeasurementGAManager;
```

あとは下記を記述すると測定出来ます。（どちらか片方でも大丈夫です）

```java:MainActivity.java
// GAスクリーン計測　第一引数:Context, 第二引数:スクリーン名
MeasurementGAManager.sendGAScreen(this, "スクリーン名");

// GAイベント計測　第一引数:Context, 第二引数:カテゴリ名, 第二引数:アクション名, 第二引数:ラベル名
MeasurementGAManager.sendGAEvent(this, "カテゴリ名", "アクション名", "ラベル名");
```

#最後に
Android開発楽しいですね。今後もコピペで出来るシリーズを投稿していきたいと思います！