120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong/* 220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Copyright (C) 2013 The Android Open Source Project 320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * 420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Licensed under the Apache License, Version 2.0 (the "License"); 520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * you may not use this file except in compliance with the License. 620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * You may obtain a copy of the License at 720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * 820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * http://www.apache.org/licenses/LICENSE-2.0 920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * 1020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Unless required by applicable law or agreed to in writing, software 1120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * distributed under the License is distributed on an "AS IS" BASIS, 1220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * See the License for the specific language governing permissions and 1420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * limitations under the License. 1520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 1620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 1720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kongpackage com.android.camera.app; 1820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 191d84d7107686aa428ee2eeb1a8caf0ea3e43b1dfPaul Rohdeimport com.android.camera.device.CameraId; 2043e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucherimport com.android.ex.camera2.portability.CameraDeviceInfo.Characteristics; 212a0e18e280dfe541d4740345511ad299099cda79Senpo Huimport com.android.ex.camera2.portability.CameraExceptionHandler; 2220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 2320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong/** 2420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * An interface which defines the camera provider. 2520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 2620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kongpublic interface CameraProvider { 2720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 2820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 2920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Requests the camera device. If the camera device of the same ID is 3020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * already requested, then no-op here. 3120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * 3220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * @param id The ID of the requested camera device. 3320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 3420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public void requestCamera(int id); 3520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 3644ce4b26614f85518d548a6750c7a08908ae3596Sol Boucher /** 3744ce4b26614f85518d548a6750c7a08908ae3596Sol Boucher * Requests the camera device. If the camera device of the same ID is 3844ce4b26614f85518d548a6750c7a08908ae3596Sol Boucher * already requested, then no-op here. 3944ce4b26614f85518d548a6750c7a08908ae3596Sol Boucher * 4044ce4b26614f85518d548a6750c7a08908ae3596Sol Boucher * @param id The ID of the requested camera device. 4144ce4b26614f85518d548a6750c7a08908ae3596Sol Boucher * @param useNewApi Whether to use the new API if this platform provides it. 4244ce4b26614f85518d548a6750c7a08908ae3596Sol Boucher */ 4344ce4b26614f85518d548a6750c7a08908ae3596Sol Boucher public void requestCamera(int id, boolean useNewApi); 4444ce4b26614f85518d548a6750c7a08908ae3596Sol Boucher 4597e282a3764215ac193726e0d259e55bf94369feAngus Kong public boolean waitingForCamera(); 4697e282a3764215ac193726e0d259e55bf94369feAngus Kong 4720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 4820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Releases the camera device. 4920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * 5020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * @param id The camera ID. 5120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 5220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public void releaseCamera(int id); 5320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 5420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 55630d55ba8111357730119899565026be503264c0Erin Dahlgren * Sets a callback for handling camera api runtime exceptions on 56630d55ba8111357730119899565026be503264c0Erin Dahlgren * a handler. 57630d55ba8111357730119899565026be503264c0Erin Dahlgren */ 582a0e18e280dfe541d4740345511ad299099cda79Senpo Hu public void setCameraExceptionHandler(CameraExceptionHandler exceptionHandler); 59630d55ba8111357730119899565026be503264c0Erin Dahlgren 60630d55ba8111357730119899565026be503264c0Erin Dahlgren /** 6143e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher * Get the {@link Characteristics} of the given camera. 6220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * 6343e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher * @param cameraId Which camera. 6443e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher * @return The static characteristics of that camera. 6520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 6643e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher public Characteristics getCharacteristics(int cameraId); 6720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 6820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 696190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren * @returns The current camera id. 706190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren */ 711d84d7107686aa428ee2eeb1a8caf0ea3e43b1dfPaul Rohde public CameraId getCurrentCameraId(); 726190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren 736190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren /** 7420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Returns the total number of cameras available on the device. 7520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 7620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public int getNumberOfCameras(); 7720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 7820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 7918500a493634b593dc8ba1e74b46d1f10bb6d031Angus Kong * @returns The lowest ID of the back camera or -1 if not available. 8020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 8120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public int getFirstBackCameraId(); 8220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 8320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 8418500a493634b593dc8ba1e74b46d1f10bb6d031Angus Kong * @return The lowest ID of the front camera or -1 if not available. 8520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 8620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public int getFirstFrontCameraId(); 8739b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong 8839b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong /** 8939b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong * @returns Whether the camera is facing front. 9039b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong */ 9139b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong public boolean isFrontFacingCamera(int id); 9239b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong 9339b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong /** 9439b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong * @returns Whether the camera is facing back. 9539b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong */ 9639b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong public boolean isBackFacingCamera(int id); 9720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong} 98