2015-11-29 15 views
6

Tôi đang cố gắng sử dụng API Camera2 để truyền dữ liệu máy ảnh đến SurfaceView. Tôi đang theo hướng dẫn này: Camera2 guideCameraĐiều kiện không tạo phiên [Camera2]

tôi không thể vượt qua 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 camera)

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

Chương trình kết thúc trong sự onConfigureFailed() chức năng. Tôi không biết những gì có thể là lỗi, và tôi không biết làm thế nào để kiểm tra những gì được.

Tôi đoán là tôi thiếu một số thứ trong số CaptureRequest, nhưng tôi không biết gì.

Tôi đang chạy trên Samsung Galaxy S4.

+1

Vui lòng thêm đầu ra logcat từ khi bạn nhìn thấy sự thất bại. Dịch vụ máy ảnh sẽ có nhiều thông tin hơn trong bản ghi về lý do tại sao không thể tạo phiên. –

+0

hello @Arbitur tôi đang gặp vấn đề tương tự với s4, bạn có tìm thấy đầu mối nào không? – Ajay

Trả lời

0

thêm vào 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(); 
    } 
Các vấn đề liên quan