插入其他线程时,相机开启需要更多时间

时间:2012-09-17 06:00:27

标签: android android-camera

我正在编写用于android的频闪灯代码.Samsung galaxy ace不支持flash模式。所以我自己编写了它。这是我用来使它成为闪光灯的代码。 但它阻止了android应用程序(UI线程)的主线程,我不想发生这种情况。当我在新线程中插入此代码并运行它时,我测量时ON时间更长。为什么会这样?

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(); }
}

我只是在新的runnable中插入上面的代码并说启动,当它插入一个线程时ON时间更长。经过的时间以毫秒为单位。

1 个答案:

答案 0 :(得分:0)

使用消息处理程序或异步任务。 见Handler