CameraAccessException.java revision 66ef64514464a1bb9c7931993cc8db3d7539f39a
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
32b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     */
33b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public static final int CAMERA_IN_USE = 1;
34b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
35b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    /**
36b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * The system-wide limit for number of open cameras has been reached,
37b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * and more camera devices cannot be opened until previous instances are
38b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * closed.
39b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     */
40b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public static final int MAX_CAMERAS_IN_USE = 2;
41b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
42b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    /**
43b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * The camera is disabled due to a device policy, and cannot be opened.
44b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     *
45b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * @see android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName, boolean)
46b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     */
47b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public static final int CAMERA_DISABLED = 3;
48b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
49b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    /**
50b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * The camera device is removable and has been disconnected from the Android
5166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk     * device, or the camera id used with {@link android.hardware.camera2.CameraManager#openCamera}
5266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk     * is no longer valid, or the camera service has shut down the connection due to a
53b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * higher-priority access request for the camera device.
54b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     */
55b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public static final int CAMERA_DISCONNECTED = 4;
56b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
5766ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    /**
5866ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk     * A deprecated HAL version is in use.
5966ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk     * @hide
6066ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk     */
6166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    public static final int CAMERA_DEPRECATED_HAL = 1000;
6266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
63e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    // Make the eclipse warning about serializable exceptions go away
64e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    private static final long serialVersionUID = 5630338637471475675L; // randomly generated
65e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin
66e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    private final int mReason;
67b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
68b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    /**
69b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * The reason for the failure to access the camera.
70b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     *
71b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * @see #CAMERA_IN_USE
72b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * @see #MAX_CAMERAS_IN_USE
73b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * @see #CAMERA_DISABLED
74b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * @see #CAMERA_DISCONNECTED
75b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     */
76b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public final int getReason() {
77b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        return mReason;
78b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
79b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
80b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public CameraAccessException(int problem) {
81e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        super(getDefaultMessage(problem));
82b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        mReason = problem;
83b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
84b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
85b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public CameraAccessException(int problem, String message) {
86b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        super(message);
87b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        mReason = problem;
88b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
89b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
90b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public CameraAccessException(int problem, String message, Throwable cause) {
91b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        super(message, cause);
92b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        mReason = problem;
93b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
94b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
95b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public CameraAccessException(int problem, Throwable cause) {
96e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        super(getDefaultMessage(problem), cause);
97b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        mReason = problem;
98b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
99e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin
100e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    private static String getDefaultMessage(int problem) {
101e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        switch (problem) {
102e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin            case CAMERA_IN_USE:
103e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                return "The camera device is in use already";
104e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin            case MAX_CAMERAS_IN_USE:
105e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                return "The system-wide limit for number of open cameras has been reached, " +
106e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                       "and more camera devices cannot be opened until previous instances " +
107e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                       "are closed.";
108e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin            case CAMERA_DISABLED:
109e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                return "The camera is disabled due to a device policy, and cannot be opened.";
110e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin            case CAMERA_DISCONNECTED:
111e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                return "The camera device is removable and has been disconnected from the Android" +
112e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                       " device, or the camera service has shut down the connection due to a " +
113e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                       "higher-priority access request for the camera device.";
114e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        }
115e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        return null;
116e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    }
117b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala}
118