@@ -247,7 +247,15 @@ public void onMethodCall(MethodCall call, Result notSafeResult) {
247
247
track .setEnabled (enabled );
248
248
}
249
249
result .success (null );
250
- }else if (call .method .equals ("trackDispose" )) {
250
+ }else if (call .method .equals ("mediaStreamAddTrack" )) {
251
+ String streamId = call .argument ("streamId" );
252
+ String trackId = call .argument ("trackId" );
253
+ mediaStreamAddTrack (streamId , trackId , result );
254
+ }else if (call .method .equals ("mediaStreamRemoveTrack" )) {
255
+ String streamId = call .argument ("streamId" );
256
+ String trackId = call .argument ("trackId" );
257
+ mediaStreamRemoveTrack (streamId ,trackId , result );
258
+ } else if (call .method .equals ("trackDispose" )) {
251
259
String trackId = call .argument ("trackId" );
252
260
localTracks .remove (trackId );
253
261
result .success (null );
@@ -931,6 +939,52 @@ public void mediaStreamTrackEnableSpeakerphone(final String id, boolean enabled)
931
939
}
932
940
}
933
941
942
+ public void mediaStreamAddTrack (final String streaemId , final String trackId , Result result ) {
943
+ MediaStream mediaStream = localStreams .get (streaemId );
944
+ if (mediaStream != null ) {
945
+ MediaStreamTrack track = localTracks .get (trackId );
946
+ if (track != null ){
947
+ if (track .kind ().equals ("audio" )) {
948
+ mediaStream .addTrack ((AudioTrack ) track );
949
+ } else if (track .kind ().equals ("video" )) {
950
+ mediaStream .addTrack ((VideoTrack ) track );
951
+ }
952
+ } else {
953
+ String errorMsg = "mediaStreamAddTrack() track [" + trackId + "] is null" ;
954
+ Log .d (TAG , errorMsg );
955
+ result .error ("mediaStreamAddTrack" , errorMsg , null );
956
+ }
957
+ } else {
958
+ String errorMsg = "mediaStreamAddTrack() stream [" + trackId + "] is null" ;
959
+ Log .d (TAG , errorMsg );
960
+ result .error ("mediaStreamAddTrack" , errorMsg , null );
961
+ }
962
+ result .success (null );
963
+ }
964
+
965
+ public void mediaStreamRemoveTrack (final String streaemId , final String trackId , Result result ) {
966
+ MediaStream mediaStream = localStreams .get (streaemId );
967
+ if (mediaStream != null ) {
968
+ MediaStreamTrack track = localTracks .get (trackId );
969
+ if (track != null ) {
970
+ if (track .kind ().equals ("audio" )) {
971
+ mediaStream .removeTrack ((AudioTrack ) track );
972
+ } else if (track .kind ().equals ("video" )) {
973
+ mediaStream .removeTrack ((VideoTrack ) track );
974
+ }
975
+ } else {
976
+ String errorMsg = "mediaStreamRemoveTrack() track [" + trackId + "] is null" ;
977
+ Log .d (TAG , errorMsg );
978
+ result .error ("mediaStreamRemoveTrack" , errorMsg , null );
979
+ }
980
+ } else {
981
+ String errorMsg = "mediaStreamRemoveTrack() stream [" + trackId + "] is null" ;
982
+ Log .d (TAG , errorMsg );
983
+ result .error ("mediaStreamRemoveTrack" , errorMsg , null );
984
+ }
985
+ result .success (null );
986
+ }
987
+
934
988
public void mediaStreamTrackRelease (final String streamId , final String _trackId ) {
935
989
MediaStream stream = localStreams .get (streamId );
936
990
if (stream == null ) {
0 commit comments