adding WebRTC user settings
Esse commit está contido em:
@@ -29,4 +29,13 @@ public class Plugin {
|
||||
|
||||
public void settingsChanged() {
|
||||
}
|
||||
|
||||
public String getPrefString(String pref, String defPref) {
|
||||
return pluginManager.mainActivity.sharedPreferences.getString(pref, defPref);
|
||||
}
|
||||
|
||||
public Boolean getPrefBoolean(String pref, Boolean defPref) {
|
||||
return pluginManager.mainActivity.sharedPreferences.getBoolean(pref, defPref);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -49,14 +49,14 @@ public class WebRTCClient {
|
||||
return factory;
|
||||
}
|
||||
|
||||
public WebRTCClient(String peerSocketID, Context context, VideoCapturer videoCapturer, WebRTCMediaOptions options){
|
||||
public WebRTCClient(String peerSocketID, Context context, VideoCapturer videoCapturer, WebRTCMediaOptions options, String stunServer){
|
||||
this.peerSocketID = peerSocketID;
|
||||
this.context = context;
|
||||
this.options = options;
|
||||
this.videoCapturer = videoCapturer;
|
||||
|
||||
createVideoTrackFromVideoCapturer();
|
||||
initializePeerConnection();
|
||||
initializePeerConnection(stunServer);
|
||||
startStreamingVideo();
|
||||
}
|
||||
|
||||
@@ -138,8 +138,8 @@ public class WebRTCClient {
|
||||
videoTrackFromCamera.setEnabled(true);
|
||||
}
|
||||
|
||||
private void initializePeerConnection() {
|
||||
peerConnection = createPeerConnection();
|
||||
private void initializePeerConnection(String stunServer) {
|
||||
peerConnection = createPeerConnection(stunServer);
|
||||
}
|
||||
|
||||
private void startStreamingVideo() {
|
||||
@@ -148,9 +148,9 @@ public class WebRTCClient {
|
||||
peerConnection.addStream(mediaStream);
|
||||
}
|
||||
|
||||
private PeerConnection createPeerConnection() {
|
||||
private PeerConnection createPeerConnection(String stunServer) {
|
||||
ArrayList<PeerConnection.IceServer> iceServers = new ArrayList<>();
|
||||
PeerConnection.IceServer stun = PeerConnection.IceServer.builder("stun:192.168.1.220:8090").createIceServer();
|
||||
PeerConnection.IceServer stun = PeerConnection.IceServer.builder(stunServer).createIceServer();
|
||||
iceServers.add(stun);
|
||||
PeerConnection.RTCConfiguration rtcConfig = new PeerConnection.RTCConfiguration(iceServers);
|
||||
|
||||
|
||||
@@ -13,18 +13,16 @@ import sq.rogue.rosettadrone.plugins.WebRTC.websocket.SocketState;
|
||||
|
||||
public class WebRTCStreaming extends Plugin {
|
||||
private static final String TAG = WebRTCStreaming.class.getSimpleName();
|
||||
private final String WEBSOCKET_URL = "ws://192.168.1.220:8090";
|
||||
private DJIStreamer djiStreamer;
|
||||
private Socket mSocket;
|
||||
private static final boolean TEST = false; // Send a testing stream
|
||||
|
||||
public void start() {
|
||||
pluginManager.mainActivity.useCustomDecoder = false; // Messes up the buffer received by onYuvDataReceived()
|
||||
pluginManager.mainActivity.useOutputSurface = false; // Avoid crash when clicking on minimap
|
||||
|
||||
public void initWebSocket() {
|
||||
// init websocket
|
||||
mSocket = SocketBuilder.with(WEBSOCKET_URL)
|
||||
.setPingInterval(5, TimeUnit.SECONDS).build();
|
||||
mSocket = SocketBuilder
|
||||
.with(getPrefString("pref_webrtc_signaling_server", "ws://192.168.1.220:8090"))
|
||||
.setPingInterval(5, TimeUnit.SECONDS)
|
||||
.build();
|
||||
|
||||
// add ws states listeners
|
||||
mSocket.addOnChangeStateListener(new OnStateChangeListener() {
|
||||
@@ -49,7 +47,9 @@ public class WebRTCStreaming extends Plugin {
|
||||
}
|
||||
});
|
||||
mSocket.connect();
|
||||
}
|
||||
|
||||
public void initStreaming() {
|
||||
if(TEST || RDApplication.isTestMode) {
|
||||
// TODO: fake video streaming?
|
||||
}
|
||||
@@ -61,10 +61,21 @@ public class WebRTCStreaming extends Plugin {
|
||||
pluginManager.mainActivity.finish();
|
||||
}
|
||||
else {
|
||||
djiStreamer = new DJIStreamer(pluginManager.mainActivity, pluginManager.mainActivity.mModel.m_model);
|
||||
djiStreamer = new DJIStreamer(pluginManager.mainActivity,
|
||||
pluginManager.mainActivity.mModel.m_model,
|
||||
getPrefString("pref_webrtc_stun_server", "stun:stun.l.google.com:19302"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void start() {
|
||||
pluginManager.mainActivity.useCustomDecoder = false; // Messes up the buffer received by onYuvDataReceived()
|
||||
pluginManager.mainActivity.useOutputSurface = false; // Avoid crash when clicking on minimap
|
||||
|
||||
if (getPrefBoolean("pref_enable_webrtc", false)) {
|
||||
initWebSocket();
|
||||
initStreaming();
|
||||
}
|
||||
}
|
||||
|
||||
public void onVideoChange() {
|
||||
@@ -80,7 +91,8 @@ public class WebRTCStreaming extends Plugin {
|
||||
}
|
||||
|
||||
// TODO: properly close client connections.
|
||||
mSocket.terminate();
|
||||
if (pluginManager.mainActivity.sharedPreferences.getBoolean("pref_enable_webrtc", false))
|
||||
mSocket.terminate();
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
|
||||
@@ -142,6 +142,12 @@
|
||||
<!-- Logs -->
|
||||
<string name="pref_log_messages">Log MAVLink messages</string>
|
||||
|
||||
<!-- WebRTC -->
|
||||
<string name="webrtc_settings">WebRTC Video</string>
|
||||
<string name="pref_enable_webrtc">Enable WebRTC vide streaming</string>
|
||||
<string name="pref_webrtc_signaling_address">WebRTC Signaling server address</string>
|
||||
<string name="pref_webrtc_stun_address">WebRTC STUN server address</string>
|
||||
|
||||
<!-- Communication Channels -->
|
||||
<string name="dji">DJI</string>
|
||||
<string name="gcs">GCS</string>
|
||||
|
||||
@@ -319,6 +319,28 @@
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="webrtc_prefs"
|
||||
android:title="@string/webrtc_settings">
|
||||
|
||||
<androidx.preference.SwitchPreferenceCompat
|
||||
android:key="pref_enable_webrtc"
|
||||
android:title="@string/pref_enable_webrtc"
|
||||
android:defaultValue="false" />
|
||||
|
||||
<androidx.preference.EditTextPreference
|
||||
android:defaultValue="ws://127.0.0.1:8090"
|
||||
android:dependency="pref_enable_webrtc"
|
||||
android:key="pref_webrtc_signaling_server"
|
||||
android:title="@string/pref_webrtc_signaling_address" />
|
||||
<androidx.preference.EditTextPreference
|
||||
android:defaultValue="stun:stun.l.google.com:19302"
|
||||
android:dependency="pref_enable_webrtc"
|
||||
android:key="pref_webrtc_stun_server"
|
||||
android:title="@string/pref_webrtc_stun_address" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="log_prefs"
|
||||
android:title="@string/log_settings">
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário