|
4 | 4 | import android.content.Context;
|
5 | 5 | import android.hardware.Camera;
|
6 | 6 | import android.graphics.SurfaceTexture;
|
| 7 | +import android.media.AudioManager; |
7 | 8 | import android.util.Log;
|
8 | 9 | import android.util.LongSparseArray;
|
9 | 10 |
|
@@ -69,6 +70,7 @@ public class FlutterWebRTCPlugin implements MethodCallHandler {
|
69 | 70 | private GetUserMediaImpl getUserMediaImpl;
|
70 | 71 | final PeerConnectionFactory mFactory;
|
71 | 72 |
|
| 73 | + private AudioDeviceModule audioDeviceModule; |
72 | 74 |
|
73 | 75 | public Activity getActivity() {
|
74 | 76 | return registrar.activity();
|
@@ -108,7 +110,7 @@ private FlutterWebRTCPlugin(Registrar registrar, MethodChannel channel) {
|
108 | 110 |
|
109 | 111 | getUserMediaImpl = new GetUserMediaImpl(this, registrar.context());
|
110 | 112 |
|
111 |
| - AudioDeviceModule audioDeviceModule = JavaAudioDeviceModule.builder(registrar.context()) |
| 113 | + audioDeviceModule = JavaAudioDeviceModule.builder(registrar.context()) |
112 | 114 | .setUseHardwareAcousticEchoCanceler(true)
|
113 | 115 | .setUseHardwareNoiseSuppressor(true)
|
114 | 116 | .setSamplesReadyCallback(getUserMediaImpl.inputSamplesInterceptor)
|
@@ -302,6 +304,16 @@ public void onMethodCall(MethodCall call, Result notSafeResult) {
|
302 | 304 | double volume = call.argument("volume");
|
303 | 305 | mediaStreamTrackSetVolume(trackId, volume);
|
304 | 306 | result.success(null);
|
| 307 | + } else if (call.method.equals("setMicrophoneMute")) { |
| 308 | + String trackId = call.argument("trackId"); |
| 309 | + boolean mute = call.argument("mute"); |
| 310 | + mediaStreamTrackSetMicrophoneMute(trackId, mute); |
| 311 | + result.success(null); |
| 312 | + } else if (call.method.equals("enableSpeakerphone")) { |
| 313 | + String trackId = call.argument("trackId"); |
| 314 | + boolean enable = call.argument("enable"); |
| 315 | + mediaStreamTrackEnableSpeakerphone(trackId, enable); |
| 316 | + result.success(null); |
305 | 317 | } else if(call.method.equals("getDisplayMedia")) {
|
306 | 318 | Map<String, Object> constraints = call.argument("constraints");
|
307 | 319 | ConstraintsMap constraintsMap = new ConstraintsMap(constraints);
|
@@ -888,6 +900,24 @@ public void mediaStreamTrackSetVolume(final String id, final double volume) {
|
888 | 900 | }
|
889 | 901 | }
|
890 | 902 |
|
| 903 | + public void mediaStreamTrackSetMicrophoneMute(final String id, boolean mute) { |
| 904 | + try { |
| 905 | + audioDeviceModule.setMicrophoneMute(mute); |
| 906 | + } catch (Exception e) { |
| 907 | + Log.e(TAG, "setMicrophoneMute(): error", e); |
| 908 | + } |
| 909 | + } |
| 910 | + |
| 911 | + public void mediaStreamTrackEnableSpeakerphone(final String id, boolean enabled) { |
| 912 | + AudioManager audioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); |
| 913 | + |
| 914 | + try { |
| 915 | + audioManager.setSpeakerphoneOn(enabled); |
| 916 | + } catch (Exception e) { |
| 917 | + Log.e(TAG, "setSpeakerphoneOn(): error", e); |
| 918 | + } |
| 919 | + } |
| 920 | + |
891 | 921 | public void mediaStreamTrackRelease(final String streamId, final String _trackId) {
|
892 | 922 | MediaStream stream = localStreams.get(streamId);
|
893 | 923 | if (stream == null) {
|
|
0 commit comments