我对开发人员领域有点陌生,我在一个Android项目中。
我正在尝试利用手机相机闪光灯。我正在尝试以重复的方式使其闪烁。下面是我的.java文件的片段。
public void clickGo(View view) {
Bundle newtempo = getIntent().getExtras();
int tempo = newtempo.getInt("tempoData");
int scaledTempo = 60000/tempo;
while (true) {
long futureTime1a = System.currentTimeMillis() + (100);
long futureTime1b = System.currentTimeMillis() + (scaledTempo - 100);
while (System.currentTimeMillis() < futureTime1a) {
setFlashlightOn();
}
while (System.currentTimeMillis() < futureTime1b) {
setFlashlightOff();
}
}
让我解释一下发生了什么...
因此,我已经从另一个活动中获取了数据,然后将其缩放为毫秒值。
我将算法的其余部分放入while(true)循环中,直到可以正常工作为止。我设置了两次,一次设置为100毫秒,另一次设置为缩放的毫秒值减100毫秒。
然后,我应用这两个时间来打开然后关闭闪光灯。
从理论上讲,这应该起作用。我从另一个活动输入了数据,该活动将数字缩放为毫秒,如图所示。这个概念确实有效,因为数字越小越好,闪光灯在我的手机上拍得越来越慢。但是,精度是我的问题。当我在应用程序的同一时间播放点击节拍时,很容易看出某些闪烁的速度变慢或持续时间更长。我想知道这可能是什么?我已经将大部分代码简化为一个完全裸露的脚本(因为我认为这可能是一个处理问题)。这也可能是我实现时间功能的方式-如果其他人有更有效的方式,我很想听听它!
正如我在开始时所说的,我对开发人员领域还比较陌生,因此,如果您能想到这一点,我将不胜感激:)
非常感谢你!
最佳答案
像您想要的那样,计算机的内部时钟无法快速连续地运行。我建议使用timer实现您想要的。