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