diff options
author | Erica Chang <echang@cyngn.com> | 2016-05-24 10:56:41 -0700 |
---|---|---|
committer | Erica Chang <echang@cyngn.com> | 2016-05-25 16:57:03 -0700 |
commit | 765f3a08544cf44a145c08110e6ef5e5c741135a (patch) | |
tree | 0b43b4b674331c7b196a050cb5f8fec0d3692c72 /src | |
parent | 5391aedac2e13155f95e667918ae0956f4d12261 (diff) | |
download | android_packages_apps_Contacts-765f3a08544cf44a145c08110e6ef5e5c741135a.tar.gz android_packages_apps_Contacts-765f3a08544cf44a145c08110e6ef5e5c741135a.tar.bz2 android_packages_apps_Contacts-765f3a08544cf44a145c08110e6ef5e5c741135a.zip |
Contacts: only schedule metrics JobService if Ambient exists
Added checks for the existence of AmbientCore. If it's not
available, do not schedule the JobService for metrics or process
metrics.
Issue-id: CYNGNOS-2919
Change-Id: I1493cbabae3c2c0bdb7e34575b803b0df2c0d134
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/contacts/incall/InCallMetricsHelper.java | 23 | ||||
-rw-r--r-- | src/com/android/contacts/incall/InCallMetricsJobService.java | 12 |
2 files changed, 30 insertions, 5 deletions
diff --git a/src/com/android/contacts/incall/InCallMetricsHelper.java b/src/com/android/contacts/incall/InCallMetricsHelper.java index 710bf3fc6..501c53fa0 100644 --- a/src/com/android/contacts/incall/InCallMetricsHelper.java +++ b/src/com/android/contacts/incall/InCallMetricsHelper.java @@ -66,6 +66,7 @@ public class InCallMetricsHelper { private HandlerThread mHandlerThread; private Handler mHandler; private Context mContext; + private int mAmbientStatus = CyanogenAmbientUtil.MISSING; private static final int SCHEDULER_JOB_ID = 1; public enum Categories { @@ -133,23 +134,38 @@ public class InCallMetricsHelper { }; public static void init(Context context) { - boolean scheduleJob = true; + InCallMetricsHelper helper = getInstance(context); + helper.mAmbientStatus = CyanogenAmbientUtil.isCyanogenAmbientAvailable(context); + // only set job schedule flag default to true if there is Ambient + boolean scheduleJob = (helper.mAmbientStatus == CyanogenAmbientUtil.SUCCESS); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); if (jobScheduler == null) { Log.e(TAG, "JOB_SCHEDULER_SERVICE error, cannot schedule metrics collection."); return; } + // check for outstanding job for (JobInfo jobInfo : jobScheduler.getAllPendingJobs()) { if (jobInfo.getId() == SCHEDULER_JOB_ID) { + if (helper.mAmbientStatus != CyanogenAmbientUtil.SUCCESS) { + // cancel job if Ambient is not available + jobScheduler.cancel(SCHEDULER_JOB_ID); + } + // there's already pending job scheduled, no need to schedule a new one scheduleJob = false; + if (DEBUG) { + Log.d(TAG, "init, Job already scheduled"); + } break; } } if (scheduleJob) { + if (DEBUG) { + Log.d(TAG, "init, schedule new Job"); + } JobInfo.Builder jobBuilder = new JobInfo.Builder(SCHEDULER_JOB_ID, new ComponentName(context, InCallMetricsJobService.class)); - jobBuilder.setPeriodic(AlarmManager.INTERVAL_DAY) + jobBuilder.setPeriodic(AlarmManager.INTERVAL_HALF_HOUR) .setPersisted(true) .setBackoffCriteria(AlarmManager.INTERVAL_FIFTEEN_MINUTES, JobInfo.BACKOFF_POLICY_EXPONENTIAL); @@ -468,6 +484,9 @@ public class InCallMetricsHelper { */ public static void increaseContactAutoMergeCount(final Context context, final String rawIds) { final InCallMetricsHelper helper = getInstance(context); + if (helper.mAmbientStatus != CyanogenAmbientUtil.SUCCESS) { + return; + } helper.mHandler.post(new Runnable() { @Override public void run() { diff --git a/src/com/android/contacts/incall/InCallMetricsJobService.java b/src/com/android/contacts/incall/InCallMetricsJobService.java index 08c2c89bd..73a1b4dda 100644 --- a/src/com/android/contacts/incall/InCallMetricsJobService.java +++ b/src/com/android/contacts/incall/InCallMetricsJobService.java @@ -31,7 +31,9 @@ public class InCallMetricsJobService extends JobService { private JobDoneCallback mCallback = new JobDoneCallback() { @Override public void callback(JobParameters params, boolean reschedule) { - if (DEBUG) Log.d(TAG, "JobDoneCallback"); + if (DEBUG) { + Log.d(TAG, "JobDoneCallback"); + } mScheduledTask = null; jobFinished(params, reschedule); } @@ -39,14 +41,18 @@ public class InCallMetricsJobService extends JobService { @Override public boolean onStartJob(JobParameters params) { - if (DEBUG) Log.d(TAG, "onStartJob"); + if (DEBUG) { + Log.d(TAG, "onStartJob"); + } mScheduledTask = InCallMetricsHelper.prepareAndSend(this, mCallback, params); return true; } @Override public boolean onStopJob(JobParameters params) { - if (DEBUG) Log.d(TAG, "onStopJob"); + if (DEBUG){ + Log.d(TAG, "onStopJob"); + } if (mScheduledTask != null) { InCallMetricsHelper.stopTask(this, mScheduledTask); mScheduledTask = null; |