summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Birg <roman@cyngn.com>2016-05-02 18:03:08 (GMT)
committerGerrit Code Review <gerrit@cyanogenmod.org>2016-05-04 21:18:27 (GMT)
commit70b1937340c2c48acfd74def2d92f072e939b4c4 (patch)
tree2493aae8bdf10c8491d49a57441bb4ebb82772d5
parent058ef981510ce35ca6e7f39be57a8d76c4865575 (diff)
downloadandroid_packages_apps_Trebuchet-70b1937340c2c48acfd74def2d92f072e939b4c4.zip
android_packages_apps_Trebuchet-70b1937340c2c48acfd74def2d92f072e939b4c4.tar.gz
android_packages_apps_Trebuchet-70b1937340c2c48acfd74def2d92f072e939b4c4.tar.bz2
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)
-rw-r--r--Android.mk4
-rw-r--r--AndroidManifest.xml3
-rw-r--r--src/com/android/launcher3/LauncherApplication.java14
-rw-r--r--src/com/android/launcher3/stats/external/StatsUtil.java66
4 files changed, 42 insertions, 45 deletions
diff --git a/Android.mk b/Android.mk
index 5ef85b4..3b21fb9 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 dbdabfa..8dbabf2 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -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>
diff --git a/src/com/android/launcher3/LauncherApplication.java b/src/com/android/launcher3/LauncherApplication.java
index 4bbcec0..896963e 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 697df54..da8e94e 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");
}