UIに3つのボタンがあります。 On, Off and 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;
}
EDIT:方法onSOSPress()OFF(作業SOSモードを反映するように更新されていますボタンが今働く)
これを試してみてください:http://stackoverflow.com/questions/6068803/how-to-turn-on-camera-flash-light-programmatically-in-android –
は、ご返信いただきありがとうございます!私は先に、最初の場所でフラッシュをオン/オフするのに役立つリンクを試していました。私の問題は、SOSモードではオフにならず、通常の「オン」モードではオフになります。多分私のonSOSPressメソッドでスレッディングなどの問題があるかもしれませんが、私がAndroidに慣れ親しんでいるので、これを解決することについてはあまりよく分かりません! –