2016-08-21 86 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方法。

因此,由于您正在停止相机,您将不会消耗用户的电池。