손전등을 실행하기 위해 스레드를 사용하고 있으며 뒷면을 누른 후에 해당 스레드를 중지하고 싶습니다. 다시 누르면 손전등을 중지하십시오.
나는 스레드 시작하려면 다음 코드를 사용 :progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Flashing...");
progressDialog.show();
thread = new Thread(MainActivity.this);
thread.start();
을 그리고 스레드가하고있다 :
public void run() {
isOn = false;
cam = Camera.open();
p = cam.getParameters();
try {
for (int i = 0; i < pattern.length; i++) {
if (isOn) {
p.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(p);
Thread.sleep(pattern[i]);
isOn = false;
} else {
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
Thread.sleep(pattern[i]);
isOn = true;
}
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
cam.release();
handlerFinish.sendEmptyMessage(0);
}
private Handler handlerFinish = new Handler() {
@Override
public void handleMessage(Message msg) {
progressDialog.dismiss();
}
};
내가이 중지 시도,하지만 진행 대화 상자가 기각되어있다 하지만 손전등은 여전히 작동 중입니다.
@Override
public void onBackPressed() {
super.onBackPressed();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(p);
isOn = false;
thread.stop();
}
내 목표를 달성하려면 어떻게해야합니까? 뒤로를 누른 후 읽기 및 플래쉬 등)? 즉, 스레드 정지까지 기다린 시도로 sorrunded while 루프에서 중지를 시도 -
시도의를 Thread.join를 중지하려면이 루프를 시도 catch 일단 achived 루프를 종료 –