CameraProvider 解析:
CameraProviderManager::getCameraCount()
要看有多少个ProviderInfo ,存储在 std::vector<sp> mProviders 中;
然后看每一个 ProviderInfo 的 mUniqueCameraIds 。
ProviderInfo 是来自哪里?何时创建?
hardware:📷:provider::V2_4::ICameraProvider 代码在哪里?
hardware/interfaces/camera/provider/2.4/ICameraProvider.hal
frameworks/av/services/camera/libcameraservice/common/CameraProviderManager.h
frameworks/av/services/camera/libcameraservice/common/CameraProviderManager.cpp
vendor\bin\hw\android.hardware.camera.provider@2.4-service 是何时启动的?
CameraProviderManager.h 中的 struct HidlServiceInteractionProxyImpl 负责与真正的
Hal 服务交互 。
// Standard use case - call into the normal generated static methods which invoke
// the real hardware service manager
struct HidlServiceInteractionProxyImpl : public HidlServiceInteractionProxy {
virtual bool registerForNotifications(
const std::string &serviceName,
const sp<hidl::manager::V1_0::IServiceNotification>
¬ification) override {
return hardware::camera::provider::V2_4::ICameraProvider::registerForNotifications(
serviceName, notification);
}
virtual sp<hardware::camera::provider::V2_4::ICameraProvider> tryGetService(
const std::string &serviceName) override {
return hardware::camera::provider::V2_4::ICameraProvider::tryGetService(serviceName);
}
virtual sp<hardware::camera::provider::V2_4::ICameraProvider> getService(
const std::string &serviceName) override {
return hardware::camera::provider::V2_4::ICameraProvider::getService(serviceName);
}
virtual hardware::hidl_vec<hardware::hidl_string> listServices() override;
};