CameraProvider.java revision 43e1813a5d4a59ef107768eb523d76ae2781cb02
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 1920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kongimport android.hardware.Camera; 20630d55ba8111357730119899565026be503264c0Erin Dahlgrenimport android.os.Handler; 21630d55ba8111357730119899565026be503264c0Erin Dahlgren 225a344964cb003525727c31d295ca3a592c245606Sol Boucherimport com.android.ex.camera2.portability.CameraAgent.CameraExceptionCallback; 2343e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucherimport com.android.ex.camera2.portability.CameraDeviceInfo.Characteristics; 2420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 2520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong/** 2620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * An interface which defines the camera provider. 2720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 2820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kongpublic interface CameraProvider { 2920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 3020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 3120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Requests the camera device. If the camera device of the same ID is 3220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * already requested, then no-op here. 3320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * 3420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * @param id The ID of the requested camera device. 3520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 3620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public void requestCamera(int id); 3720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 3897e282a3764215ac193726e0d259e55bf94369feAngus Kong public boolean waitingForCamera(); 3997e282a3764215ac193726e0d259e55bf94369feAngus Kong 4020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 4120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Releases the camera device. 4220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * 4320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * @param id The camera ID. 4420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 4520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public void releaseCamera(int id); 4620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 4720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 48630d55ba8111357730119899565026be503264c0Erin Dahlgren * Sets a callback for handling camera api runtime exceptions on 49630d55ba8111357730119899565026be503264c0Erin Dahlgren * a handler. 50630d55ba8111357730119899565026be503264c0Erin Dahlgren */ 51630d55ba8111357730119899565026be503264c0Erin Dahlgren public void setCameraDefaultExceptionCallback(CameraExceptionCallback callback, 52630d55ba8111357730119899565026be503264c0Erin Dahlgren Handler handler); 53630d55ba8111357730119899565026be503264c0Erin Dahlgren 54630d55ba8111357730119899565026be503264c0Erin Dahlgren /** 5543e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher * Get the {@link Characteristics} of the given camera. 5620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * 5743e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher * @param cameraId Which camera. 5843e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher * @return The static characteristics of that camera. 5920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 6043e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher public Characteristics getCharacteristics(int cameraId); 6120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 6220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 636190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren * @returns The current camera id. 646190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren */ 656190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren public int getCurrentCameraId(); 666190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren 676190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren /** 6820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Returns the total number of cameras available on the device. 6920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 7020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public int getNumberOfCameras(); 7120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 7220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 7318500a493634b593dc8ba1e74b46d1f10bb6d031Angus Kong * @returns The lowest ID of the back camera or -1 if not available. 7420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 7520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public int getFirstBackCameraId(); 7620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong 7720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong /** 7818500a493634b593dc8ba1e74b46d1f10bb6d031Angus Kong * @return The lowest ID of the front camera or -1 if not available. 7920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */ 8020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong public int getFirstFrontCameraId(); 8139b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong 8239b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong /** 8339b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong * @returns Whether the camera is facing front. 8439b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong */ 8539b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong public boolean isFrontFacingCamera(int id); 8639b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong 8739b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong /** 8839b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong * @returns Whether the camera is facing back. 8939b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong */ 9039b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong public boolean isBackFacingCamera(int id); 9120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong} 92