diff options
author | Igor Murashkin <iam@google.com> | 2013-06-11 18:10:18 -0700 |
---|---|---|
committer | Igor Murashkin <iam@google.com> | 2013-06-20 20:31:30 -0700 |
commit | e7ee7637747371635a85fedd24d2190bb1f38651 (patch) | |
tree | fbae6cce035752d5386260deb4bf0222b6204ac3 /camera/ICameraService.cpp | |
parent | b3570568b3f37b3f7018257ece53cbc009b91407 (diff) | |
download | frameworks_av-e7ee7637747371635a85fedd24d2190bb1f38651.zip frameworks_av-e7ee7637747371635a85fedd24d2190bb1f38651.tar.gz frameworks_av-e7ee7637747371635a85fedd24d2190bb1f38651.tar.bz2 |
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
Diffstat (limited to 'camera/ICameraService.cpp')
-rw-r--r-- | camera/ICameraService.cpp | 36 |
1 files changed, 35 insertions, 1 deletions
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 <camera/IProCameraCallbacks.h> #include <camera/ICamera.h> #include <camera/ICameraClient.h> +#include <camera/photography/ICameraDeviceUser.h> +#include <camera/photography/ICameraDeviceCallbacks.h> namespace android { @@ -117,7 +119,7 @@ public: return result; } - // connect to camera service + // connect to camera service (android.hardware.Camera) virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, int cameraId, const String16 &clientPackageName, int clientUid) { @@ -149,6 +151,25 @@ public: return interface_cast<IProCameraUser>(reply.readStrongBinder()); } + // connect to camera service (android.hardware.photography.CameraDevice) + virtual sp<ICameraDeviceUser> connect( + const sp<ICameraDeviceCallbacks>& 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<ICameraDeviceUser>(reply.readStrongBinder()); + } + virtual status_t addListener(const sp<ICameraServiceListener>& 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<ICameraDeviceCallbacks> cameraClient = + interface_cast<ICameraDeviceCallbacks>(data.readStrongBinder()); + int32_t cameraId = data.readInt32(); + const String16 clientName = data.readString16(); + int32_t clientUid = data.readInt32(); + sp<ICameraDeviceUser> 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<ICameraServiceListener> listener = |