Я создаю приложение для обмена мобильными устройствами Android с Bluetooth-маяками. Я успешно достиг этого между одним маяком (который действует как клиент) и одним мобильным устройством Android (действует как сервер, слушая соединение). Пожалуйста, найдите фрагмент кода ниже,Android-соединение Bluetooth с помощью createInsecureRfcommSocketToServiceRecord без MAC-адреса
Client приложение
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(MACaddress);
BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(UUID.fromString("f3c74f47-1d38-49ed-8bbc-0369b3eb277c"));
mBluetoothAdapter.cancelDiscovery();
socket.connect();
приложение Сервер
mmServerSocket = mBluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord("NAME", UUID.fromString("f3c74f47-1d38-49ed-8bbc-0369b3eb277c"));
socket = mmServerSocket.accept();
Это прекрасно работает с одного мобильного устройства (сервер), где я могу получить его MACaddress
путем сканирования поблизости устройств Bluetooth. Но рассмотрим случай, когда около 20-25 мобильных устройств присутствуют в диапазоне - сканирование будет потреблять столько времени. Я хотел бы сделать это, не выполняя проверку.
Есть ли способ достичь этого, не используя MACaddress
сервера? Можно ли установить соединение только с уникальным UUID? Обратите внимание, что я не хочу подключать устройства.
Любые другие решения в этом отношении также приветствуются. Благодаря!
Спасибо Дэвид! Я собираюсь попробовать фильтры сканирования в BLE. Однако, как временная работа, есть способ издеваться/подмахивать MAC-адресом сервера через код? Таким образом, я мог бы избежать сканирования, так как знаю MAC заранее. Я нашел несколько методов спуфинга MAC через укоренение устройств и различные сторонние приложения, но ни один из них не был через Java-код! – deadpool
Мой опыт такой же. Вам нужен доступ с низким уровнем доступа с помощью root, чтобы подменить MAC. – davidgyoung
Я создал фильтр сканирования с использованием UUID, и для получения результата с одним сервером требуется 3-4 секунды. Это вызвало еще одно сомнение: фильтр делает медленное сканирование? поскольку фрагмент сканера должен проверять соответствие UUID. Я надеялся, что могу сканировать 1 устройство в секунду, возможно ли это? ваши мысли, пожалуйста .. @davidgyoung – deadpool