ChromeBluetooth class
class ChromeBluetooth extends ChromeApi {
static final JsObject _bluetooth = chrome['bluetooth'];
ChromeBluetooth._();
bool get available => _bluetooth != null;
/**
* Registers the JavaScript application as an implementation for the given
* Profile; if a channel or PSM is specified, the profile will be exported in
* the host's SDP and GATT tables and advertised to other devices.
*/
Future addProfile(Profile profile) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('addProfile', [jsify(profile), completer.callback]);
return completer.future;
}
/**
* Unregisters the JavaScript application as an implementation for the given
* Profile; only the uuid field of the Profile object is used.
*/
Future removeProfile(Profile profile) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('removeProfile', [jsify(profile), completer.callback]);
return completer.future;
}
/**
* Get information about the Bluetooth adapter.
* [callback]: Called with an AdapterState object describing the adapter
* state.
*/
Future<AdapterState> getAdapterState() {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<AdapterState>.oneArg(_createAdapterState);
_bluetooth.callMethod('getAdapterState', [completer.callback]);
return completer.future;
}
/**
* Get a bluetooth devices known to the system. Known devices are either
* currently paired, or have been paired in the past.
* [options]: Controls which devices are returned and provides
* [deviceCallback], which is called for each matching device.
* [callback]: Called when the search is completed. |options.deviceCallback|
* will not be called after [callback] has been called.
*/
Future getDevices(GetDevicesOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('getDevices', [jsify(options), completer.callback]);
return completer.future;
}
/**
* Returns the set of exported profiles for the device specified in options.
* This function will not initiate a connection to the remote device.
*/
Future<List<Profile>> getProfiles(GetProfilesOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<List<Profile>>.oneArg((e) => listify(e, _createProfile));
_bluetooth.callMethod('getProfiles', [jsify(options), completer.callback]);
return completer.future;
}
/**
* Get a list of services provided by a device.
*/
Future<List<ServiceRecord>> getServices(GetServicesOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<List<ServiceRecord>>.oneArg((e) => listify(e, _createServiceRecord));
_bluetooth.callMethod('getServices', [jsify(options), completer.callback]);
return completer.future;
}
/**
* Connect to a service on a device.
* [options]: The options for the connection.
* [callback]: Called to indicate success or failure.
*/
Future connect(ConnectOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('connect', [jsify(options), completer.callback]);
return completer.future;
}
/**
* Close a Bluetooth connection.
* [options]: The options for this function.
* [callback]: Called to indicate success or failure.
*/
Future disconnect(DisconnectOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('disconnect', [jsify(options), completer.callback]);
return completer.future;
}
/**
* Read data from a Bluetooth connection.
* [options]: The options for this function.
* [callback]: Called with the data when it is available.
*/
Future<ArrayBuffer> read(ReadOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<ArrayBuffer>.oneArg(_createArrayBuffer);
_bluetooth.callMethod('read', [jsify(options), completer.callback]);
return completer.future;
}
/**
* Write data to a Bluetooth connection.
* [options]: The options for this function.
* [callback]: Called with the number of bytes written.
*/
Future<int> write(WriteOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<int>.oneArg();
_bluetooth.callMethod('write', [jsify(options), completer.callback]);
return completer.future;
}
/**
* Get the local Out of Band Pairing data.
* [callback]: Called with the data.
*/
Future<OutOfBandPairingData> getLocalOutOfBandPairingData() {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<OutOfBandPairingData>.oneArg(_createOutOfBandPairingData);
_bluetooth.callMethod('getLocalOutOfBandPairingData', [completer.callback]);
return completer.future;
}
/**
* Set the Out of Band Pairing data for a remote device. Any previous Out Of
* Band Pairing Data for this device is overwritten.
* [options]: The options for this function.
* [callback]: Called to indicate success or failure.
*/
Future setOutOfBandPairingData(SetOutOfBandPairingDataOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('setOutOfBandPairingData', [jsify(options), completer.callback]);
return completer.future;
}
/**
* Start discovery. Discovered devices will be returned via the
* [onDeviceDiscovered] callback. Discovery will fail to start if it is
* already in progress. Discovery can be resource intensive: stopDiscovery
* should be called as soon as possible.
* [options]: The options for this function.
* [callback]: Called to indicate success or failure.
*/
Future startDiscovery(StartDiscoveryOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('startDiscovery', [jsify(options), completer.callback]);
return completer.future;
}
/**
* Stop discovery.
* [callback]: Called to indicate success or failure.
*/
Future stopDiscovery() {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('stopDiscovery', [completer.callback]);
return completer.future;
}
Stream<AdapterState> get onAdapterStateChanged => _onAdapterStateChanged.stream;
final ChromeStreamController<AdapterState> _onAdapterStateChanged =
new ChromeStreamController<AdapterState>.oneArg(_bluetooth, 'onAdapterStateChanged', _createAdapterState);
Stream<Socket> get onConnection => _onConnection.stream;
final ChromeStreamController<Socket> _onConnection =
new ChromeStreamController<Socket>.oneArg(_bluetooth, 'onConnection', _createSocket);
void _throwNotAvailable() {
throw new UnsupportedError("'chrome.bluetooth' is not available");
}
}
Extends
ChromeApi > ChromeBluetooth
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
bool get available => _bluetooth != null;
final Stream<AdapterState> onAdapterStateChanged #
Stream<AdapterState> get onAdapterStateChanged => _onAdapterStateChanged.stream;
Methods
Future addProfile(Profile profile) #
Registers the JavaScript application as an implementation for the given Profile; if a channel or PSM is specified, the profile will be exported in the host's SDP and GATT tables and advertised to other devices.
Future addProfile(Profile profile) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('addProfile', [jsify(profile), completer.callback]);
return completer.future;
}
Future connect(ConnectOptions options) #
Connect to a service on a device.
options: The options for the connection.
callback: Called to indicate success or failure.
Future connect(ConnectOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('connect', [jsify(options), completer.callback]);
return completer.future;
}
Future disconnect(DisconnectOptions options) #
Close a Bluetooth connection.
options: The options for this function.
callback: Called to indicate success or failure.
Future disconnect(DisconnectOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('disconnect', [jsify(options), completer.callback]);
return completer.future;
}
Future<AdapterState> getAdapterState() #
Get information about the Bluetooth adapter.
callback: Called with an AdapterState object describing the adapter
state.
Future<AdapterState> getAdapterState() {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<AdapterState>.oneArg(_createAdapterState);
_bluetooth.callMethod('getAdapterState', [completer.callback]);
return completer.future;
}
Future getDevices(GetDevicesOptions options) #
Get a bluetooth devices known to the system. Known devices are either
currently paired, or have been paired in the past.
options: Controls which devices are returned and provides
deviceCallback, which is called for each matching device.
callback: Called when the search is completed. |options.deviceCallback|
will not be called after callback has been called.
Future getDevices(GetDevicesOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('getDevices', [jsify(options), completer.callback]);
return completer.future;
}
Future<OutOfBandPairingData> getLocalOutOfBandPairingData() #
Get the local Out of Band Pairing data.
callback: Called with the data.
Future<OutOfBandPairingData> getLocalOutOfBandPairingData() {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<OutOfBandPairingData>.oneArg(_createOutOfBandPairingData);
_bluetooth.callMethod('getLocalOutOfBandPairingData', [completer.callback]);
return completer.future;
}
Future<List<Profile>> getProfiles(GetProfilesOptions options) #
Returns the set of exported profiles for the device specified in options. This function will not initiate a connection to the remote device.
Future<List<Profile>> getProfiles(GetProfilesOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<List<Profile>>.oneArg((e) => listify(e, _createProfile));
_bluetooth.callMethod('getProfiles', [jsify(options), completer.callback]);
return completer.future;
}
Future<List<ServiceRecord>> getServices(GetServicesOptions options) #
Get a list of services provided by a device.
Future<List<ServiceRecord>> getServices(GetServicesOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<List<ServiceRecord>>.oneArg((e) => listify(e, _createServiceRecord));
_bluetooth.callMethod('getServices', [jsify(options), completer.callback]);
return completer.future;
}
Future<ArrayBuffer> read(ReadOptions options) #
Read data from a Bluetooth connection.
options: The options for this function.
callback: Called with the data when it is available.
Future<ArrayBuffer> read(ReadOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<ArrayBuffer>.oneArg(_createArrayBuffer);
_bluetooth.callMethod('read', [jsify(options), completer.callback]);
return completer.future;
}
Future removeProfile(Profile profile) #
Unregisters the JavaScript application as an implementation for the given Profile; only the uuid field of the Profile object is used.
Future removeProfile(Profile profile) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('removeProfile', [jsify(profile), completer.callback]);
return completer.future;
}
Future setOutOfBandPairingData(SetOutOfBandPairingDataOptions options) #
Set the Out of Band Pairing data for a remote device. Any previous Out Of
Band Pairing Data for this device is overwritten.
options: The options for this function.
callback: Called to indicate success or failure.
Future setOutOfBandPairingData(SetOutOfBandPairingDataOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('setOutOfBandPairingData', [jsify(options), completer.callback]);
return completer.future;
}
Future startDiscovery(StartDiscoveryOptions options) #
Start discovery. Discovered devices will be returned via the
onDeviceDiscovered callback. Discovery will fail to start if it is
already in progress. Discovery can be resource intensive: stopDiscovery
should be called as soon as possible.
options: The options for this function.
callback: Called to indicate success or failure.
Future startDiscovery(StartDiscoveryOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('startDiscovery', [jsify(options), completer.callback]);
return completer.future;
}
Future stopDiscovery() #
Stop discovery.
callback: Called to indicate success or failure.
Future stopDiscovery() {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter.noArgs();
_bluetooth.callMethod('stopDiscovery', [completer.callback]);
return completer.future;
}
Future<int> write(WriteOptions options) #
Write data to a Bluetooth connection.
options: The options for this function.
callback: Called with the number of bytes written.
Future<int> write(WriteOptions options) {
if (_bluetooth == null) _throwNotAvailable();
var completer = new ChromeCompleter<int>.oneArg();
_bluetooth.callMethod('write', [jsify(options), completer.callback]);
return completer.future;
}