2012-09-17 20 views
4

我正在为android写闪光灯代码.Samsung galaxy ace不支持闪光模式。所以我自己写了。这是我用来制作闪光灯的代码。 但它阻止了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(); } 
} 

我只是插入新的可运行上面的代码,说开始,当它被插在一个线程中打开时间多。经过的时间以毫秒为单位。

+0

没有人回答:( – user1671219

回答

0

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