【发布时间】:2016-08-20 11:18:29
【问题描述】:
我在 UI 上有 3 个按钮。 On, Off and SOS(反复闪烁)。如果我按 On 然后按 Off 按钮,闪光灯按预期关闭。但如果我按 SOS(它按预期定期闪烁)然后关闭它拒绝停止闪烁。代码如下:
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() 已更新以反映工作的 SOS 模式(OFF 按钮现在可以使用)
【问题讨论】:
-
感谢您的回复!我之前曾尝试过帮助我打开和关闭闪光灯的链接。我的问题仍然存在,当我处于 SOS 模式时闪光灯没有关闭,但在我处于正常“ON”模式时关闭。也许这是我的 onSOSPress 方法中的线程问题,但我不太确定解决这个问题,因为我是 Android 新手!
标签: java android button flashlight