From 614612edb508dd5ef1a8f463105b16894906264e Mon Sep 17 00:00:00 2001 From: destradaa Date: Mon, 24 Aug 2015 10:41:53 -0700 Subject: Disable AR HW when client binder dies. Ensure that activities are unregistered from AR HW when the client's binder dies. This clean up is required to prevent AR HW to keep active when there are no clients listening for events. Bug: 19894637 Change-Id: Iccd609cf1d2d4a4453c7a96cb8645b61639c3234 --- .../java/com/android/location/provider/ActivityRecognitionProvider.java | 2 ++ 1 file changed, 2 insertions(+) (limited to 'location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java') diff --git a/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java b/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java index da33464..25f9fa2 100644 --- a/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java +++ b/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java @@ -43,6 +43,8 @@ public final class ActivityRecognitionProvider { public static final String ACTIVITY_STILL = "android.activity_recognition.still"; public static final String ACTIVITY_TILTING = "android.activity_recognition.tilting"; + // NOTE: when adding an additional EVENT_TYPE_, EVENT_TYPE_COUNT needs to be updated in + // android.hardware.location.ActivityRecognitionHardware public static final int EVENT_TYPE_FLUSH_COMPLETE = 0; public static final int EVENT_TYPE_ENTER = 1; public static final int EVENT_TYPE_EXIT = 2; -- cgit v1.1 From e1a5144a1ddded30dca1e1425739649032a86bac Mon Sep 17 00:00:00 2001 From: destradaa Date: Tue, 23 Jun 2015 17:25:53 -0700 Subject: Cherry-pick: Add callback-based support for HW Activity Recognition. Add a callback-based mechanism for GmsCore to connect to Hardware Activity Recognition. This allows GmsCore to stop polling to identify if the Android platform supports the functionality or not. Bug: 17112184 Change-Id: I8f9459cbd15eecd70f6919c6551e6f7a663c732f --- .../provider/ActivityRecognitionProvider.java | 24 +++++++++------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java') diff --git a/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java b/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java index da33464..f4943d5 100644 --- a/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java +++ b/location/lib/java/com/android/location/provider/ActivityRecognitionProvider.java @@ -31,8 +31,7 @@ import java.util.HashSet; */ public final class ActivityRecognitionProvider { private final IActivityRecognitionHardware mService; - private final HashSet mSinkSet = new HashSet(); - private final SinkTransport mSinkTransport = new SinkTransport(); + private final HashSet mSinkSet = new HashSet<>(); // the following constants must remain in sync with activity_recognition.h @@ -60,7 +59,7 @@ public final class ActivityRecognitionProvider { throws RemoteException { Preconditions.checkNotNull(service); mService = service; - mService.registerSink(mSinkTransport); + mService.registerSink(new SinkTransport()); } public String[] getSupportedActivities() throws RemoteException { @@ -102,26 +101,23 @@ public final class ActivityRecognitionProvider { private final class SinkTransport extends IActivityRecognitionHardwareSink.Stub { @Override - public void onActivityChanged( - android.hardware.location.ActivityChangedEvent activityChangedEvent) { + public void onActivityChanged(android.hardware.location.ActivityChangedEvent event) { Collection sinks; synchronized (mSinkSet) { if (mSinkSet.isEmpty()) { return; } - - sinks = new ArrayList(mSinkSet); + sinks = new ArrayList<>(mSinkSet); } // translate the event from platform internal and GmsCore types - ArrayList gmsEvents = - new ArrayList(); - for (android.hardware.location.ActivityRecognitionEvent event - : activityChangedEvent.getActivityRecognitionEvents()) { + ArrayList gmsEvents = new ArrayList<>(); + for (android.hardware.location.ActivityRecognitionEvent reportingEvent + : event.getActivityRecognitionEvents()) { ActivityRecognitionEvent gmsEvent = new ActivityRecognitionEvent( - event.getActivity(), - event.getEventType(), - event.getTimestampNs()); + reportingEvent.getActivity(), + reportingEvent.getEventType(), + reportingEvent.getTimestampNs()); gmsEvents.add(gmsEvent); } ActivityChangedEvent gmsEvent = new ActivityChangedEvent(gmsEvents); -- cgit v1.1