diff options
| -rw-r--r-- | core/java/android/hardware/SensorManager.java | 23 | ||||
| -rw-r--r-- | core/java/android/hardware/SystemSensorManager.java | 8 | ||||
| -rw-r--r-- | core/jni/android_hardware_SensorManager.cpp | 15 |
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[] = { |