mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 16:49:40 +01:00
Call handling state machine refactor.
This commit is contained in:
committed by
Alan Evans
parent
b3f0a44f10
commit
5eaac6cb17
@@ -45,6 +45,7 @@ public class Camera implements CameraControl, CameraVideoCapturer.CameraSwitchHa
|
||||
private final int cameraCount;
|
||||
@NonNull private CameraState.Direction activeDirection;
|
||||
private boolean enabled;
|
||||
private boolean isInitialized;
|
||||
|
||||
public Camera(@NonNull Context context,
|
||||
@NonNull CameraEventListener cameraEventListener,
|
||||
@@ -80,6 +81,7 @@ public class Camera implements CameraControl, CameraVideoCapturer.CameraSwitchHa
|
||||
capturer.initialize(SurfaceTextureHelper.create("WebRTC-SurfaceTextureHelper", eglBase.getEglBaseContext()),
|
||||
context,
|
||||
observer);
|
||||
isInitialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,6 +125,7 @@ public class Camera implements CameraControl, CameraVideoCapturer.CameraSwitchHa
|
||||
public void dispose() {
|
||||
if (capturer != null) {
|
||||
capturer.dispose();
|
||||
isInitialized = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,6 +145,10 @@ public class Camera implements CameraControl, CameraVideoCapturer.CameraSwitchHa
|
||||
return capturer;
|
||||
}
|
||||
|
||||
public boolean isInitialized() {
|
||||
return isInitialized;
|
||||
}
|
||||
|
||||
private @Nullable CameraVideoCapturer createVideoCapturer(@NonNull CameraEnumerator enumerator,
|
||||
@NonNull CameraState.Direction direction)
|
||||
{
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package org.thoughtcrime.securesms.ringrtc;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public class CameraState {
|
||||
public class CameraState implements Parcelable {
|
||||
|
||||
public static final CameraState UNKNOWN = new CameraState(Direction.NONE, 0);
|
||||
|
||||
@@ -14,6 +17,10 @@ public class CameraState {
|
||||
this.cameraCount = cameraCount;
|
||||
}
|
||||
|
||||
private CameraState(Parcel in) {
|
||||
this(Direction.valueOf(in.readString()), in.readInt());
|
||||
}
|
||||
|
||||
public int getCameraCount() {
|
||||
return cameraCount;
|
||||
}
|
||||
@@ -31,6 +38,17 @@ public class CameraState {
|
||||
return "count: " + cameraCount + ", activeDirection: " + activeDirection;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeString(activeDirection.name());
|
||||
dest.writeInt(cameraCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public enum Direction {
|
||||
FRONT, BACK, NONE, PENDING;
|
||||
|
||||
@@ -49,4 +67,16 @@ public class CameraState {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static final Creator<CameraState> CREATOR = new Creator<CameraState>() {
|
||||
@Override
|
||||
public CameraState createFromParcel(Parcel in) {
|
||||
return new CameraState(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CameraState[] newArray(int size) {
|
||||
return new CameraState[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,7 +2,9 @@ package org.thoughtcrime.securesms.ringrtc;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.signal.ringrtc.CallId;
|
||||
import org.signal.ringrtc.Remote;
|
||||
@@ -84,7 +86,7 @@ public final class RemotePeer implements Remote, Parcelable
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean callIdEquals(RemotePeer remotePeer) {
|
||||
public boolean callIdEquals(@Nullable RemotePeer remotePeer) {
|
||||
return remotePeer != null && this.callId.equals(remotePeer.callId);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package org.thoughtcrime.securesms.ringrtc;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.whispersystems.signalservice.api.messages.calls.TurnServerInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Wrap turn server info so it can be sent via an intent.
|
||||
*/
|
||||
public class TurnServerInfoParcel implements Parcelable {
|
||||
|
||||
private final String username;
|
||||
private final String password;
|
||||
private final List<String> urls;
|
||||
|
||||
public TurnServerInfoParcel(@NonNull TurnServerInfo turnServerInfo) {
|
||||
urls = new ArrayList<>(turnServerInfo.getUrls());
|
||||
username = turnServerInfo.getUsername();
|
||||
password = turnServerInfo.getPassword();
|
||||
}
|
||||
|
||||
private TurnServerInfoParcel(@NonNull Parcel in) {
|
||||
username = in.readString();
|
||||
password = in.readString();
|
||||
urls = in.createStringArrayList();
|
||||
}
|
||||
|
||||
public @Nullable String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public @Nullable String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public @NonNull List<String> getUrls() {
|
||||
return urls;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeString(username);
|
||||
dest.writeString(password);
|
||||
dest.writeStringList(urls);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static final Creator<TurnServerInfoParcel> CREATOR = new Creator<TurnServerInfoParcel>() {
|
||||
@Override
|
||||
public TurnServerInfoParcel createFromParcel(Parcel in) {
|
||||
return new TurnServerInfoParcel(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TurnServerInfoParcel[] newArray(int size) {
|
||||
return new TurnServerInfoParcel[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user