Как программно проверить, поддерживает ли устройство Android профиль Bluetooth SPP?

Я не смог найти ни одного стандартного API в Android для проверки поддержки профиля SPP. Есть ли способ (прямой или косвенный), с помощью которого можно определить это программно? Одним из косвенных методов, о котором я мог подумать, было использование BluetoothAdapter.listenUsingRfcommWithServiceRecord для запуска сокета сервера RFCOMM, который должен (предположительно) завершиться успешно, если устройство поддерживает SPP, и в противном случае дать сбой. Будет ли это работать, или есть лучший / правильный путь?

1 ответ

      String sspUuid = "00001101-0000-1000-8000-00805f9b34fb";
boolean uuidExists = false;
ParcelUuid[] uuids = {};

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
 uuids = device.getUuids()
  } else {
 Method getUuidsMethod = device.getClass().getMethod("getUuids", null);
 uuids = (ParcelUuid[]) getUuidsMethod.invoke(device, null);
 }

for (ParcelUuid uuid : uuids) {
 if (uuid.toString().equalsIgnoreCase(sspUuid)) {
   uuidExists = true;
   break;
 }
}

if (uuidExists) {
  socket = device.createRfcommSocketToServiceRecord(UUID.fromString(sspUuid));   
}

Для тех, кто все еще задается вопросом, я использую это, которое работает на старой и новой версии Android. Не забудьте добавить обработку исключений.

Другие вопросы по тегам