1 /* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.camera.app; 18 19 import com.android.camera.device.CameraId; 20 import com.android.ex.camera2.portability.CameraDeviceInfo.Characteristics; 21 import com.android.ex.camera2.portability.CameraExceptionHandler; 22 23 /** 24 * An interface which defines the camera provider. 25 */ 26 public interface CameraProvider { 27 28 /** 29 * Requests the camera device. If the camera device of the same ID is 30 * already requested, then no-op here. 31 * 32 * @param id The ID of the requested camera device. 33 */ requestCamera(int id)34 public void requestCamera(int id); 35 36 /** 37 * Requests the camera device. If the camera device of the same ID is 38 * already requested, then no-op here. 39 * 40 * @param id The ID of the requested camera device. 41 * @param useNewApi Whether to use the new API if this platform provides it. 42 */ requestCamera(int id, boolean useNewApi)43 public void requestCamera(int id, boolean useNewApi); 44 waitingForCamera()45 public boolean waitingForCamera(); 46 47 /** 48 * Releases the camera device. 49 * 50 * @param id The camera ID. 51 */ releaseCamera(int id)52 public void releaseCamera(int id); 53 54 /** 55 * Sets a callback for handling camera api runtime exceptions on 56 * a handler. 57 */ setCameraExceptionHandler(CameraExceptionHandler exceptionHandler)58 public void setCameraExceptionHandler(CameraExceptionHandler exceptionHandler); 59 60 /** 61 * Get the {@link Characteristics} of the given camera. 62 * 63 * @param cameraId Which camera. 64 * @return The static characteristics of that camera. 65 */ getCharacteristics(int cameraId)66 public Characteristics getCharacteristics(int cameraId); 67 68 /** 69 * @returns The current camera id. 70 */ getCurrentCameraId()71 public CameraId getCurrentCameraId(); 72 73 /** 74 * Returns the total number of cameras available on the device. 75 */ getNumberOfCameras()76 public int getNumberOfCameras(); 77 78 /** 79 * @returns The lowest ID of the back camera or -1 if not available. 80 */ getFirstBackCameraId()81 public int getFirstBackCameraId(); 82 83 /** 84 * @return The lowest ID of the front camera or -1 if not available. 85 */ getFirstFrontCameraId()86 public int getFirstFrontCameraId(); 87 88 /** 89 * @returns Whether the camera is facing front. 90 */ isFrontFacingCamera(int id)91 public boolean isFrontFacingCamera(int id); 92 93 /** 94 * @returns Whether the camera is facing back. 95 */ isBackFacingCamera(int id)96 public boolean isBackFacingCamera(int id); 97 } 98