检测附近设备android的存在

时间:2017-02-05 00:47:13

标签: android bluetooth google-nearby

我尝试实施的应用程序的一部分涉及使用相同的应用程序检测附近的Android设备。用例就是这样,假设我们有设备A和B进行联系:

  • 如果设备彼此靠近(蓝牙范围关闭),两台设备上都会显示一条消息:A说它检测到B,B说它检测到A
  • 如果两个设备彼此失去连接,则应在两个设备上同时显示一条消息:A表示已失去与B的连接,B表示已失去与A的连接
  • 如果他们在应用程序运行期间再次联系,则应重新连接

我尝试使用Google Nearby API和Google Nearby Messages API,但我一直遇到问题。

你会推荐一个选项,所以我可以专注于那个吗?

2 个答案:

答案 0 :(得分:0)

我认真地建议你停止采用蓝牙和谷歌附近的api来帮助你解决这个问题。如果你切换到套接字编程会更好。它实际上允许您检测连接到单个WiFi网络的所有设备。例如,假设您有自己的套接字协议正在运行该节目,那么您可以轻松地管理任务。考虑在这个问题上使用DatagramSocket和DatagramPacket策略。所以假设您有一些设备,A,B,C,D

  1. 设备A,B,C,D在内部建立DatagramSocket并开始侦听特定IP地址和特定端口上的DatagramPackets
  2. 因此,一旦在设备A,B,C,D上建立DatagramSocket,您就会知道在设备上独立运行的DatagramSocket的IP地址和端口号
  3. 最后,您可以使用DatagramPacket
  4. 允许设备A,B,C,D在它们之间共享数据

    我实际上实现了这个想法,如果你在这个领域进一步看,那么请告诉我们

答案 1 :(得分:-1)

使用Google Nearby Message API时,订阅者始终可以知道它何时失去与发布商的连接。请查看Google文档中的示例代码

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);
        }
    }
}

参考 - https://developers.google.com/nearby/messages/android/pub-sub