Giter Site home page Giter Site logo

voxeet-uxkit-android's People

Contributors

artur-l avatar codlab avatar fabienlavocat avatar jchang0419 avatar jfan-dolby avatar jsobi avatar krzysztof-drobek avatar pnowa-dolby avatar romansavka-mq avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

voxeet-uxkit-android's Issues

ServerErrorException not precise

Describe the bug

Hello sir, I'm using the "then, then, catch" implementation from SDK 2.3.0 for opening a session, creating a conference and joining it. Sometimes the catch fetch an error "-1" without any description or reason from ServerErrorException class .
Can it be more precise like for example an http code or something? It can help me a lot to display to my users why there was an error.
Thank you sir.

Expected Behaviour

Have a more precise error workflow, or just an http code can be enough.

Steps to Reproduce the Problem

For example, joining and leaving a conference very fast is the easiest way to reproduce an error.

Minimalistic code (recommended)

        VoxeetSDK.session().open(new ParticipantInfo(null, null, null))
                .then(new PromiseExec<Boolean, CreateConferenceResult>() {
                    @Override
                    public void onCall(@Nullable Boolean result, @NonNull Solver<CreateConferenceResult> solver) {
                        solver.resolve(VoxeetSDK.conference().create("test"));
                    }
                })
                .then(new PromiseExec<CreateConferenceResult, Conference>() {
                    @Override
                    public void onCall(@Nullable CreateConferenceResult result, @NonNull Solver<Conference> solver) {
                        // FIXME: THERE IS A WARNING HERE OF DEPRECIATION!!!
                        solver.resolve(VoxeetSDK.conference().join(result.conferenceId));
                    }
                })
                .then(new PromiseExec<Conference, Object>() {
                    @Override
                    public void onCall(@Nullable Conference result, @NonNull Solver<Object> solver) {
                           Log.d("talkApp", "SUCCESS");
                    }
                })
                .error(new ErrorPromise() {
                    @Override
                    public void onError(@NonNull Throwable e) {
                        // FIXME: SOME DIFFICULTY TO FETCH ERROR, SOMETIMES -1??
                        if (e instanceof ServerErrorException) {
                            ServerErrorException exception = (ServerErrorException) e;
                            ServerErrorMessage error = exception.error;

                            Log.d("talkApp", "ERROR => code: " + error.error_code + " description: " + error.error_description + " reason: " + error.error_reason);
                        }
                });

Specifications

  • Device: Simulator and Motorola
  • OS: Android Q and Androit 8
  • Platform: Android
  • Version:
    • [e.g. Android Sdk public-sdk 2.3.0]
    • [e.g. Android Sdk uxkit 2.1]

VideoView's stream padding

Describe the bug

When displaying a video in full view in the Voxeet's VideoView. In translucent mode, a padding is shown on top and at the bottom of the view

Expected Behaviour

The video should be full view in pinched out mode

Steps to Reproduce the Problem

  1. add a VideoView
  2. attach a mediastream
  3. pinch out the view
  4. see the paddings

Specifications

  • Device: All
  • OS: All android versions
  • Platform: Android
  • Version:
    • Android Sdk public-sdk 1.4.6
    • Android Sdk toolkit 1.4.6

Voxeet overlay freezes when web client joins conference.

Describe the bug

Overlay ui freezes, when android client is first one to join a conference, and then is followed by a web client. When the overlay is frozen, device continues to stream video and audio just fine, but UI is totally unresponsive, and the only way to fix that is killing the app. Following problem does not occur when android device is joining conference after web client. Attached exception log.

Unfortunately couldn't reproduce this in sample app, due to not being able to connect between web sample and android sample.

Specifications

  • Device: Tested on Galaxy S8 and S7
  • OS: 9.0, 8.0
  • Platform: Android
  • Version:
    • com.voxeet.sdk:toolkit:2.0.69.5

Improve Youtube integration

Describe the bug

Current integration is using the official Youtube library API which has not been updated for years. Lots of bugs and issues exists such as check for views on top of the player and various lifecycle issues.

The new version is going to include the MIT licensed android-youtube-player

Headphone connection state not detected properly.

Describe the bug

Voxeet overlay fails to detect when headphones are plugged in/unplugged and keeps the state that was valid when starting the call so:

  1. If headphones were connected before the call, speaker button is disabled.
  2. if headphones weren't connected before the call, speaker button is working, even after connecting headphones.

Reproduced in sample app.

Expected Behaviour

Overlay should respond to headphones connected/disconnected events, and properly set speaker toggle button state.

Steps to Reproduce the Problem

  1. Start call with headphones connected to device
  2. Unplug headphones

Specifications

  • Device: Any (tested on Samsung Galaxy S8 & S7)
  • OS: Any (tested on 8.0 & 7.0)
  • Platform: Android
  • Version:
    • voxeetSdkVersion = "2.0.49.4" (also happening on earlier versions)

CodeQL failing

Describe the bug

CodeQL checks are failing when using the current Android 31 build tools. Since this requires some script modification and isn't possible, switching from Android 31 build tools to Android 32 build tools is necessary

Expected Behaviour

CodeQL runs smoothly

Steps to Reproduce the Problem

  1. Create a feature branch
  2. Create a commit
  3. Send a MR/PR
  4. See the CodeQL failing

RemoteDescriptionError

Hi, when I start a conference incoming from the iOS app, I always get the error:
System.err: com.voxeet.android.media.errors.RemoteDescriptionError: Unable set remote SDP for Peer: a9d76ed5-fc00-3a47-aa01-ab35ee5c0cd6 :: Failed to set remote offer sdp: Failed to set remote video description send parameters.
But the a9d76ed5-fc00-3a47-aa01-ab35ee5c0cd6 was not from me.
Please do me a favor.
Thanks a lot!

Fix missing service in Android 12 (targeting API Level 31+)

Describe the bug

With the ability for developers to set their app to target Android 31+, the PendingIntent inside the SDK when the "service" for live conference needs to be updated to reflect the new requirements for mutability flag.
Without it, the following issue is displayed in the logs :
Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent

This affects every version of the UXKit, a fix will be set for 3.3.1

Expected Behaviour

set the FLAG_IMMUTABLE since the PendingIntent forged will be statically defined.
For more information : https://developer.android.com/reference/android/app/PendingIntent#FLAG_IMMUTABLE

Screen sharing does not work on actual phone like oneplus . Suprisingly working through emulator

2020-10-20 22:17:40.648 31710-1860/com.voxeet.sdk.sample E/org.webrtc.Logging: HardwareVideoEncoder: deliverOutput failed
2020-10-20 22:17:40.648 31710-1860/com.voxeet.sdk.sample E/org.webrtc.Logging: HardwareVideoEncoder: java.lang.IllegalStateException
2020-10-20 22:17:40.648 31710-1860/com.voxeet.sdk.sample E/org.webrtc.Logging: HardwareVideoEncoder: java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2823)
at org.webrtc.MediaCodecWrapperFactoryImpl$MediaCodecWrapperImpl.dequeueOutputBuffer(MediaCodecWrapperFactoryImpl.java:73)
at org.webrtc.HardwareVideoEncoder.deliverEncodedImage(HardwareVideoEncoder.java:489)
at org.webrtc.HardwareVideoEncoder$1.run(HardwareVideoEncoder.java:477)

