패키지, 저장소 및 앱 카테고리 검색

패키지 상세v0.8.0

flutter_blue

Android 및 iOS에서 블루투스 저전력 장치와 연결하고 통신하기 위한 Flutter 플러그인

AndroidiOSmacOS
30일 다운로드
2.2천
좋아요
999
Pub 점수
120

패키지 설치

flutter pub add flutter_blue

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

Flutter Blue는 Android, iOS 및 macOS에서 블루투스 저전력(BLE) 장치와의 통신을 가능하게 하는 Flutter 플러그인입니다. BLE 주변기기를 스캔하고 연결하며 특성 값을 읽고 쓰며 알림을 수신할 수 있는 간단한 API를 제공합니다. 웨어러블 기기, 센서 또는 IoT 하드웨어와 상호작용하는 앱을 개발하는 개발자를 위해 설계되었으며, 플랫폼별 BLE 구현을 통합된 인터페이스로 추상화합니다. 백그라운드 작업과 실시간 데이터 스트리밍을 지원하여 건강, 피트니스 및 스마트 홈 애플리케이션에 적합합니다. Paul DeMarco가 유지보수하며 Flutter의 반응형 프레임워크와 원활하게 통합됩니다.

사용 사례

  • 피트니스 트래커 연결
  • 스마트 홈 장치 제어
  • 웨어러블에서 센서 데이터 읽기
  • IoT 모니터링 앱 빌드
  • 모바일 앱에서 장치 페어링 활성화

주요 기능

  • 크로스플랫폼 블루투스 지원
  • 실시간 데이터 스트리밍
  • 백그라운드 스캔 기능
  • 외부 장치 상호작용을 위한 사용하기 쉬운 API
  • 특성 알림 지원

적합한 대상

  • IoT 애플리케이션 개발자
  • 헬스 및 피트니스 앱 개발자
  • 웨어러블 기술 프로젝트
  • 저에너지 장치 통신을 요구하는 모바일 앱
  • BLE 기능을 갖춘 프로토타이핑

고려 사항

  • Android에서 수동 권한 처리가 필요합니다
  • 고급 BLE 기능에 대한 제한된 지원
  • iOS 백그라운드 모드 구성이 필요합니다
  • macOS 지원에는 플랫폼 고유의 제한 사항이 있을 수 있습니다
  • 연속 스캔 중에는 배터리 사용량을 모니터링해야 합니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

pub package Chat


FlutterBlue



Introduction

FlutterBlue is a bluetooth plugin for Flutter, a new app SDK to help developers build modern multi-platform apps.

Alpha version

This library is actively developed alongside production apps, and the API will evolve as we continue our way to version 1.0.

Please be fully prepared to deal with breaking changes. This package must be tested on a real device.

Having trouble adapting to the latest API? I'd love to hear your use-case, please contact me.

Cross-Platform Bluetooth LE

FlutterBlue aims to offer the most from both platforms (iOS and Android).

Using the FlutterBlue instance, you can scan for and connect to nearby devices (BluetoothDevice). Once connected to a device, the BluetoothDevice object can discover services (BluetoothService), characteristics (BluetoothCharacteristic), and descriptors (BluetoothDescriptor). The BluetoothDevice object is then used to directly interact with characteristics and descriptors.

Usage

Obtain an instance
FlutterBlue flutterBlue = FlutterBlue.instance;
Scan for devices
// Start scanning
flutterBlue.startScan(timeout: Duration(seconds: 4));

// Listen to scan results
var subscription = flutterBlue.scanResults.listen((results) {
    // do something with scan results
    for (ScanResult r in results) {
        print('${r.device.name} found! rssi: ${r.rssi}');
    }
});

// Stop scanning
flutterBlue.stopScan();
Connect to a device
// Connect to the device
await device.connect();

// Disconnect from device
device.disconnect();
Discover services
List<BluetoothService> services = await device.discoverServices();
services.forEach((service) {
    // do something with service
});
Read and write characteristics
// Reads all characteristics
var characteristics = service.characteristics;
for(BluetoothCharacteristic c in characteristics) {
    List<int> value = await c.read();
    print(value);
}

