ICameraService.aidl revision f51fca277eb5b86bd0b2e3fc90ecb2b63089de29
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;
24d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.camera2.impl.CameraMetadataNative;
25d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.ICameraServiceListener;
26d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalaimport android.hardware.CameraInfo;
27f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvalaimport android.hardware.CameraStatus;
28d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
29d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala/**
30d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * Binder interface for the native camera service running in mediaserver.
31d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala *
32d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala * @hide
33d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala */
34d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvalainterface ICameraService
35d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala{
36d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
37d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * All camera service and device Binder calls may return a
38d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * ServiceSpecificException with the following error codes
39d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
40d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_PERMISSION_DENIED = 1;
41d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_ALREADY_EXISTS = 2;
42d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_ILLEGAL_ARGUMENT = 3;
43d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_DISCONNECTED = 4;
44d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_TIMED_OUT = 5;
45d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_DISABLED = 6;
46d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_CAMERA_IN_USE = 7;
47d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_MAX_CAMERAS_IN_USE = 8;
48d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_DEPRECATED_HAL = 9;
49d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int ERROR_INVALID_OPERATION = 10;
50d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
51d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
52d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Types for getNumberOfCameras
53d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
54d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int CAMERA_TYPE_BACKWARD_COMPATIBLE = 0;
55d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int CAMERA_TYPE_ALL = 1;
56d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
57d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
58d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Return the number of camera devices available in the system
59d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
60d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    int getNumberOfCameras(int type);
61d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
62d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
63d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Fetch basic camera information for a camera device
64d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
65d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    CameraInfo getCameraInfo(int cameraId);
66d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
67d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
68d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Default UID/PID values for non-privileged callers of
69d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * connect(), connectDevice(), and connectLegacy()
70d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
71d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int USE_CALLING_UID = -1;
72d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int USE_CALLING_PID = -1;
73d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
74d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
75d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Open a camera device through the old camera API
76d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
77d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    ICamera connect(ICameraClient client,
78d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int cameraId,
79d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            String opPackageName,
80d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int clientUid, int clientPid);
81d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
82d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
83d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Open a camera device through the new camera API
84d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Only supported for device HAL versions >= 3.2
85d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
86d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    ICameraDeviceUser connectDevice(ICameraDeviceCallbacks callbacks,
87f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala            String cameraId,
88d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            String opPackageName,
89d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int clientUid);
90d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
91d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
92d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * halVersion constant for connectLegacy
93d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
94d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int CAMERA_HAL_API_VERSION_UNSPECIFIED = -1;
95d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
96d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
97d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Open a camera device in legacy mode, if supported by the camera module HAL.
98d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
99d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    ICamera connectLegacy(ICameraClient client,
100d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int cameraId,
101d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int halVersion,
102d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            String opPackageName,
103d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala            int clientUid);
104d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
105d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
106f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * Add listener for changes to camera device and flashlight state.
107f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     *
108f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * Also returns the set of currently-known camera IDs and state of each device.
109f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * Adding a listener will trigger the torch status listener to fire for all
110f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * devices that have a flash unit
111f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     */
112f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    CameraStatus[] addListener(ICameraServiceListener listener);
113f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala
114f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    /**
115f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala     * Remove listener for changes to camera device and flashlight state.
116d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
117d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    void removeListener(ICameraServiceListener listener);
118d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
119d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
120d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Read the static camera metadata for a camera device.
121d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Only supported for device HAL versions >= 3.2
122d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
123f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    CameraMetadataNative getCameraCharacteristics(String cameraId);
124d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
125d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
126d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Read in the vendor tag descriptors from the camera module HAL.
127d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Intended to be used by the native code of CameraMetadataNative to correctly
128d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * interpret camera metadata with vendor tags.
129d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
130d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    VendorTagDescriptor getCameraVendorTagDescriptor();
131d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
132d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
133d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Read the legacy camera1 parameters into a String
134d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
135d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    String getLegacyParameters(int cameraId);
136d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
137d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
138d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * apiVersion constants for supportsCameraApi
139d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
140d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int API_VERSION_1 = 1;
141d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int API_VERSION_2 = 2;
142d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
143d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    // Determines if a particular API version is supported directly
144f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    boolean supportsCameraApi(String cameraId, int apiVersion);
145d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
146f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvala    void setTorchMode(String cameraId, boolean enabled, IBinder clientBinder);
147d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala
148d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    /**
149d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Notify the camera service of a system event.  Should only be called from system_server.
150d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     *
151d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     * Callers require the android.permission.CAMERA_SEND_SYSTEM_EVENTS permission.
152d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala     */
153d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int EVENT_NONE = 0;
154d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    const int EVENT_USER_SWITCHED = 1;
155d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala    oneway void notifySystemEvent(int eventId, in int[] args);
156d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala}
157