summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2013-07-03 15:38:29 -0700
committerJean-Baptiste Queru <jbq@google.com>2013-08-02 13:49:41 -0700
commit80ba0a6baec17d5ac5a1e6f9e4b84f7d013d07e6 (patch)
tree89987cb8bb733be484b917f03428dbfe2c2f7865 /core/jni
parent32c308a5f2051a62ab2fb3337d00d84e9035eb9a (diff)
downloadframeworks_base-80ba0a6baec17d5ac5a1e6f9e4b84f7d013d07e6.zip
frameworks_base-80ba0a6baec17d5ac5a1e6f9e4b84f7d013d07e6.tar.gz
frameworks_base-80ba0a6baec17d5ac5a1e6f9e4b84f7d013d07e6.tar.bz2
be more robust with handling unknown sensors
- add support for new sensors (post 4.3) - don't crash when encountering an unknown sensor type - clean-up Bug: 9683153 Change-Id: Iecd883e8a7d0297be1bd2bd4f00c5cc3ffcbccfe
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_hardware_SensorManager.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp
index 6374494..ae0113b 100644
--- a/core/jni/android_hardware_SensorManager.cpp
+++ b/core/jni/android_hardware_SensorManager.cpp
@@ -142,7 +142,13 @@ private:
while ((n = q->read(buffer, 16)) > 0) {
for (int i=0 ; i<n ; i++) {
- env->SetFloatArrayRegion(mScratch, 0, 16, buffer[i].data);
+ if (buffer[i].type == SENSOR_TYPE_STEP_COUNTER) {
+ // step-counter returns a uint64, but the java API only deals with floats
+ float value = float(buffer[i].u64.step_counter);
+ env->SetFloatArrayRegion(mScratch, 0, 1, &value);
+ } else {
+ env->SetFloatArrayRegion(mScratch, 0, 16, buffer[i].data);
+ }
env->CallVoidMethod(mReceiverObject,
gBaseEventQueueClassInfo.dispatchSensorEvent,