这个用例可能非常适合最近发布的 Nearby API。请参阅附近消息开发人员概述
Nearby 拥有自己的运行时权限,使您免于将 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(...);
}
免责声明我在 Nearby API 上工作