| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 
							- using Android.Bluetooth;
 
- using Android.Content;
 
- using System;
 
- namespace MyLibrary.Bluetooth
 
- {
 
-     public class BLEConnector
 
-     {
 
-         private BluetoothGatt _bluetoothGatt;
 
-         private BluetoothGattCallback _gattCallback;
 
-         public BLEConnector()
 
-         {
 
-             _gattCallback = new CustomGattCallback();
 
-         }
 
-         /// <summary>
 
-         /// Connect to the specified BluetoothDevice.
 
-         /// </summary>
 
-         /// <param name="device">The BluetoothDevice to connect to.</param>
 
-         /// <param name="context">The Android context required for the connection.</param>
 
-         public void Connect(BluetoothDevice device, Context context)
 
-         {
 
-             if (device == null)
 
-             {
 
-                 throw new ArgumentNullException(nameof(device), "Device cannot be null");
 
-             }
 
-             // Initiate the connection
 
-             _bluetoothGatt = device.ConnectGatt(context, false, _gattCallback);
 
-         }
 
-         /// <summary>
 
-         /// Disconnect the current connection.
 
-         /// </summary>
 
-         public void Disconnect()
 
-         {
 
-             _bluetoothGatt?.Disconnect();
 
-             _bluetoothGatt?.Close();
 
-             _bluetoothGatt = null;
 
-         }
 
-         /// <summary>
 
-         /// Custom GATT callback to handle Bluetooth events.
 
-         /// </summary>
 
-         private class CustomGattCallback : BluetoothGattCallback
 
-         {
 
-             public override void OnConnectionStateChange(BluetoothGatt gatt, GattStatus status, ProfileState newState)
 
-             {
 
-                 base.OnConnectionStateChange(gatt, status, newState);
 
-                 if (status == GattStatus.Success && newState == ProfileState.Connected)
 
-                 {
 
-                     Console.WriteLine("Connected to device!");
 
-                     gatt.DiscoverServices();
 
-                 }
 
-                 else if (newState == ProfileState.Disconnected)
 
-                 {
 
-                     Console.WriteLine("Disconnected from device.");
 
-                 }
 
-                 else
 
-                 {
 
-                     Console.WriteLine($"Connection state changed: {newState}, Status: {status}");
 
-                 }
 
-             }
 
-             public override void OnServicesDiscovered(BluetoothGatt gatt, GattStatus status)
 
-             {
 
-                 base.OnServicesDiscovered(gatt, status);
 
-                 if (status == GattStatus.Success)
 
-                 {
 
-                     Console.WriteLine("Services discovered:");
 
-                     foreach (var service in gatt.Services)
 
-                     {
 
-                         Console.WriteLine($"Service: {service.Uuid}");
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     Console.WriteLine($"Failed to discover services. Status: {status}");
 
-                 }
 
-             }
 
-             public override void OnCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, GattStatus status)
 
-             {
 
-                 base.OnCharacteristicRead(gatt, characteristic, status);
 
-                 if (status == GattStatus.Success)
 
-                 {
 
-                     Console.WriteLine($"Characteristic Read: {characteristic.Uuid}, Value: {BitConverter.ToString(characteristic.GetValue())}");
 
-                 }
 
-             }
 
-             public override void OnCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, GattStatus status)
 
-             {
 
-                 base.OnCharacteristicWrite(gatt, characteristic, status);
 
-                 if (status == GattStatus.Success)
 
-                 {
 
-                     Console.WriteLine($"Characteristic Write Successful: {characteristic.Uuid}");
 
-                 }
 
-             }
 
-             public override void OnCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic)
 
-             {
 
-                 base.OnCharacteristicChanged(gatt, characteristic);
 
-                 Console.WriteLine($"Characteristic Changed: {characteristic.Uuid}, Value: {BitConverter.ToString(characteristic.GetValue())}");
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |