bluetooth_device.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. part of flutter_bluetooth;
  2. class BluetoothDevice {
  3. final String name;
  4. final String address;
  5. final int deviceClass;
  6. BluetoothDevice({this.name, this.address, this.deviceClass});
  7. static BluetoothDevice fromJson(data) {
  8. String name = data['name'];
  9. String address = data['address'];
  10. int deviceClass = data['deviceClass'];
  11. return BluetoothDevice(name: name, address: address, deviceClass: deviceClass);
  12. }
  13. static Future<BluetoothDevice> fromAddress(String address) async {
  14. String name =
  15. await FlutterBluetooth.instance._channel.invokeMethod('getName', address);
  16. int deviceClass =
  17. await FlutterBluetooth.instance._channel.invokeMethod('getDeviceClass', address);
  18. return BluetoothDevice(
  19. address: address,
  20. name: name,
  21. deviceClass: deviceClass);
  22. }
  23. Future<bool> isBond() async {
  24. return FlutterBluetooth.instance._channel.invokeMethod('isBond', address);
  25. }
  26. Future<bool> createBond() async {
  27. return FlutterBluetooth.instance._channel.invokeMethod('createBond', address);
  28. }
  29. Future<BluetoothSocket> createSocket(String uuid) async {
  30. bool isSuccess = await FlutterBluetooth.instance._channel.invokeMethod('createSocket', {
  31. 'address': address,
  32. 'uuid': uuid
  33. });
  34. if(!isSuccess){
  35. throw ErrorDescription('创建Socket失败');
  36. }
  37. return BluetoothSocket._(address, uuid);
  38. }
  39. Future<List<String>> getUUIDs() async{
  40. var isBond = await this.isBond();
  41. if(isBond){
  42. List uuids = await FlutterBluetooth.instance._channel.invokeMethod('getUUIDs', address);
  43. return uuids.map((item)=>item as String).toList();
  44. }else{
  45. throw ErrorDescription("只有配对蓝牙后才可以获取UUID");
  46. }
  47. }
  48. bool operator ==(target){
  49. if(target is BluetoothDevice){
  50. return this.address == target.address;
  51. }else{
  52. return false;
  53. }
  54. }
  55. @override
  56. // TODO: implement hashCode
  57. int get hashCode => this.address.hashCode;
  58. }