adding WebRTC user settings

Esse commit está contido em:
Angel Ayala
2024-08-13 19:45:18 -03:00
commit 08657de77c
5 arquivos alterados com 64 adições e 15 exclusões
@@ -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() {
+6
Ver Arquivo
@@ -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>
+22
Ver Arquivo
@@ -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">