[英]How to update values while method is running - Java
所以我有一个非常奇怪的问题,我根本无法理解为什么它不起作用。 我正在构建一个频闪灯作为我的应用程序的一部分,并创建了一个单独的Strobelight类。 当我调用turnOn方法或update方法时,间隔永远不会改变。 我想这将使使用某些代码解释起来更容易:
public class Strobelight{
private int delayOn, delayOff;
public void turnStrobeOn(){...}
public void update(int a_delayOn, int a_delayOff){
delayOn = a_delayOn;
delayOff = a_delayOff;
}
public void turnOn(int a_delayOn, int a_delayOff){
delayOn = a_delayOn;
delayOff = a_delayOff;
this.turnStrobeOn();
}
根据频闪灯是否已亮起,调用这些方法之一以指定的间隔更改频闪灯的点亮或仅更改间隔。
在将Thread.sleep()用于打开或关闭手电筒时,应用程序仅使用最小可能的间隔,而不是将间隔更改为自定义的间隔
编辑:这是线程代码,和打开手电筒的代码
公共无效turnStrobeOn(){
for ( int i = 0; i < 3; i++){
isInCycle = true;
cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview(); // the flashlight is now on
lightIsOn = true;
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(delayOn);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
cam.stopPreview();
cam.release();
lightIsOn = false;
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(delayOff);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
} //end of for loop
isInCycle = false;
} // end of turnStrobeOn
您可能想在此获得其他人的建议,我最大的猜测是您不能对sleep()如此具体。 同样不要忘记为此使用毫秒。 我建议使用android处理程序并为此进行postDelayed而不是休眠。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.