summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/hardware/SensorManager.java23
-rw-r--r--core/java/android/hardware/SystemSensorManager.java8
-rw-r--r--core/jni/android_hardware_SensorManager.cpp15
3 files changed, 46 insertions, 0 deletions
diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java
index 5d405f92e380..506d710658e4 100644
--- a/core/java/android/hardware/SensorManager.java
+++ b/core/java/android/hardware/SensorManager.java
@@ -1684,4 +1684,27 @@ public abstract class SensorManager {
}
return delay;
}
+
+ /**
+ * Send configuration string to Sensor HAL.
+ *
+ * @param data String which includes sensor physical data.
+ * Sensor HAL is taking care of parsing data from string and
+ * setting values to Sensor HW.
+ *
+ * @return true if successfully send to HAL.
+ */
+ /**
+ * @hide
+ */
+ public boolean SetPhysicalData(String data)
+ {
+ //Log.d(TAG, "SensorManager.SetPhysicalData(" + data + ")");
+ return SetPhysicalDataImpl(data);
+ }
+
+ /**
+ * @hide
+ */
+ protected abstract boolean SetPhysicalDataImpl(String data);
}
diff --git a/core/java/android/hardware/SystemSensorManager.java b/core/java/android/hardware/SystemSensorManager.java
index 2fe8fb6f71ce..bf9722e40134 100644
--- a/core/java/android/hardware/SystemSensorManager.java
+++ b/core/java/android/hardware/SystemSensorManager.java
@@ -45,6 +45,7 @@ public class SystemSensorManager extends SensorManager {
private static native boolean nativeGetSensorAtIndex(long nativeInstance,
Sensor sensor, int index);
private static native boolean nativeIsDataInjectionEnabled(long nativeInstance);
+ private static native boolean nativeSetPhysicalData(long nativeInstance, String data);
private static boolean sSensorModuleInitialized = false;
private static InjectEventQueue mInjectEventQueue = null;
@@ -274,6 +275,13 @@ public class SystemSensorManager extends SensorManager {
}
}
+ @Override
+ protected boolean SetPhysicalDataImpl(String data)
+ {
+ //Log.d(TAG, "SystemSensorManager.SetPhysicalDataImpl(" + data + ")");
+ return nativeSetPhysicalData(mNativeInstance,data);
+ }
+
/*
* BaseEventQueue is the communication channel with the sensor service,
* SensorEventQueue, TriggerEventQueue are subclases and there is one-to-one mapping between
diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp
index 7d0afdcdd109..b8c28a05b4c1 100644
--- a/core/jni/android_hardware_SensorManager.cpp
+++ b/core/jni/android_hardware_SensorManager.cpp
@@ -185,6 +185,18 @@ static jboolean nativeIsDataInjectionEnabled(JNIEnv *_env, jclass _this, jlong s
return mgr->isDataInjectionEnabled();
}
+static jboolean nativeSetPhysicalData(JNIEnv *env, jclass clazz,jlong sensorManager, jstring javaString)
+{
+ SensorManager* mgr = reinterpret_cast<SensorManager*>(sensorManager);
+ const char *nativeString = env->GetStringUTFChars(javaString, JNI_FALSE);
+ bool return_value;
+
+ //ALOGD("android_hardware_SensorManager, call JNI function nativeSetPhysicalData(%s)",nativeString);
+ return_value = mgr->SetPhysicalData(nativeString);
+
+ env->ReleaseStringUTFChars(javaString, nativeString);
+ return return_value;
+}
//----------------------------------------------------------------------------
class Receiver : public LooperCallback {
@@ -358,6 +370,9 @@ static JNINativeMethod gSystemSensorManagerMethods[] = {
{"nativeIsDataInjectionEnabled",
"(J)Z",
(void*)nativeIsDataInjectionEnabled},
+ {"nativeSetPhysicalData",
+ "(JLjava/lang/String;)Z",
+ (void*)nativeSetPhysicalData },
};
static JNINativeMethod gBaseEventQueueMethods[] = {