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

标签 android android-camera

我正在写android的频闪灯代码。三星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(); }
}

我只是在new runnable中插入上面的代码说start,在线程中插入时ON周期比较多。耗时以毫秒为单位。

最佳答案

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

关于android - 插入其他线程时,相机打开需要更多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12453835/

相关文章:

android - "drag and drop"在 OpenGL ES 与 Android Canvas 下是否变得更快?

c# - 如何使用 C# 从 android 相机获取图像或位图

android - 无意识地捕捉图像,在不同的设备上提供不同的输出

android - onSaveInstanceState 使我的应用程序崩溃

android 如何在 ScrollView 中添加 ListView

java - 如何在jni中链接静态库?

Android Camera2 输出尺寸

Android - 相机变焦不起作用

android - 选项卡上的视频录制 (Nexus 7) 失败

android - MPAndroidChart PieChart 如何设置标签文字?