From e7ee7637747371635a85fedd24d2190bb1f38651 Mon Sep 17 00:00:00 2001 From: Igor Murashkin Date: Tue, 11 Jun 2013 18:10:18 -0700 Subject: Initial implementation of android.hardware.photography.CameraDevice (service) * Verified preview streaming requests * Other things *should* work but unverified / unimplemented in client side Missing: * CameraService needs to return static camera info metadata Bug: 9213377 Change-Id: I71568560fcf18d0e2b408ed1c4d0066647314868 --- camera/ICameraService.cpp | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'camera/ICameraService.cpp') diff --git a/camera/ICameraService.cpp b/camera/ICameraService.cpp index 819e410..068fb0f 100644 --- a/camera/ICameraService.cpp +++ b/camera/ICameraService.cpp @@ -31,6 +31,8 @@ #include #include #include +#include +#include namespace android { @@ -117,7 +119,7 @@ public: return result; } - // connect to camera service + // connect to camera service (android.hardware.Camera) virtual sp connect(const sp& cameraClient, int cameraId, const String16 &clientPackageName, int clientUid) { @@ -149,6 +151,25 @@ public: return interface_cast(reply.readStrongBinder()); } + // connect to camera service (android.hardware.photography.CameraDevice) + virtual sp connect( + const sp& cameraCb, + int cameraId, + const String16& clientPackageName, + int clientUid) + { + Parcel data, reply; + data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); + data.writeStrongBinder(cameraCb->asBinder()); + data.writeInt32(cameraId); + data.writeString16(clientPackageName); + data.writeInt32(clientUid); + remote()->transact(BnCameraService::CONNECT_DEVICE, data, &reply); + + if (readExceptionCode(reply)) return NULL; + return interface_cast(reply.readStrongBinder()); + } + virtual status_t addListener(const sp& listener) { Parcel data, reply; @@ -226,6 +247,19 @@ status_t BnCameraService::onTransact( reply->writeStrongBinder(camera->asBinder()); return NO_ERROR; } break; + case CONNECT_DEVICE: { + CHECK_INTERFACE(ICameraService, data, reply); + sp cameraClient = + interface_cast(data.readStrongBinder()); + int32_t cameraId = data.readInt32(); + const String16 clientName = data.readString16(); + int32_t clientUid = data.readInt32(); + sp camera = connect(cameraClient, cameraId, + clientName, clientUid); + reply->writeNoException(); + reply->writeStrongBinder(camera->asBinder()); + return NO_ERROR; + } break; case ADD_LISTENER: { CHECK_INTERFACE(ICameraService, data, reply); sp listener = -- cgit v1.1