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によると、SurfaceViewの視認性をGONEに設定すると、surfaceDestroyedメソッドが呼び出されます。

したがって、カメラを停止しているため、ユーザーのバッテリーは消費されません。

関連する問題