summaryrefslogtreecommitdiffstats
path: root/camera/ICameraService.cpp
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2013-06-11 18:10:18 -0700
committerIgor Murashkin <iam@google.com>2013-06-20 20:31:30 -0700
commite7ee7637747371635a85fedd24d2190bb1f38651 (patch)
treefbae6cce035752d5386260deb4bf0222b6204ac3 /camera/ICameraService.cpp
parentb3570568b3f37b3f7018257ece53cbc009b91407 (diff)
downloadframeworks_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.cpp36
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 =