Snippet content copied to clipboard.
Are you sure to delete this snippet? No, don't delete
  1. #include <iostream>
  2. #include <string>
  3. #include <binder/IServiceManager.h>
  4. #include <hidl/HidlTransportSupport.h>
  5. #include <android/hardware/audio/7.0/IDevicesFactory.h>
  6. #include <android/hardware/audio/common/7.0/types.h>
  7. #include <system/audio.h>
  8. using namespace android;
  9. using namespace android::hardware::audio::V7_0;
  10. using namespace android::hardware::audio::common::V7_0;
  11. int main(int argc, char* argv[]) {
  12. if (argc < 2) {
  13. std::cerr << "Usage: " << argv[0] << " <bt_address>" << std::endl;
  14. return 1;
  15. }
  16. std::string btAddress = argv[1];
  17. // Get the HIDL service
  18. sp<IDevicesFactory> factory = IDevicesFactory::getService();
  19. if (factory == nullptr) {
  20. std::cerr << "Failed to get IDevicesFactory service" << std::endl;
  21. return 1;
  22. }
  23. sp<IDevice> device;
  24. ::android::hardware::Return<void> ret = factory->openDevice(AUDIO_HARDWARE_MODULE_ID_PRIMARY, [&](Result r, const sp<IDevice>& d) {
  25. if (r == Result::OK) {
  26. device = d;
  27. }
  28. });
  29. if (!ret.isOk() || device == nullptr) {
  30. std::cerr << "Failed to open default device" << std::endl;
  31. return 1;
  32. }
  33. // Create DeviceAddress for BT SCO headset
  34. DeviceAddress address;
  35. address.deviceType = audio_device_to_string(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET);
  36. address.address.id(btAddress);
  37. // Call setConnectedState
  38. ::android::hardware::Return<Result> setRet = device->setConnectedState(address, true);
  39. if (!setRet.isOk() || setRet != Result::OK) {
  40. std::cerr << "Failed to set connected state [OUT]" << std::endl;
  41. return 1;
  42. }
  43. address.deviceType = audio_device_to_string(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET);
  44. address.address.id(btAddress);
  45. // Call setConnectedState
  46. setRet = device->setConnectedState(address, true);
  47. if (!setRet.isOk() || setRet != Result::OK) {
  48. std::cerr << "Failed to set connected state [IN]" << std::endl;
  49. return 1;
  50. }
  51. std::cout << "Successfully notified HAL of BT headset connection 1" << std::endl;
  52. return 0;
  53. }

Edit this Snippet