@@ -345,6 +345,25 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult) result
345
345
[self setStreamId: streamId view: render];
346
346
}
347
347
result (nil );
348
+ }else if ([@" mediaStreamTrackSwitchCamera" isEqualToString: call.method]){
349
+ NSDictionary * argsMap = call.arguments ;
350
+ NSString * trackId = argsMap[@" trackId" ];
351
+ RTCMediaStreamTrack *track = self.localTracks [trackId];
352
+ if (track != nil && [track isKindOfClass: [RTCVideoTrack class ]]) {
353
+ RTCVideoTrack *videoTrack = (RTCVideoTrack *)track;
354
+ RTCVideoSource *source = videoTrack.source ;
355
+ if ([source isKindOfClass: [RTCAVFoundationVideoSource class ]]) {
356
+ RTCAVFoundationVideoSource *avSource = (RTCAVFoundationVideoSource *)source;
357
+ avSource.useBackCamera = !avSource.useBackCamera ;
358
+ }
359
+ } else {
360
+ if (track == nil ) {
361
+ NSLog (@" Track is nil" );
362
+ } else {
363
+ NSLog ([@" Track is class of " stringByAppendingString: [[track class ] description ]]);
364
+ }
365
+ }
366
+ result (nil );
348
367
}else {
349
368
result (FlutterMethodNotImplemented);
350
369
}
@@ -376,6 +395,7 @@ -(void)mediaStreamGetTracks:(NSString*)streamId
376
395
377
396
for (RTCMediaStreamTrack *track in stream.audioTracks ) {
378
397
NSString *trackId = track.trackId ;
398
+ [self .localTracks setObject: track forKey: trackId];
379
399
[audioTracks addObject: @{
380
400
@" enabled" : @(track.isEnabled ),
381
401
@" id" : trackId,
@@ -388,6 +408,7 @@ -(void)mediaStreamGetTracks:(NSString*)streamId
388
408
389
409
for (RTCMediaStreamTrack *track in stream.videoTracks ) {
390
410
NSString *trackId = track.trackId ;
411
+ [self .localTracks setObject: track forKey: trackId];
391
412
[videoTracks addObject: @{
392
413
@" enabled" : @(track.isEnabled ),
393
414
@" id" : trackId,
0 commit comments