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