如何在没有用户input的情况下创buildAndroid RFCOMM套接字?

这是一个场景:

我需要编写一个Android应用程序来创build一个带蓝牙适配器的PC的RFCOMM套接字(我也要写服务器)。

我的要求是,用户不必手动配对设备。

其实,有一个很大的破解,我正在使用createInsecureRfcommSocket 。

一个小场景 :我有一个Android应用程序,它与打开RFCOMM套接字的Linux机箱交换信息。 我可以在设备上手动设置PIN(硬编码是一个选项)

我正在寻找不同的道路:

写一个JNI包装器

正如Max Kellermann所做的那样,我可以编写一个JNI层来完成所有的配对阶段。 这应该是一个不错的select,但有一个问题:

NDK 4b不提供libbluetooth库,所以-lbluetooth失败,以及NDK v.3。

选项:

  1. findNDK 1.5(包括lib蓝牙)。 经过几天的networkingsearch,我一直无法find答案。 任何人有或知道我在哪里可以find它?
  2. 为我自己编译libbluetooth for Android,并将它们用于-lbluetooth。 那里没有幸运,我无法build立它们。 任何提示?

使用API​​公开的东西

任何人都知道如何使用createRfcommSocketToServiceRecord并让用户不要手动配对设备? 可能吗? 我应该如何编写服务器?

我不知道的东西

也许(当然!)有一些我不知道的东西。 也许我可以使用别的东西? 不是RFCOMM? SDP?

也许我可以手动与Android API配对?

我希望已经清楚,如果不是只是问。 再一次,因为这不是第一次,我在你的手中:)

感谢所有的支持人员!

Solutions Collecting From Web of "如何在没有用户input的情况下创buildAndroid RFCOMM套接字?"

最后,我可以说, 你不能

即使你find了一个方法,使用包装,编写​​C模块等,android的进化可能会改变你正在使用的东西。

所以,没有select。 可悲的是。

让我们来看看Android蓝牙API将来如何改变。

Android蓝牙API尚未最终确定, 将会改变。 使用风险自负。 这个类实现了蓝牙RFCOMM层的API。 一个RFCOMM套接字类似于一个普通套接字,它需要一个地址和一个端口号。 当然不同之处在于地址是蓝牙设备地址,端口号是RFCOMM通道。 该API允许通过绑定,侦听和接受方法来build立监听套接字,以及使用connect,connectAsync和waitForAsyncConnect来build立传出连接。 在构build套接字之后,您需要创build它并在完成使用后将其销毁。 创build并接受为实际数据返回一个FileDescriptor。 或者,您可以调用getInputStream和getOutputStream来检索相应的stream,而不通过FileDescriptor。