好吧,我这里有一个有点奇怪的问题。我正在开发一款 Android 游戏,我希望 Android 手机能够检测到彼此的存在。
搜索其他玩家的设备将知道其他玩家设备的蓝牙 MAC 地址(来自游戏数据库),但是设备不会配对,并且设备不会处于可发现模式。此外,可能只能找到少数设备 - 因此扫描 MAC 地址并不是什么大问题。
我不需要连接到设备,我只需要能够回答一个简单的问题:该设备附近是否有该 MAC 地址?
允许在其他用户的屏幕上出现配对对话框...我不在乎他们选择的结果是什么...我只需要知道他们的设备是否在那里。
任何帮助将不胜感激!
此用例可能非常适合最近发布的 Nearby API。查看附近的消息开发者概述 https://developers.google.com/nearby/messages/overview
附近有自己的运行时权限,使您无需添加 BLUETOOTH_ADMIN 或类似的清单。它利用多种技术(经典蓝牙、BLE、超声波)在 iOS 和 Android 上运行。可以选择仅使用超声波调制解调器,从而将范围缩小到约 5 英尺。
我在下面提供了部分示例,您可以在以下位置找到更完整的示例github https://github.com/googlesamples/android-nearby/blob/master/messages/NearbyDevices/app/src/main/java/com/google/android/gms/nearby/messages/samples/nearbydevices/MainFragment.java
// 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 工作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)