Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot change AudioDevice for advanced CustomAudioDevice #493

Open
fpetrovski opened this issue Dec 19, 2023 · 4 comments
Open

Cannot change AudioDevice for advanced CustomAudioDevice #493

fpetrovski opened this issue Dec 19, 2023 · 4 comments
Labels

Comments

@fpetrovski
Copy link

Describe the bug
Unable to change customAudioDevice (extended from BaseAudioDevice) between video calls.
Once the customAudioDevice has been set, it can't be change at all, unless the app is stopped and restarted.

To Reproduce

  1. Create a customAudioDevice by extending BaseAudioDevice
  2. Set your audio device by calling AudioDeviceManager.setAudioDevice(audioDevice) and build VideoCall Session.
  3. Stop the call, finish and cleanup your videocall session .
  4. Modify the parameters of your custom audio device
  5. Before building the new VideoCall session, call AudioDeviceManager.setAudioDevice(audioDevice)
  6. AudioDeviceManager keeps reference to old state and throw new IllegalStateException("AudioDevice can only be changed before initialization.");

Expected behavior
The AudioDevice should be cleared after a video call has been ended.
We need the AudioDeviceManager to drop references to the previous AudioDevice and be ready to accept a new one.

Device (please compete the following information):

  • Opentok SDK version: '2.26.2' (also happening on old versions like '2.24.1')
  • OS and version: Android 10 (Q, api level 29)
  • Device: Samsung T585, Samsung T515, Teclast P20, Teclast P40.
@v-kpheng
Copy link
Contributor

@fpetrovski , apologies for the belated reply. Thank you so much for the detailed error report. That helps out a lot.
I'll reach out to engineering now. Will keep you posted.

@v-kpheng
Copy link
Contributor

@fpetrovski, heard back from Engineering.

The Audio Device does not have a direct reference from Session and will not be cleared after session disconnect/cleanup. To avoid the error, you can close the app and reopen it to do AudioDeviceManager.setAudioDevice(audioDevice) to set it to a different audio device.

Alternatively, check before setting the audio device, you can do the following to avoid the error.

if (AudioDeviceManager.getAudioDevice() == null) { 
  AudioDeviceManager.setAudioDevice(audioDevice);
}

@fpetrovski
Copy link
Author

Hi, thanks for getting back to me.
The suggestion that is provided does not apply in this case, or is a workaround at best for different usecases.
As I have already stated, we are aware that the Audio Device will not be cleared after session disconnect/cleanup. That's why we are reporting this issue. We are also aware that closing and clearing the app resets things, but that should not be the default usecase. Additionally The SDK does not provide a way to clear and change the customAudioDevice (outside of reseting the app).

Would you be able to relay our request/suggestion to the engineering team:
The AudioDevice should provide a way to be cleared and ready for a new set of parameters (new AudioDevice). Or at least be cleared by default after a video call has been ended.

Restarting the app is out of the question for our use case, and should be out of the question for any other use case. We cannot force the users to "restart".

@v-kpheng
Copy link
Contributor

@fpetrovski, we'll look into this: https://jira.vonage.com/browse/VIDCS-2108.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants