10000 Merge pull request #101 from wbarnard/microphone-mute · next-coder/flutter-webrtc@e466d0e · GitHub
[go: up one dir, main page]

Skip to content

Commit e466d0e

Browse files
authored
Merge pull request flutter-webrtc#101 from wbarnard/microphone-mute
Microphone mute
2 parents 089ba1f + 72ed1d9 commit e466d0e

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public class FlutterWebRTCPlugin implements MethodCallHandler {
6969
private GetUserMediaImpl getUserMediaImpl;
7070
final PeerConnectionFactory mFactory;
7171

72+
private AudioDeviceModule audioDeviceModule;
7273

7374
public Activity getActivity() {
7475
return registrar.activity();
@@ -108,7 +109,7 @@ private FlutterWebRTCPlugin(Registrar registrar, MethodChannel channel) {
108109

109110
getUserMediaImpl = new GetUserMediaImpl(this, registrar.context());
110111

111-
AudioDeviceModule audioDeviceModule = JavaAudioDeviceModule.builder(registrar.context())
112+
audioDeviceModule = JavaAudioDeviceModule.builder(registrar.context())
112113
.setUseHardwareAcousticEchoCanceler(true)
113114
.setUseHardwareNoiseSuppressor(true)
114115
.setSamplesReadyCallback(getUserMediaImpl.inputSamplesInterceptor)
@@ -302,6 +303,11 @@ public void onMethodCall(MethodCall call, Result notSafeResult) {
302303
double volume = call.argument("volume");
303304
mediaStreamTrackSetVolume(trackId, volume);
304305
result.success(null);
306+
} else if (call.method.equals("setMicrophoneMute")) {
307+
String trackId = call.argument("trackId");
308+
boolean mute = call.argument("mute");
309+
mediaStreamTrackSetMicrophoneMute(trackId, mute);
310+
result.success(null);
305311
} else if(call.method.equals("getDisplayMedia")) {
306312
Map<String, Object> constraints = call.argument("constraints");
307313
ConstraintsMap constraintsMap = new ConstraintsMap(constraints);
@@ -888,6 +894,14 @@ public void mediaStreamTrackSetVolume(final String id, final double volume) {
888894
}
889895
}
890896

897+
public void mediaStreamTrackSetMicrophoneMute(final String id, boolean mute) {
898+
try {
899+
audioDeviceModule.setMicrophoneMute(mute);
900+
} catch (Exception e) {
901+
Log.e(TAG, "setMicrophoneMute(): error", e);
902+
}
903+
}
904+
891905
public void mediaStreamTrackRelease(final String streamId, final String _trackId) {
892906
MediaStream stream = localStreams.get(streamId);
893907
if (stream == null) {

ios/Classes/FlutterWebRTCPlugin.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,16 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult) result
378378
audioSource.volume = [volume doubleValue];
379379
}
380380
result(nil);
381+
} else if ([@"setMicrophoneMute" isEqualToString:call.method]) {
382+
NSDictionary* argsMap = call.arguments;
383+
NSString* trackId = argsMap[@"trackId"];
384+
NSNumber* mute = argsMap[@"mute"];
385+
RTCMediaStreamTrack *track = self.localTracks[trackId];
386+
if (track != nil && [track isKindOfClass:[RTCAudioTrack class]]) {
387+
RTCAudioTrack *audioTrack = (RTCAudioTrack *)track;
388+
audioTrack.isEnabled = !mute.boolValue;
389+
}
390+
result(nil);
381391
}else if ([@"getLocalDescription" isEqualToString:call.method]) {
382392
NSDictionary* argsMap = call.arguments;
383393
NSString* peerConnectionId = argsMap[@"peerConnectionId"];

lib/media_stream_track.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ class MediaStreamTrack {
3838
);
3939
}
4040

41+
void setMicrophoneMute(bool mute) async {
42+
print('MediaStreamTrack:setMicrophoneMute $mute');
43+
await _channel.invokeMethod(
44+
'setMicrophoneMute',
45+
<String, dynamic>{'trackId': _trackId, 'mute': mute},
46+
);
47+
}
48+
4149
captureFrame(String filePath) =>
4250
_channel.invokeMethod(
4351
'captureFrame',

0 commit comments

Comments
 (0)
0