diff options
author | Mathias Agopian <mathias@google.com> | 2013-07-03 15:38:29 -0700 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2013-08-02 13:49:41 -0700 |
commit | 80ba0a6baec17d5ac5a1e6f9e4b84f7d013d07e6 (patch) | |
tree | 89987cb8bb733be484b917f03428dbfe2c2f7865 /core/jni | |
parent | 32c308a5f2051a62ab2fb3337d00d84e9035eb9a (diff) | |
download | frameworks_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.cpp | 8 |
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, |