1d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala/*
2d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * Copyright (C) 2013 The Android Open Source Project
3d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala *
4d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License");
5d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * you may not use this file except in compliance with the License.
6d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * You may obtain a copy of the License at
7d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala *
8d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala *      http://www.apache.org/licenses/LICENSE-2.0
9d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala *
10d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software
11d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS,
12d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * See the License for the specific language governing permissions and
14d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * limitations under the License.
15d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala */
16d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
17d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalapackage android.hardware;
18d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
19d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.ICamera;
20d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.ICameraClient;
21d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.camera2.ICameraDeviceUser;
22d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.camera2.ICameraDeviceCallbacks;
23d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.camera2.params.VendorTagDescriptor;
2471c73a2985a7ac65ee597be3441ab300fa56e22eEmilian Peevimport android.hardware.camera2.params.VendorTagDescriptorCache;
25d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.camera2.impl.CameraMetadataNative;
26d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.ICameraServiceListener;
27d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.CameraInfo;
28f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvalaimport android.hardware.CameraStatus;
29d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
30d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala/**
31d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * Binder interface for the native camera service running in mediaserver.
32d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala *
33d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * @hide
34d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala */
35d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalainterface ICameraService
36d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala{
37d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
38d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * All camera service and device Binder calls may return a
39d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * ServiceSpecificException with the following error codes
40d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
41d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_PERMISSION_DENIED = 1;
42d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_ALREADY_EXISTS = 2;
43d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_ILLEGAL_ARGUMENT = 3;
44d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_DISCONNECTED = 4;
45d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_TIMED_OUT = 5;
46d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_DISABLED = 6;
47d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_CAMERA_IN_USE = 7;
48d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_MAX_CAMERAS_IN_USE = 8;
49d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_DEPRECATED_HAL = 9;
50d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_INVALID_OPERATION = 10;
51d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
52d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
53d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Types for getNumberOfCameras
54d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
55d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int CAMERA_TYPE_BACKWARD_COMPATIBLE = 0;
56d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int CAMERA_TYPE_ALL = 1;
57d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
58d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
59d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Return the number of camera devices available in the system
60d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
61d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    int getNumberOfCameras(int type);
62d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
63d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
64d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Fetch basic camera information for a camera device
65d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
66d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    CameraInfo getCameraInfo(int cameraId);
67d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
68d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
69d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Default UID/PID values for non-privileged callers of
70d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * connect(), connectDevice(), and connectLegacy()
71d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
72d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int USE_CALLING_UID = -1;
73d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int USE_CALLING_PID = -1;
74d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
75d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
76d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Open a camera device through the old camera API
77d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
78d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    ICamera connect(ICameraClient client,
79d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int cameraId,
80d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            String opPackageName,
81d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int clientUid, int clientPid);
82d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
83d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
84d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Open a camera device through the new camera API
85d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Only supported for device HAL versions >= 3.2
86d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
87d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    ICameraDeviceUser connectDevice(ICameraDeviceCallbacks callbacks,
88f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala            String cameraId,
89d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            String opPackageName,
90d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int clientUid);
91d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
92d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
93d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * halVersion constant for connectLegacy
94d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
95d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int CAMERA_HAL_API_VERSION_UNSPECIFIED = -1;
96d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
97d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
98d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Open a camera device in legacy mode, if supported by the camera module HAL.
99d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
100d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    ICamera connectLegacy(ICameraClient client,
101d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int cameraId,
102d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int halVersion,
103d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            String opPackageName,
104d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int clientUid);
105d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
106d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
107f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * Add listener for changes to camera device and flashlight state.
108f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     *
109f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * Also returns the set of currently-known camera IDs and state of each device.
110f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * Adding a listener will trigger the torch status listener to fire for all
111f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * devices that have a flash unit
112f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     */
113f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    CameraStatus[] addListener(ICameraServiceListener listener);
114f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala
115f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    /**
116f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * Remove listener for changes to camera device and flashlight state.
117d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
118d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    void removeListener(ICameraServiceListener listener);
119d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
120d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
121d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Read the static camera metadata for a camera device.
122d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Only supported for device HAL versions >= 3.2
123d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
124f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    CameraMetadataNative getCameraCharacteristics(String cameraId);
125d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
126d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
127d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Read in the vendor tag descriptors from the camera module HAL.
128d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Intended to be used by the native code of CameraMetadataNative to correctly
129d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * interpret camera metadata with vendor tags.
130d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
131d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    VendorTagDescriptor getCameraVendorTagDescriptor();
132d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
133d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
13471c73a2985a7ac65ee597be3441ab300fa56e22eEmilian Peev     * Retrieve the vendor tag descriptor cache which can have multiple vendor
13571c73a2985a7ac65ee597be3441ab300fa56e22eEmilian Peev     * providers.
13671c73a2985a7ac65ee597be3441ab300fa56e22eEmilian Peev     * Intended to be used by the native code of CameraMetadataNative to correctly
13771c73a2985a7ac65ee597be3441ab300fa56e22eEmilian Peev     * interpret camera metadata with vendor tags.
13871c73a2985a7ac65ee597be3441ab300fa56e22eEmilian Peev     */
13971c73a2985a7ac65ee597be3441ab300fa56e22eEmilian Peev    VendorTagDescriptorCache getCameraVendorTagCache();
14071c73a2985a7ac65ee597be3441ab300fa56e22eEmilian Peev
14171c73a2985a7ac65ee597be3441ab300fa56e22eEmilian Peev    /**
142d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Read the legacy camera1 parameters into a String
143d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
144d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    String getLegacyParameters(int cameraId);
145d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
146d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
147d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * apiVersion constants for supportsCameraApi
148d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
149d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int API_VERSION_1 = 1;
150d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int API_VERSION_2 = 2;
151d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
152d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    // Determines if a particular API version is supported directly
153f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    boolean supportsCameraApi(String cameraId, int apiVersion);
154d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
155f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    void setTorchMode(String cameraId, boolean enabled, IBinder clientBinder);
156d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
157d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
158d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Notify the camera service of a system event.  Should only be called from system_server.
159d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     *
160d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Callers require the android.permission.CAMERA_SEND_SYSTEM_EVENTS permission.
161d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
162d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int EVENT_NONE = 0;
163d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int EVENT_USER_SWITCHED = 1;
164d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    oneway void notifySystemEvent(int eventId, in int[] args);
165d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala}
166