【发布时间】:2026-01-17 07:40:01
【问题描述】:
所以我遇到了一个非常奇怪的问题,我根本无法理解为什么它不起作用。我正在构建一个频闪灯作为我的应用程序的一部分,并创建了一个单独的频闪灯类。当我调用 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() 以打开或关闭手电筒时只使用最小的可能间隔
,而不是将间隔更改为自定义的间隔编辑:这是线程代码,以及打开手电筒的代码
public void 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
【问题讨论】:
-
我认为您需要发布您的线程代码而不是此类代码。
-
好的,这就完成了。我仍然对此感到困惑,因为我正在更改它的值(我测试以确保)所以我不明白为什么它不会使用新值
标签: java android variables camera modifiers