Open3

iOSやAndroidの対応Bluetoothプロファイル

okuokuokuoku

これめっちゃややこしい。まぁClassicなBluetooth自体はあんまりもう使われなくなりつつある気はするけど。。

okuokuokuoku

iOS

AppleはTechnoteで告知している。

https://support.apple.com/ja-jp/HT204387

WiAP が曲者(くせもの)で、WiAPはプロプロエタリな通信プロトコルになっており、その内容はMFi(Made for iPhone https://mfi.apple.com/ )プログラムでNDAになっている Accessory Interface Specification に定義されている ...という内容は一般に公開されている Accessory Design Guidelines for Apple Devices ( https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf 日本語版はちょっと古い https://developer.apple.com/jp/accessories/Accessory-Design-Guidelines-JP.pdf )に書かれている。

iAPを使うと、BluetoothデバイスをGPS情報のような追加の機能に対応させることができる。また上記の Accessory Design Guidelines 自体にもいくつか重要な情報があり、例えばiOSデバイスはBLEデバイスに対して現在時刻等を提供することができるといった共通機能をもっている。

okuokuokuoku

Android

対照的に、Androidはプラットフォームとしての規定はあまり存在しない。よって、各デバイスの説明書を読むことになる。

https://support.google.com/pixelphone/answer/6048862?hl=ja

また、Android SDKのドキュメントにも何故か対応プロファイルの記述があるが、これは 8.0 で更新が止まっている。

https://source.android.com/devices/bluetooth/services

Androidの互換性定義ドキュメントでは、デバイスが実装すべき機能についても記述がある。例えば、カメラは対応必須となっている。しかし、通常のスマートフォンやタブレットについては、Bluetooth機能への対応はオプショナルとなっている。

[7.4.3/H] SHOULD include support for Bluetooth and Bluetooth LE.

また、同じAndroidでもTVやWatch、VRデバイスは対応必須となっている。

[7.4.3/T-0-1] MUST support Bluetooth and Bluetooth LE.

[7.4.3/W-0-1] MUST support Bluetooth.

[C-1-18] MUST support Bluetooth 4.2 and Bluetooth LE Data Length Extension section 7.4.3.

しかし、Automotiveを除いて各種プロファイルの実装はオプショナルなため、互換性定義としては対応必須のBluetoothプロファイルは殆ど存在しないことになる(現実的には、SDKのプラットフォームAPIを実装するためにペアリング等の各種操作には対応しなければならない)。

SHOULD implement relevant Bluetooth profiles such as A2DP, AVRCP, OBEX, HFP, etc. as appropriate for the device.