BelledonneCommunications / linphone-android

Linphone.org mirror for linphone-android (https://gitlab.linphone.org/BC/public/linphone-android)
https://linphone.org
GNU General Public License v3.0
1.12k stars 680 forks source link

Bluetooth headset audio input issue #2197

Closed mircoiplabs closed 2 months ago

mircoiplabs commented 3 months ago

Hello everyone,

I just updated my Linphone based application, with the 5.2 release and 5.3.61 SDK.

I have a tester which uses a OnePlus 10 Pro with bluetooth headset.

The problem is that: during a call with bluetooth headset, the user can ear from the headset but the default input remains the phone microphone, which is annoying.

Switching manually from bluetooth to microphone and turning back to bluetooth solve the issue.

Logs: linphone bluetooth logs.zip

With the previous version of my app (Linphone release 4.7 and SDK 5.1.73) the problem doesn't occur.

Any advice?

Thank you!

Viish commented 3 months ago

Hi @mircoiplabs,

Your log file only shows an incoming call that wasn't answered, hard to check what happens to bluetooth capture device in that scenario. Please attach logs of a connected call for which you switch the audio input/output devices to bluetooth.

Thanks in advance. Cheers,

mircoiplabs commented 3 months ago

I'm sorry,

here the logs:

linphone log onePlus bluetooth issue.zip

I confirm the issue, with this version of the app, I can hear from the headset but the input isn't set properly.

I called my tester who has the headset connected, he respond, he can hear me but I cannot hear him from his headset

Viish commented 3 months ago

Hi,

For some weird reason, your device creates a bluetooth device with your smartphone name and it seems only the playback capability, not the record one. Could you attach logs that show the start of the Linphone Core please?

Thanks in advance.

mircoiplabs commented 2 months ago

I noticed, here the logs!

log_linphone_start_app_bluetooth_issue.zip

Viish commented 2 months ago

Thanks.

Indeed your device creates a Bluetooth device with the same name as itself, that's why the microphone doesn't change: our SDK is already convinced to use the right microphone.

2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [478], type [Bluetooth SCO (7)], isSource [false], isSink [true], address [00:00:00:00:00:00]
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [2], type [Built-in speaker (2)], isSource [false], isSink [true], address []
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [3], type [Built-in earpiece (1)], isSource [false], isSink [true], address []
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [13], type [Telephony (18)], isSource [false], isSink [true], address []
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [Ear (stick)], ID [473], type [Bluetooth A2DP (8)], isSource [false], isSink [true], address [2C:BE:EB:46:70:40]
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [483], type [Bluetooth SCO (7)], isSource [true], isSink [false], address [00:00:00:00:00:00]
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [21], type [Built-in microphone (15)], isSource [true], isSink [false], address [bottom]
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [22], type [Built-in microphone (15)], isSource [true], isSink [false], address [back]
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [23], type [FM tuner (16)], isSource [true], isSink [false], address []
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [24], type [Telephony (18)], isSource [true], isSink [false], address []
2024-07-09 14:07:24:903 [myApp/mediastreamer] MESSAGE [Audio Manager] Found device: name [NE2213], ID [31], type [Remote Submix (25)], isSource [true], isSink [false], address [0]

What kind of bluetooth audio device is it? Like earpods from the same brand or a generic bluetooth headset?

Anyway I'll see if I can do a fix for that specific scenario.

Cheers,

Viish commented 2 months ago

Hi @mircoiplabs,

Would you mind trying the fix/recorder_device branch of our SDK and confirm it fixes the issue please?

Thanks in advance.

mircoiplabs commented 2 months ago

Thank you so much!

What is the best way to try it with my app? I've read the linphone-sdk README, but I don't use Docker for Android and I'm facing difficulties

Viish commented 2 months ago

I've started an AAR build and I'll send you the link to it on our maven repository.

Viish commented 2 months ago

Here you go: https://download.linphone.org/maven_repository/org/linphone/linphone-sdk-android/5.4.0-alpha.274+4abb0426/

In your build.gradle, replace implementation 'org.linphone:linphone-sdk-android:5.4+' by implementation 'org.linphone:linphone-sdk-android:5.4.0-alpha.274+4abb0426' to ensure using the right version please.

mircoiplabs commented 2 months ago

Thank you so much, I'm going to try it and let you know!

mircoiplabs commented 2 months ago

Sorry, I changed the SDK version in the build.gradle line as you indicated, I given a beta version of my app (in the Play Store) to my tester (OnePlus) with this SDK, but it looks like it's broken! It looks like that he cannot hear / be heard during a call, and the application crashes when receive a call, and others strange issues, so I cannot say if it solves the original issue.

In my personal smartphone those issues with this SDK don't happen...

I've done something wrong?

Viish commented 2 months ago

Hi @mircoiplabs,

I guess you were using a 5.3 SDK up until now, and the one I gave you is a 5.4.0-alpha, meaning it's not currently tested through and trough and can be a bit instable. That being said we are about to make a public beta using this same SDK and so far we haven't encountered any of those issues. I recommend you to use a tool like Crashlytics to get some info.

Cheers,

Viish commented 2 months ago

Any update @mircoiplabs ?

mircoiplabs commented 2 months ago

No I don't. The situation is the one I described in the last message, I didn't find anything yet

Viish commented 2 months ago

Hi @mircoiplabs,

I've merged the fix in master anyway, so it will be available in AARs on our maven repository (starting from 5.4.0-alpha-298).

Cheers,

Viish commented 2 months ago

Our 2nd 6.0.0 public beta is now available and contains the fix if you want to test it this way.

mircoiplabs commented 2 months ago

I'm so sorry,

First of all, thank you so much for support

Is it possible to have the fix in a 5.3+ SDK version? It would be great...