我在用戶界面上有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新手! –