2016-08-21 87 views
1

我有一個名爲CameraPreview簡單的類,這是代碼:如果將CameraPreview的可見性設置爲GONE,我可以節省電池嗎?

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { 
    private SurfaceHolder mHolder; 
    private Camera mCamera; 

    public CameraPreview(Context context) { 
     super(context); 
     mHolder = getHolder(); 
     mHolder.addCallback(this); 
     mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

    } 

    public void surfaceCreated(SurfaceHolder holder) { 
     try { 
      mCamera = Camera.open(); 
     } catch (RuntimeException e) {} 

     try { 
      SurfaceHolder someHolder = holder; 
      mCamera.setPreviewDisplay(someHolder); 
      mCamera.startPreview(); 
     } catch (IOException e) { 
     } 

    } 

    public void surfaceDestroyed(SurfaceHolder holder) { 
     mCamera.stopPreview(); 
     mCamera.release(); 
     mCamera = null; 
    } 

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
     if (mHolder.getSurface() == null) 
      return; 

     try { 
      mCamera.stopPreview(); 
     } catch (Exception e){} 

     mCamera.setDisplayOrientation(90); 
     try { 
      mCamera.setPreviewDisplay(mHolder); 
      mCamera.startPreview(); 

     } catch (Exception e){} 
    } 
} 

很明顯的是,在該應用顯示在屏幕上的CameraPreview,它會更快地消耗電池,我的問題是,會發生什麼電池,如果我將此視圖設置爲View.GONE

回答

0

根據this SO answer將SurfaceView的可見性設置爲GONE將調用surfaceDestroyed方法。

因此,由於您正在停止相機,您將不會消耗用戶的電池。