diff --git a/system/audio_hal_interface/aidl/client_interface_aidl.cc b/system/audio_hal_interface/aidl/client_interface_aidl.cc index 9af28031f73d9109a8ad8eb015fe9e5a2703b981..5a9dbbccad7bb81d206d1f1e8b030c267a573880 100644 --- a/system/audio_hal_interface/aidl/client_interface_aidl.cc +++ b/system/audio_hal_interface/aidl/client_interface_aidl.cc @@ -56,7 +56,7 @@ BluetoothAudioClientInterface::BluetoothAudioClientInterface( bool BluetoothAudioClientInterface::is_aidl_available() { return AServiceManager_isDeclared( - kDefaultAudioProviderFactoryInterface.c_str()); + audioProviderFactoryInterface().c_str()); } std::vector @@ -72,7 +72,7 @@ BluetoothAudioClientInterface::GetAudioCapabilities(SessionType session_type) { } auto provider_factory = IBluetoothAudioProviderFactory::fromBinder( ::ndk::SpAIBinder(AServiceManager_waitForService( - kDefaultAudioProviderFactoryInterface.c_str()))); + audioProviderFactoryInterface().c_str()))); if (provider_factory == nullptr) { LOG(ERROR) << __func__ << ", can't get capability from unknown factory"; @@ -99,7 +99,7 @@ void BluetoothAudioClientInterface::FetchAudioProvider() { } auto provider_factory = IBluetoothAudioProviderFactory::fromBinder( ::ndk::SpAIBinder(AServiceManager_waitForService( - kDefaultAudioProviderFactoryInterface.c_str()))); + audioProviderFactoryInterface().c_str()))); if (provider_factory == nullptr) { LOG(ERROR) << __func__ << ", can't get capability from unknown factory"; diff --git a/system/audio_hal_interface/aidl/client_interface_aidl.h b/system/audio_hal_interface/aidl/client_interface_aidl.h index 17abefe8fe2d837d83af33eca5b3f3d86fa2f828..07dd11266fcaca0fb23c48aa3c6a5780e6ede577 100644 --- a/system/audio_hal_interface/aidl/client_interface_aidl.h +++ b/system/audio_hal_interface/aidl/client_interface_aidl.h @@ -28,6 +28,7 @@ #include "bluetooth_audio_port_impl.h" #include "common/message_loop_thread.h" #include "transport_instance.h" +#include "osi/include/properties.h" #define BLUETOOTH_AUDIO_HAL_PROP_DISABLED \ "persist.bluetooth.bluetooth_audio_hal.disabled" @@ -117,6 +118,12 @@ class BluetoothAudioClientInterface { // "android.hardware.bluetooth.audio.IBluetoothAudioProviderFactory/default"; static inline const std::string kDefaultAudioProviderFactoryInterface = std::string() + IBluetoothAudioProviderFactory::descriptor + "/default"; + static inline const std::string kSystemAudioProviderFactoryInterface = + std::string() + IBluetoothAudioProviderFactory::descriptor + "/sysbta"; + static inline const std::string audioProviderFactoryInterface() { + return osi_property_get_bool("persist.bluetooth.system_audio_hal.enabled", false) + ? kSystemAudioProviderFactoryInterface : kDefaultAudioProviderFactoryInterface; + } private: IBluetoothTransportInstance* transport_; diff --git a/system/audio_hal_interface/hal_version_manager.cc b/system/audio_hal_interface/hal_version_manager.cc index a2c192f37d1975298ecec642f5cb35df5f5be6b7..c3d1cf35c2c06bf51f44dc2c9a07b8c6347773df 100644 --- a/system/audio_hal_interface/hal_version_manager.cc +++ b/system/audio_hal_interface/hal_version_manager.cc @@ -24,6 +24,7 @@ #include #include "aidl/audio_aidl_interfaces.h" +#include "osi/include/properties.h" namespace bluetooth { namespace audio { @@ -33,6 +34,12 @@ using ::aidl::android::hardware::bluetooth::audio:: static const std::string kDefaultAudioProviderFactoryInterface = std::string() + IBluetoothAudioProviderFactory::descriptor + "/default"; +static const std::string kSystemAudioProviderFactoryInterface = + std::string() + IBluetoothAudioProviderFactory::descriptor + "/sysbta"; +static inline const std::string audioProviderFactoryInterface() { + return osi_property_get_bool("persist.bluetooth.system_audio_hal.enabled", false) + ? kSystemAudioProviderFactoryInterface : kDefaultAudioProviderFactoryInterface; +} std::unique_ptr HalVersionManager::instance_ptr = std::make_unique(); @@ -92,7 +99,7 @@ HalVersionManager::GetProvidersFactory_2_0() { HalVersionManager::HalVersionManager() { if (AServiceManager_checkService( - kDefaultAudioProviderFactoryInterface.c_str()) != nullptr) { + audioProviderFactoryInterface().c_str()) != nullptr) { hal_version_ = BluetoothAudioHalVersion::VERSION_AIDL_V1; return; }