File tree Expand file tree Collapse file tree 4 files changed +40
-0
lines changed Expand file tree Collapse file tree 4 files changed +40
-0
lines changed Original file line number Diff line number Diff line change 11
11
12
12
-(void )getSources : (FlutterResult)result ;
13
13
14
+ -(void )mediaStreamTrackHasTorch : (RTCMediaStreamTrack *)track
15
+ result : (FlutterResult) result ;
16
+
14
17
-(void )mediaStreamTrackSetTorch : (RTCMediaStreamTrack *)track
15
18
torch : (BOOL ) torch
16
19
result : (FlutterResult) result ;
Original file line number Diff line number Diff line change @@ -474,6 +474,23 @@ -(void)mediaStreamTrackSetEnabled:(RTCMediaStreamTrack *)track : (BOOL)enabled
474
474
}
475
475
}
476
476
477
+ -(void )mediaStreamTrackHasTorch : (RTCMediaStreamTrack *)track result : (FlutterResult) result
478
+ {
479
+ if (!self.videoCapturer ) {
480
+ result (@NO );
481
+ return ;
482
+ }
483
+ if (self.videoCapturer .captureSession .inputs .count == 0 ) {
484
+ result (@NO );
485
+ return ;
486
+ }
487
+
488
+ AVCaptureDeviceInput *deviceInput = [self .videoCapturer.captureSession.inputs objectAtIndex: 0 ];
489
+ AVCaptureDevice *device = deviceInput.device ;
490
+
491
+ result (@([device isTorchModeSupported: AVCaptureTorchModeOn]));
492
+ }
493
+
477
494
-(void )mediaStreamTrackSetTorch : (RTCMediaStreamTrack *)track torch : (BOOL )torch result : (FlutterResult)result
478
495
{
479
496
if (!self.videoCapturer ) {
Original file line number Diff line number Diff line change @@ -353,6 +353,20 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult) result
353
353
[self setStreamId: streamId view: render];
354
354
}
355
355
result (nil );
356
+ }else if ([@" mediaStreamTrackHasTorch" isEqualToString: call.method]) {
357
+ NSDictionary * argsMap = call.arguments ;
358
+ NSString * trackId = argsMap[@" trackId" ];
359
+ RTCMediaStreamTrack *track = self.localTracks [trackId];
360
+ if (track != nil && [track isKindOfClass: [RTCVideoTrack class ]]) {
361
+ RTCVideoTrack *videoTrack = (RTCVideoTrack *)track;
362
+ [self mediaStreamTrackHasTorch: videoTrack result: result];
363
+ } else {
364
+ if (track == nil ) {
365
+ result ([FlutterError errorWithCode: @" Track is nil" message: nil details: nil ]);
366
+ } else {
367
+ result ([FlutterError errorWithCode: [@" Track is class of " stringByAppendingString: [[track class ] description ]] message: nil details: nil ]);
368
+ }
369
+ }
356
370
}else if ([@" mediaStreamTrackSetTorch" isEqualToString: call.method]) {
357
371
NSDictionary * argsMap = call.arguments ;
358
372
NSString * trackId = argsMap[@" trackId" ];
Original file line number Diff line number Diff line change @@ -23,6 +23,12 @@ class MediaStreamTrack {
23
23
String get kind => _kind;
24
24
String get id => _trackId;
25
25
26
+ Future <bool > hasTorch () =>
27
+ _channel.invokeMethod (
28
+ 'mediaStreamTrackHasTorch' ,
29
+ < String , dynamic > {'trackId' : _trackId},
30
+ );
31
+
26
32
Future <void > setTorch (bool torch) =>
27
33
_channel.invokeMethod (
28
34
'mediaStreamTrackSetTorch' ,
You can’t perform that action at this time.
0 commit comments