When call gets connected after enabling video some time participants video get swaps .
My video sdk version 1.0.9
my flutter doctor
[!] Flutter (Channel stable, 3.7.3, on macOS 13.0.1 22A400 darwin-arm64, locale
en-IN)
! Warning: dart on your path resolves to
/opt/homebrew/Cellar/dart/2.18.5/libexec/bin/dart, which is not inside
your current Flutter SDK checkout at
/Users/macintosh/Desktop/Sangam/flutter_sdk/flutter. Consider adding
/Users/macintosh/Desktop/Sangam/flutter_sdk/flutter/bin to the front of
your path.
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
✗ cmdline-tools component is missing
Run path/to/sdkmanager --install "cmdline-tools;latest"
See https://developer.android.com/studio/command-line for more details.
✗ Android license status unknown.
Run flutter doctor --android-licenses to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for
more details.
[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.3)
[✓] VS Code (version 1.75.1)
[✓] Connected device (2 available)
[✓] HTTP Host Availability
@OverRide
State createState() => _ConferenceParticipantGridState();
}
class _ConferenceParticipantGridState extends State {
late Participant localParticipant;
String? activeSpeakerId;
String? presenterId;
int numberofColumns = 1;
int numberOfMaxOnScreenParticipants = 6;
String quality = "high";
when i play youtube video along with video call at same time in my app i am unable to hear audio from video call whereas I reduced the sound of youtube player still not getting clear audio from video call in my app
The VideoSDK continues to experience operational failures on both the iOS 16.4 Simulator and the Samsung S8+ running Android 9. A crash persists while attempting to use the VideoSDK, yielding a NullPointerException within the logs. This issue might be correlated with Flutter WebRTC integration, as indicated by the following URL: flutter-webrtc/flutter-webrtc#1365.
Steps to Reproduce:
Install VideoSDK version 1.1.5.
Launch the iOS 16.4 Simulator or use a Samsung S8+ device with Android 9.
Integrate the VideoSDK into a sample application or use an existing application that employs the SDK's video functionality.
Attempt to initiate video playback or recording.
Expected Behavior:
VideoSDK should successfully initialize and execute video-related functions on both iOS 16.4 Simulator and Samsung S8+ Android 9 devices.
E/AndroidRuntime(10644): java.lang.NullPointerException: Attempt to invoke interface method 'void org.webrtc.VideoCapturer.initialize(org.webrtc.SurfaceTextureHelper, android.content.Context, org.webrtc.CapturerObserver)' on a null object reference
E/AndroidRuntime(10644): at com.cloudwebrtc.webrtc.GetUserMediaImpl.getUserVideo(GetUserMediaImpl.java:730)
E/AndroidRuntime(10644): at com.cloudwebrtc.webrtc.GetUserMediaImpl.getUserMedia(GetUserMediaImpl.java:597)
E/AndroidRuntime(10644): at com.cloudwebrtc.webrtc.GetUserMediaImpl.access$000(GetUserMediaImpl.java:84)
E/AndroidRuntime(10644): at com.cloudwebrtc.webrtc.GetUserMediaImpl$1.invoke(GetUserMediaImpl.java:456)
E/AndroidRuntime(10644): at com.cloudwebrtc.webrtc.GetUserMediaImpl.lambda$requestPermissions$1(GetUserMediaImpl.java:849)
E/AndroidRuntime(10644): at com.cloudwebrtc.webrtc.GetUserMediaImpl$$ExternalSyntheticLambda0.invoke(Unknown Source:6)
E/AndroidRuntime(10644): at com.cloudwebrtc.webrtc.utils.PermissionUtils$1.onReceiveResult(PermissionUtils.java:115)
E/AndroidRuntime(10644): at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50)
E/AndroidRuntime(10644): at android.os.Handler.handleCallback(Handler.java:873)
E/AndroidRuntime(10644): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(10644): at android.os.Looper.loop(Looper.java:214)
E/AndroidRuntime(10644): at android.app.ActivityThread.main(ActivityThread.java:7050)
E/AndroidRuntime(10644): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(10644): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
E/AndroidRuntime(10644): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
Environment:
VideoSDK version: 1.1.5
iOS Simulator version: 16.4
Device: Samsung S8+
Android version: 9
Steps Taken So Far:
Verified the issue by replicating it on both platforms.
Tested the provided example application using VideoSDK version 1.1.5.
Investigated the error logs for insights into the root cause.
Expected Impact:
This issue impedes the effective utilization of VideoSDK features on iOS 16.4 Simulator and Samsung S8+ Android 9 devices, adversely affecting developers and users who depend on the SDK's functionality. It is imperative to address this issue promptly to uphold a seamless user experience.
Note:
This issue report aims to spotlight the concern and foster collaboration among the developer community to identify and rectify the underlying issue. If you have encountered this issue or possess relevant insights, please contribute to the ongoing discussion. Additionally, the potential connection to the Flutter WebRTC issue flutter-webrtc/flutter-webrtc#1365 could offer a valuable avenue of investigation.
how can i join a meeting from the Flutter web app?
if I copied the code from the Flutter app to a Flutter Web App the flutter_vlc_player crashes because it doesn't support flutter web.
so how i can join a meeting from Flutter web app?
A problem occurred configuring project ':videosdk'.
Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
Namespace not specified. Specify a namespace in the module's build file: /home/ind/.pub-cache/hosted/pub.dev/videosdk-1.1.12/android/build.gradle. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace.
If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.
[√] Flutter (Channel stable, 3.3.10, on Microsoft Windows [Version 10.0.19045.3930], locale en-IN)
• Flutter version 3.3.10 on channel stable at E:\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 135454af32 (1 year, 1 month ago), 2022-12-15 07:36:55 -0800
• Engine revision 3316dd8728
• Dart version 2.18.6
• DevTools version 2.15.0
[√] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
• Android SDK at C:\Users\Admin\AppData\Local\Android\sdk
• Platform android-33, build-tools 33.0.0
• Java binary at: E:\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
• All Android licenses accepted.
[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[X] Visual Studio - develop for Windows
X Visual Studio not installed; this is necessary for Windows development.
Download at https://visualstudio.microsoft.com/downloads/.
Please install the "Desktop development with C++" workload, including all of its default components
I am using videosdk with RingtonePlayer , The ringtone rings out initially, but when a call(audio/video) has been initiated and eventually dispose off, video sdk still blocks sounds both from the ringtoneplayer and other sound from the phone.
I would be happy if this is seen and attended to early.
void registerMeetingEvents(Room _meeting) {
// Called when joined in meeting
_meeting.on(
Events.roomJoined,
() {
log('on room joined ');
setState(() {
meeting = _meeting;
cameras = meeting.getCameras();
_joined = true;
});
},
);
// Called when meeting is ended
_meeting.on(Events.roomLeft, (String? errorMsg){
if (errorMsg != null) {
showSnackBarMessage(message: "Meeting left due to $errorMsg !!", context: context);
}
GroupSharingApi.instance.showCallScreen.value = false;
});
_meeting.on(Events.participantJoined, (Participant participant){
participantList.add({'${participant.id}':'${participant.displayName}'});
showSnackBarMessage(message: "${participant.displayName} joinded the room!", context: context);
});
_meeting.on(Events.participantLeft, (String participantId){
showSnackBarMessage(message: "${participantList.firstWhere((element) => element.containsKey(participantId))[participantId]} left the room!", context: context);
participantList.removeWhere((element) => element.containsKey(participantId));
});
// Called when stream is enabled
_meeting.localParticipant.on(Events.streamEnabled, (Stream _stream) {
if (_stream.kind == 'video') {
setState(() {
videoStream = _stream;
});
} else if (_stream.kind == 'audio') {
setState(() {
audioStream = _stream;
});
}
});
// Called when stream is disabled
_meeting.localParticipant.on(Events.streamDisabled, (Stream _stream) {
if (_stream.kind == 'video' && videoStream?.id == _stream.id) {
setState(() {
videoStream = null;
});
} else if (_stream.kind == 'audio' && audioStream?.id == _stream.id) {
setState(() {
audioStream = null;
});
}
});
// Called when you requesting to join meeting
_meeting.on(Events.entryRequested, (data) {
log('user entery request');
var name = data["name"];
var allow = data["allow"];
var deny = data["deny"];
showRequestDialog(context,"Join Request","Do you want to allow $name to join room?",allow,deny);
});
// Handle camera Requested
_meeting.on(Events.cameraRequested, (data) {
log('requested for camera');
var allow = data["accept"];
var deny = data["reject"];
showRequestDialog(context,"Enable Camera Request","Host requested to enable camera!",allow,deny);
});
// Handle Mic Requested
_meeting.on(Events.micRequested, (data){
log('requested for mic');
var allow = data["accept"];
var deny = data["reject"];
showRequestDialog(context,"Enable Mic Request","Host requested to enable mic!",allow,deny);
});
_meeting.on(
Events.error,
(error) => {
showSnackBarMessage(
message: error['name'].toString() + " :: " + error['message'].toString(), context: context)
});
My flutter Doctor:
Doctor summary (to see all details, run flutter doctor -v):
[!] Flutter (Channel stable, 3.7.3, on macOS 13.0.1 22A400 darwin-arm64, locale
en-IN)
! Warning: dart on your path resolves to
/opt/homebrew/Cellar/dart/2.18.5/libexec/bin/dart, which is not inside
your current Flutter SDK checkout at
/Users/macintosh/Desktop/Sangam/flutter_sdk/flutter. Consider adding
/Users/macintosh/Desktop/Sangam/flutter_sdk/flutter/bin to the front of
your path.
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
✗ cmdline-tools component is missing
Run path/to/sdkmanager --install "cmdline-tools;latest"
See https://developer.android.com/studio/command-line for more details.
✗ Android license status unknown.
Run flutter doctor --android-licenses to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for
more details.
[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.3)
[✓] VS Code (version 1.75.1)
[✓] Connected device (4 available)
[✓] HTTP Host Availability
! Doctor found issues in 2 categories.
My video sdk version : 1.0.9
And after mute still another person on call able to hear my audio and in android it works fine
with 1 and 2 its working fine, but 3 and 4 its not working properly. I can see the screen but the image looks like crooked and its added three images in a row.
Note: In other mac chip model with different resolution, its working fine. I am seeing the issue only on M2 mac
I am trying to start livestream using the videosdk package. But getting the error saying "Error while starting livestreaming Null check operator used on a null value"
Because barcode_scan2 >=4.3.0 depends on protobuf ^3.1.0 and every version of videosdk_otel depends on protobuf >=1.1.0 <3.0.0, barcode_scan2 >=4.3.0 is incompatible with
videosdk_otel.
And because videosdk >=1.1.4 depends on videosdk_otel ^0.0.2, barcode_scan2 >=4.3.0 is incompatible with videosdk >=1.1.4.
Hi all.
I've been trying to integrate the SDK into my existing app but could not get the video stream. I've also tried this example app but it's not working too. I figured out that the camera is not enabled. While trying to enable the camera, i get this error
webrtc.Logging(22287): SurfaceTextureHelper: stopListening()
[log] Unable to RTCPeerConnection::createOffer: peerConnectionCreateOffer(): WEBRTC_CREATE_OFFER_ERROR: Session error code: ERROR_CONTENT. Session error description: Failed to set local video description recv parameters for m-section with mid='video'..
[log] #0 Transport._produce
<asynchronous suspension>
#1 FlexQueue._runTask
<asynchronous suspension>
When i try to switch from/to front/back camera i get the output [log] camera is not enabled!
Flutter doctor ouputs
[✓] Flutter (Channel stable, 3.10.0, on Pop!_OS 22.04 LTS 6.2.6-76060206-generic, locale fr_FR.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc2)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2022.3)
[✓] Connected device (3 available)
[✓] Network resources
Tested on Samsung T225N (Android 13), Pixel 4XL (Android 13)
Description:
I've been working on integrating the Video SDK into a Flutter project, and overall, the implementation works fine on most devices. However, I encountered an exception specifically on Xiaomi/Redmi devices running Android versions earlier than 9.0. The exception trace is as follows:
E/AndroidRuntime(30301): java.lang.NullPointerException: Attempt to invoke interface method 'void org.webrtc.VideoCapturer.initialize(org.webrtc.SurfaceTextureHelper, android.content.Context, org.webrtc.CapturerObserver)' on a null object reference E/AndroidRuntime(30301): at com.cloudwebrtc.webrtc.GetUserMediaImpl.getUserVideo(GetUserMediaImpl.java:730) E/AndroidRuntime(30301): at com.cloudwebrtc.webrtc.GetUserMediaImpl.getUserMedia(GetUserMediaImpl.java:597) E/AndroidRuntime(30301): at com.cloudwebrtc.webrtc.GetUserMediaImpl.access$000(GetUserMediaImpl.java:84) E/AndroidRuntime(30301): at com.cloudwebrtc.webrtc.GetUserMediaImpl$1.invoke(GetUserMediaImpl.java:456) E/AndroidRuntime(30301): at com.cloudwebrtc.webrtc.GetUserMediaImpl.lambda$requestPermissions$1(GetUserMediaImpl.java:849) E/AndroidRuntime(30301): at com.cloudwebrtc.webrtc.GetUserMediaImpl$$ExternalSyntheticLambda0.invoke(Unknown Source:6) E/AndroidRuntime(30301): at com.cloudwebrtc.webrtc.utils.PermissionUtils$1.onReceiveResult(PermissionUtils.java:115) E/AndroidRuntime(30301): at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50) E/AndroidRuntime(30301): at android.os.Handler.handleCallback(Handler.java:873) E/AndroidRuntime(30301): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(30301): at android.os.Looper.loop(Looper.java:201) E/AndroidRuntime(30301): at android.app.ActivityThread.main(ActivityThread.java:6810) E/AndroidRuntime(30301): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(30301): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) E/AndroidRuntime(30301): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) I/Process (30301): Sending signal. PID: 30301 SIG: 9
Additional Observations:
The issue seems to be specific to Xiaomi/Redmi devices running Android versions earlier than 9.0. I have followed the instructions in this link to address the problem, but the error still persists on other devices. Additionally, on Xiaomi devices, switching the camera also does not function as expected.
Devices Affected:
Xiaomi Mi 8 (Android 8.1)
Redmi Note 7 (Android 8.0)
Expected Behavior:
The Video SDK should work consistently across various Android devices, including Xiaomi/Redmi models with Android versions earlier than 9.0. Switching the camera should also function properly on all supported devices.
Steps to Reproduce:
Install the app on Xiaomi/Redmi devices with Android < 9.0.
Attempt to use the Video SDK functionalities, such as starting a video call or switching the camera.
Possible Solution:
As I investigated further, it appears that the issue might be related to how the VideoCapturer is initialized on these specific devices. I would appreciate any guidance, insights, or potential fixes from the community to resolve this problem.
Hi, I have a bug that I can't quite resolve at first glance. For some reason, the iOS SDK defaults to using the earpiece audio instead of the main speakers. When I connect a second source, like Bluetooth earbuds, it works correctly. I can switch between the main speaker and the earbuds with no issues (but still no earpiece in the sources).
When nothing is connected to the phone, getAudioOutputDevices returns only 1 audio device with "Speaker" deviceId. The sound comes through the earpiece:
I log in web meeting from 3 devices, from android, ios and macos devices, when i log in from macos it works fine only when i log in through chrome, when i log in through safari, no sound and no video etc. the video and sound are muted because if i login from ios same problem is observed and android is working fine plz can you solve this problem for me ?
/C:/Users/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_webrtc-0.8.12/lib/src/native/rtc_video_renderer_impl.dart:11:7: Error: The non-abstract class 'RTCVideoRenderer' is missing implementations for these members:
VideoRenderer.onFirstFrameRendered
Try to either
provide an implementation,
inherit an implementation from a superclass or mixin,
mark the class as abstract, or
provide a 'noSuchMethod' implementation.
class RTCVideoRenderer extends ValueNotifier
^^^^^^^^^^^^^^^^
/C:/flutter/.pub-cache/hosted/pub.dartlang.org/webrtc_interface-1.0.8/lib/src/rtc_video_renderer.dart:51:13: Context: 'VideoRenderer.onFirstFrameRendered' is defined here.
Function? onFirstFrameRendered;
^^^^^^^^^^^^^^^^^^^^
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.3.0, on Microsoft Windows [Version 10.0.22000.856], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[√] Chrome - develop for the web
[X] Visual Studio - develop for Windows
X Visual Studio not installed; this is necessary for Windows development.
Download at https://visualstudio.microsoft.com/downloads/.
Please install the "Desktop development with C++" workload, including all of its default components
[√] Android Studio (version 2020.3)
[√] IntelliJ IDEA Ultimate Edition (version 2020.3)
[√] VS Code (version 1.71.0)
[√] Connected device (4 available)
[√] HTTP Host Availability
i tried on every java verison 17,15,11,and 8 but still getting this error.
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':app:processDebugResources'.
Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Failed to transform audioswitch-c498d866c57f1d88056d5e7e7a78d622e3b0c046.aar (com.github.davidliu:audioswitch:c498d866c57f1d88056d5e7e7a78d622e3b0c046) to match attributes {artifactType=android-compiled-dependencies-resources, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}.
> Execution failed for AarResourcesCompilerTransform: C:\Users\abdullah.gradle\caches\transforms-3\f81649683aef4eb6854f409a8444a1d1\transformed\jetified-audioswitch-c498d866c57f1d88056d5e7e7a78d622e3b0c046.
> C:\Users\abdullah.gradle\caches\transforms-3\f81649683aef4eb6854f409a8444a1d1\transformed\jetified-audioswitch-c498d866c57f1d88056d5e7e7a78d622e3b0c046\AndroidManifest.xml
Try:
Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.
java.lang.NullPointerException: Attempt to invoke interface method 'void org.webrtc.VideoCapturer.initialize(org.webrtc.SurfaceTextureHelper, android.content.Context, org.webrtc.CapturerObserver)' on a null object reference
E/AndroidRuntime(16634): at com.cloudwebrtc.webrtc.GetUserMediaImpl.getUserVideo(GetUserMediaImpl.java:761)
E/AndroidRuntime(16634): at com.cloudwebrtc.webrtc.GetUserMediaImpl.getUserMedia(GetUserMediaImpl.java:628)
E/AndroidRuntime(16634): at com.cloudwebrtc.webrtc.GetUserMediaImpl.access$100(GetUserMediaImpl.java:88)
E/AndroidRuntime(16634): at com.cloudwebrtc.webrtc.GetUserMediaImpl$2.invoke(GetUserMediaImpl.java:478)
E/AndroidRuntime(16634): at com.cloudwebrtc.webrtc.GetUserMediaImpl.lambda$requestPermissions$1(GetUserMediaImpl.java:880)
E/AndroidRuntime(16634): at com.cloudwebrtc.webrtc.GetUserMediaImpl$$ExternalSyntheticLambda0.invoke(Unknown Source:6)
E/AndroidRuntime(16634): at com.cloudwebrtc.webrtc.utils.PermissionUtils$1.onReceiveResult(PermissionUtils.java:115)
E/AndroidRuntime(16634): at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50)
E/AndroidRuntime(16634): at android.os.Handler.handleCallback(Handler.java:790)
E/AndroidRuntime(16634): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(16634): at android.os.Looper.loop(Looper.java:214)
E/AndroidRuntime(16634): at android.app.ActivityThread.main(ActivityThread.java:6977)
E/AndroidRuntime(16634): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(16634): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528)
E/AndroidRuntime(16634): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:910)
I/Process (16634): Sending signal. PID: 16634 SIG: 9
Lost connection to device.
My app is getting crashed after calling join method on android 8. I have tested it on above versions it is working fine. I'm using videosdk: ^1.1.10
The videosdk flutter package is currently incompatible with the most other flutter packages since it uses http:0.13.5 while most packages require http:1.1.0 by default.
Below is the screenshot of the error I get when trying to retrieve packages.
Hello there. I am new to this plugin, and i am having an issue getting the token. I have looked in the example and this is the method I found :
Future<String> fetchToken() async {
final String? _AUTH_URL = dotenv.env['AUTH_URL'];
String? _AUTH_TOKEN = dotenv.env['AUTH_TOKEN'];
if ((_AUTH_TOKEN?.isEmpty ?? true) && (_AUTH_URL?.isEmpty ?? true)) {
toastMsg("Please set the environment variables");
throw Exception("Either AUTH_TOKEN or AUTH_URL is not set in .env file");
return "";
}
if ((_AUTH_TOKEN?.isNotEmpty ?? false) &&
(_AUTH_URL?.isNotEmpty ?? false)) {
toastMsg("Please set only one environment variable");
throw Exception("Either AUTH_TOKEN or AUTH_URL can be set in .env file");
return "";
}
if (_AUTH_URL?.isNotEmpty ?? false) {
final Uri getTokenUrl = Uri.parse('$_AUTH_URL/get-token');
final http.Response tokenResponse = await http.get(getTokenUrl);
_AUTH_TOKEN = json.decode(tokenResponse.body)['token'];
}
// log("Auth Token: $_AUTH_TOKEN");
return _AUTH_TOKEN ?? "";
}
How can I create an $_AUTH_URL. Is it available at the dashboard, and if not would anyone please help me creating it.
When two or three user join calls at same time then i am not getting entry request and also when host joined the meeting instantly after creating group call then again join request not coming.
Currently, I am working with the Video SDK integrated into a Flutter project for real-time communication. The implementation is generally successful; however, I have encountered an issue related to audio devices.
Problem:
The Video SDK does not provide a method to retrieve the currently selected audio device, such as the earpiece, speakerphone, or Bluetooth headset, which is essential for users to know which device is currently in use.
Defaulting to External Speaker:
Furthermore, I noticed that in some specific scenarios, the app defaults to the external speaker even when other audio devices are available and selected. This issue particularly affects users who prefer using earpieces or Bluetooth headsets for privacy or convenience reasons.
Expected Behavior:
The Video SDK should expose a method or API that enables developers to retrieve information about the currently selected audio device.
The app should respect the user's selected audio device and not automatically default to the external speaker unless explicitly chosen.
Steps to Reproduce:
Launch the app on various devices.
Connect different audio devices such as earpieces, Bluetooth headsets, or external speakers.
Observe the audio output device that the app defaults to in each scenario.
Devices and Environments Affected:
This issue has been observed on the following devices and environments:
Xiaomi Mi 9T (Android 10)
Samsung Galaxy S10 (Android 11)
Google Pixel 4 (Android 12)
iOS devices running iOS 14 and 15
Additional Information:
I have investigated the official documentation and forums, but there are no available solutions or workarounds to address this problem. As this issue can significantly impact user experience, I hope the development team can prioritize adding support for retrieving the currently selected audio device and improving the handling of default audio output.
Suggested Solution:
Introduce a new method in the Video SDK that enables developers to obtain information about the currently selected audio device (e.g., "getCurrentAudioDevice()").
Review the audio handling logic to ensure the app respects the user's selected audio device and does not automatically default to the external speaker without explicit user input.
Your prompt attention to this matter would be greatly appreciated. Thank you for your dedication to enhancing the Video SDK and delivering a seamless real-time communication experience.
If there are any additional details or testing I can provide to assist with resolving this issue, please let me know.