Fix device id not working for web (#91)

* update gradle

* Use either sourceId or deviceId as needed

Web does not allow for mixing optional constraints with modern constraints
This commit is contained in:
davidliu
2022-03-12 02:26:09 +09:00
committed by GitHub
parent 288bd99dca
commit e7333174b5
3 changed files with 51 additions and 28 deletions
+2 -2
View File
@@ -2,14 +2,14 @@ group 'io.livekit.plugin'
version '1.0-SNAPSHOT'
buildscript {
ext.kotlin_version = '1.3.50'
ext.kotlin_version = '1.6.10'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'com.android.tools.build:gradle:7.1.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
+3 -2
View File
@@ -1,5 +1,6 @@
#Tue Feb 15 15:44:59 JST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
zipStoreBase=GRADLE_USER_HOME
+46 -24
View File
@@ -1,3 +1,5 @@
import 'package:flutter/foundation.dart' show kIsWeb;
import '../track/local/audio.dart';
import '../track/local/video.dart';
import '../types/video_parameters.dart';
@@ -41,15 +43,23 @@ class CameraCaptureOptions extends VideoCaptureOptions {
super(params: captureOptions.params);
@override
Map<String, dynamic> toMediaConstraintsMap() => <String, dynamic>{
...super.toMediaConstraintsMap(),
'optional': [
Map<String, dynamic> toMediaConstraintsMap() {
var constraints = <String, dynamic>{
...super.toMediaConstraintsMap(),
'facingMode':
cameraPosition == CameraPosition.front ? 'user' : 'environment',
};
if (deviceId != null) {
if (kIsWeb) {
constraints['deviceId'] = deviceId;
} else {
constraints['optional'] = [
{'sourceId': deviceId}
],
'deviceId': deviceId,
'facingMode':
cameraPosition == CameraPosition.front ? 'user' : 'environment',
};
];
}
}
return constraints;
}
// Returns new options with updated properties
CameraCaptureOptions copyWith({
@@ -75,6 +85,7 @@ class ScreenShareCaptureOptions extends VideoCaptureOptions {
/// Base class for track options.
abstract class LocalTrackOptions {
const LocalTrackOptions();
// All subclasses must be able to report constraints
Map<String, dynamic> toMediaConstraintsMap();
}
@@ -137,20 +148,31 @@ class AudioCaptureOptions extends LocalTrackOptions {
});
@override
Map<String, dynamic> toMediaConstraintsMap() => <String, dynamic>{
'deviceId': deviceId,
'optional': <Map<String, dynamic>>[
<String, dynamic>{'sourceId': deviceId},
<String, dynamic>{'echoCancellation': echoCancellation},
<String, dynamic>{'googDAEchoCancellation': echoCancellation},
<String, dynamic>{'googEchoCancellation': echoCancellation},
<String, dynamic>{'googEchoCancellation2': echoCancellation},
<String, dynamic>{'noiseSuppression': noiseSuppression},
<String, dynamic>{'googNoiseSuppression': noiseSuppression},
<String, dynamic>{'googNoiseSuppression2': noiseSuppression},
<String, dynamic>{'googAutoGainControl': autoGainControl},
<String, dynamic>{'googHighpassFilter': highPassFilter},
<String, dynamic>{'googTypingNoiseDetection': typingNoiseDetection},
],
};
Map<String, dynamic> toMediaConstraintsMap() {
var constraints = <String, dynamic>{
'optional': <Map<String, dynamic>>[
<String, dynamic>{'echoCancellation': echoCancellation},
<String, dynamic>{'googDAEchoCancellation': echoCancellation},
<String, dynamic>{'googEchoCancellation': echoCancellation},
<String, dynamic>{'googEchoCancellation2': echoCancellation},
<String, dynamic>{'noiseSuppression': noiseSuppression},
<String, dynamic>{'googNoiseSuppression': noiseSuppression},
<String, dynamic>{'googNoiseSuppression2': noiseSuppression},
<String, dynamic>{'googAutoGainControl': autoGainControl},
<String, dynamic>{'googHighpassFilter': highPassFilter},
<String, dynamic>{'googTypingNoiseDetection': typingNoiseDetection},
],
};
if (deviceId != null) {
if (kIsWeb) {
constraints['deviceId'] = deviceId;
} else {
constraints['optional']
.cast<Map<String, dynamic>>()
.add(<String, dynamic>{'sourceId': deviceId});
}
}
return constraints;
}
}