1b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala/* 2b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * Copyright (C) 2013 The Android Open Source Project 3b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 4b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 5b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * you may not use this file except in compliance with the License. 6b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * You may obtain a copy of the License at 7b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 8b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 9b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 10b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 11b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 12b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * See the License for the specific language governing permissions and 14b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * limitations under the License. 15b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala */ 16b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 172f1a2e423e0fbb64467d6fcfa4e82c6384f31210Eino-Ville Talvalapackage android.hardware.camera2; 18b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 19e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkinimport android.util.AndroidException; 20e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin 21b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala/** 22b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * <p><code>CameraAccessException</code> is thrown if a camera device could not 23b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * be queried or opened by the {@link CameraManager}, or if the connection to an 24b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * opened {@link CameraDevice} is no longer valid.</p> 25b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 26b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * @see CameraManager 27b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * @see CameraDevice 28b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala */ 29e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkinpublic class CameraAccessException extends AndroidException { 30b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala /** 31b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * The camera device is in use already 325c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * @hide 33b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala */ 345c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin public static final int CAMERA_IN_USE = 4; 35b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 36b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala /** 37b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * The system-wide limit for number of open cameras has been reached, 38b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * and more camera devices cannot be opened until previous instances are 39b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * closed. 405c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * @hide 41b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala */ 425c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin public static final int MAX_CAMERAS_IN_USE = 5; 43b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 44b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala /** 45b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * The camera is disabled due to a device policy, and cannot be opened. 46b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 47b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * @see android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName, boolean) 48b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala */ 495c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin public static final int CAMERA_DISABLED = 1; 50b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 51b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala /** 52b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * The camera device is removable and has been disconnected from the Android 5366ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * device, or the camera id used with {@link android.hardware.camera2.CameraManager#openCamera} 5466ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * is no longer valid, or the camera service has shut down the connection due to a 55b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * higher-priority access request for the camera device. 56b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala */ 575c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin public static final int CAMERA_DISCONNECTED = 2; 585c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin 595c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin /** 605c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * The camera device is currently in the error state. 615c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * 625c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * <p>The camera has failed to open or has failed at a later time 635c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * as a result of some non-user interaction. Refer to 645c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * {@link CameraDevice.StateListener#onError} for the exact 655c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * nature of the error.</p> 665c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * 675c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * <p>No further calls to the camera will succeed. Clean up 685c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * the camera with {@link CameraDevice#close} and try 695c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * handling the error in order to successfully re-open the camera. 705c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * </p> 715c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * 725c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin */ 735c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin public static final int CAMERA_ERROR = 3; 74b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 7566ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk /** 7666ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * A deprecated HAL version is in use. 7766ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * @hide 7866ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk */ 7966ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk public static final int CAMERA_DEPRECATED_HAL = 1000; 8066ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk 81e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin // Make the eclipse warning about serializable exceptions go away 82e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin private static final long serialVersionUID = 5630338637471475675L; // randomly generated 83e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin 84e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin private final int mReason; 85b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 86b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala /** 87b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * The reason for the failure to access the camera. 88b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 89b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * @see #CAMERA_DISABLED 90b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * @see #CAMERA_DISCONNECTED 915c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin * @see #CAMERA_ERROR 92b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala */ 93b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala public final int getReason() { 94b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala return mReason; 95b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala } 96b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 97b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala public CameraAccessException(int problem) { 98e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin super(getDefaultMessage(problem)); 99b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala mReason = problem; 100b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala } 101b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 102b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala public CameraAccessException(int problem, String message) { 103b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala super(message); 104b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala mReason = problem; 105b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala } 106b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 107b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala public CameraAccessException(int problem, String message, Throwable cause) { 108b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala super(message, cause); 109b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala mReason = problem; 110b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala } 111b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 112b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala public CameraAccessException(int problem, Throwable cause) { 113e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin super(getDefaultMessage(problem), cause); 114b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala mReason = problem; 115b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala } 116e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin 117e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin private static String getDefaultMessage(int problem) { 118e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin switch (problem) { 119e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin case CAMERA_IN_USE: 120e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin return "The camera device is in use already"; 121e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin case MAX_CAMERAS_IN_USE: 122e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin return "The system-wide limit for number of open cameras has been reached, " + 123e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin "and more camera devices cannot be opened until previous instances " + 124e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin "are closed."; 1255c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin case CAMERA_DISCONNECTED: 1265c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin return "The camera device is removable and has been disconnected from the " + 1275c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin "Android device, or the camera service has shut down the connection due " + 1285c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin "to a higher-priority access request for the camera device."; 129e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin case CAMERA_DISABLED: 130e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin return "The camera is disabled due to a device policy, and cannot be opened."; 1315c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin case CAMERA_ERROR: 1325c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin return "The camera device is currently in the error state; " + 1335c9eaf6796a4c972710dd5cd23cdfa334fa8ad2eIgor Murashkin "no further calls to it will succeed."; 134e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin } 135e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin return null; 136e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin } 137b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala} 138