Screen sharing not working.

Describe the bug

Overlay is not showing any content from shared screen. Our use case consists of web client being able to share screen with other web/android/ios clients. When starting screen sharing in web side, nothing changes on android side. To find out more i've enabled screen sharing on android side also and found out that:

When android side tries to start screen sharing, overlay hides for a moment, and then disables screen sharing. Also, when this is done when web side is screen sharing, the proper stream of shared screen from that client is flashing on android side before disabling screen share on the phone.

We've checked screen sharing web -> web and web -> ios and these seem to work fine.

I've also checked a similar scenario in the sample app, where I've tried to share screen between two android devices, and screen sharing does not last there also.

call_log.txt

This log was recorded on Galaxy s8 when sharing from web client, there are several tries to enable sharing on phone during that call)

Expected Behaviour

When other participant of conference is sharing screen, the feed should appear on android devices.

Specifications

  • Device: Tested on Galaxy s8, Galaxy s7
  • OS: 8.0, 9.0
  • Platform: Android
  • Version:
    • com.voxeet.sdk:toolkit:

2.0.69.8

2 Users accepts and rejects the call at the same time, creates new call in the accepted user device

Describe the bug
When 2 users accept and reject the call at the same time, a new call is started in the accepted user device

Steps to Reproduce the Problem

  1. 2 Users are there in different phones User1(Android) and User2(iOS)
  2. User2 starts a call to User1
  3. User1 picks the call and User2 declines the call at the same time
  4. however User1 starts a new ongoing call screen

