我在用户界面上有3个按钮。 (反复闪烁闪烁)。如果按下“开”然后按“关”按钮,闪光灯会按照预期关闭。但如果按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按钮现在工作)
试试这个: http://stackoverflow.com/questions/6068803/how-to-turn-on-camera-flash-light-programmatically-in-android –
谢谢您的回复!我之前尝试过的链接帮助我打开和关闭闪光灯。我的问题依然存在,当我处于SOS模式时闪光灯没有关闭,但当我处于正常的“开”模式时闪光灯关闭。也许它是我的onSOSPress方法中的线程问题,但我不太清楚解决这个问题,因为我是Android新手! –