diff options
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; } |