2015-11-29 5 views
6

Ich versuche, die API zu verwenden, um Kameradaten zu einem SurfaceView zu streamen. Ich folge dieser Anleitung: Camera2 guideCameraDevice kann Sitzung nicht erstellen [Camera2]

ich nicht in der Vergangenheit step 5

MainActivity.java::onCreate() bekommen

setContentView(R.layout.activity_main); 

surfaceView = (SurfaceView)findViewById(R.id.surface); 
manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE); 

MainActivity.java::onClick()

for (String id : manager.getCameraIdList()) { 
    CameraCharacteristics characteristics = manager.getCameraCharacteristics(id); 

    Integer direction = characteristics.get(CameraCharacteristics.LENS_FACING); 

    if (direction != null && direction == CameraCharacteristics.LENS_FACING_BACK) { 
     if (checkCallingOrSelfPermission("android.permission.CAMERA") == PackageManager.PERMISSION_GRANTED) 
      manager.openCamera(id, new StateCallback(), null); 

     break; 
    } 
} 

MainActivity.java.StateCallback :: onOpened (CameraDevice Kamera)

List<Surface> surfaces = new LinkedList<>(); 
surfaces.add(surfaceView.getHolder().getSurface()); 

CaptureRequest.Builder builder = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); 
builder.addTarget(surfaces.get(0)); 

camera.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() { 
    @Override 
    public void onConfigured(CameraCaptureSession session) { 
     Log.i(TAG, "Configured"); 
    } 

    @Override 
    public void onConfigureFailed(CameraCaptureSession session) { 
     Log.e(TAG, "Configured failed"); // Ends up in this function :(
    } 
    }, null); 

Das Programm endet in der onConfigureFailed() Funktion auf. Ich weiß nicht, was der Fehler sein könnte, und ich weiß nicht, wie ich das überprüfen soll.

Meine Vermutung wäre, dass mir etwas in der CaptureRequest fehlt, aber ich habe keine Ahnung was.

Ich bin auf einem Samsung Galaxy S4 ausgeführt.

+1

Bitte fügen logcat Ausgabe von, wenn Sie den Fehler zu sehen. Der Kamera-Service sollte in logcat weitere Informationen darüber enthalten, warum die Sitzung nicht erstellt werden kann. –

+0

hallo @Arbitur Ich habe dasselbe Problem mit s4, hast du irgendeinen Hinweis darauf gefunden? – Ajay

Antwort

0

in dem onConfigured:

if (null == cameraDevice) { 
     Log.e(TAG, "updatePreview error, return"); 
     return; 
    } 
    captureRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO); 
    try { 
     cameraCaptureSessions.setRepeatingRequest(captureRequestBuilder.build(), null, mBackgroundHandler); 
    } catch (CameraAccessException e) { 
     e.printStackTrace(); 
    }