8000 Merge pull request #21 from rostopira/switch_camera · CodeStrings/flutter-webrtc@6b460d5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6b460d5

Browse files
authored
Merge pull request flutter-webrtc#21 from rostopira/switch_camera
Switch camera feature
2 parents 1c52110 + 4c08aff commit 6b460d5

File tree

5 files changed

+35
-5
lines changed

android/src/main/java/com/cloudwebrtc/webrtc/FlutterWebRTCPlugin.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,6 @@ public void onMethodCall(MethodCall call, Result result) {
128128
peerConnectionCreateAnswer(peerConnectionId, new ConstraintsMap(constraints), result);
129129
} else if (call.method.equals("mediaStreamGetTracks")) {
130130
String streamId = call.argument("streamId");
131-
MediaStream stream = getStreamForId(streamId);
132-
String streamId = call.argument("streamId");
133131
MediaStream stream = getStreamForId(streamId);
134132
Map<String, Object> resultMap = new HashMap<>();
135133
List<Object> audioTracks = new ArrayList<>();
@@ -255,6 +253,10 @@ public void onMethodCall(MethodCall call, Result result) {
255253
MediaStream stream = getStreamForId(streamId);
256254
render.setStream(stream);
257255
result.success(null);
256+
} else if (call.method.equals("mediaStreamTrackSwitchCamera")) {
257+
String trackId = call.argument("trackId");
258+
mediaStreamTrackSwitchCamera(trackId);
259+
result.success(null);
258260
} else {
259261
result.notImplemented();
260262
}

example/android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ buildscript {
55
}
66

77
dependencies {
8-
classpath 'com.android.tools.build:gradle:3.1.2'
8+
classpath 'com.android.tools.build:gradle:3.2.1'
99
}
1010
}
1111

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Sat May 12 22:34:13 CST 2018
1+
#Thu Oct 25 10:17:26 MSK 2018
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

ios/Classes/FlutterWebRTCPlugin.m

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,25 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult) result
345345
[self setStreamId:streamId view:render];
346346
}
347347
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);
348367
}else{
349368
result(FlutterMethodNotImplemented);
350369
}
@@ -376,6 +395,7 @@ -(void)mediaStreamGetTracks:(NSString*)streamId
376395

377396
for (RTCMediaStreamTrack *track in stream.audioTracks) {
378397
NSString *trackId = track.trackId;
398+
[self.localTracks setObject:track forKey:trackId];
379399
[audioTracks addObject:@{
380400
@"enabled": @(track.isEnabled),
381401
@"id": trackId,
@@ -388,6 +408,7 @@ -(void)mediaStreamGetTracks:(NSString*)streamId
388408

389409
for (RTCMediaStreamTrack *track in stream.videoTracks) {
390410
NSString *trackId = track.trackId;
411+
[self.localTracks setObject:track forKey:trackId];
391412
[videoTracks addObject:@{
392413
@"enabled": @(track.isEnabled),
393414
@"id": trackId,

lib/media_stream_track.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ class MediaStreamTrack {
2121
String get kind => _kind;
2222
String get id => _trackId;
2323

24+
void switchCamera() async {
25+
await _channel.invokeMethod(
26+
'mediaStreamTrackSwitchCamera',
27+
<String, dynamic>{'trackId': _trackId},
28+
);
29+
}
30+
2431
void dispose() async {
2532
await _channel.invokeMethod(
2633
'trackDispose',

0 commit comments

Comments
 (0)
0