summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErica Chang <echang@cyngn.com>2016-05-24 10:56:41 -0700
committerErica Chang <echang@cyngn.com>2016-05-25 16:57:03 -0700
commit765f3a08544cf44a145c08110e6ef5e5c741135a (patch)
tree0b43b4b674331c7b196a050cb5f8fec0d3692c72
parent5391aedac2e13155f95e667918ae0956f4d12261 (diff)
downloadandroid_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
-rw-r--r--src/com/android/contacts/incall/InCallMetricsHelper.java23
-rw-r--r--src/com/android/contacts/incall/InCallMetricsJobService.java12
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;