Camera: Switch camera2 to auto-gen C++ binder interfaces
- Move camera service AIDL files to frameworks/av
- Build C++ interface stubs with AIDL tools
- Add necessary native-side parcelables and update existing ones
- Remove manually-written stubs, rearrange remaining manual stubs
- Adjust implementations to work with auto-generated stubs
- Adjust method signatures for auto-gen differences
- Add rich error messages using binder::Status
Bug: 25091611
Change-Id: I6f69f34b9d1a3f8d1fb7db87357363f8fa8483ff
diff --git a/camera/ndk/impl/ACameraManager.h b/camera/ndk/impl/ACameraManager.h
index b68685d..3f2262f 100644
--- a/camera/ndk/impl/ACameraManager.h
+++ b/camera/ndk/impl/ACameraManager.h
@@ -19,9 +19,9 @@
#include "NdkCameraManager.h"
+#include <android/hardware/ICameraService.h>
+#include <android/hardware/BnCameraServiceListener.h>
#include <camera/CameraMetadata.h>
-#include <camera/ICameraService.h>
-#include <camera/ICameraServiceListener.h>
#include <binder/IServiceManager.h>
#include <utils/StrongPointer.h>
#include <utils/Mutex.h>
@@ -33,8 +33,6 @@
#include <set>
#include <map>
-using namespace android;
-
namespace android {
/**
@@ -47,7 +45,7 @@
class CameraManagerGlobal final : public RefBase {
public:
static CameraManagerGlobal& getInstance();
- sp<ICameraService> getCameraService();
+ sp<hardware::ICameraService> getCameraService();
void registerAvailabilityCallback(
const ACameraManager_AvailabilityCallbacks *callback);
@@ -55,7 +53,7 @@
const ACameraManager_AvailabilityCallbacks *callback);
private:
- sp<ICameraService> mCameraService;
+ sp<hardware::ICameraService> mCameraService;
const int kCameraServicePollDelay = 500000; // 0.5s
const char* kCameraServiceName = "media.camera";
Mutex mLock;
@@ -71,13 +69,16 @@
};
sp<DeathNotifier> mDeathNotifier;
- class CameraServiceListener final : public BnCameraServiceListener {
+ class CameraServiceListener final : public hardware::BnCameraServiceListener {
public:
CameraServiceListener(CameraManagerGlobal* cm) : mCameraManager(cm) {}
- virtual void onStatusChanged(Status status, int32_t cameraId);
+ virtual binder::Status onStatusChanged(int32_t status, int32_t cameraId);
// Torch API not implemented yet
- virtual void onTorchStatusChanged(TorchStatus, const String16&) {};
+ virtual binder::Status onTorchStatusChanged(int32_t, const String16&) {
+ return binder::Status::ok();
+ }
+
private:
const wp<CameraManagerGlobal> mCameraManager;
};
@@ -132,15 +133,14 @@
sp<CallbackHandler> mHandler;
sp<ALooper> mCbLooper; // Looper thread where callbacks actually happen on
- typedef ICameraServiceListener::Status Status;
- void onStatusChanged(Status status, int32_t cameraId);
- void onStatusChangedLocked(Status status, int32_t cameraId);
+ void onStatusChanged(int32_t status, int32_t cameraId);
+ void onStatusChangedLocked(int32_t status, int32_t cameraId);
// Utils for status
- static bool validStatus(Status status);
- static bool isStatusAvailable(Status status);
+ static bool validStatus(int32_t status);
+ static bool isStatusAvailable(int32_t status);
// Map camera_id -> status
- std::map<int32_t, Status> mDeviceStatusMap;
+ std::map<int32_t, int32_t> mDeviceStatusMap;
// For the singleton instance
static Mutex sLock;
@@ -158,7 +158,7 @@
struct ACameraManager {
ACameraManager() :
mCachedCameraIdList({kCameraIdListNotInit, nullptr}),
- mGlobalManager(&(CameraManagerGlobal::getInstance())) {}
+ mGlobalManager(&(android::CameraManagerGlobal::getInstance())) {}
~ACameraManager();
camera_status_t getCameraIdList(ACameraIdList** cameraIdList);
static void deleteCameraIdList(ACameraIdList* cameraIdList);
@@ -175,10 +175,10 @@
enum {
kCameraIdListNotInit = -1
};
- Mutex mLock;
+ android::Mutex mLock;
std::set<int> mCameraIds; // Init by getOrCreateCameraIdListLocked
ACameraIdList mCachedCameraIdList; // Init by getOrCreateCameraIdListLocked
- sp<CameraManagerGlobal> mGlobalManager;
+ android::sp<android::CameraManagerGlobal> mGlobalManager;
};
#endif //_ACAMERA_MANAGER_H