Question

There is a device and a smartphone with the following requirements:

  • User taps the device, says something and their speech is transferred to the smartphone
  • The smartphone receives speeches and some other device status information
  • Smartphone is iOS device at the beginning (Android and WP devices are considered later)

I'm trying to figure out what is the best way to go using Bluetooth to archive that:

  1. Standard BT profiles: HFP & HID. iOS SDK doesn't allow direct communication with devices via these profiles. So it's seemed to me very awkward to go this way.

  2. BT Low Energy. Is it possible to sent files using BLE? I'm thinking about 50-100K file sizes. If it is, how slow it can be?

  3. MFI. This is the last resort. If I go this way, would I have problems with Android and WP smartphones?

Update: My original plan was to go with HID (to make app know that device is initiating streaming + other status info) + HFP (to stream). But my concerns were:

1.1. can the app handle HID messages (keypress,for example) while is in background

1.2. can these two profiles work together?

1.3. what pitfalls if another headset is connected (as I understood the latest connected will be streaming)?

Was it helpful?

Solution

Will try and go through these one by one:

  1. Standard BT:
    Apple: Apple will allow you to use the standard Audio protocols for free. So you could use A2DP to stream Audio, but that is about it. If you want to use SDP to transfer data you will need to get the authentication chip in your device.
    Android: All the protocols are free to access.

  2. BLE:
    Apple: BLE is free to use, but I am not sure how Apple will react to you trying to send large amounts of data over the protocol. BLE is very fast for small data (20 bytes) but slows down as you go bigger. A lot is going to depend on your accessory, but I believe Apple has a cap on how fast you can transmit. I have seen speeds of around 5KB/s.
    Android: Same thing applies to Android, but you can go faster if your device supports it, I have seen speeds up to 10KB/s.

  3. MFI:
    Apple: Supported by Apple
    Android: The keys that Apple used for Airplay were reverse engineered a while ago, and you might be able to use them but its a gamble. There might be better libraries out there I am not aware of.

When it comes to Windows Phone, I don't know much accept that they did announce something about a BLE api at the BUILD conference that happened a couple of days ago.

Hope this helps!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top