0

我可以使用光传感器来测量闪光之间的时间吗?有没有我可以使用的类,或者我应该自己编写代码?任何人都可以为我提供一些开始吗?

public void onSensorChanged(SensorEvent event) {


    difference = System.nanoTime() - startTime;

    if (event.values[0] >= 50) {
        newdifference = System.nanoTime() - (startTime + difference);

        if (newdifference >= 2450 && newdifference < 2550) {
            dotordash = ".";

        }

        else if (newdifference > 7450 && newdifference < 7550) {
            dotordash = "-";
        }
        code += dotordash;
    }

    show.setText(" " + code);
}
4

1 回答 1

1

关于获得点或哈希,您所做nanoTime()的基本上是完全随机的。你感兴趣的有两点:

  • 如果光线变得足够亮,可以算作“闪光灯开启”或“闪光灯关闭”。这是在 的值中SensorEvent,您已经使用event.values[0] >= 50. 把它放在一行代码中:

    boolean isFlashOn = (event.values[0] >= 50)

  • 其次是计算变化之间的时间isFlashOn您只能从事件SensorEvent本身获得事件的实际时间,因为它可能需要一些时间,直到事件交付给您。因此,切勿尝试与当前系统时间进行比较。

说仍然有机会,光传感器会产生噪音,这将是闪光期间黑暗的衡量标准。如果是这种情况,您将需要某种可能会变得棘手的噪声过滤,尤其是对于持续时间很短的东西,如闪光。有关噪声和噪声过滤的讨论,请参阅信号噪声

于 2013-09-22T15:37:40.540 回答