#include #include #include #include #include #include #include using namespace android; using namespace android::hardware::audio::V7_0; using namespace android::hardware::audio::common::V7_0; int main(int argc, char* argv[]) { if (argc < 2) { std::cerr << "Usage: " << argv[0] << " " << std::endl; return 1; } std::string btAddress = argv[1]; // Get the HIDL service sp factory = IDevicesFactory::getService(); if (factory == nullptr) { std::cerr << "Failed to get IDevicesFactory service" << std::endl; return 1; } sp device; ::android::hardware::Return ret = factory->openDevice(AUDIO_HARDWARE_MODULE_ID_PRIMARY, [&](Result r, const sp& d) { if (r == Result::OK) { device = d; } }); if (!ret.isOk() || device == nullptr) { std::cerr << "Failed to open default device" << std::endl; return 1; } // Create DeviceAddress for BT SCO headset DeviceAddress address; address.deviceType = audio_device_to_string(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET); address.address.id(btAddress); // Call setConnectedState ::android::hardware::Return setRet = device->setConnectedState(address, true); if (!setRet.isOk() || setRet != Result::OK) { std::cerr << "Failed to set connected state [OUT]" << std::endl; return 1; } address.deviceType = audio_device_to_string(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET); address.address.id(btAddress); // Call setConnectedState setRet = device->setConnectedState(address, true); if (!setRet.isOk() || setRet != Result::OK) { std::cerr << "Failed to set connected state [IN]" << std::endl; return 1; } std::cout << "Successfully notified HAL of BT headset connection 1" << std::endl; return 0; }