繁体   English   中英

Galaxy Nexus:传感器读数非常慢

[英]Galaxy Nexus: very slow sensor readings

我在Samsung Galaxy Nexus上遇到了一个非常奇怪的问题-我尝试从陀螺仪中读取一些传感器值。 非常基本的代码,只是传感器侦听器在经过一段时间的简单集成之后将值放入列表中。

当我在Nexus S上运行代码约60秒钟时,我可以注册约60.000个传感器事件(SENSOR_DELAY_FASTEST),但如果在Galaxy Nexus上运行它,则在60秒钟内只能得到约6000个值。

有办法增加吗? 除设备外,我确实需要更多的传感器数据,唯一的区别是操作系统版本:Galaxy Nexus为4.0.2-Nexus S为4.0.3。

任何意见,将不胜感激!

编辑-代码:

SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
LogSensorEventListener listener = new LogSensorEventListener(
       SensorLoggerActivity.this, Sensor.TYPE_GYROSCOPE);
sm.registerListener(listener, sm.getDefaultSensor(Sensor.TYPE_GYROSCOPE),
       SensorManager.SENSOR_DELAY_FASTEST);

LogSensorEventListener也是SensorEventListenerInterface的非常基本的实现:

@Override
public void onSensorChanged(SensorEvent event) {

    final float dT = (event.timestamp - mTimestamp) / 1000000000.f;
    if (dT < 1) { // just a fix for the first step

        mRelZ += event.values[2] * dT;
        list.add(mRelZ);
        list2.add(event.timestamp);
    }
    mTimestamp = event.timestamp;

mRelZ最初设置为0,并且两个列表应跟踪时间和测量值。 如果完成我的测量(单击按钮),则将值写入文件:

    try {

        for (int i = 0; i < list.size(); i++) {

            long time = list2.get(i);

            if (mStartTime < 0) {
                mStartTime = time;
                time = 0;
            } else {
                time = time - mStartTime;
            }

            float timef = time / 1000000000.0f;
            sb.append(timef);
            sb.append(";");
            sb.append(Math.toDegrees(list.get(i)));
            sb.append("\n");
        }

        mOutFileStream.write(sb.toString().getBytes());

        mOutFileStream.flush();
        mOutFileStream.close();
    } catch (IOException e) {
    }

Android设备没有关于如何以及何时报告传感器更改的标准。 例如,除非有更改(例如设备在移动),否则某些设备不会报告更改。 即使使用延迟,某些设备也会报告大量更改,而其他设备则报告较少更改,例如SensorManager.SENSOR_DELAY_FASTEST

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM