我可以使用光线传感器来测量闪光灯之间的时间吗?我可以使用任何课程,还是应该自己编写?任何人都可以为我提供一些东西吗?
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);
}
答案 0 :(得分:1)
使用nanoTime()
做什么对于获得点或哈希基本上是完全随机的。你有两件事感兴趣:
如果灯光足够亮,可以计为“闪光灯开启”或“闪光灯关闭”。这是SensorEvent
的值,您已经使用event.values[0] >= 50
检查了该值。把它放在一行代码中:
boolean isFlashOn = (event.values[0] >= 50)
其次是计算isFlashOn
更改之间的时间。您可以从SensorEvent
本身获取仅的实际时间,因为它可能需要一段时间,直到事件发送给您。所以永远不要试着与当前的系统时间进行比较。
说完所有可能还有机会,光传感器会发出噪音,这可能会在闪光过程中测量黑暗。如果是这种情况,你需要某种噪音过滤,这可能会变得棘手,特别是对于持续时间很短的东西,如闪光灯。有关噪声和噪音过滤的讨论,请参阅Signal noise。