@ -54,6 +54,11 @@ class CameraManagerGlobal final : public RefBase {
void unregisterAvailabilityCallback (
void unregisterAvailabilityCallback (
const ACameraManager_AvailabilityCallbacks * callback ) ;
const ACameraManager_AvailabilityCallbacks * callback ) ;
void registerExtendedAvailabilityCallback (
const ACameraManager_ExtendedAvailabilityCallbacks * callback ) ;
void unregisterExtendedAvailabilityCallback (
const ACameraManager_ExtendedAvailabilityCallbacks * callback ) ;
/**
/**
* Return camera IDs that support camera2
* Return camera IDs that support camera2
*/
*/
@ -86,10 +91,7 @@ class CameraManagerGlobal final : public RefBase {
return binder : : Status : : ok ( ) ;
return binder : : Status : : ok ( ) ;
}
}
// Access priority API not implemented yet
virtual binder : : Status onCameraAccessPrioritiesChanged ( ) ;
virtual binder : : Status onCameraAccessPrioritiesChanged ( ) {
return binder : : Status : : ok ( ) ;
}
private :
private :
const wp < CameraManagerGlobal > mCameraManager ;
const wp < CameraManagerGlobal > mCameraManager ;
@ -101,11 +103,19 @@ class CameraManagerGlobal final : public RefBase {
explicit Callback ( const ACameraManager_AvailabilityCallbacks * callback ) :
explicit Callback ( const ACameraManager_AvailabilityCallbacks * callback ) :
mAvailable ( callback - > onCameraAvailable ) ,
mAvailable ( callback - > onCameraAvailable ) ,
mUnavailable ( callback - > onCameraUnavailable ) ,
mUnavailable ( callback - > onCameraUnavailable ) ,
mAccessPriorityChanged ( nullptr ) ,
mContext ( callback - > context ) { }
mContext ( callback - > context ) { }
explicit Callback ( const ACameraManager_ExtendedAvailabilityCallbacks * callback ) :
mAvailable ( callback - > availabilityCallbacks . onCameraAvailable ) ,
mUnavailable ( callback - > availabilityCallbacks . onCameraUnavailable ) ,
mAccessPriorityChanged ( callback - > onCameraAccessPrioritiesChanged ) ,
mContext ( callback - > availabilityCallbacks . context ) { }
bool operator = = ( const Callback & other ) const {
bool operator = = ( const Callback & other ) const {
return ( mAvailable = = other . mAvailable & &
return ( mAvailable = = other . mAvailable & &
mUnavailable = = other . mUnavailable & &
mUnavailable = = other . mUnavailable & &
mAccessPriorityChanged = = other . mAccessPriorityChanged & &
mContext = = other . mContext ) ;
mContext = = other . mContext ) ;
}
}
bool operator ! = ( const Callback & other ) const {
bool operator ! = ( const Callback & other ) const {
@ -114,6 +124,9 @@ class CameraManagerGlobal final : public RefBase {
bool operator < ( const Callback & other ) const {
bool operator < ( const Callback & other ) const {
if ( * this = = other ) return false ;
if ( * this = = other ) return false ;
if ( mContext ! = other . mContext ) return mContext < other . mContext ;
if ( mContext ! = other . mContext ) return mContext < other . mContext ;
if ( mAccessPriorityChanged ! = other . mAccessPriorityChanged ) {
return mAccessPriorityChanged < other . mAccessPriorityChanged ;
}
if ( mAvailable ! = other . mAvailable ) return mAvailable < other . mAvailable ;
if ( mAvailable ! = other . mAvailable ) return mAvailable < other . mAvailable ;
return mUnavailable < other . mUnavailable ;
return mUnavailable < other . mUnavailable ;
}
}
@ -122,13 +135,15 @@ class CameraManagerGlobal final : public RefBase {
}
}
ACameraManager_AvailabilityCallback mAvailable ;
ACameraManager_AvailabilityCallback mAvailable ;
ACameraManager_AvailabilityCallback mUnavailable ;
ACameraManager_AvailabilityCallback mUnavailable ;
ACameraManager_AccessPrioritiesChangedCallback mAccessPriorityChanged ;
void * mContext ;
void * mContext ;
} ;
} ;
std : : set < Callback > mCallbacks ;
std : : set < Callback > mCallbacks ;
// definition of handler and message
// definition of handler and message
enum {
enum {
kWhatSendSingleCallback
kWhatSendSingleCallback ,
kWhatSendSingleAccessCallback ,
} ;
} ;
static const char * kCameraIdKey ;
static const char * kCameraIdKey ;
static const char * kCallbackFpKey ;
static const char * kCallbackFpKey ;
@ -141,6 +156,7 @@ class CameraManagerGlobal final : public RefBase {
sp < CallbackHandler > mHandler ;
sp < CallbackHandler > mHandler ;
sp < ALooper > mCbLooper ; // Looper thread where callbacks actually happen on
sp < ALooper > mCbLooper ; // Looper thread where callbacks actually happen on
void onCameraAccessPrioritiesChanged ( ) ;
void onStatusChanged ( int32_t status , const String8 & cameraId ) ;
void onStatusChanged ( int32_t status , const String8 & cameraId ) ;
void onStatusChangedLocked ( int32_t status , const String8 & cameraId ) ;
void onStatusChangedLocked ( int32_t status , const String8 & cameraId ) ;
// Utils for status
// Utils for status