gpt4 book ai didi

java - 按下按钮时闪光灯未关闭(手电筒应用程序)

转载 作者:太空狗 更新时间:2023-10-29 14:46:55 27 4
gpt4 key购买 nike

我在 UI 上有 3 个按钮。 On、Off 和 SOS(以重复间隔闪烁)。如果我按 On 然后按 Off 按钮,闪光灯会按预期关闭。但是如果我按 SOS(按预期定期闪烁)然后按 Off,它拒绝停止闪烁。代码如下:

SOSbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
SOSon = true;
startSOS();
onSOSPress();
} catch (Exception ex) {
throw ex;
}
}
});
void onSOSPress() {
try {
Flashlight flashlight=new Flashlight();
SOSon = true;
flashlight.Flashthread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < System.currentTimeMillis(); i++) {
while (!FlashThreadStop) {
if (FlashOn) {
myParameters.setFlashMode(Parameters.FLASH_MODE_OFF);
try {
myCamera.setParameters(myParameters);
}
catch (Exception ex)
{
//logger.log(Level.SEVERE, "an exception was thrown", ex);
}
myCamera.stopPreview();
FlashOn = false;
} else {
TurnOnFlash();
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}
}
});
flashlight.Flashthread.start();
} catch (Exception ex) {
throw ex;
}
}

关闭机制如下:

off.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

if (FlashOn) {

// turn off flash
TurnOffFlash();

}
}
});

private void TurnOffFlash() {

if (FlashOn) {

if (myCamera == null || myParameters == null) {
return;

}

myParameters = myCamera.getParameters();
myParameters.setFlashMode(Parameters.FLASH_MODE_OFF);
myCamera.setParameters(myParameters);
myCamera.stopPreview();
FlashOn = false;

}
}
void endSOS(){
FlashThreadStop=true;
}
void startSOS(){
FlashThreadStop=false;
}

编辑:方法 onSOSPress() 已更新以反射(reflect)正在工作的 SOS 模式(OFF 按钮现在可以使用)

最佳答案

您的TurnOffFlash 方法不能很好地涵盖闪光灯闪烁。您没有停止线程,因此它继续来回闪烁。您还需要添加一行来覆盖该部分:

Flashthread.interrupt();

这样您将保持关闭闪光灯的功能,如果线程正在运行 SOS 模式,您也将停止它。

Side note: You're failing to follow the common Java nomenclature where methods and variables start with a lowercase letter and use camelCase.

关于java - 按下按钮时闪光灯未关闭(手电筒应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39053522/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com