2015-11-29 5 views
6

Я пытаюсь использовать API Camera2 для передачи данных камеры на SurfaceView. Я следую этому руководству: Camera2 guideCameraDevice не удается создать сеанс [Camera2]

Я не могу пройти мимо step 5

MainActivity.java::onCreate()

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 камера)

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); 

Программа заканчивается в функции onConfigureFailed(). Я не знаю, что может быть ошибкой, и я не знаю, как проверить, что это такое.

Я предполагаю, что я что-то пропустил в CaptureRequest, но я понятия не имею, что.

Я бегу на Samsung Galaxy S4.

+1

Пожалуйста, добавьте выход LogCat с момента, когда вы видите ошибку. Служба камеры должна иметь больше информации в logcat о том, почему сеанс не может быть создан. –

+0

привет @Arbitur У меня такая же проблема с s4, вы нашли какую-то подсказку? – Ajay

ответ

0

добавить в 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(); 
    } 
Смежные вопросы