Как заставить фонарик на телефоне мигать?
Я пытаюсь заставить светодиодный фонарик телефона Android мигать на основе двоичного кода, например, если char = 1, включить светодиод, иначе, если char = 0, выключить светодиод.
if ( char == '1'){ params.setFlashMode(Parameters.FLASH_MODE_ON); }
if ( char == '0'){ params.setFlashMode(Parameters.FLASH_MODE_OFF);}
Так что я получаю чар от String str ="101010101"
символ получает значения 1, 0, 1 и т. д., что должно заставить фонарик мигать, однако он мигает, и все. Как мне решить эту проблему? Спасибо
3 ответа
Решение
Попробуй это:
String myString = "0101010101";
long blinkDelay = 50; //Delay in ms
for (int i = 0; i < myString.length(); i++) {
if (myString.charAt(i) == '0') {
params.setFlashMode(Parameters.FLASH_MODE_ON);
} else {
params.setFlashMode(Parameters.FLASH_MODE_OFF);
}
try {
Thread.sleep(blinkDelay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Без "Thread.sleep()" ваш код, вероятно, слишком быстрый.
Использовать этот метод, он работает, я использую в моем приложении
private void blink(final int delay, final int times) {
Thread t = new Thread() {
public void run() {
try {
for (int i=0; i < times*2; i++) {
if (isFlashOn) {
turnOffFlash();
} else {
turnOnFlash();
}
sleep(delay);
}
} catch (Exception e){
e.printStackTrace();
}
}
};
t.start();
}
private void turnOnFlash() {
if (!isFlashOn) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
isFlashOn = true;
}
}
private void turnOffFlash() {
if (isFlashOn) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
camera.stopPreview();
isFlashOn = false;
}
}
String[] list1 = { "1", "0", "1", "0", "1", "0", "1", "0", "1", "0" };
for (int i = 0; i < list1.length; i++) {
if (list1[i].equals("0")) {
params.setFlashMode(Parameters.FLASH_MODE_ON);
} else {
params.setFlashMode(Parameters.FLASH_MODE_OFF);
}
}
может быть, ваша проблема решена, но я думаю, что она слишком быстро мигает......