Actual Requirement
When 2 users accept and reject the call at the same time, accepting user must not start a new call

Specifications

  • Device: Any (tested on Nokia 7 Plus, Android Emulator (Custom Phone) & iPhone X)
  • OS: Android (tested on 9.0 & 8.0) iOS ( tested on iOS 12 )
  • Platform: Android & iOS
  • Version:
    - voxeetSdkVersion = "2.0.49.18"

Could not find com.voxeet.sdk:uxkit:3.2.0.

Sorry to bother you but I really do not know what went wrong when I try to migrate the V2.4.0 to the V3.2.0.
First, I add maven { url "https://android-sdk.voxeet.com/release" } in build.gradle file at the project layer.
Second, I add the api ('com.voxeet.sdk:uxkit:3.2.0') { transitive = true } in build.gradle file at the app layer.
But I run the project when something wrong happened as below:
image

Please do me a favor if you have something to tell me.
Thanks!

Empty

Submitted to wrong repo

Error download dependency [Forbidden]

Describe the bug

Error downaload dependency

https://dl.bintray.com/voxeet/maven/com/voxeet/sdk/uxkit-firebase/3.1.3/uxkit-firebase-3.1.3.pom
ERROR Forbidden!

     Required by:
         project :voxeet_react-native-voxeet-conferencekit
      > Could not resolve com.voxeet.sdk:uxkit-firebase:3.1.3.
         > Could not get resource 'https://dl.bintray.com/voxeet/maven/com/voxeet/sdk/uxkit-firebase/3.1.3/uxkit-firebase-3.1.3.pom'.
            > Could not GET 'https://dl.bintray.com/voxeet/maven/com/voxeet/sdk/uxkit-firebase/3.1.3/uxkit-firebase-3.1.3.pom'. Received status code 403 from server: Forbidden
      > Could not resolve com.voxeet.sdk:uxkit-firebase:3.1.3.
         > Could not get resource 'http://dl.bintray.com/voxeet/maven/com/voxeet/sdk/uxkit-firebase/3.1.3/uxkit-firebase-3.1.3.pom'.
            > Could not GET 'http://dl.bintray.com/voxeet/maven/com/voxeet/sdk/uxkit-firebase/3.1.3/uxkit-firebase-3.1.3.pom'. Received status code 403 from server: Forbidden
   > Could not resolve com.voxeet.sdk:uxkit:3.1.3.
     Required by:
         project :voxeet_react-native-voxeet-conferencekit
      > Could not resolve com.voxeet.sdk:uxkit:3.1.3.
         > Could not get resource 'https://dl.bintray.com/voxeet/maven/com/voxeet/sdk/uxkit/3.1.3/uxkit-3.1.3.pom'.
            > Could not GET 'https://dl.bintray.com/voxeet/maven/com/voxeet/sdk/uxkit/3.1.3/uxkit-3.1.3.pom'. Received status code 403 from server: Forbidden
      > Could not resolve com.voxeet.sdk:uxkit:3.1.3.
         > Could not get resource 'http://dl.bintray.com/voxeet/maven/com/voxeet/sdk/uxkit/3.1.3/uxkit-3.1.3.pom'.
            > Could not GET 'http://dl.bintray.com/voxeet/maven/com/voxeet/sdk/uxkit/3.1.3/uxkit-3.1.3.pom'. Received status code 403 from server: Forbidden

