我正在尝试从已知MAC_ID的蓝牙设备接收数据(字符串)。 我搜索了很多例子,但是每篇文章都指向蓝牙聊天示例,我认为在蓝牙聊天示例中,应用程序需要安装在两个设备上才能连接并交换字符串。如果我错了,请更正我。 /> 但是我只需要在Receiver设备上安装应用程序。我尝试仅在一台设备上安装应用程序并尝试连接到发送方设备,但没有成功。
答案 0 :(得分:0)
蓝牙是一种点对点协议,您需要在两端运行应用程序。因此,如果你想交换数据非常好的例子将是蓝牙聊天。如果要下载或传输文件,则应该实现基于obex或FTP配置文件的应用程序。
答案 1 :(得分:0)
是的,您需要在双方部署应用程序。如果您真的受限制只能在一侧部署,则必须确定另一方能够使用哪些标准协议/蓝牙配置文件。您可以通过执行SDP查找来解决这个问题。对于设备,您将获得标识这些服务的UUID列表。有关众所周知的UUID,请参阅bluetooth spec。正如@ 7383指出的那样,你很可能正在寻找OBEX或FTP。
如果你可以双方部署,你可以使用Blaubot编写自己的应用程序(免责声明:我写了它)。一个简单的Blaubot程序可以做到这一点:
UUID MY_UUID = UUID.fromString("33bb1246-1472-11e5-b60b-1697f925ec7b");
// onCreate() or in a service, we create a blaubot instance
// using Bluetooth to form a network and Bluetooth + NFC to find devices
IBlaubotDevice ownDevice = new BlaubotDevice();
BlaubotUUIDSet uuidSet = new BlaubotUUIDSet(MY_UUID);
BlaubotBluetoothAdapter bluetoothAdapter = new BlaubotBluetoothAdapter(uuidSet, ownDevice);
BlaubotNFCBeacon nfcBeacon = new BlaubotNFCBeacon();
BlaubotBluetoothBeacon bluetoothBeacon = new BlaubotBluetoothBeacon();
this.mBlaubot = BlaubotAndroidFactory.createBlaubot(MY_UUID, ownDevice, adapter, nfcBeacon, bluetoothBeacon);
// start and wait until connected
this.mBlaubot.startBlaubot();
// create a channel and send your file
IBlaubotChannel fileChannel = this.mBlaubot.createChannel(1);
// convert your file to its bytes
File yourFile = // ... however you get it
byte[] fileBytes = ...// ... see http://stackoverflow.com/questions/858980/file-to-byte-in-java
// send it to all connected devices
fileChannel.publish(fileBytes, true);
// to receive it on the other device, do this:
// subscribe to the channel
fileChannel.subscribe(new IBlaubotMessageListener() {
@Override
public void onMessage(BlaubotMessage message) {
// extract your bytes from the message
byte[] fileBytes = message.getPayload();
// .. do something useful or write it to a file again
// to write it to a file
File file = new File(yourFilePath);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
bos.write(fileBytes);
bos.flush();
bos.close();
}
});
这应该是你所需要的。要允许设备连接,您必须先将它们配对或使用NFC(当Blaubot启动时,将它们放在一起)。如果您使用Blaubot,请告诉我您是否遇到documentation或android quickstart guide无法解决的问题。
我只能猜测你的实际情况是什么样的。如果你有两个Android手机,这应该工作。如果不是这种情况,您应该添加有关所涉及设备的更多信息。我们真的在谈论(经典)蓝牙连接,或者您是否尝试从蓝牙低功耗设备获取数据? 在这种情况下,着名的聊天示例也无法帮助您。