通过蓝牙检测附近的另一台安卓设备



好吧,我有一个奇怪的问题。我正在开发一款安卓游戏,我希望安卓手机能够检测到彼此的存在。

搜索其他玩家的设备将知道其他玩家设备的蓝牙mac地址(来自游戏数据库),但这些设备不会配对,并且这些设备不会处于可发现模式。此外,可能只会找到少数设备,所以扫描mac地址也没什么大不了的。

我不需要连接到设备,我只需要能够回答一个简单的问题:这个设备附近有这个mac地址吗?

允许在其他用户的屏幕上显示配对对话框。。。我不在乎他们选择的结果是什么……我只需要知道他们的设备是否在那里。

如有任何帮助,我们将不胜感激!

这个用例可能非常适合最近发布的附近API。请参阅附近消息开发人员概述

附近有自己的运行时权限,可以防止您将BLUETOOTH_ADMIN或类似内容添加到清单中。它通过利用多种技术(经典蓝牙、BLE、超声波)在iOS和Android上工作。可以选择只使用超声波调制解调器,将范围缩小到约5英尺。

我在下面包含了一个部分示例,您可以在github 上找到更完整的示例

// Call this when the user clicks "find players" or similar
// In the ResultCallback you'll want to trigger the permission
// dialog
Nearby.Messages.getPermissionStatus(client)
  .setResultCallback(new ResultCallback<Status>() {
    public void onResult(Status status) {
      // Request Nearby runtime permission if missing
      // ... see github sample for details
      // If you already have the Nearby permission,
      // call publishAndSubscribe()
    }
  });
void publishAndSubscribe() {
  // You can put whatever you want in the message up to a modest
  // size limit (currently 100KB). Smaller will be faster, though.
  Message msg = "your device identifier/MAC/etc.".getBytes();
  Nearby.Messages.publish(googleApiClient, msg)
      .setResultCallback(...);
  MessageListener listener = new MessageListener() {
    public void onFound(Message msg) {
      Log.i(TAG, "You found another device " + new String(msg));
    }
  });
  Nearby.Messages.subscribe(googleApiClient, listener)
    .setResultCallback(...);
}

免责声明我在附近的API 上工作

相关内容

  • 没有找到相关文章

最新更新