Steps to Reproduce the Problem

Build project without cache

Already in Call UI is closed when new calling user hangs up

Describe the bug
Ongoing Call UI is closed when another incoming call user has hung up or hung up automatically due to insufficient users

Steps to Reproduce the Problem

we have extended VoxeetIncomingCallActivity in a custom activity and set it to default incoming call activity and overridden on create Imethod
1st Scenario - when 2 users A and B are in the conference call, user C calls user A, call accept/reject UI is shown

Actual Requirement
Incoming call UI must not be shown when the conference is live)

Solution - To encounter this, we have added finish() in on create method in customIncomingCallActivity when the conference is live
if(VoxeetSdk.getInstance().conferenceService.isLive){ [email protected]() }
Now When user C calls user A, call accept/reject UI is not shown

2nd Scenario

  1. User A(Android) and User B(Android) both are available in a call
  2. User C(iOS) initiates a new call to user A
  3. User A didn't get any notification for an incoming call from user C
  4. User C waiting for 20 seconds and ended the call
  5. As soon as User A Call UI closed but still, the conference is live?
    I debugged and found that onConferenceDestroyPush is called when User C hangs up his call, Please see the reference image below, thanks

todayCapture

Specifications

  • Device: Any (tested on Nokia 7 Plus, Android Emulator (Custom Phone))
  • OS: Any (tested on 9.0 & 8.0)
  • Platform: Android
  • Version:
    - voxeetSdkVersion = "2.0.49.18"

Help for Dolby Group Video call

group video call

[Hey Dev :
I am using this code between 1 to 1 video call which works fine but i want to know how we can handle group video call For example 4 participant wants to make a call between them and all users can see each other videos .
last thing i want to know how many members dolby allow in a group call if sdk supports.]

val isLocal = user.id == VoxeetSDK.session().participantId val stream = user.streamsHandler().getFirst(MediaStreamType.Camera) val video: VideoView = if (isLocal) myVideo else otherVideo

Please provide any sample code snippet or reference which will be helpful for this.
Thanks alot

Error getting dependency [error 502]

Describe the bug

Error downaload dependency
Lib v0.2.13
"@voxeet/react-native-voxeet-conferencekit": "^0.2.13"

Could not GET 'https://dl.bintray.com/voxeet/maven/***x/exifinterface/exifinterface/1.3.2/exifinterface-1.3.2.pom'. Received status code 502 from server: Bad Gateway

Steps to Reproduce the Problem

Build project without cache

