Подтвердить что ты не робот

Как создать сокет Android RFCOMM без каких-либо входных данных от пользователя?

Здесь сценарий:

Мне нужно написать приложение для Android, чтобы создать сокет RFCOMM на ПК с помощью Bluetooth-ключа (я тоже буду писать сервер).

Мое требование состоит в том, что пользователю не нужно парковать устройство вручную.

На самом деле, с большим взломом, я использую createInsecureRfcommSocket.

Маленький сценарий: у меня есть приложение для Android, которое обменивается информацией с ящиком Linux с открытым гнездом RFCOMM. Я могу вручную установить PIN-код на устройствах (жесткое кодирование - это вариант)

Я ищу разные дороги:

Создать оболочку JNI

Как было сделано здесь от Max Kellermann, я могу написать слой JNI, чтобы сделать всю фазу спаривания. Это должно быть хорошим вариантом, но есть проблема:

NDK 4b не предоставляет библиотеки libbluetooth, поэтому -lbluetooth терпит неудачу, а также NDK v.3.

Параметры:

  • Найдите NDK 1.5 (который включает в себя lib bluetooth). После нескольких дней поиска в Интернете я не смог узнать. Кто-нибудь знает или знает, где я могу его найти?
  • Скомпилируйте libbluetooth для Android самостоятельно и используйте их для -lbluetooth. Там не повезло, я не могу их построить. Любой намек?

Использовать что-то, открытое API

Кто-нибудь знает, как я могу использовать createRfcommSocketToServiceRecord и пользователь не должен вручную подключать устройство? Является ли это возможным? Как мне написать сервер?

Что-то, чего я не знаю

Может быть (конечно!) есть кое-что, чего я не знаю. Может быть, я могу использовать что-то еще? Не RFCOMM? SDP?

Может быть, я могу вручную подключиться к API Android?

Я надеюсь, что был достаточно ясным, если не просто спросить. И снова, поскольку это не первый раз, я в ваших руках:)

Спасибо всем парням поддержки!

4b9b3361

Ответ 1

В конце я могу сказать, что вы не можете.

Даже если вы найдете способ, используя обертки, написание модулей C и т.д., эволюция Android, вероятно, изменит то, что вы используете.

Итак, нет выбора. К сожалению.

Посмотрите, как изменится API Android Bluetooth в будущем.

Ответ 2

API Android Bluetooth не завершен и изменится. Используйте на свой риск. Этот класс реализует API для слоя RFCOMM Bluetooth. Сокет RFCOMM похож на обычный сокет, так как он принимает адрес и номер порта. Разница, конечно, заключается в том, что адрес является адресом Bluetooth-устройства, а номер порта является каналом RFCOMM. API позволяет создавать сокеты прослушивания через методы связывания, прослушивания и принятия, а также для создания исходящих соединений с подключением, connectAsync и waitForAsyncConnect. После создания сокета вам нужно создать его, а затем уничтожить, когда вы закончите его использование. Оба создают и принимают возврат FileDescriptor для фактических данных. Кроме того, вы можете вызвать getInputStream и getOutputStream для получения соответствующих потоков без прохождения через FileDescriptor.