Android用のストロボコードを書いています.Samsung galaxy aceはフラッシュモードをサポートしていません.だから私は自分でそれを書きました. これがストロボライトにするために使用しているコードです。しかし、それは私が起こりたくないAndroidアプリケーション(UIスレッド)のメインスレッドをブロックします。このコードを新しいスレッドに挿入して実行すると、測定するとオン期間が長くなります。なぜそうなのですか?
Camera cam = Camera.open();
Camera.Parameters pon = cam.getParameters();
Camera.Parameters poff = cam.getParameters();
while(true) {
try {
//d = new Date();
//System.out.println("ON START " + d.getSeconds());
cam.setParameters(pon);
//because FLASH_MODE_TORCH isnt supported
pon.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
pon.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY);
s1.start();
cam.startPreview();
cam.autoFocus(new AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
camera.autoFocus(this);
}
});
Thread.sleep(500);
//d = new Date();
s1.stop();
System.out.println("ON FOR milliseconds : " + s1.getElapsedTime());
cam.stopPreview();
s2.start();
Thread.sleep(500);
s2.stop();
System.out.println("OFF FOR milliseconds : " + s2.getElapsedTime());
} catch (InterruptedException e) { e.printStackTrace(); }
}
上記のコードを新しい実行可能ファイルに挿入して開始と言うだけです。スレッドに挿入すると、ON 期間が長くなります。経過時間はミリ秒単位です。