1 /* 2 * Copyright (C) 2008 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 #ifndef ANDROID_HARDWARE_ICAMERASERVICE_H 18 #define ANDROID_HARDWARE_ICAMERASERVICE_H 19 20 #include <utils/RefBase.h> 21 #include <binder/IInterface.h> 22 #include <binder/Parcel.h> 23 24 namespace android { 25 26 class ICamera; 27 class ICameraClient; 28 class IProCameraUser; 29 class IProCameraCallbacks; 30 class ICameraServiceListener; 31 32 class ICameraService : public IInterface 33 { 34 public: 35 enum { 36 GET_NUMBER_OF_CAMERAS = IBinder::FIRST_CALL_TRANSACTION, 37 GET_CAMERA_INFO, 38 CONNECT, 39 CONNECT_PRO, 40 ADD_LISTENER, 41 REMOVE_LISTENER, 42 }; 43 44 enum { 45 USE_CALLING_UID = -1 46 }; 47 48 public: 49 DECLARE_META_INTERFACE(CameraService); 50 51 virtual int32_t getNumberOfCameras() = 0; 52 virtual status_t getCameraInfo(int cameraId, 53 struct CameraInfo* cameraInfo) = 0; 54 55 // Returns 'OK' if operation succeeded 56 // - Errors: ALREADY_EXISTS if the listener was already added 57 virtual status_t addListener(const sp<ICameraServiceListener>& listener) 58 = 0; 59 // Returns 'OK' if operation succeeded 60 // - Errors: BAD_VALUE if specified listener was not in the listener list 61 virtual status_t removeListener(const sp<ICameraServiceListener>& listener) 62 = 0; 63 /** 64 * clientPackageName and clientUid are used for permissions checking. if 65 * clientUid == USE_CALLING_UID, then the calling UID is used instead. Only 66 * trusted callers can set a clientUid other than USE_CALLING_UID. 67 */ 68 virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, 69 int cameraId, 70 const String16& clientPackageName, 71 int clientUid) = 0; 72 73 virtual sp<IProCameraUser> connect(const sp<IProCameraCallbacks>& cameraCb, 74 int cameraId, 75 const String16& clientPackageName, 76 int clientUid) = 0; 77 }; 78 79 // ---------------------------------------------------------------------------- 80 81 class BnCameraService: public BnInterface<ICameraService> 82 { 83 public: 84 virtual status_t onTransact( uint32_t code, 85 const Parcel& data, 86 Parcel* reply, 87 uint32_t flags = 0); 88 }; 89 90 }; // namespace android 91 92 #endif 93