From 70b1937340c2c48acfd74def2d92f072e939b4c4 Mon Sep 17 00:00:00 2001 From: Roman Birg Date: Mon, 2 May 2016 11:03:08 -0700 Subject: Trebuchet: send metrics directly when possible 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 d20f7796e45dcae0e619d3bb76a3a89674705702. Ticket: CYNGNOS-2545 Change-Id: I9445cadc429c3158cabb6a7d07e016f6fe3dac19 (cherry picked from commit 90106d85b75a60a8bdc9c4ad891e4a2e7ce548dd) --- Android.mk | 4 +- AndroidManifest.xml | 3 + src/com/android/launcher3/LauncherApplication.java | 14 +++++ .../launcher3/stats/external/StatsUtil.java | 66 ++++++++-------------- 4 files changed, 42 insertions(+), 45 deletions(-) diff --git a/Android.mk b/Android.mk index 5ef85b480..3b21fb936 100644 --- a/Android.mk +++ b/Android.mk @@ -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) \ @@ -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 diff --git a/AndroidManifest.xml b/AndroidManifest.xml index dbdabfa4d..8dbabf28f 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -237,5 +237,8 @@ + + diff --git a/src/com/android/launcher3/LauncherApplication.java b/src/com/android/launcher3/LauncherApplication.java index 4bbcec073..896963e6d 100644 --- a/src/com/android/launcher3/LauncherApplication.java +++ b/src/com/android/launcher3/LauncherApplication.java @@ -20,10 +20,14 @@ import android.app.Application; 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 @@ -37,8 +41,18 @@ public class LauncherApplication extends Application { @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); + } + } + } diff --git a/src/com/android/launcher3/stats/external/StatsUtil.java b/src/com/android/launcher3/stats/external/StatsUtil.java index 697df542c..da8e94e6d 100644 --- a/src/com/android/launcher3/stats/external/StatsUtil.java +++ b/src/com/android/launcher3/stats/external/StatsUtil.java @@ -24,7 +24,10 @@ import android.content.pm.PackageInfo; 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 @@ -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 @@ -91,23 +58,34 @@ public class StatsUtil { 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"); } -- cgit v1.2.3