Android BLEで指定したService UUIDのデバイスと接続する方法

Androidと特定のペリフェラルとBluetooth LEで接続しようとするとき、Service UUIDを指定して、そのUUIDを持ったデバイスを探すのが常套手段かと思います。

しかし…
ただでさえAndroidでBLEを使うときに情報が少なくて困ってたのですが、ググってもググってもBLEに関してiOSは安定しているけどAndroidは使い物にならん、みたいな記事がわんさかでてきて不安で夜も寝られない日々を過ごしていました。

粘り強く色々と調べていると、どうやら比較的新しい情報が埋もれてしまっていたようで。
いい方法を見つけましたのでご紹介しておきます。

Blutooth LEを使ったアプリの大枠は以下のページがよくまとまっているので、こちらをご参考にしてみて下さい。
http://mslgt.hatenablog.com/entry/2015/05/17/212257

問題は、ターゲットのService UUIDを持ったデバイスを検索するところです。

ちゃんとService UUIDが一致していることを確認しておりますし、一見問題なさそうに見えるのですが、このままだとAndroid側とペリフェラルの接続が保証できません。Bluetooth LEの機器が混在する環境の中では、ScanFilterを用いましょう。

ScanFilterの使い方

冒頭でもお話した通り、大枠は先に貼ったリンクをご参照下さい。
ここでは、フィルターが必要な箇所のみ記述いたします。

以上です。めっちゃ簡単です。

SERVICE_UUIDは先に文字列として定義しておいて下さい。

今回はUUIDで指定しましたが、他にも色々なバリエーションがあります。
詳しくは公式ドキュメントをご確認ください。

https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder.html

 

The following two tabs change content below.
株式会社クリエイターズ・ラボ 代表取締役。株式会社078 取締役。 中学生の時に父の自作PCを譲り受け、はじめてのウェブ制作を経験する。見よう見まねで自分のウェブサイトにチャット機能や掲示板を自作で実装したのがはじめてのプログラミング経験。 大学在学中にLinuxとC言語を学ぶ。大学卒業後はエンジニアとして自動車メーカーで油圧制御プログラムの開発や、シミュレーションソフト開発に従事。その後、半導体商社にて組込みソフトエンジニアとして、産業機器や家電、IoT等の組込みソフトウェア開発に従事。 2015年9月に株式会社クリエイターズ・ラボを設立。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA