1270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall/* 2270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * Copyright (C) 2014 The Android Open Source Project 3270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * 4270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * Licensed under the Apache License, Version 2.0 (the "License"); 5270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * you may not use this file except in compliance with the License. 6270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * You may obtain a copy of the License at 7270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * 8270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * http://www.apache.org/licenses/LICENSE-2.0 9270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * 10270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * Unless required by applicable law or agreed to in writing, software 11270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * distributed under the License is distributed on an "AS IS" BASIS, 12270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * See the License for the specific language governing permissions and 14270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall * limitations under the License. 15270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall */ 16270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 17270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallpackage com.android.camera.one.v2.camera2proxy; 18270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 19270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport java.util.List; 20270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 21270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.hardware.camera2.CameraAccessException; 22270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.hardware.camera2.CameraCaptureSession; 23270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.hardware.camera2.CameraDevice; 24270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.hardware.camera2.CaptureRequest; 25270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.os.Handler; 26270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport android.view.Surface; 27270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 28270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport javax.annotation.Nullable; 29270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallimport javax.annotation.ParametersAreNonnullByDefault; 30270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 31270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall@ParametersAreNonnullByDefault 32270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lallpublic class AndroidCameraDeviceProxy implements CameraDeviceProxy { 33270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall private static class AndroidCaptureSessionStateCallback extends 34270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall CameraCaptureSession.StateCallback { 35270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall private final CameraCaptureSessionProxy.StateCallback mStateCallback; 36270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 37270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall private AndroidCaptureSessionStateCallback( 38270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall CameraCaptureSessionProxy.StateCallback stateCallback) { 39270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall mStateCallback = stateCallback; 40270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 41270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 42270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Override 43270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public void onConfigured(CameraCaptureSession session) { 44270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall mStateCallback.onConfigured(new AndroidCameraCaptureSessionProxy(session)); 45270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 46270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 47270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Override 48270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public void onConfigureFailed(CameraCaptureSession session) { 49270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall mStateCallback.onConfigureFailed(new AndroidCameraCaptureSessionProxy(session)); 50270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 51270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 52270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Override 53270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public void onReady(CameraCaptureSession session) { 54270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall mStateCallback.onReady(new AndroidCameraCaptureSessionProxy(session)); 55270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 56270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 57270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Override 58270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public void onActive(CameraCaptureSession session) { 59270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall mStateCallback.onActive(new AndroidCameraCaptureSessionProxy(session)); 60270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 61270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 62270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Override 63270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public void onClosed(CameraCaptureSession session) { 64270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall mStateCallback.onClosed(new AndroidCameraCaptureSessionProxy(session)); 65270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 66270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 67270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 68270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall private final CameraDevice mCameraDevice; 69270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 70270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public AndroidCameraDeviceProxy(CameraDevice cameraDevice) { 71270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall mCameraDevice = cameraDevice; 72270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 73270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 74270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Override 75270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public String getId() { 76270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall return mCameraDevice.getId(); 77270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 78270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 79270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Override 80270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public void createCaptureSession(List<Surface> list, 81270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall CameraCaptureSessionProxy.StateCallback stateCallback, 82270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Nullable Handler handler) 83270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall throws CameraAccessException { 84270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall mCameraDevice.createCaptureSession(list, new AndroidCaptureSessionStateCallback( 85270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall stateCallback), handler); 86270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 87270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 88270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Override 89270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public CaptureRequest.Builder createCaptureRequest(int i) throws CameraAccessException { 90270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall return mCameraDevice.createCaptureRequest(i); 91270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 92270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall 93270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall @Override 94270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall public void close() { 95270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall mCameraDevice.close(); 96270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall } 97270990a7e3fcd1cf71b652c9ad1cc46598ddf4b3Puneet Lall} 98