0

我必须想办法绕过 Android 上的传感器管理器数据(尤其是加速度计数据)。我不知道如何继续,因为我对 Android 比较陌生。我必须提供虚拟传感器数据(最好来自 SD 卡上的文本文件)来替换实际的传感器管理器数据。

我的最终目标是用它来测试一个应用程序,它使用加速度计数据来做出决定。

我应该能够将虚拟数据提供给所有请求传感器数据的应用程序。任何帮助或指导将不胜感激。

PS:我想在 Nexus-5 Android 手机上实现这一点。

4

1 回答 1

1

SensorManager通过 提供来自传感器的数据SensorEventListener。传感器记录包含一系列浮点数。如果Accelerometer有 3 个浮点数表示朝向 X、Y 和 Z 轴的加速度值。因此,在实现过程中,SensorEventListener您可以用测试所需的虚拟值覆盖这些值。

@Override
public void onSensorChanged(SensorEvent event) {

        int type      = event.sensor.getType();
        if(type == Sensor.TYPE_ACCELEROMETER){
           float result[] = event.values;   
           // modify the values here  
        }

}

编辑:为了提供记录生成率,您可以在SensorManager' 方法上指明它:

registerListener(this, sensor, rate_in_microseconds);

但是,正如文档在此处指出的那样,提供的速率只是一个提示,并不保证事件发生率。

速率传感器事件的发送时间为。这只是对系统的提示。事件的接收速度可能比指定的速率快或慢。通常会更快地接收到事件。该值必须是 SENSOR_DELAY_NORMAL、SENSOR_DELAY_UI、SENSOR_DELAY_GAME 或 SENSOR_DELAY_FASTEST 之一,或者是所需的事件之间的延迟(以微秒为单位)。以微秒为单位指定延迟仅适用于 Android 2.3(API 级别 9)以后。对于早期版本,您必须使用 SENSOR_DELAY_常量之一。*

于 2014-08-26T16:45:29.977 回答