I have a car Bluetooth FM transmitter that connects to my Android phone. The problem is that the transmitter’s microphone is very bad and people can hardly hear me when I make calls or use Google Assistant. I want to use my phone’s microphone instead of the transmitter’s microphone, but still use the transmitter’s speaker. Is there any way to do that? I tried looking for a setting to choose which microphone to use, but I couldn’t find any. My transmitter model is Car FM Transmitter W 2.4A USB Charger, Nulaxy™ 2015 Newest Wireless Bluetooth FM Transmitter Car Kit for All Smartphones, Tablets, MP3 Players. Any help would be appreciated. Thanks.

  • TheEighthDoctor@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    11 months ago

    I don’t think you can (easily), this is coded in the application itself so if you don’t have that option in the app settings there is nothing you can do(probably).

    Why do I say probably and easily? Because I think if you have a rooted device it’s possible to create a magisk module to hook itself to that method and change it (this is very technical)

    https://developer.android.com/reference/android/media/AudioRecord#setPreferredDevice(android.media.AudioDeviceInfo)

    • ruffsl@programming.dev
      link
      fedilink
      English
      arrow-up
      2
      ·
      11 months ago

      A while back, I tried looking into what it would take to modify Android to disable Bluetooth microphones for wireless headsets, allowing for call audio to be streamed via regular AAC or aptX, and for the call microphone to be captured from the phones internal mic. This would prevent the bit rate for call audio in microphone being effectively halved when using the ancient HFP/HSP Bluetooth codecs, instead allowing for the same call quality as when using a wired headset. This would help when multitasking with different audio sources, such as listening to music while hanging out on discord, without the music being distorted from the lower bit rate of HFP/HSP. This would also benefit regular VoLTE, as the regular call audio quality already exceeds that of legacy Bluetooth headset profiles.

      Although, I didn’t manage to tease apart the mechanics of the audio policy configuration files used by the source Android project, given the sparse documentation and vague commit history.

      I’d certainly be fine with the awkwardness of holding up and speaking to my phone as if it was in speaker mode, but listening to the call over wireless headphones, in order to improve or double the audio quality. Always wondered what these audio policies fall back to when a Bluetooth device doesn’t have a headset profile, but it’s almost impossible to find high quality consumer grade Bluetooth headphones without a microphone nowadays.