2016-10-17 3 views
0

TextureViewをカメラプレビューに使用しているため、SurfaceViewに切り替えてもプレビューが動作しなくなるため、バックグラウンドカラーを設定する方法が見つけられません。プレビューを除いて他のすべてがうまくいきます。アンドロイドカメラ2プレビューがサーフェスビューで動作しない

public void previewCamera(){ 
    try { 
     SurfaceTexture surfaceTexture = textureView.getSurfaceTexture(); 
     surfaceTexture.setDefaultBufferSize(previewSize.getWidth(),previewSize.getHeight()); 
     Surface previewSurface = new Surface(surfaceTexture); 

     captureRequestBuilder = device.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); 
     captureRequestBuilder.addTarget(previewSurface); 
     device.createCaptureSession(Arrays.asList(previewSurface), new CameraCaptureSession.StateCallback() { 
      @Override 
      public void onConfigured(CameraCaptureSession session) { 
       updatePreview(session); 
      } 

      @Override 
      public void onConfigureFailed(CameraCaptureSession session) { 
       Toast.makeText(getApplicationContext(),"unable to setup cam preview",Toast.LENGTH_SHORT).show(); 
      } 
     },null); 
    } catch (CameraAccessException e) { 
     e.printStackTrace(); 
    }} 

..andここでは、私のコードは、SurfaceView

public void previewCamera(){ 
    try { 
     Surface previewSurface = surfaceView.getHolder().getSurface(); 

     captureRequestBuilder = device.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); 
     captureRequestBuilder.addTarget(previewSurface); 
     device.createCaptureSession(Arrays.asList(previewSurface), new CameraCaptureSession.StateCallback() { 
      @Override 
      public void onConfigured(CameraCaptureSession session) { 
       updatePreview(session); 
      } 

を使用している...と私はそれが持っているだけの場合には、このコードを追加してい:私はTextureViewを使用したときにここで

は私のコードです何かがそれを行うには

private void updatePreview(CameraCaptureSession session) { 
    previewSession = session; 
    if (null == device) { 
     return; 
    } 
    try { 
     handlerThread = new HandlerThread("CameraPreview"); 
     handlerThread.start(); 
     handler = new Handler(handlerThread.getLooper()); 

     captureRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO); 
     previewSession.setRepeatingRequest(captureRequestBuilder.build(), null, ((isRecording)? null:handler)); 
    } catch (CameraAccessException e) { 
     e.printStackTrace(); 
    } 
} 

おかげ

+0

ここからpreviewCameraを呼び出していますか? onCreateでは? onResume?またはSurfaceViewのsurfaceCreated/Modifiedコールバックで?システムログ、特にカメラサービスからどんなエラーが出ますか? –

答えて

0

Surfaceオブジェクトを取得する前に固定サイズを設定しようとしましたか?

manager.openCamera("0", mStateCallback, null); 

をところで、SurfaceViewのサイズがプレビュードン」をさせません:あなたは、次のようpreview.JustにSurfaceViewを使用する場合ハンドラを使うべきではありません

surfaceView.setFixedSize(previewSize.getWidth(),previewSize.getHeight()); 
+0

はい。しようとしたがまだ動作しません – Handsum

+0

setFixedSizeメソッドはSurfaceHolderに属し、SurfaceまたはSurfaceViewには属しません – shift66

0

あなたは修正サイズを設定する必要はありません。

関連する問題