summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorRaphael <raphael@google.com>2012-03-24 15:15:28 -0700
committerRaphael <raphael@google.com>2012-03-24 16:41:14 -0700
commitb764200fe538498746c7f15e2109a60fba565aca (patch)
tree932b40b205727a58508aaaada8570424a57ae4aa /apps
parent6ffafcde03e73c4c3ee3a98d7a7c810ccccceefb (diff)
downloadreplicant_sdk-b764200fe538498746c7f15e2109a60fba565aca.zip
replicant_sdk-b764200fe538498746c7f15e2109a60fba565aca.tar.gz
replicant_sdk-b764200fe538498746c7f15e2109a60fba565aca.tar.bz2
Sdk Controller: improve sensor speed & more.
- Landscape layout for sensor activity. - Fixes some comments from change Ia4ae2e71. - Limit update rate to 50 Hz, default to 20. - Fixed typo in temperature sensor name which prevented it from being recognized. - Replaced the String.format for sending emulator string data by StringBuilder.append(float). On an ADP2 device this reduces the time from an average 9-15 ms to 1-2 ms. Change-Id: Iad5fe3fada23dbdf4bc7cc162fb2daeaf8a113f5
Diffstat (limited to 'apps')
-rwxr-xr-xapps/SdkController/SdkControllerApp/AndroidManifest.xml12
-rwxr-xr-xapps/SdkController/SdkControllerApp/res/layout-land/sensors.xml168
-rwxr-xr-xapps/SdkController/SdkControllerApp/res/layout/main.xml2
-rwxr-xr-xapps/SdkController/SdkControllerApp/res/layout/multitouch.xml2
-rwxr-xr-xapps/SdkController/SdkControllerApp/res/layout/sensors.xml17
-rwxr-xr-xapps/SdkController/SdkControllerApp/res/values/strings.xml14
-rwxr-xr-xapps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/activities/SensorActivity.java7
-rwxr-xr-xapps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/handlers/SensorsHandler.java92
8 files changed, 256 insertions, 58 deletions
diff --git a/apps/SdkController/SdkControllerApp/AndroidManifest.xml b/apps/SdkController/SdkControllerApp/AndroidManifest.xml
index dda070f..e6c876a 100755
--- a/apps/SdkController/SdkControllerApp/AndroidManifest.xml
+++ b/apps/SdkController/SdkControllerApp/AndroidManifest.xml
@@ -23,17 +23,17 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
-
+
<activity
android:name=".activities.SensorActivity"
- android:launchMode="singleInstance"
- android:windowSoftInputMode="stateUnchanged"/>
-
+ android:launchMode="singleInstance"
+ android:windowSoftInputMode="stateUnchanged" android:label="@string/sensors_activity_title"/>
+
<activity
android:name=".activities.MultiTouchActivity"
android:launchMode="singleInstance"
- android:screenOrientation="portrait"
- android:theme="@style/Theme.MultiTouch"
+ android:screenOrientation="portrait"
+ android:theme="@style/Theme.MultiTouch"
android:windowSoftInputMode="stateHidden"/>
<service
diff --git a/apps/SdkController/SdkControllerApp/res/layout-land/sensors.xml b/apps/SdkController/SdkControllerApp/res/layout-land/sensors.xml
new file mode 100755
index 0000000..2d14089
--- /dev/null
+++ b/apps/SdkController/SdkControllerApp/res/layout-land/sensors.xml
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+-->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ >
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+
+ <TableRow
+ android:id="@+id/row1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/sensors_sample_rate"
+ android:gravity="right"
+ android:layout_marginRight="8dp"
+ />
+
+ <EditText
+ android:id="@+id/textSampleRate"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ems="4"
+ android:gravity="right"
+ android:imeOptions="actionNone|flagNoExtractUi|flagNoFullscreen|"
+ android:inputType="number"
+ android:text="@string/sensors_default_sample_rate"
+ tools:ignore="HardcodedText" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/sensors_hz_per_sensor" />
+
+ </TableRow>
+
+ <TableRow
+ android:id="@+id/row2"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignBaseline="@+id/row1"
+ >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="right"
+ android:layout_marginRight="8dp"
+ android:text="@string/sensors_actual_rate" />
+
+ <TextView
+ android:id="@+id/textActualRate"
+ android:gravity="right"
+ android:text="--"
+ tools:ignore="HardcodedText"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/sensors_hz_average" />
+
+ <!-- This 1-pixel wide invisible edit field makes sure that row1 and
+ row2 have the same height and an equal baseline. This works around
+ the fact that row2's attribute layout_alignBaseline=row1 is in fact
+ ignored. -->
+ <EditText
+ android:layout_width="1px"
+ android:layout_height="wrap_content"
+ android:imeOptions="actionNone"
+ android:focusable="false"
+ android:focusableInTouchMode="false"
+ android:visibility="invisible"
+ />
+
+ </TableRow>
+
+ </RelativeLayout>
+
+ <TableLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ >
+
+ <TableRow
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" >
+
+ </TableRow>
+
+ <TableRow
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" >
+
+ </TableRow>
+
+ </TableLayout>
+
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:text="@string/sensors_top_description" />
+
+ <ScrollView
+ android:id="@+id/scrollView1"
+ android:layout_width="fill_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1" >
+
+ <TableLayout
+ android:id="@+id/tableLayout"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:saveEnabled="false" />
+
+ </ScrollView>
+
+ <!-- Placeholder status text. Becomes visibility=gone when empty. -->
+ <TextView
+ android:id="@+id/textStatus"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:textAppearance="?android:attr/textAppearanceSmall" />
+
+ <!-- Placeholder error text. Becomes visibility=gone when empty. -->
+ <TextView
+ android:id="@+id/textError"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:background="#F00F"
+ android:padding="8dp"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="#FFF0" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/apps/SdkController/SdkControllerApp/res/layout/main.xml b/apps/SdkController/SdkControllerApp/res/layout/main.xml
index 90faa67..1a98d9e 100755
--- a/apps/SdkController/SdkControllerApp/res/layout/main.xml
+++ b/apps/SdkController/SdkControllerApp/res/layout/main.xml
@@ -46,6 +46,7 @@
android:text="@string/main_label_service"
android:textAppearance="?android:attr/textAppearanceLarge" />
+ <!-- Placeholder status text. Becomes visibility=gone when empty. -->
<TextView
android:id="@+id/textStatus"
android:layout_width="wrap_content"
@@ -57,6 +58,7 @@
android:textAppearance="?android:attr/textAppearanceLarge"
tools:ignore="HardcodedText" />
+ <!-- Placeholder error text. Becomes visibility=gone when empty. -->
<TextView
android:id="@+id/textError"
android:layout_width="wrap_content"
diff --git a/apps/SdkController/SdkControllerApp/res/layout/multitouch.xml b/apps/SdkController/SdkControllerApp/res/layout/multitouch.xml
index 90018c6..0aec0fb 100755
--- a/apps/SdkController/SdkControllerApp/res/layout/multitouch.xml
+++ b/apps/SdkController/SdkControllerApp/res/layout/multitouch.xml
@@ -9,6 +9,7 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
+ <!-- Placeholder status text. Becomes visibility=gone when empty. -->
<TextView
android:id="@+id/textStatus"
android:layout_width="fill_parent"
@@ -16,6 +17,7 @@
android:layout_alignParentTop="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
+ <!-- Placeholder error text. Becomes visibility=gone when empty. -->
<TextView
android:id="@+id/textError"
android:layout_width="fill_parent"
diff --git a/apps/SdkController/SdkControllerApp/res/layout/sensors.xml b/apps/SdkController/SdkControllerApp/res/layout/sensors.xml
index ca48af5..8f5df34 100755
--- a/apps/SdkController/SdkControllerApp/res/layout/sensors.xml
+++ b/apps/SdkController/SdkControllerApp/res/layout/sensors.xml
@@ -18,9 +18,11 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="vertical" xmlns:tools="http://schemas.android.com/tools">
+ android:orientation="vertical"
+ >
<TableLayout
android:layout_width="wrap_content"
@@ -38,8 +40,7 @@
android:text="@string/sensors_sample_rate"
android:gravity="right"
android:layout_marginRight="8dp"
- />
-
+ />
<EditText
android:id="@+id/textSampleRate"
android:layout_width="wrap_content"
@@ -48,10 +49,9 @@
android:gravity="right"
android:imeOptions="actionNone|flagNoExtractUi|flagNoFullscreen|"
android:inputType="number"
- android:text="50"
- tools:ignore="HardcodedText" />
+ android:text="@string/sensors_default_sample_rate" />
- <TextView
+ <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sensors_hz_per_sensor" />
@@ -61,7 +61,8 @@
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
- <TextView
+
+ <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
@@ -107,6 +108,7 @@
</ScrollView>
+ <!-- Placeholder status text. Becomes visibility=gone when empty. -->
<TextView
android:id="@+id/textStatus"
android:layout_width="fill_parent"
@@ -114,6 +116,7 @@
android:layout_marginTop="8dp"
android:textAppearance="?android:attr/textAppearanceSmall" />
+ <!-- Placeholder error text. Becomes visibility=gone when empty. -->
<TextView
android:id="@+id/textError"
android:layout_width="fill_parent"
diff --git a/apps/SdkController/SdkControllerApp/res/values/strings.xml b/apps/SdkController/SdkControllerApp/res/values/strings.xml
index c76e95f..bb8a1c0 100755
--- a/apps/SdkController/SdkControllerApp/res/values/strings.xml
+++ b/apps/SdkController/SdkControllerApp/res/values/strings.xml
@@ -20,13 +20,11 @@
<resources>
<!-- Strings for manifest. -->
- <!-- App name. TODO change. This is a placeholder to easily differentiate
- the name in the home launcher compared to the MT/sensor apps. -->
- <string name="app_name">New Sdk Controller</string>
- <string name="service_description">Background service for Sdk Controller App</string>
+ <string name="app_name">SDK Controller</string>
+ <string name="service_description">Background service for SDK Controller</string>
<!-- Strings for service. -->
- <string name="service_notif_title">SdkController is running</string>
+ <string name="service_notif_title">SDK Controller is running</string>
<!-- Strings for layout/main -->
<string name="main_label_service">Service:</string>
@@ -35,10 +33,16 @@
<string name="main_btn_open_sensors">Control Sensors</string>
<string name="main_service_status_connected">Emulator Connected</string>
<string name="main_service_status_disconnected">Emulator Connected</string>
+
+ <!-- Strings for layout/sensors -->
+ <string name="sensors_activity_title">SDK Controller &gt; Sensors</string>
<string name="sensors_top_description">Available Sensors:</string>
<string name="sensors_sample_rate">Sample Rate</string>
<string name="sensors_hz_per_sensor">Hz per sensor</string>
<string name="sensors_actual_rate">Actual</string>
<string name="sensors_hz_average">Hz average</string>
+ <!-- Default sample rate for SensorsActivity UI.
+ Should match the default for SensorsHandler.mUpdateTargetMs. -->
+ <string name="sensors_default_sample_rate">20</string>
</resources>
diff --git a/apps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/activities/SensorActivity.java b/apps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/activities/SensorActivity.java
index df92611..5055c23 100755
--- a/apps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/activities/SensorActivity.java
+++ b/apps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/activities/SensorActivity.java
@@ -322,10 +322,9 @@ public class SensorActivity extends BaseBindingActivity
try {
int hz = Integer.parseInt(str.trim());
- // Cap the value. 50 Hz is a reasonable value for the emulator.
- // Allow a bit more since modern hardware can do it.
- if (hz <= 0 || hz > 100) {
- hz = 100;
+ // Cap the value. 50 Hz is a reasonable max value for the emulator.
+ if (hz <= 0 || hz > 50) {
+ hz = 50;
}
if (hz != mTargetSampleRate) {
diff --git a/apps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/handlers/SensorsHandler.java b/apps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/handlers/SensorsHandler.java
index 942b605..498b86d 100755
--- a/apps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/handlers/SensorsHandler.java
+++ b/apps/SdkController/SdkControllerApp/src/com/android/tools/sdkcontroller/handlers/SensorsHandler.java
@@ -36,12 +36,16 @@ public class SensorsHandler extends BaseHandler {
@SuppressWarnings("hiding")
private static String TAG = SensorsHandler.class.getSimpleName();
@SuppressWarnings("hiding")
- private static boolean DEBUG = true;
+ private static boolean DEBUG = false;
/**
- * The minimum update time per sensor. Ignored if 0 or negative.
+ * The target update time per sensor. Ignored if 0 or negative.
* Sensor updates that arrive faster than this delay are ignored.
+ * Ideally the emulator can be updated at up to 50 fps, however
+ * for average power devices something like 20 fps is more
+ * reasonable.
+ * Default value should match res/values/strings.xml > sensors_default_sample_rate.
*/
- private long mUpdateTargetMs = 1000/50; // 50 fps in milliseconds
+ private long mUpdateTargetMs = 1000/20; // 20 fps in milliseconds
private long mGlobalAvgUpdateMs = 0;
@@ -347,8 +351,7 @@ public class SensorsHandler extends BaseHandler {
private String mEmulatorFriendlyName;
/** Formats string to show in the TextView. */
private String mTextFmt;
- /** Formats string to send to the emulator. */
- private String mMsgFmt;
+ private int mExpectedLen;
private int mNbValues = 0;
private float[] mValues = new float[3];
/**
@@ -382,83 +385,83 @@ public class SensorsHandler extends BaseHandler {
// 3 floats.
mTextFmt = "%+.2f %+.2f %+.2f";
mEmulatorFriendlyName = "acceleration";
- mMsgFmt = mEmulatorFriendlyName + ":%g:%g:%g\0";
+ mExpectedLen = 3;
break;
case 9: // Sensor.TYPE_GRAVITY is missing in API 7
// 3 floats.
mUiName = "Gravity";
mTextFmt = "%+.2f %+.2f %+.2f";
mEmulatorFriendlyName = "gravity";
- mMsgFmt = mEmulatorFriendlyName + ":%g:%g:%g\0";
+ mExpectedLen = 3;
break;
case Sensor.TYPE_GYROSCOPE:
mUiName = "Gyroscope";
// 3 floats.
mTextFmt = "%+.2f %+.2f %+.2f";
mEmulatorFriendlyName = "gyroscope";
- mMsgFmt = mEmulatorFriendlyName + ":%g:%g:%g\0";
+ mExpectedLen = 3;
break;
case Sensor.TYPE_LIGHT:
mUiName = "Light";
// 1 integer.
mTextFmt = "%.0f";
mEmulatorFriendlyName = "light";
- mMsgFmt = mEmulatorFriendlyName + ":%g\0";
+ mExpectedLen = 1;
break;
case 10: // Sensor.TYPE_LINEAR_ACCELERATION is missing in API 7
mUiName = "Linear acceleration";
// 3 floats.
mTextFmt = "%+.2f %+.2f %+.2f";
mEmulatorFriendlyName = "linear-acceleration";
- mMsgFmt = mEmulatorFriendlyName + ":%g:%g:%g\0";
+ mExpectedLen = 3;
break;
case Sensor.TYPE_MAGNETIC_FIELD:
mUiName = "Magnetic field";
// 3 floats.
mTextFmt = "%+.2f %+.2f %+.2f";
mEmulatorFriendlyName = "magnetic-field";
- mMsgFmt = mEmulatorFriendlyName + ":%g:%g:%g\0";
+ mExpectedLen = 3;
break;
case Sensor.TYPE_ORIENTATION:
mUiName = "Orientation";
// 3 integers.
mTextFmt = "%+03.0f %+03.0f %+03.0f";
mEmulatorFriendlyName = "orientation";
- mMsgFmt = mEmulatorFriendlyName + ":%g:%g:%g\0";
+ mExpectedLen = 3;
break;
case Sensor.TYPE_PRESSURE:
mUiName = "Pressure";
// 1 integer.
mTextFmt = "%.0f";
mEmulatorFriendlyName = "pressure";
- mMsgFmt = mEmulatorFriendlyName + ":%g\0";
+ mExpectedLen = 1;
break;
case Sensor.TYPE_PROXIMITY:
mUiName = "Proximity";
// 1 integer.
mTextFmt = "%.0f";
mEmulatorFriendlyName = "proximity";
- mMsgFmt = mEmulatorFriendlyName + ":%g\0";
+ mExpectedLen = 1;
break;
case 11: // Sensor.TYPE_ROTATION_VECTOR is missing in API 7
mUiName = "Rotation";
// 3 floats.
mTextFmt = "%+.2f %+.2f %+.2f";
mEmulatorFriendlyName = "rotation";
- mMsgFmt = mEmulatorFriendlyName + ":%g:%g:%g\0";
+ mExpectedLen = 3;
break;
case Sensor.TYPE_TEMPERATURE:
mUiName = "Temperature";
// 1 integer.
mTextFmt = "%.0f";
- mEmulatorFriendlyName = "tempterature";
- mMsgFmt = mEmulatorFriendlyName + ":%g\0";
+ mEmulatorFriendlyName = "temperature";
+ mExpectedLen = 1;
break;
default:
mUiName = "<Unknown>";
mTextFmt = "N/A";
mEmulatorFriendlyName = "unknown";
- mMsgFmt = mEmulatorFriendlyName + "\0";
+ mExpectedLen = 0;
if (DEBUG) Log.e(TAG, "Unknown sensor type " + mSensor.getType() +
" for sensor " + mSensor.getName());
break;
@@ -586,6 +589,7 @@ public class SensorsHandler extends BaseHandler {
private long mLastUpdateTS;
/** Last display update time-stamp. */
private long mLastDisplayTS;
+ private final StringBuilder mTempStr = new StringBuilder();
/**
* Handles "sensor changed" event.
@@ -593,13 +597,12 @@ public class SensorsHandler extends BaseHandler {
*/
@Override
public void onSensorChanged(SensorEvent event) {
- long now = SystemClock.currentThreadTimeMillis(); //.elapsedRealtime();
+ long now = SystemClock.currentThreadTimeMillis();
- long nowDiff = 0;
+ long deltaMs = 0;
if (mLastUpdateTS != 0) {
- nowDiff = now - mLastUpdateTS;
- Log.d(TAG, String.format("%d < %d < %d-- %s", mUpdateTargetMs, nowDiff, mGlobalAvgUpdateMs, mSensor.getName() ));
- if (mUpdateTargetMs > 0 && nowDiff < mUpdateTargetMs) {
+ deltaMs = now - mLastUpdateTS;
+ if (mUpdateTargetMs > 0 && deltaMs < mUpdateTargetMs) {
// New sample is arriving too fast. Discard it.
return;
}
@@ -608,26 +611,35 @@ public class SensorsHandler extends BaseHandler {
// Format message that will be sent to the emulator.
float[] values = event.values;
final int len = values.length;
- String str;
- if (len == 3) {
- str = String.format(mMsgFmt, values[0], values[1], values[2]);
- } else if (len == 2) {
- str = String.format(mMsgFmt, values[0], values[1]);
- } else if (len == 1) {
- str = String.format(mMsgFmt, values[0]);
- } else {
+
+ // A 3printfs with 3 * %g takes around 9-15 ms on an ADP2, or 3-4 ms on a GN.
+ // However doing 3 * StringBuilder.append(float) takes < ~1 ms on ADP2.
+ StringBuilder sb = mTempStr;
+ sb.setLength(0);
+ sb.append(mEmulatorFriendlyName);
+
+ if (len != mExpectedLen) {
Log.e(TAG, "Unexpected number of values " + len
+ " in onSensorChanged for sensor " + mSensor.getName());
return;
+ } else {
+ sb.append(':').append(values[0]);
+ if (len > 1) {
+ sb.append(':').append(values[1]);
+ if (len > 2) {
+ sb.append(':').append(values[2]);
+ }
+ }
}
- sendEventToEmulator(str);
+ sb.append('\0');
+ sendEventToEmulator(sb.toString());
// Computes average update time for this sensor and average globally.
if (mLastUpdateTS != 0) {
if (mGlobalAvgUpdateMs != 0) {
- mGlobalAvgUpdateMs = (mGlobalAvgUpdateMs + nowDiff) / 2;
+ mGlobalAvgUpdateMs = (mGlobalAvgUpdateMs + deltaMs) / 2;
} else {
- mGlobalAvgUpdateMs = nowDiff;
+ mGlobalAvgUpdateMs = deltaMs;
}
}
mLastUpdateTS = now;
@@ -635,8 +647,8 @@ public class SensorsHandler extends BaseHandler {
// Update the UI for the sensor, with a static throttling of 10 fps max.
if (hasUiHandler()) {
if (mLastDisplayTS != 0) {
- nowDiff = now - mLastDisplayTS;
- if (nowDiff < 100 /*ms, 10fps*/) {
+ long uiDeltaMs = now - mLastDisplayTS;
+ if (uiDeltaMs < 1000/4 /*4fps in ms*/) {
// Skip this UI update
return;
}
@@ -658,6 +670,14 @@ public class SensorsHandler extends BaseHandler {
msg.obj = MonitoredSensor.this;
notifyUiHandlers(msg);
}
+
+ if (DEBUG) {
+ long now2 = SystemClock.currentThreadTimeMillis();
+ long processingTimeMs = now2 - now;
+ Log.d(TAG, String.format("glob %d - local %d > target %d - processing %d -- %s",
+ mGlobalAvgUpdateMs, deltaMs, mUpdateTargetMs, processingTimeMs,
+ mSensor.getName()));
+ }
}
/**