CameraAccessException.java revision 2f1a2e423e0fbb64467d6fcfa4e82c6384f31210
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
51b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * device, or the camera service has shut down the connection due to a
52b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * higher-priority access request for the camera device.
53b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     */
54b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public static final int CAMERA_DISCONNECTED = 4;
55b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
56e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    // Make the eclipse warning about serializable exceptions go away
57e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    private static final long serialVersionUID = 5630338637471475675L; // randomly generated
58e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin
59e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    private final int mReason;
60b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
61b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    /**
62b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * The reason for the failure to access the camera.
63b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     *
64b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * @see #CAMERA_IN_USE
65b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * @see #MAX_CAMERAS_IN_USE
66b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * @see #CAMERA_DISABLED
67b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     * @see #CAMERA_DISCONNECTED
68b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala     */
69b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public final int getReason() {
70b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        return mReason;
71b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
72b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
73b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public CameraAccessException(int problem) {
74e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        super(getDefaultMessage(problem));
75b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        mReason = problem;
76b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
77b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
78b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public CameraAccessException(int problem, String message) {
79b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        super(message);
80b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        mReason = problem;
81b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
82b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
83b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public CameraAccessException(int problem, String message, Throwable cause) {
84b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        super(message, cause);
85b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        mReason = problem;
86b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
87b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala
88b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    public CameraAccessException(int problem, Throwable cause) {
89e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        super(getDefaultMessage(problem), cause);
90b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala        mReason = problem;
91b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala    }
92e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin
93e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    private static String getDefaultMessage(int problem) {
94e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        switch (problem) {
95e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin            case CAMERA_IN_USE:
96e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                return "The camera device is in use already";
97e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin            case MAX_CAMERAS_IN_USE:
98e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                return "The system-wide limit for number of open cameras has been reached, " +
99e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                       "and more camera devices cannot be opened until previous instances " +
100e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                       "are closed.";
101e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin            case CAMERA_DISABLED:
102e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                return "The camera is disabled due to a device policy, and cannot be opened.";
103e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin            case CAMERA_DISCONNECTED:
104e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                return "The camera device is removable and has been disconnected from the Android" +
105e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                       " device, or the camera service has shut down the connection due to a " +
106e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin                       "higher-priority access request for the camera device.";
107e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        }
108e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin        return null;
109e363fbb2647aeb5ef4c87160d84c6b9ae8d45598Igor Murashkin    }
110b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala}
111