SOS 모드로 손전등 응용 프로그램 만들기. 3 개의 버튼 (On, Off 및 SOS)이 있습니다. 앱은 정상 켜기 및 끄기 모드에서 작동하지만 SOS 모드.스레드 인터럽트 대안?
//this method gets called when Off button is pressed
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();
try {
if (SOSon)
Flashthread.interrupt();
SOSon = false;
} catch (Exception ex) {
throw ex;
}
FlashOn = false;
number_of_press=0;
}
}
을 (SOS 모드를 끄고 나던) 내가 읽어 보시기 이후 Flashthread
는 turnOffFlash
방법은 여기
void onSOSPress() {
if (number_of_press == 1) {
try {
SOSon = true;
if (!Flashthread.isInterrupted()) {
if (SOSon) {
Flashthread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < System.currentTimeMillis(); i++) {
if (FlashOn) {
myParameters.setFlashMode(Parameters.FLASH_MODE_OFF);
myCamera.setParameters(myParameters);
FlashOn = false;
} else {
TurnOnFlash();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
Flashthread.start();
}
} else
Flashthread.resume();
} catch (Exception ex) {
throw ex;
}
}
}
사용 Interrupt 메서드는 실제로 "인터럽트"하지 않거나 스레드를 강제 종료하지 않습니다. Thread.Interrupt();
대신 Off
단추를 누르면 SOS
모드가 중지됩니다. stop()
과 destroy()
을 시도했지만 모두 앱이 다운되었습니다.
같은 인기있는 라이브러리 중 하나에 사용됩니까? 대신에'Handler'를 사용하는 것이 잘못된 이유는 무엇입니까? –
'처리기'를 사용하여 SOS 모드를 시도합니다. 하지만 일반적으로 인터럽트가 실제로 의도 한 작업을 수행하지 않는 상황에서 내가해야 할 일은 무엇입니까? –
또한 가능한 경우 'Handler'를 사용하여 구현하는 코드 샘플을 보내 주시겠습니까? 고맙습니다! –