Как программно проверить, поддерживает ли устройство 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. Не забудьте добавить обработку исключений.