mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 19:49:33 +01:00
Add support for signaling settings
Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
parent
1811d9bdfa
commit
9f8d60fce8
@ -30,6 +30,7 @@ import android.content.res.Resources;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.View;
|
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.NCSignalingMessage;
|
||||||
import com.nextcloud.talk.api.models.json.signaling.Signaling;
|
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.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.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.events.MediaStreamEvent;
|
import com.nextcloud.talk.events.MediaStreamEvent;
|
||||||
import com.nextcloud.talk.events.PeerConnectionEvent;
|
import com.nextcloud.talk.events.PeerConnectionEvent;
|
||||||
@ -174,16 +177,12 @@ public class CallActivity extends AppCompatActivity {
|
|||||||
initViews();
|
initViews();
|
||||||
|
|
||||||
PermissionHelper permissionHelper = new PermissionHelper(this);
|
PermissionHelper permissionHelper = new PermissionHelper(this);
|
||||||
permissionHelper.check(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO,
|
permissionHelper.check(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
|
||||||
Manifest.permission.MODIFY_AUDIO_SETTINGS, Manifest.permission.ACCESS_NETWORK_STATE,
|
.onSuccess(this::start)
|
||||||
Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.INTERNET)
|
|
||||||
.onSuccess(() -> {
|
|
||||||
start();
|
|
||||||
})
|
|
||||||
.onDenied(new Runnable() {
|
.onDenied(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
// do nothing
|
finish();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.run();
|
.run();
|
||||||
@ -290,7 +289,6 @@ public class CallActivity extends AppCompatActivity {
|
|||||||
localVideoTrack.addRenderer(localRenderer);
|
localVideoTrack.addRenderer(localRenderer);
|
||||||
|
|
||||||
iceServers = new ArrayList<>();
|
iceServers = new ArrayList<>();
|
||||||
iceServers.add(new PeerConnection.IceServer("stun:stun.nextcloud.com:443"));
|
|
||||||
|
|
||||||
//create sdpConstraints
|
//create sdpConstraints
|
||||||
sdpConstraints = new MediaConstraints();
|
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("internalSctpDataChannels", "true"));
|
||||||
sdpConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "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))
|
ncApi.joinRoom(credentials, ApiHelper.getUrlForRoom(userEntity.getBaseUrl(), roomToken))
|
||||||
.subscribeOn(Schedulers.newThread())
|
.subscribeOn(Schedulers.newThread())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
@ -22,7 +22,6 @@ package com.nextcloud.talk.api.models.json.signaling.settings;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.api.models.json.signaling.SignalingOCS;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -30,5 +29,5 @@ import lombok.Data;
|
|||||||
@JsonObject
|
@JsonObject
|
||||||
public class SignalingSettingsOverall {
|
public class SignalingSettingsOverall {
|
||||||
@JsonField(name = "ocs")
|
@JsonField(name = "ocs")
|
||||||
SignalingOCS ocs;
|
SignalingSettingsOcs ocs;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:layout_alignParentStart="true"
|
android:layout_alignParentStart="true"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:textColor="@color/nc_white_color_complete"
|
android:textColor="@color/nc_white_color_complete"/>
|
||||||
android:visibility="visible"/>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
Loading…
Reference in New Issue
Block a user