2016-08-21 2 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 установка Поверхностного обзора на GONE вызовет метод surfaceDestroyed.

Поэтому, поскольку вы останавливаете камеру, вы не будете потреблять аккумулятор пользователя.

Смежные вопросы