package com.adafruit.bluefruit.le.connect.ble.central; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothManager; import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.annotation.NonNull; import android.util.Log; import java.util.ArrayList; import java.util.List; public class BleManager { // Log private final static String TAG = BleManager.class.getSimpleName(); // Singleton private static BleManager mInstance = null; // Data private BluetoothManager mManager; private BluetoothAdapter mAdapter; public static BleManager getInstance() { if (mInstance == null) { mInstance = new BleManager(); } return mInstance; } private BleManager() { } public boolean start(Context context) { // Init Manager mManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE); // Init Adapter if (mManager != null) { mAdapter = mManager.getAdapter(); } else { mAdapter = null; } final boolean isEnabled = mAdapter != null && mAdapter.isEnabled(); if (!isEnabled) { Log.e(TAG, "Unable to obtain a BluetoothAdapter."); } return isEnabled; } /* public @Nullable BluetoothAdapter getAdapter() { return mAdapter; }*/ public void cancelDiscovery() { if (mAdapter != null) { mAdapter.cancelDiscovery(); } } public boolean isAdapterEnabled() { return mAdapter != null && mAdapter.isEnabled(); } public @NonNull List<BluetoothDevice> getConnectedDevices() { List<BluetoothDevice> connectedDevices = new ArrayList<>(); // Check if already initialized if (mManager == null) { return connectedDevices; } List<BluetoothDevice> devices = mManager.getConnectedDevices(BluetoothProfile.GATT); for (BluetoothDevice device : devices) { final int type = device.getType(); if (type == BluetoothDevice.DEVICE_TYPE_LE || type == BluetoothDevice.DEVICE_TYPE_DUAL) { connectedDevices.add(device); } } return connectedDevices; } }