summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/hardware/location/ActivityChangedEvent.java13
-rw-r--r--core/java/android/hardware/location/ActivityRecognitionEvent.java9
-rw-r--r--core/java/android/hardware/location/ActivityRecognitionHardware.java24
-rw-r--r--core/jni/android_hardware_location_ActivityRecognitionHardware.cpp11
-rw-r--r--location/lib/java/com/android/location/provider/ActivityChangedEvent.java13
-rw-r--r--location/lib/java/com/android/location/provider/ActivityRecognitionEvent.java26
-rw-r--r--services/core/java/com/android/server/location/ActivityRecognitionProxy.java4
7 files changed, 80 insertions, 20 deletions
diff --git a/core/java/android/hardware/location/ActivityChangedEvent.java b/core/java/android/hardware/location/ActivityChangedEvent.java
index 0a89207..16cfe6e 100644
--- a/core/java/android/hardware/location/ActivityChangedEvent.java
+++ b/core/java/android/hardware/location/ActivityChangedEvent.java
@@ -76,4 +76,17 @@ public class ActivityChangedEvent implements Parcelable {
parcel.writeInt(activityRecognitionEventArray.length);
parcel.writeTypedArray(activityRecognitionEventArray, flags);
}
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder("[ ActivityChangedEvent:");
+
+ for (ActivityRecognitionEvent event : mActivityRecognitionEvents) {
+ builder.append("\n ");
+ builder.append(event.toString());
+ }
+ builder.append("\n]");
+
+ return builder.toString();
+ }
}
diff --git a/core/java/android/hardware/location/ActivityRecognitionEvent.java b/core/java/android/hardware/location/ActivityRecognitionEvent.java
index 5aeb899..190030a 100644
--- a/core/java/android/hardware/location/ActivityRecognitionEvent.java
+++ b/core/java/android/hardware/location/ActivityRecognitionEvent.java
@@ -75,4 +75,13 @@ public class ActivityRecognitionEvent implements Parcelable {
parcel.writeInt(mEventType);
parcel.writeLong(mTimestampNs);
}
+
+ @Override
+ public String toString() {
+ return String.format(
+ "Activity='%s', EventType=%s, TimestampNs=%s",
+ mActivity,
+ mEventType,
+ mTimestampNs);
+ }
}
diff --git a/core/java/android/hardware/location/ActivityRecognitionHardware.java b/core/java/android/hardware/location/ActivityRecognitionHardware.java
index a4ce4ac..5d3953a 100644
--- a/core/java/android/hardware/location/ActivityRecognitionHardware.java
+++ b/core/java/android/hardware/location/ActivityRecognitionHardware.java
@@ -134,8 +134,8 @@ public class ActivityRecognitionHardware extends IActivityRecognitionHardware.St
* Called by the Activity-Recognition HAL.
*/
private void onActivityChanged(Event[] events) {
- int size = mSinks.beginBroadcast();
- if (size == 0 || events == null || events.length == 0) {
+ if (events == null || events.length == 0) {
+ Log.d(TAG, "No events to broadcast for onActivityChanged.");
return;
}
@@ -151,6 +151,7 @@ public class ActivityRecognitionHardware extends IActivityRecognitionHardware.St
ActivityChangedEvent activityChangedEvent =
new ActivityChangedEvent(activityRecognitionEventArray);
+ int size = mSinks.beginBroadcast();
for (int i = 0; i < size; ++i) {
IActivityRecognitionHardwareSink sink = mSinks.getBroadcastItem(i);
try {
@@ -181,8 +182,8 @@ public class ActivityRecognitionHardware extends IActivityRecognitionHardware.St
return INVALID_ACTIVITY_TYPE;
}
- int supporteActivitiesLength = mSupportedActivities.length;
- for (int i = 0; i < supporteActivitiesLength; ++i) {
+ int supportedActivitiesLength = mSupportedActivities.length;
+ for (int i = 0; i < supportedActivitiesLength; ++i) {
if (activity.equals(mSupportedActivities[i])) {
return i;
}
@@ -198,7 +199,7 @@ public class ActivityRecognitionHardware extends IActivityRecognitionHardware.St
mContext.enforceCallingPermission(HARDWARE_PERMISSION, message);
}
- private static String[] fetchSupportedActivities() {
+ private String[] fetchSupportedActivities() {
String[] supportedActivities = nativeGetSupportedActivities();
if (supportedActivities != null) {
return supportedActivities;
@@ -211,14 +212,15 @@ public class ActivityRecognitionHardware extends IActivityRecognitionHardware.St
static { nativeClassInit(); }
private static native void nativeClassInit();
- private static native void nativeInitialize();
- private static native void nativeRelease();
private static native boolean nativeIsSupported();
- private static native String[] nativeGetSupportedActivities();
- private static native int nativeEnableActivityEvent(
+
+ private native void nativeInitialize();
+ private native void nativeRelease();
+ private native String[] nativeGetSupportedActivities();
+ private native int nativeEnableActivityEvent(
int activityType,
int eventType,
long reportLatenceNs);
- private static native int nativeDisableActivityEvent(int activityType, int eventType);
- private static native int nativeFlush();
+ private native int nativeDisableActivityEvent(int activityType, int eventType);
+ private native int nativeFlush();
}
diff --git a/core/jni/android_hardware_location_ActivityRecognitionHardware.cpp b/core/jni/android_hardware_location_ActivityRecognitionHardware.cpp
index 5b542ba..b8fa04c 100644
--- a/core/jni/android_hardware_location_ActivityRecognitionHardware.cpp
+++ b/core/jni/android_hardware_location_ActivityRecognitionHardware.cpp
@@ -94,6 +94,7 @@ static void activity_callback(
JNIEnv* env = NULL;
int result = attach_thread(&env);
if (result != JNI_OK) {
+ ALOGE("Unable to attach thread with JNI.");
return;
}
@@ -215,7 +216,7 @@ static jobjectArray get_supported_activities(JNIEnv* env, jobject obj) {
return NULL;
}
- jclass string_class = env->FindClass("java/lang/String;");
+ jclass string_class = env->FindClass("java/lang/String");
if (string_class == NULL) {
ALOGE("Unable to find String class for supported activities.");
return NULL;
@@ -229,14 +230,8 @@ static jobjectArray get_supported_activities(JNIEnv* env, jobject obj) {
for (int i = 0; i < list_size; ++i) {
const char* string_ptr = const_cast<const char*>(list[i]);
- jsize string_length = strlen(string_ptr);
- jstring string = env->NewString((const jchar*) string_ptr, string_length);
+ jstring string = env->NewStringUTF(string_ptr);
env->SetObjectArrayElement(string_array, i, string);
-
- // log debugging information in case we need to try to trace issues with the strings
- if (string_length) {
- ALOGD("Invalid activity (index=%d) name size: %d", i, string_length);
- }
}
return string_array;
diff --git a/location/lib/java/com/android/location/provider/ActivityChangedEvent.java b/location/lib/java/com/android/location/provider/ActivityChangedEvent.java
index 8707a10..c7dfc88 100644
--- a/location/lib/java/com/android/location/provider/ActivityChangedEvent.java
+++ b/location/lib/java/com/android/location/provider/ActivityChangedEvent.java
@@ -40,4 +40,17 @@ public class ActivityChangedEvent {
public Iterable<ActivityRecognitionEvent> getActivityRecognitionEvents() {
return mActivityRecognitionEvents;
}
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder("[ ActivityChangedEvent:");
+
+ for (ActivityRecognitionEvent event : mActivityRecognitionEvents) {
+ builder.append("\n ");
+ builder.append(event.toString());
+ }
+ builder.append("\n]");
+
+ return builder.toString();
+ }
}
diff --git a/location/lib/java/com/android/location/provider/ActivityRecognitionEvent.java b/location/lib/java/com/android/location/provider/ActivityRecognitionEvent.java
index 8c719ce..a39cff2 100644
--- a/location/lib/java/com/android/location/provider/ActivityRecognitionEvent.java
+++ b/location/lib/java/com/android/location/provider/ActivityRecognitionEvent.java
@@ -41,4 +41,30 @@ public class ActivityRecognitionEvent {
public long getTimestampNs() {
return mTimestampNs;
}
+
+ @Override
+ public String toString() {
+ String eventString;
+ switch (mEventType) {
+ case ActivityRecognitionProvider.EVENT_TYPE_ENTER:
+ eventString = "Enter";
+ break;
+ case ActivityRecognitionProvider.EVENT_TYPE_EXIT:
+ eventString = "Exit";
+ break;
+ case ActivityRecognitionProvider.EVENT_TYPE_FLUSH_COMPLETE:
+ eventString = "FlushComplete";
+ break;
+ default:
+ eventString = "<Invalid>";
+ break;
+ }
+
+ return String.format(
+ "Activity='%s', EventType=%s(%s), TimestampNs=%s",
+ mActivity,
+ eventString,
+ mEventType,
+ mTimestampNs);
+ }
}
diff --git a/services/core/java/com/android/server/location/ActivityRecognitionProxy.java b/services/core/java/com/android/server/location/ActivityRecognitionProxy.java
index 7e7f2e4..607805b 100644
--- a/services/core/java/com/android/server/location/ActivityRecognitionProxy.java
+++ b/services/core/java/com/android/server/location/ActivityRecognitionProxy.java
@@ -31,7 +31,8 @@ import android.util.Log;
* @hide
*/
public class ActivityRecognitionProxy {
- private final String TAG = "ActivityRecognitionProxy";
+ private static final String TAG = "ActivityRecognitionProxy";
+
private final ServiceWatcher mServiceWatcher;
private final ActivityRecognitionHardware mActivityRecognitionHardware;
@@ -85,6 +86,7 @@ public class ActivityRecognitionProxy {
// try to bind the provider
if (!activityRecognitionProxy.mServiceWatcher.start()) {
+ Log.e(TAG, "ServiceWatcher could not start.");
return null;
}