我可以使用光线传感器测量闪光之间的时间吗?有没有我可以使用的课程或

时间:2013-09-21 16:21:05

标签: java android mobile

我可以使用光线传感器来测量闪光灯之间的时间吗?我可以使用任何课程,还是应该自己编写?任何人都可以为我提供一些东西吗?

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);
}

1 个答案:

答案 0 :(得分:1)

使用nanoTime()做什么对于获得点或哈希基本上是完全随机的。你有两件事感兴趣:

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

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

  • 其次是计算isFlashOn更改之间的时间。您可以从SensorEvent本身获取的实际时间,因为它可能需要一段时间,直到事件发送给您。所以永远不要试着与当前的系统时间进行比较。

说完所有可能还有机会,光传感器会发出噪音,这可能会在闪光过程中测量黑暗。如果是这种情况,你需要某种噪音过滤,这可能会变得棘手,特别是对于持续时间很短的东西,如闪光灯。有关噪声和噪音过滤的讨论,请参阅Signal noise