Add support for signaling settings

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2017-12-08 09:41:21 +01:00
parent 1811d9bdfa
commit 9f8d60fce8
3 changed files with 50 additions and 12 deletions

View File

@ -30,6 +30,7 @@ import android.content.res.Resources;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
@ -51,6 +52,8 @@ import com.nextcloud.talk.api.models.json.signaling.NCMessageWrapper;
import com.nextcloud.talk.api.models.json.signaling.NCSignalingMessage;
import com.nextcloud.talk.api.models.json.signaling.Signaling;
import com.nextcloud.talk.api.models.json.signaling.SignalingOverall;
import com.nextcloud.talk.api.models.json.signaling.settings.IceServer;
import com.nextcloud.talk.api.models.json.signaling.settings.SignalingSettingsOverall;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.events.MediaStreamEvent;
import com.nextcloud.talk.events.PeerConnectionEvent;
@ -174,16 +177,12 @@ public class CallActivity extends AppCompatActivity {
initViews();
PermissionHelper permissionHelper = new PermissionHelper(this);
permissionHelper.check(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO,
Manifest.permission.MODIFY_AUDIO_SETTINGS, Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.INTERNET)
.onSuccess(() -> {
start();
})
permissionHelper.check(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
.onSuccess(this::start)
.onDenied(new Runnable() {
@Override
public void run() {
// do nothing
finish();
}
})
.run();
@ -290,7 +289,6 @@ public class CallActivity extends AppCompatActivity {
localVideoTrack.addRenderer(localRenderer);
iceServers = new ArrayList<>();
iceServers.add(new PeerConnection.IceServer("stun:stun.nextcloud.com:443"));
//create sdpConstraints
sdpConstraints = new MediaConstraints();
@ -299,6 +297,48 @@ public class CallActivity extends AppCompatActivity {
sdpConstraints.optional.add(new MediaConstraints.KeyValuePair("internalSctpDataChannels", "true"));
sdpConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));
ncApi.getSignalingSettings(ApiHelper.getCredentials(userEntity.getUsername(), userEntity.getToken()),
ApiHelper.getUrlForSignalingSettings(userEntity.getBaseUrl()))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<SignalingSettingsOverall>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(SignalingSettingsOverall signalingSettingsOverall) {
IceServer iceServer;
for(int i = 0; i < signalingSettingsOverall.getOcs().getSettings().getStunServers().size();
i++) {
iceServer = signalingSettingsOverall.getOcs().getSettings().getStunServers().get(i);
if (TextUtils.isEmpty(iceServer.getUsername()) || TextUtils.isEmpty(iceServer
.getCredential())) {
iceServers.add(new PeerConnection.IceServer(iceServer.getUrl()));
} else {
iceServers.add(new PeerConnection.IceServer(iceServer.getUrl(),
iceServer.getUsername(), iceServer.getCredential()));
}
}
joinRoomAndCall();
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
private void joinRoomAndCall() {
ncApi.joinRoom(credentials, ApiHelper.getUrlForRoom(userEntity.getBaseUrl(), roomToken))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())

View File

@ -22,7 +22,6 @@ package com.nextcloud.talk.api.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.api.models.json.signaling.SignalingOCS;
import lombok.Data;
@ -30,5 +29,5 @@ import lombok.Data;
@JsonObject
public class SignalingSettingsOverall {
@JsonField(name = "ocs")
SignalingOCS ocs;
SignalingSettingsOcs ocs;
}

View File

@ -38,7 +38,6 @@
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_margin="8dp"
android:textColor="@color/nc_white_color_complete"
android:visibility="visible"/>
android:textColor="@color/nc_white_color_complete"/>
</RelativeLayout>