I tried too on appcenter

     Required by:
         project :app > project :react-native-camera
      > Could not resolve ***x.exifinterface:exifinterface:1.3.2.
         > Could not get resource 'https://dl.bintray.com/voxeet/maven/***x/exifinterface/exifinterface/1.3.2/exifinterface-1.3.2.pom'.
            > Could not GET 'https://dl.bintray.com/voxeet/maven/***x/exifinterface/exifinterface/1.3.2/exifinterface-1.3.2.pom'. Received status code 502 from server: Bad Gateway
   > Could not resolve ***x.legacy:legacy-support-v4:1.0.0.
     Required by:
         project :app > project :react-native-camera
         project :app > project :react-native-fbsdk > com.facebook.***:facebook-login:5.15.3 > com.facebook.***:facebook-common:5.15.3
         project :app > project :voxeet_react-native-voxeet-conferencekit > com.voxeet.sdk:uxkit-firebase:3.1.3 > com.voxeet.sdk:sdk:3.1.4 > com.voxeet.sdk:audio:2.1.2
         project :app > project :voxeet_react-native-voxeet-conferencekit > com.voxeet.sdk:uxkit-firebase:3.1.3 > com.voxeet.sdk:sdk:3.1.4 > com.voxeet.sdk:authent:3.1.4
      > Could not resolve ***x.legacy:legacy-support-v4:1.0.0.
         > Could not get resource 'https://dl.bintray.com/voxeet/maven/***x/legacy/legacy-support-v4/1.0.0/legacy-support-v4-1.0.0.pom'.
            > Could not GET 'https://dl.bintray.com/voxeet/maven/***x/legacy/legacy-support-v4/1.0.0/legacy-support-v4-1.0.0.pom'. Received status code 502 from server: Bad Gateway
   > Could not resolve ***x.legacy:legacy-support-v4:1.0.0.
     Required by:
         project :app > project :react-native-view-shot
      > Could not resolve ***x.legacy:legacy-support-v4:1.0.0.
         > Could not get resource 'https://dl.bintray.com/voxeet/maven/***x/legacy/legacy-support-v4/1.0.0/legacy-support-v4-1.0.0.pom'.
            > Could not GET 'https://dl.bintray.com/voxeet/maven/***x/legacy/legacy-support-v4/1.0.0/legacy-support-v4-1.0.0.pom'. Received status code 502 from server: Bad Gateway
   > Could not resolve ***x.exifinterface:exifinterface:1.3.2.
     Required by:
         project :app > project :voxeet_react-native-voxeet-conferencekit > com.voxeet.sdk:uxkit:3.1.3 > com.squareup.picasso:picasso:2.71828
      > Could not resolve ***x.exifinterface:exifinterface:1.3.2.
         > Could not get resource 'https://dl.bintray.com/voxeet/maven/***x/exifinterface/exifinterface/1.3.2/exifinterface-1.3.2.pom'.
            > Could not GET 'https://dl.bintray.com/voxeet/maven/***x/exifinterface/exifinterface/1.3.2/exifinterface-1.3.2.pom'. Received status code 502 from server: Bad Gateway```


MediaEngineException: Unable set remote SDP for Peer

Describe the bug

Voxeet shows overlay but fails to connect to a conference with the following error on some devices (Works fine on Galaxy S8, LG G4, fails on Huawei P20 lite as well as Android Emulator):

E/peerconnection.cc: (line 2332): SetRemoteDescription: Session error code: ERROR_CONTENT. Session error description: Failed to set remote video description send parameters..
E/Voxeet: Failed to set remote description with error: 
com.voxeet.android.media.MediaEngineException: Unable set remote SDP for Peer: 4652359c-4721-459b-9b46-b0e8d09a9645 :: Session error code: ERROR_CONTENT. Session error description: Failed to set remote video description send parameters..
W/System.err:     at com.voxeet.android.media.MediaSDK.createAnswerForPeer(MediaSDK.java:74)
 at com.voxeet.sdk.core.abs.ConferenceService$23.onCall(ConferenceService.java:2325)
...

Minimalistic code (recommended)

           val promise = VoxeetToolkit.getInstance().conferenceToolkit.join(intent.getStringExtra(CONFERENCE_KEY))

            if (VoxeetSdk.getInstance().conferenceService.isLive) {
                VoxeetSdk.getInstance().conferenceService
                        .leave()
                        .then(promise)
                        .then(VoxeetSdk.getInstance().conferenceService.startVideo())
                        .error(object : ErrorPromise() {
                            override fun onError(error: Throwable) {
                                Timber.e(error)
                                dismissConference()
                            }
                        })
            } else {
                promise.then(VoxeetSdk.getInstance().conferenceService.startVideo())
                        .error(object : ErrorPromise() {
                            override fun onError(error: Throwable) {
                                Timber.e(error)
                                dismissConference()
                            }
                        })
            }

Specifications

  • Device: Huawei P20 lite, Android Emulator
  • OS: 9.0, 8.0
  • Platform: Android
  • Version:
    • com.voxeet.sdk:toolkit:2.0.29

Confusing UX in Speaker button

Describe the bug

The UX of the speaker button is confusing and misleading. When audio is playing out of the headphones, the speaker button is toggled "on", and when it is playing out of the speaker, it is toggled "off".

Expected Behaviour

Either the speaker button icon is changed to a have a "strikethrough" and the behavior stays the same, or the speaker button is toggled "on" when audio is playing out of the speaker, and toggled "off" otherwise.

Steps to Reproduce the Problem

See the minimalistic code example below.

Minimalistic code (recommended)

This repo (branch no-hud-video-bug) demonstrates the issue: https://github.com/mattyg/voxeet-cordova-example

Both devices used were on Android.

Follow the steps below to reproduce:

Device A: connect to voxeet

Device B: connect to voxeet
Device B: plug in headphones

Device A: create conference

Device A: invite user on device B

Device B: click "Accept" on incoming call notice

Audio is playing out of headphones. Speaker button is toggled "on."

Device B: remove headphones

Audio is playing out of speaker. Speaker button is toggled "off."

Specifications

Device: Android
OS: Android 8 & 9
Version: latest cordova-plugin-voxeet

Not able to pause or play video presentation

It seems android voxeet sdk fires following api internally-
https://session.voxeet.com/v1/conferences/efxxxxx-xxxx-xxxx/filepresentation/pause

when calling this method-
Promise promise = VoxeetSDK.videoPresentation().pause(100);
promise.execute();

From web I could see that correct url should have been -
https://session.voxeet.com/v1/conferences/efxxxxx-xxxxx-xxxx/videopresentation/pause
and its working on web

In android sdk IRestApiVideoPresentation.java file needs to be corrected.
@post("/v1/conferences/{conferenceId}/videopresentation/start")
Call startVideoPresentation(@path("conferenceId") String var1, @Body IRestApiVideoPresentation.VideoPresentationUrl var2);

@post("/v1/conferences/{conferenceId}/videopresentation/stop")
Call stopVideoPresentation(@path("conferenceId") String var1);

@post("/v1/conferences/{conferenceId}/filepresentation/play")
Call playVideoPresentation(@path("conferenceId") String var1);

@post("/v1/conferences/{conferenceId}/filepresentation/pause")
Call pauseVideoPresentation(@path("conferenceId") String var1, @Body IRestApiVideoPresentation.VideoPresentationSeek var2);

@post("/v1/conferences/{conferenceId}/filepresentation/seek")
Call seekVideoPresentation(@path("conferenceId") String var1, @Body IRestApiVideoPresentation.VideoPresentationSeek var2);

I think bottom three endpoints in above code need to be corrected. "filepresentation" needs to be changed to "videopresentation"

Add common abilities: bring logging and dependencies improvements

Describe the bug

Using various wrapping libraries, it's not possible to have logs properly set or even available out of the box. With this modification, the uxkit library and some of its submodule will be able to report more info

Expected Behaviour

  • add the ability to use a global logger
  • side API: expose/create loggers to be used outside of the library

Speaker audio route with SDK v3

Describe the bug

Hello,
We have some trouble to understand audio route management with voxeet sdk 3.1.4. Our workflow is the following, start a conference with a video and audio on the main speaker (not the phone one). Currently we have an issue when plugin our headset then unplug it, the speaker is reset on the phone.
We don't use requestaudiofocus or abandonaudiofocusrequest, that's maybe the reason of our current behaviour?
We also sometime have the main speaker audio route reseted to the phone without doing anything, so we came with a solution maybe not great to force the audio again and again, we are willing to some advices here so we can have a clean workflow.

Expected Behaviour

Main speaker always ON, but have the possibility to plug an headset and when it unplugged, go back to the main speaker.

Steps to Reproduce the Problem

For the speaker disconnection, sometime just wait into a conference and then it is reseted without any reason.
For the headset, plug it and unplug it then the main speaker is reseted to the phone speaker.

Minimalistic code (recommended)

Here is some code:

    private int resetAudioAttempts = 0; // property to help
    private final SoundManager.Call<List<MediaDevice>> onAudioDeviceUpdate = this::audioDeviceUpdated;

    ...
    setSpeaker(); // is called at the join response after open > create
    ...

    private void setSpeaker() {
        //  register audio 
        if (resetAudioAttempts == 0) {
            VoxeetSDK.audio().enable(); // not sure what is line does
            VoxeetSDK.audio().registerUpdateDevices(onAudioDeviceUpdate); // example found in the voxeetuxkit: private final SoundManager.Call<List<MediaDevice>> onAudioDeviceUpdate = this::audioDeviceUpdated;
        }

        // Set speaker  so enumerate devices to find EXTERNAL_SPEAKER and if it is connected
        VoxeetSDK.audio().enumerateDevices()
                .then((ThenPromise<List<MediaDevice>, Boolean>) mediaDevices -> {
                    MediaDevice speaker = Map.find(mediaDevices,
                            mediaDevice -> mediaDevice.deviceType() == DeviceType.EXTERNAL_SPEAKER
                                    && mediaDevice.platformConnectionState() == ConnectionState.CONNECTED);

                    if (null == speaker) {
                        throw new IllegalStateException("Impossible speaker");
                    }

                    return VoxeetSDK.audio().connect(speaker);
                })
                .error(error -> Log.d("codecappvideo", "Failed audio: " + error));
    }

// Maybe that's not the good solution here, we are trying to force the speaker
// called be: private final SoundManager.Call<List<MediaDevice>> onAudioDeviceUpdate = this::audioDeviceUpdated; 
    private void audioDeviceUpdated(List<MediaDevice> mediaDevices) {
        if (null == mediaDevices) return;

        for (MediaDevice mediaDevice : mediaDevices) {


            if (mediaDevice.deviceType() == DeviceType.EXTERNAL_SPEAKER) {
                if (mediaDevice.platformConnectionState() == ConnectionState.CONNECTED && mediaDevice.connectionState() == ConnectionState.DISCONNECTED) {

// asynchronously try to reset again the speaker
                    VoxeetSDK.audio().currentMediaDevice()
                            .then((ThenPromise<MediaDevice, Boolean>) currentMediaDevice -> {
                                // if there is no connected media device, reset speaker audio route ( with max 3 attempts).
                                if (null == currentMediaDevice && resetAudioAttempts <= 3) {
                                    resetAudioAttempts++;

                                    setSpeaker(); // recursive call

                                    Log.d("codecappvideo", "Audio device reconnection  " + resetAudioAttempts );
                                    
                                }
                                return Promise.resolve(true);
                            })
                            .error(error -> Log.d("codecappvideo", "Failed to get current media device: " + error));
                    break;
                } else {
                    resetAudioAttempts = 0;
                }
            }
        }
    }

So as you can see I don't think forcing the speaker is a good solution, we may have missed something in https://dolby.io/developers/interactivity-apis/reference/client-sdk/reference-android/audioservice or https://github.com/voxeet/voxeet-sdk-android-audio and we hope that you can help please.
Greetings

Specifications

  • Device: Samsung, Motorola, Huawei
  • OS: Android 7-10
  • Platform: Android
  • Version:
    • [e.g. Android Sdk public-sdk v3.1.4]
    • [e.g. Android Sdk uxkit v3.1.3]
  • Hardware:
    • [e.g. headset]

NullPointerException

Hi, just now I got a crash when crating a conference.
Please do me a favor!
Thank you very much!
Here is the log: error log

Integrate Screenshare as a specific presentation use case

Describe the bug

With the improvement on video and YouTube integration support, it's interesting to let developers be able to easily register "screen share" to be a special case of such presentations as well. With those 3 together, it will more straightforward to create a meaning full experience where participants view could be rearranged in the interface

Crash on Android devices

Hello,
Some error happened after our APP minifyEnabled.
So how can I add the proguard roles?
Thanks.

Crash when using camera on SDK levels < 21

Describe the bug

Voxeet crashes when turning on video on sdk lower than 21 while readme on repo site states that 16+ should be supported. Reproduced on multiple devices in sample app. Attached log from boot up of sample app to crash (Produced on Galaxy S3)
log.txt

Steps to Reproduce the Problem

  1. Join conference.
  2. Turn on camera.

Specifications

  • Device: Samsung Galaxy S3 (GT-I9300), LG Nexus 4
  • OS: Android 4.3, 4.4.4
  • Platform: Android
  • Version:
    • voxeetSdkVersion = "2.0.49.14"

Help for video conference

Hi dear,

I wonder how I can get the video inputstream/outputstream speed so that I can give the UI to the users.
Is there any suggestion about the network speed?
Please do me a favor, thanks a lot.

compiler issue after updating from master branch

Describe the bug

After merging our android sdk toolkit project with base master branch, we are getting compiler errors on ids

Expected Behaviour

compiler issues must not be there

Steps to Reproduce the Problem

  1. take update from master branch
  2. click run app in android studio
  3. compiler error occurs

todayCapture1

IllegalArgumentException

Sorry, But I have no any idea why the exception happened when building a release apk(debug apk will not see this exception).
If you have any clue, please let me know!
Thank you very much!

2021-11-04 15:35:59.764 2751-2751/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.semcorel.coco.tablet, PID: 2751
    java.lang.RuntimeException: Unable to create application com.semcorel.coco.application.MyApplication: java.lang.IllegalArgumentException: Illegal URL: Target
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5907)
        at android.app.ActivityThread.access$1200(ActivityThread.java:206)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1678)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6702)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
     Caused by: java.lang.IllegalArgumentException: Illegal URL: Target
        at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:454)
        at com.voxeet.sdk.services.VoxeetHttp.createClientRetrofits(VoxeetHttp.java:233)
        at com.voxeet.sdk.services.VoxeetHttp.initRetrofit(VoxeetHttp.java:263)
        at com.voxeet.sdk.services.VoxeetHttp.init(VoxeetHttp.java:112)
        at com.voxeet.VoxeetSDK.internalInitialize(VoxeetSDK.java:219)
        at com.voxeet.VoxeetSDK.initialize(VoxeetSDK.java:143)
        at com.semcorel.coco.common.service.ConferenceService.registerApplication(ConferenceService.java:113)
        at com.semcorel.coco.common.service.ConferenceService.initialize(ConferenceService.java:37)
        at com.semcorel.coco.common.service.ServiceController.initialize(ServiceController.java:40)
        at com.semcorel.coco.common.controller.Controller.initialize(Controller.java:30)
        at com.semcorel.coco.application.MainApplication.onCreate(MainApplication.java:89)
        at com.semcorel.coco.application.MyApplication.onCreate(MyApplication.java:39)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)

Let third party libraries reuse logic

Describe the bug

Following the new logic integration, we now have a clear VoxeetAppCompatActivity extends VoxeetCommonAppCompatActivity. However most of cross platform libraries or even libraries requiring the developer to override the AppCompatActivity will need to copy/paste a lot of the UXKit's logic to be compatible with both framework/libraries

Expected Behaviour

  1. Developer should have a friction less integration
  2. Avoid copy/paste most of the logic
  3. Reuse a maximum of said logic

Note : Only libraries support AndroidX will be supported (either directly or via jetifier)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.