Android 在 PAN 中创建蓝牙 NAP 和 PANU,并基于 IP 相互通信

Create bluetooth NAP and PANU in PAN for Android and communicate with each other on basis of IP

我是 Android 和蓝牙的新手。我正在尝试使用蓝牙的 BNEP 协议同时使用 PANU 和 NAP(GN) 设置 PAN 网络。我的主要目的是让设备进行 NAP,以便它可以连接到 TCP-IP 和微微网中的其他 PANU 将与 NAP 中的设备进行交互。我可以使用 Java 反射来支持这一点。我使用 android.bluetooth.BluetoothPan class 作为 PAN 连接。 所以我按照以下顺序进行设置: a) 我调用了 BluetoothPan 的构造函数并创建了实例。 [对象创建成功,onServiceConnected() 处理程序接收配置文件值 5] b) 我将 setBluetoothTethering() 设置为 true [设置后我使用 isTetheringOn() 函数检查状态并且状态为 true]

所以我认为现在这个应用程序会让设备像 PANU 一样工作?我对么 ?如果没有,我还需要做什么? 现在我的问题是如何让这个应用程序支持 NAP? 当蓝牙网络共享开启时,它是否已经处于 NAP 状态? 如果是这样,我可以在 NAP 时看到分配给设备的通信 IP 或端口号吗?我找不到办法。

我的主要目的是让服务器设备像具有某些 IP 的 NAP 一样工作。并使用PANU制作一些客户端设备,现在基于NAP的IP,我可以运行基于IP在PANU端发现服务并进行交互。

之前,我已经使用 listenUsingRfcommWithServiceRecord() [Server] 和 listenUsingRfcommToServiceRecord() [Client] 以及 developer.android 中的许多参考资料来设置服务和客户端之间的通信,以使用此方法设置通信。这是建立客户端-服务器通信并使用 SDP 的非常简单的方法。我在这里不使用它。

我只想通过 BNEP 完成

注意:通过adb调试查看发现连接蓝牙tethering时,分配的IP可以在"adb shell ip route"看到,在BT tethering中可以看到NAP分配的IP。现在如何获得这个IP是我的问题或下一个任务

在我设置网络共享 setBluetoothTethering() 并使用 connect() api 创建 PAN 网络后,我能够设置 PAN。

在那之后,由于 TCPIP 通信已经开始,我检查了 NetworkInterface 并调用了 getHostAddress() 来获取 IP 信息。