Я хочу сделать вспышку камеры вспышкой. Мой код заставит его мгновенно мигать одним нажатием кнопки, но если я снова нажму кнопку, пока он не закончит мигать, это приведет к сбою моего приложения. Я считаю, что мне нужно как-то проверить, все ли мигает, прежде чем я попытаюсь снова запустить вспышку.Сделать вспышку камеры вспышкой
public class BlinkBack {
public static void blink(MainActivity ma){
if (ma.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)){
final Camera mCamera = Camera.open();
new CountDownTimer(5000, 100) {
int counter = 0;
public void onTick(long millisUntilFinished) {
if (counter % 2 == 0) {
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);
mCamera.startPreview();
}
else {
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.stopPreview();
}
counter++;
}
public void onFinish() {
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.stopPreview();
mCamera.release();
}
}.start();
}
}
}
'ma.getPackageManager(). hasSystemFeature (PackageManager.FEATURE_CAMERA_FLASH' возвращает истину, если вспышка доступна, поэтому он не должен выполнять код, если вспышка недоступна. Авария может быть случайной. Что делать, если вы помещаете 'if (ma.getPackageManager(). hasSystemFeature (PackageManager.FEATURE_CAMERA_FLASH) {// make blink}' за пределами вызов метода, а не внутри метода blink? – Jbwilliams1