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