如何减缓Android的传感器事件 [英] How to slow down android sensor events

查看:229
本文介绍了如何减缓Android的传感器事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图探测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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