Skip to content

Commit

Permalink
Trebuchet: send metrics directly when possible
Browse files Browse the repository at this point in the history
Use the SDK directly instead of relying on an external package.

Still relies on C-Apps Core to send.

Reverts the revert and fixes the issue (missing aapt flag overlay)
This reverts commit d20f779.

Ticket: CYNGNOS-2545
Change-Id: I9445cadc429c3158cabb6a7d07e016f6fe3dac19
  • Loading branch information
romanbb authored and Gerrit Code Review committed May 3, 2016
1 parent 1daec9c commit 90106d8
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 45 deletions.
4 changes: 3 additions & 1 deletion Android.mk
Expand Up @@ -28,6 +28,7 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
android-support-v7-recyclerview \
org.cyanogenmod.platform.internal

LOCAL_STATIC_JAVA_AAR_LIBRARIES := ambientsdk

LOCAL_SRC_FILES := $(call all-java-files-under, src) \
$(call all-java-files-under, WallpaperPicker/src) \
Expand All @@ -43,7 +44,8 @@ LOCAL_PROTOC_OPTIMIZE_TYPE := nano
LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.v7.recyclerview
--extra-packages android.support.v7.recyclerview \
--extra-packages com.cyanogen.ambient

#LOCAL_SDK_VERSION := current
LOCAL_PACKAGE_NAME := Trebuchet
Expand Down
3 changes: 3 additions & 0 deletions AndroidManifest.xml
Expand Up @@ -237,5 +237,8 @@

<meta-data android:name="android.nfc.disable_beam_default"
android:value="true" />

<meta-data android:name="com.cyanogen.ambient.analytics.key"
android:value="DScKo29EpMBx1833F7ln1811KFPf14UT"/>
</application>
</manifest>
14 changes: 14 additions & 0 deletions src/com/android/launcher3/LauncherApplication.java
Expand Up @@ -20,10 +20,14 @@

import com.android.launcher3.stats.LauncherStats;
import com.android.launcher3.stats.internal.service.AggregationIntentService;
import com.cyanogen.ambient.analytics.AnalyticsServices;
import com.cyanogen.ambient.analytics.Event;
import com.cyanogen.ambient.common.api.AmbientApiClient;

public class LauncherApplication extends Application {

private static LauncherStats sLauncherStats = null;
private AmbientApiClient mClient;

/**
* Get the reference handle for LauncherStats commands
Expand All @@ -37,8 +41,18 @@ public static LauncherStats getLauncherStats() {
@Override
public void onCreate() {
super.onCreate();
mClient = new AmbientApiClient.Builder(this)
.addApi(AnalyticsServices.API)
.build();
mClient.connect();
sLauncherStats = LauncherStats.getInstance(this);
AggregationIntentService.scheduleService(this);
}

public void sendEvent(Event event) {
if (mClient.isConnected()) {
AnalyticsServices.AnalyticsApi.sendEvent(mClient, event);
}
}

}
66 changes: 22 additions & 44 deletions src/com/android/launcher3/stats/external/StatsUtil.java
Expand Up @@ -24,7 +24,10 @@
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;

import com.android.launcher3.LauncherApplication;
import com.android.launcher3.stats.util.Logger;
import com.cyanogen.ambient.analytics.Event;

/**
* StatsUtil
Expand All @@ -39,42 +42,6 @@ public class StatsUtil {

// Constants
private static final String KEY_TRACKING_ID = "tracking_id";
private static final String ANALYTIC_INTENT = "com.cyngn.stats.action.SEND_ANALYTIC_EVENT";
private static final String STATS_PACKAGE = "com.cyngn.stats";

/**
* Checks if stats collection is enabled
*
* @param context {@link android.content.Context}
* @return {@link java.lang.Boolean}
* @throws IllegalArgumentException {@link IllegalArgumentException}
*/
public static boolean isStatsCollectionEnabled(Context context)
throws IllegalArgumentException {
return isStatsPackageInstalledAndSystemApp(context);
}

/**
* Checks if the stats package is installed
*
* @param context {@link android.content.Context}
* @return {@link Boolean {@link Boolean {@link Boolean {@link Boolean}}}}
*/
private static boolean isStatsPackageInstalledAndSystemApp(Context context)
throws IllegalArgumentException {
if (context == null) {
throw new IllegalArgumentException("'context' cannot be null!");
}
try {
PackageInfo pi = context.getPackageManager().getPackageInfo(STATS_PACKAGE, 0);
boolean isSystemApp = (pi.applicationInfo.flags &
(ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) != 0;
return pi.applicationInfo.enabled && isSystemApp;
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "stats not found!");
return false;
}
}

/**
* Send an event to CyangenStats
Expand All @@ -91,23 +58,34 @@ public static void sendEvent(Context context, Bundle trackingBundle)
if (trackingBundle == null) {
throw new IllegalArgumentException("'trackingBundle' cannot be null!");
}
if (!isStatsCollectionEnabled(context)) {
Logger.logd(TAG, "Stats collection: DISABLED!");
return;
}
Logger.logd(TAG, "Stats collection: ENABLED!");

Intent newIntent = new Intent(ANALYTIC_INTENT);

if (!trackingBundle.containsKey(KEY_TRACKING_ID)) {
Logger.logd(TAG, "No tracking id in bundle");
return;
} else {
if (trackingBundle.containsKey(TrackingBundle.KEY_EVENT_CATEGORY)
&& trackingBundle.containsKey(TrackingBundle.KEY_EVENT_ACTION)) {

final Event.Builder builder = new Event.Builder(
trackingBundle.getString(TrackingBundle.KEY_EVENT_CATEGORY),
trackingBundle.getString(TrackingBundle.KEY_EVENT_ACTION));

if (trackingBundle.containsKey(TrackingBundle.KEY_METADATA_ORIGIN)) {
builder.addField(TrackingBundle.KEY_METADATA_ORIGIN,
trackingBundle.getString(TrackingBundle.KEY_METADATA_ORIGIN));
}
if (trackingBundle.containsKey(TrackingBundle.KEY_METADATA_PACKAGE)) {
builder.addField(TrackingBundle.KEY_METADATA_PACKAGE,
trackingBundle.getString(TrackingBundle.KEY_METADATA_PACKAGE));
}
if (trackingBundle.containsKey(TrackingBundle.KEY_METADATA_VALUE)) {
builder.addField(TrackingBundle.KEY_METADATA_VALUE,
String.valueOf(trackingBundle.get(TrackingBundle.KEY_METADATA_VALUE)));
}
((LauncherApplication)context.getApplicationContext()).sendEvent(builder.build());

Logger.logd(TAG, trackingBundle.toString());
newIntent.putExtras(trackingBundle);
context.sendBroadcast(newIntent);
} else {
Logger.logd(TAG, "Not a valid tracking bundle");
}
Expand Down

0 comments on commit 90106d8

Please sign in to comment.