// Writes to a characteristic
await c.write([0x12, 0x34])
Read and write descriptors
// Reads all descriptors
var descriptors = characteristic.descriptors;
for(BluetoothDescriptor d in descriptors) {
    List<int> value = await d.read();
    print(value);
}

// Writes to a descriptor
await d.write([0x12, 0x34])
Set notifications and listen to changes
await characteristic.setNotifyValue(true);
characteristic.value.listen((value) {
    // do something with new value
});
Read the MTU and request larger size
final mtu = await device.mtu.first;
await device.requestMtu(512);

Note that iOS will not allow requests of MTU size, and will always try to negotiate the highest possible MTU (iOS supports up to MTU size 185)

Getting Started

Change the minSdkVersion for Android

Flutter_blue is compatible only from version 19 of Android SDK so you should change this in android/app/build.gradle:

Android {
  defaultConfig {
     minSdkVersion: 19
Add permissions for Bluetooth

We need to add the permission to use Bluetooth and access location:

Android

In the android/app/src/main/AndroidManifest.xml let’s add:

	 <uses-permission android:name="android.permission.BLUETOOTH" />  
	 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />  
	 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  
 <application
IOS

In the ios/Runner/Info.plist let’s add:

	<dict>  
	    <key>NSBluetoothAlwaysUsageDescription</key>  
	    <string>Need BLE permission</string>  
	    <key>NSBluetoothPeripheralUsageDescription</key>  
	    <string>Need BLE permission</string>  
	    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>  
	    <string>Need Location permission</string>  
	    <key>NSLocationAlwaysUsageDescription</key>  
	    <string>Need Location permission</string>  
	    <key>NSLocationWhenInUseUsageDescription</key>  
	    <string>Need Location permission</string>

For location permissions on iOS see more at: https://developer.apple.com/documentation/corelocation/requesting_authorization_for_location_services

Reference

FlutterBlue API
Android iOS Description
scan :white_check_mark: :white_check_mark: Starts a scan for Bluetooth Low Energy devices.
state :white_check_mark: :white_check_mark: Stream of state changes for the Bluetooth Adapter.
isAvailable :white_check_mark: :white_check_mark: Checks whether the device supports Bluetooth.
isOn :white_check_mark: :white_check_mark: Checks if Bluetooth functionality is turned on.
BluetoothDevice API
Android iOS Description
connect :white_check_mark: :white_check_mark: Establishes a connection to the device.
disconnect :white_check_mark: :white_check_mark: Cancels an active or pending connection to the device.
discoverServices :white_check_mark: :white_check_mark: Discovers services offered by the remote device as well as their characteristics and descriptors.
services :white_check_mark: :white_check_mark: Gets a list of services. Requires that discoverServices() has completed.
state :white_check_mark: :white_check_mark: Stream of state changes for the Bluetooth Device.
mtu :white_check_mark: :white_check_mark: Stream of mtu size changes.
requestMtu :white_check_mark: Request to change the MTU for the device.
BluetoothCharacteristic API
Android iOS Description
read :white_check_mark: :white_check_mark: Retrieves the value of the characteristic.
write :white_check_mark: :white_check_mark: Writes the value of the characteristic.
setNotifyValue :white_check_mark: :white_check_mark: Sets notifications or indications on the characteristic.
value :white_check_mark: :white_check_mark: Stream of characteristic's value when changed.
BluetoothDescriptor API
Android iOS Description
read :white_check_mark: :white_check_mark: Retrieves the value of the descriptor.
write :white_check_mark: :white_check_mark: Writes the value of the descriptor.

Troubleshooting

When I scan using a service UUID filter, it doesn't find any devices.

Make sure the device is advertising which service UUID's it supports. This is found in the advertisement packet as UUID 16 bit complete list or UUID 128 bit complete list.

카테고리

의존성

의존성 목록 5 개

소스 저장소

이 패키지를 사용하는 프로젝트