4

我必须制作一个应用程序来配对 iOS 和 Android 设备(iPhone 5、iPad 3、Galaxy S3、Nexus 7,它们都使用蓝牙 4.0),然后相互发送数据。

  • 这个数据量有限制吗?我们可以发送照片或 PDF 之类的内容吗?

我已经使用 CoreBluetooth 和 Apple BTLE_Transfer的示例代码在 2 个 iOS 设备之间完成了配对和发送数据

据我了解,外设(服务器)可以向中央(客户端)做广告。这个中心正在扫描自己,然后尝试通过查找所宣传服务的 UUID 来找到服务器。

当我在 Android 上创建服务器时,它正在等待连接(监听),我知道我的服务器的 UUID 和 mac 地址。但是当我用我的 iPhone 扫描时(当然是扫描相同的 UUID),我找不到服务器。

  • 那么 android 服务器是否有可能像 iOS 上的 Peripheral 一样做广告?
  • 或者也许我的 iPhone 客户端可以使用服务器的 mac 地址进行连接?
4

3 回答 3

10

问:这个数据量有限制吗?我们可以发送照片或 PDF 之类的内容吗?

低功耗蓝牙没有针对发送大量数据进行优化,也没有针对流媒体进行优化。它更适合定期发送小块数据(例如温度读数、时间等)。请查看此答案以了解 BLE 传输与经典蓝牙有何不同。话虽如此,您仍然可以通过 BLE 发送大量数据,并且数据量是无限的。但是,这最终可能会变得不可靠且相对缓慢。

Q:那么安卓服务器有没有可能像iOS上的外设一样做广告?

作为服务器/客户端与作为外围设备/中心完全不同:-

外围/中央决定了如何建立连接。中央设备应启动连接。外围设备应该通告并等待连接请求。

客户端/服务器决定了数据的分布方式。Gatt 服务器保存数据。Gatt 客户端可以读取、写入或通知(获取连续的读取流)此数据。在大多数情况下,服务器也是外围设备,但这不是强制性的。

所以回答你的问题,是的,服务器可以像 iOS 上的外围设备一样做广告。但是,对于 Android,此功能尚不可用,将成为下一版本 (Android L) 版本的一部分。请参阅此答案以获取更多信息。

问:或者我的 iPhone 客户端有可能使用服务器的 mac 地址进行连接?

据我所知,在 coreBluetooth 中,您需要外围设备的 UUID,而不是 MAC 地址来连接它。您不需要知道从外围设备发布的服务。您最好的选择是扫描外围设备,然后连接到具有 UUID 和/或您知道属于您的外围设备的广告数据的设备。

我希望这有帮助。

于 2014-07-31T19:27:36.627 回答
0

I'm not sure. Bluetooth LE isn't good idea to transfer large files. In one request phone you have only 18 bytes.

Nexus 7 bluetooth chip has some defect - not work correctly.

Try free application for IPhone - Light Blue.

so...

First question: yes.

Second: Yes but it's not good idea. MAc address in Iphone is alternating every 10 minutes and all turn on/off bluetooth.

于 2014-07-31T17:09:40.613 回答
0

一般来说,发送大文件最好使用互联网连接(通过云),有许多框架可以为您减少开销。

但是,主要问题仍然是如何发现要将数据发送到哪个设备。

您可以通过多种方式自行完成此操作,例如使用 BLE 甚至声音。

老实说,它的工作量很大,所以如果您的应用程序是最终用户驱动的,我建议您使用可以为您进行跨平台发现的框架,例如: http: //p2pkit.io或附近的 google。

免责声明:我为 Uepaa 工作,为 iOS 和 Android 开发 p2pkit

于 2016-05-10T15:45:44.367 回答