xunil_blue_connect

Creator: coderz1093

Last updated:

0 purchases

TODO
Add to Cart

Description:

xunil blue connect

xunil_blue_connect #
This package is bluetooth management as basic. The package supports just ANDROID
but will get IOS support.
Also the package supports classic bluetooth now but will get Bluetooth Low Energy Technology soon
Only For Android now

✅ Check location setting
✅ Apply location permission
✅ Check bluetooth available
✅ Bluetooth set enable/disable
✅ Establishing/Close a connection
✅ Pair a device
✅ Write
✅ Status reconnect when disconnect for Write
✅ Start/Stop discovery
✅ Discover devices
✅ Get paired device's service uuids
✅ Get name and short description with uuid
✅ Listen connection and pairing status
✅ Listen Start/Stop discovery status
✅ Support Android 12
❌ iOS Support
❌ BLE support
❌ Read/Reset
❌ Multi connection
❌ Auto connect
❌ Reconnect
❌ Remove pair

import
import 'package:xunil_blue_connect/xunil_blue_connect.dart';
copied to clipboard
Call
XunilBlueConnect blueConnect = XunilBlueConnect();
copied to clipboard
And use like these as async #
Bluetooth check available
await blueConnect.isBluetoothAvailable();
copied to clipboard
Check location setting
await blueConnect.checkSettingLocation();
copied to clipboard
Apply location permission
await blueConnect.applyPermissionLocation();
copied to clipboard
Bluetooth set enable

Android 11 and lower versions can be enable directly but first ask bluetooth use permission on Android 12

await blueConnect.bluetoothSetEnable();
copied to clipboard
Bluetooth set disable

Android 11 and lower versions can be disable directly but first ask bluetooth use permission on Android 12

await blueConnect.bluetoothSetDisable();
copied to clipboard
Scan for devices #
Android scans devices just for 12 seconds, look for detail: Official link

Use 12 seconds with timer on this plugin's example app, discovery listens feature in TODO

first start discovery
await blueConnect.startDiscovery();
copied to clipboard
then listen results
blueConnect.listenDeviceResults.listen((device){
print(device);
});
copied to clipboard
Or use with StreamBuilder for listen

BluetoothDevice is a model from example app

StreamBuilder(
stream: blueConnect.listenDeviceResults,
builder: (context, snapshot) {
if (snapshot.hasData) {
var device = BluetoothDevice.fromJson(
jsonDecode(snapshot.data as String)
);
print(device)
}
},
),
copied to clipboard
Scan returns these parameters;
name -> device's name, given by hardware (default)
for example: alikilic
aliasName -> device's name, given by user
for example: Ali Kılıç's Laptop
address -> device's mac address (only android)
for example: 94:E9:68:EA:8B:8R
type -> device's type
for example: PLEASE READ NOTE
isPaired -> device's pair status
for example: PLEASE READ NOTE 2
uuids -> device's uuids (only for paired devices)
for example: 0000110a-0000-1000-8000-00805f9b34fb

NOTE: Device types return as DEVICE_TYPE_UNKNOWN, DEVICE_TYPE_CLASSIC, DEVICE_TYPE_LE, DEVICE_TYPE_DUAL, ERROR.
if returns else any case than these is UNKNOWN_TYPE


NOTE 2: Device pair returns as PAIRED, PAIRED_NONE.
if returns else any case than these is UNKNOWN_PAIRED


NOTE 3: UUIDS return only paired devices

For UUIDS
uuid returns with its name and short_description
like this
{name: "Message Access Profile", short_description: "Allows exchange of messages between devices", uuid: "00001134-0000-1000-8000-00805F9B34FB"}
copied to clipboard

also you can get uuid list as json file from this link: UUID List
this list is uuids for use as general means includes some services and profiles
if you want to all list (but not json) just pdf format from this link:
Official All UUID List

if you stop listening
await blueConnect.stopDiscovery();
copied to clipboard
Status Listening #
Discovery, Connection and Pairing

As connection STATUS_CONNECTING as key with MAC_ADDRESS as well


As pairing status returns STATUS_PAIRING as key


As discovery status returns STATUS_DISCOVERY as key

blueConnect.listenStatus.listen((status){
print(status);
});
copied to clipboard
or you can use StreamBuilder
import 'package:xunil_blue_connect/utils/status.dart';
StreamBuilder(
stream: blueConnect.listenStatus,
builder: (context, snapshot) {
if (snapshot.hasData) {

var STATUS = jsonDecode(snapshot.data as String);

//for status pairing
switch (STATUS['STATUS_PAIRING']) {
case PairedStatus.PAIRED:
print(PairedStatus.PAIRED);
break;
case PairedStatus.PAIRING:
print(PairedStatus.PAIRING);
break;
case PairedStatus.PAIRED_NONE:
print(PairedStatus.PAIRED_NONE);
break;
case PairedStatus.UNKNOWN_PAIRED:
print(PairedStatus.UNKNOWN_PAIRED);
break;
}

//for status connecting
switch (STATUS['STATUS_CONNECTING']) {
case ConnectingStatus.STATE_CONNECTED:
print(STATUS['MAC_ADDRESS']);
print(ConnectingStatus.STATE_CONNECTED);
break;
case ConnectingStatus.STATE_DISCONNECTED:
print(STATUS['MAC_ADDRESS']);
print(ConnectingStatus.STATE_DISCONNECTED);
break;
}

//for status discovery
switch (STATUS['STATUS_DISCOVERY']) {
case DiscoveryStatus.STARTED:
print(DiscoveryStatus.STARTED);
break;
case DiscoveryStatus.FINISHED:
print(DiscoveryStatus.FINISHED);
break;
}
}
},
),
copied to clipboard
Establishing a connection #

this method takes two parameters
one of them is macAddress type String
another of them is uuidString type String

if you don't give uuidString parameter, it gives 0x1101 serial port uuid from itself means it is default
// takes it as default 00001101-0000-1000-8000-00805F9B34FB
// means serial port uuid
await blueConnect.connect(macAddress: device.macAddress);


// or you can give any uuid
await blueConnect.connect(macAddress: device.macAddress, uuidString: "00001200-0000-1000-8000-00805F9B34FB");
copied to clipboard
if you want to disconnect from a connected device

this method takes a parameter macAddress type String

// if you want to don't give a parameter so last connection will be disconnect
await blueConnect.disconnect();


// or you can give any connected device's macAddress
await blueConnect.disconnect(macAddress: device.macAddress);
copied to clipboard
Pair a device #

this method takes a parameter macAddress type String

await blueConnect.pair(macAddress: device.macAddress);
copied to clipboard
if you want to just get all paired devices
await blueConnect.getPairedDevices();
copied to clipboard
Write, Read and Reset #

NOTE 4: Read and Reset are in TODO List

Write

Write takes two parameters,
One of them is data, type String for now, other stream features (e.g. audio stream) in TODO
Another parameter is autoConnect, type bool, device will disconnect when write job is done, if you want to reconnect autoConnect set true if you don't want so set false or null


Tested virtual printer

await blueConnect.write(data: "Lorem ipsum dolor sit amet.", autoConnect: true);
copied to clipboard
For Bluetooth and location permission #
add in /android/app/src/main/AndroidManifest.xml
For Bluetooth
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />

// for Android 12
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
copied to clipboard
For Location
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files:

Customer Reviews

There are no reviews.