如何减缓Android的传感器事件 [英] How to slow down android sensor events
问题描述
我试图探测Android设备的移动,并从设备采取线性加速度值。我使用的是SensorEvent的时间戳和比较这对最后的更新时间,以确定是否记录传感器值与否。但它具有没有任何效果。为什么不工作?
@覆盖
公共无效onSensorChanged(SensorEvent事件){
如果(event.sensor.getType()== Sensor.TYPE_LINEAR_ACCELERATION){ int值=(int)的event.values [0];
如果(actualTime - LASTUPDATE> 5000){
Log.d(TAG,+值);
LASTUPDATE = actualTime;
}
如果你想改变的速度来访问传感器,可以指定在registerListener频率,作为官方文档中
@覆盖
保护无效onResume(){
super.onResume();
mSensorManager.registerListener(这一点,mLight,SensorManager.SENSOR_DELAY_NORMAL);
}
在这个例子中,被调用的registerListener()方法时被指定的默认数据延迟(SENSOR_DELAY_NORMAL)。数据延迟(或采样率)控制在哪些传感器事件发送到经由onSensorChanged()回调方法应用程序的时间间隔。缺省数据延迟是适用于监测典型的屏幕取向的改变,并且使用20微秒的延迟。您可以指定其他数据的延迟,如SENSOR_DELAY_GAME(20,000微秒延迟),SENSOR_DELAY_UI(60,000微秒延迟),或SENSOR_DELAY_FASTEST(0微秒延迟)。由于Android 3.0(API等级11),你还可以指定延迟的绝对值(微秒)。
块引用>这是绝对有可能慢下来:)
I'm trying to detect motion of an android device and taking linear acceleration values from the device. I'm using the SensorEvent's timestamp and comparing it against the last update time to determine whether to log the sensor value or not. But it's having no effect whatsoever. Why isn't it working?
@Override public void onSensorChanged(SensorEvent event) { if(event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION) { int value = (int) event.values[0]; if(actualTime - lastUpdate > 5000) { Log.d(TAG, "" + value); lastUpdate = actualTime; }
解决方案If you want to change the rate to access the sensors, you can specify the frequency in the registerListener, as in the official documentation.
@Override protected void onResume() { super.onResume(); mSensorManager.registerListener(this, mLight,SensorManager.SENSOR_DELAY_NORMAL); }
In this example, the default data delay (SENSOR_DELAY_NORMAL) is specified when the registerListener() method is invoked. The data delay (or sampling rate) controls the interval at which sensor events are sent to your application via the onSensorChanged() callback method. The default data delay is suitable for monitoring typical screen orientation changes and uses a delay of 200,000 microseconds. You can specify other data delays, such as SENSOR_DELAY_GAME (20,000 microsecond delay), SENSOR_DELAY_UI (60,000 microsecond delay), or SENSOR_DELAY_FASTEST (0 microsecond delay). As of Android 3.0 (API Level 11) you can also specify the delay as an absolute value (in microseconds).
It's definitely possible to slow it down :)
这篇关于如何减缓Android的传感器事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!