2016-04-01 10 views
0

AndroidアプリでAnalyticsを使用する際の問題に直面しています。AndroidアプリでAnalyticsを初期化する際の問題

私は)私はのonCreateでMainActivity(でそれを行う場合、私は、それを初期化する方法がわからないデバイスは、私が手で回転するたびにAndroidのメーカー

import android.content.Context; 

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

import java.util.HashMap; 
import java.util.Map; 

/** 
* A collection of Google Analytics trackers. Fetch the tracker you need using 
* {@code AnalyticsTrackers.getInstance().get(...)} 
* <p/> 
* This code was generated by Android Studio but can be safely modified by 
* hand at this point. 
* <p/> 
* TODO: Call {@link #initialize(Context)} from an entry point in your app 
* before using this! 
*/ 
public final class AnalyticsTrackers { 

    public enum Target { 
    APP, 
    // Add more trackers here if you need, and update the code in #get(Target) below 
    } 

    private static AnalyticsTrackers sInstance; 

    public static synchronized void initialize(Context context) { 
    if (sInstance != null) { 
     throw new IllegalStateException("Extra call to initialize analytics trackers"); 
    } 

    sInstance = new AnalyticsTrackers(context); 
    } 

    public static synchronized AnalyticsTrackers getInstance() { 
    if (sInstance == null) { 
     throw new IllegalStateException("Call initialize() before getInstance()"); 
    } 

    return sInstance; 
    } 

    private final Map<Target, Tracker> mTrackers = new HashMap<Target, Tracker>(); 
    private final Context mContext; 

    /** 
    * Don't instantiate directly - use {@link #getInstance()} instead. 
    */ 
    private AnalyticsTrackers(Context context) { 
    mContext = context.getApplicationContext(); 
    } 

    public synchronized Tracker get(Target target) { 
    if (!mTrackers.containsKey(target)) { 
     Tracker tracker; 
     switch (target) { 
     case APP: 
      tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker); 
      tracker.enableAdvertisingIdCollection(true); 
      break; 
     default: 
      throw new IllegalArgumentException("Unhandled analytics target " + target); 
     } 
     mTrackers.put(target, tracker); 
    } 

    return mTrackers.get(target); 
    } 
} 

によって生成されたデフォルトのクラスを使用しています例外「エクストラコールを使用してアナリティクストラッカーを初期化する」

問題を解決するにはどうすればよいですか?

答えて

0

このクラスは、アプリケーションの起動時にのみ呼び出されるApplicationクラスで初期化することができます。

クラスを作成し、アプリケーションを拡張し、onCreate()で解析を初期化するだけです。

public class VivaApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     AnalyticsTrackers.initialize(this); 
    } 
} 

http://developer.android.com/intl/pt-br/reference/android/app/Application.html

またはv4のドキュメントのサンプルのように、Applicationクラス自体にGoogleAnalyticsのインスタンスを保つ:

/** 
* This is a subclass of {@link Application} used to provide shared objects for this app, such as 
* the {@link Tracker}. 
*/ 
public class AnalyticsApplication extends Application { 
    private Tracker mTracker; 

    /** 
    * Gets the default {@link Tracker} for this {@link Application}. 
    * @return tracker 
    */ 
    synchronized public Tracker getDefaultTracker() { 
     if (mTracker == null) { 
      GoogleAnalytics analytics =  GoogleAnalytics.getInstance(this); 
      // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG 
      mTracker = analytics.newTracker(R.xml.global_tracker); 
     } 

     return mTracker; 
    } 
} 

https://developers.google.com/analytics/devguides/collection/android/v4/#application

+0

それがスムーズ – Thomas

+0

グレートの作品、ありがとうございます!私はあなたが答えとして受け入れることができれば感謝します。 – petrusgomes

+0

@petrusgomes私は同じことをしましたが、分析はまだ**ヒットしません**。アナリティクスが正しく構成されているかどうかをテストする方法はありますか? –

関連する問題