Мне удалось найти какой-нибудь телефон ServiceRecords при использовании:
UUID[] uuidSet = new UUID[1];
uuidSet[0]=new UUID(0x0100);
int[] attrIds = { 0x0100 };
System.out.println("\nSearching for service...");
agent.searchServices(attrIds, uuidSet, remoteDevice, client);
И вы будете вызывать lock.notify () дважды после поиска службы, удалите его в функции servicesDiscovered.
Вам также следует просмотреть служебные записи и найти ту, которая вас интересует. На URL будет указано btgoep: // или btspp: //
При поиске в цикле for используйте этот код для отображения названия услуги
for(int i = 0; i < servRecord.length; i++)
{
String url = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
DataElement serviceName = srs[i].getAttributeValue(0x0100);
if (serviceName != null) {
System.out.println("service " + serviceName.getValue() + " found " + url);
} else {
System.out.println("service found " + url);
}
У меня есть точная проблема, похоже, что Android-API не регистрирует ServiceRecord с SDP, поэтому API Bluecove может его найти.
Независимо от того, какой UUID я использую, он найдет только те, которые мой телефон регистрирует по умолчанию, т. Е. Аудиошлюзы и телефонную книгу OBEX push и т.
РЕДАКТИРОВАТЬ ---
У меня была та же проблема, но я понял, что еще не вызвал listenUsingInsecureRFCOMMSocket. И тогда он не зарегистрировал служебную запись.
Но после этого все заработало.