내 스마트 폰의 LED를 켜고 끄는 방법으로 이진 코드를 전송하는 앱을 만들고 있습니다. for-loop에서 애플리케이션은 char에서 binary 코드로 이동하고 "1"이면 100ms 동안 LED를 깜박이고 "0"이면 100ms 동안 꺼집니다. 또한 바이너리 코드가 3 번 전송됩니다. 여기에 코드의 일부는 내가 사용 :LED를 통해 이진 코드를 보내는 Thread.sleep 대신 안드로이드 타이머
public void turnOnOff() {
if (button) {
button = false;
Camera.Parameters parametersOn = camera.getParameters();
Camera.Parameters parametersOff = parameters;
parametersOn.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
parametersOff.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
try {
for (int a = 0; a < 3; a++){
for (int i = 0; i < data.length(); i++){
if (data.charAt(i) == '1') {
camera.setParameters(parametersOn);
camera.startPreview();
Thread.sleep(100);
} else {
camera.setParameters(parametersOff);
camera.startPreview();
Thread.sleep(100);
}
}
}
} catch (Exception e) {
}
}
button = true;
}
그것은 않는 일이지만 유감 스럽지만에 Thread.sleep() 함수는 시간의 측면에서 매우 정확한 없습니다. Thread.sleep (100)을 입력하면 항상 100ms 이상이됩니다. 그래서 코드를 변경하고 timer.schedule() 메서드를 사용하여 타이머를 사용하려고 시도했습니다. 더 정확하기를 바랍니다. 하지만 타이머로 작동시키는 법을 이해하지 못했습니다.
타이머를 사용하여이 작업을 수행하는 방법을 보여 줄 수 있습니까? "1"과 "0"은 100ms 인터벌로 보내고 3 회 반복 할 수 있습니까?
당신은 시스템 클럭 –
@rollback보다 더 정확하지 않을 수 있습니까? 왜냐하면 나는 다른 주파수의 LED를 깜박 거리기 위해 Thread.sleep과 timer.schedule을 비교했기 때문에 타이머는 sleep 함수보다 낫다. – flash17