Android 检测附近设备的存在

Android 检测附近设备的存在,android,bluetooth,google-nearby,Android,Bluetooth,Google Nearby,我正在尝试实现的应用程序的一部分涉及检测附近使用同一应用程序的Android设备。用例是这样的,假设我们有设备A和B接触: 如果两台设备彼此靠近(Bluetooth range close),则两台设备上都会显示一条消息:a表示检测到B,B表示检测到a 如果两台设备彼此失去连接,则两台设备上也应显示一条消息:a表示与B失去连接,B表示与a失去连接 如果他们在同一个应用程序运行期间再次接触,他们应该重新连接 我尝试使用谷歌附近API和谷歌附近消息API,但我一直有问题 你能推荐一个选项让我专注

我正在尝试实现的应用程序的一部分涉及检测附近使用同一应用程序的Android设备。用例是这样的,假设我们有设备A和B接触:

  • 如果两台设备彼此靠近(Bluetooth range close),则两台设备上都会显示一条消息:a表示检测到B,B表示检测到a
  • 如果两台设备彼此失去连接,则两台设备上也应显示一条消息:a表示与B失去连接,B表示与a失去连接
  • 如果他们在同一个应用程序运行期间再次接触,他们应该重新连接
我尝试使用谷歌附近API和谷歌附近消息API,但我一直有问题


你能推荐一个选项让我专注于这个吗?

我郑重建议你停止采用蓝牙和谷歌附近的api来帮助你解决这个问题。如果改用套接字编程,效果会更好。它实际上允许您检测连接到单个WiFi网络的所有设备。比如说,你有自己的Socket协议来运行这个节目,那么你就可以轻松地管理这个任务了。考虑在这个问题上使用DATAGAMSOCKET和DATRAGAMPACK策略。假设你有一些设备,a,B,C,D

  • 设备A、B、C、D在内部建立DatagramSocket,并开始侦听特定IP地址和特定端口上的DatagramPack
  • 因此,一旦您在设备a、B、C、D上建立了连接,您将知道在这些设备上独立运行的DatagramSocket的IP地址和端口号
  • 最终,您可以允许设备A、B、C、D使用

  • 实际上,我已经实现了这个想法,如果您在这方面有更深入的了解,那么请务必让我们知道

    当使用Google Nearest Message API时,订阅者可以随时知道何时与发布者失去了连接。看看这个来自谷歌文档的示例代码

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        mMessageListener = new MessageListener() {
            @Override
            public void onFound(Message message) {
                String messageAsString = new String(message.getContent());
                Log.d(TAG, "Found message: " + messageAsString);
            }
    
            @Override
            public void onLost(Message message) {
                String messageAsString = new String(message.getContent());
                Log.d(TAG, "Lost sight of message: " + messageAsString);
            }
        }
    }
    

    Ref-

    嘿,你需要说出你面临的问题是什么。作为旁注,谷歌附近的消息API使用蓝牙、BLE和Wi-Fi在设备之间建立通信。某些旧设备不支持BLE广播。两台设备都需要连接到互联网(不一定是同一个网络),并且在这两台设备上,托管API的应用程序应该具有相同的应用程序密钥。嗨,是的,两台设备都连接到互联网,并且具有相同的com.google.android.near.messages.API_密钥。我无法检测到这两台设备何时无法再“看到”对方。另外,我试着让两台设备同时成为发布者和订阅者,这有意义吗?是的,让两台设备同时成为发布者和订阅者是完全可以的。我们已经使用Bluetooth Low Energy(BLE)实现了类似的功能(但每个设备在一个实例中都是发布者或订阅者,而不是两者都是),您可以在设备靠近时监听回调,并在检测到的设备移开时检测到其他设备。无论如何,我已经给出了一个答案(太长了,不适合评论)。检查这是否有助于您如果我的设备不在同一个WiFi网络中怎么办?它们都连接到internet,但不是通过Wifit。如果套接字绑定到的IP地址是静态的,那么可能有一个明确的解决方案。否则这只是另一个租用网络服务器的问题。嗨,这也是我的灵感来源。不知怎么的,我不能使它正常工作。当我只使用谷歌附近的API时,我无法让出版商在失去互联网连接后重新连接到订阅者。我将进一步研究这个方向与谷歌附近的消息API,但试图找到一个解决方案。如果你熟悉iOS,我想做的就是完成一些类似于GameKit传感器的工作