ChromeAudio class
class ChromeAudio extends ChromeApi {
static final JsObject _audio = chrome['audio'];
ChromeAudio._();
bool get available => _audio != null;
/**
* Get the information of all audio output and input devices.
*
* Returns:
* [outputInfo] null
* [inputInfo] null
*/
Future<GetInfoResult> getInfo() {
if (_audio == null) _throwNotAvailable();
var completer = new ChromeCompleter<GetInfoResult>.twoArgs(GetInfoResult._create);
_audio.callMethod('getInfo', [completer.callback]);
return completer.future;
}
/**
* Select a subset of audio devices as active.
*/
Future setActiveDevices(List<String> ids) {
if (_audio == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_audio.callMethod('setActiveDevices', [jsify(ids), completer.callback]);
return completer.future;
}
/**
* Sets the properties for the input or output device.
*/
Future setProperties(String id, DeviceProperties properties) {
if (_audio == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_audio.callMethod('setProperties', [id, jsify(properties), completer.callback]);
return completer.future;
}
Stream get onDeviceChanged => _onDeviceChanged.stream;
final ChromeStreamController _onDeviceChanged =
new ChromeStreamController.noArgs(_audio, 'onDeviceChanged');
void _throwNotAvailable() {
throw new UnsupportedError("'chrome.audio' is not available");
}
}
Extends
ChromeApi > ChromeAudio
Properties
final bool available #
Returns true if the API is available. The common causes of an API not being avilable are:
- a permission is missing in the application's manifest.json file
- the API is defined on a newer version of Chrome then the current runtime
docs inherited from ChromeApi
bool get available => _audio != null;
final Stream onDeviceChanged #
Stream get onDeviceChanged => _onDeviceChanged.stream;
Methods
Future<GetInfoResult> getInfo() #
Get the information of all audio output and input devices.
Returns:
outputInfo null
inputInfo null
Future<GetInfoResult> getInfo() {
if (_audio == null) _throwNotAvailable();
var completer = new ChromeCompleter<GetInfoResult>.twoArgs(GetInfoResult._create);
_audio.callMethod('getInfo', [completer.callback]);
return completer.future;
}
Future setActiveDevices(List<String> ids) #
Select a subset of audio devices as active.
Future setActiveDevices(List<String> ids) {
if (_audio == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_audio.callMethod('setActiveDevices', [jsify(ids), completer.callback]);
return completer.future;
}
Future setProperties(String id, DeviceProperties properties) #
Sets the properties for the input or output device.
Future setProperties(String id, DeviceProperties properties) {
if (_audio == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_audio.callMethod('setProperties', [id, jsify(properties), completer.callback]);
return completer.future;
}