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

  1. Tech
  2. 0 view

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の使い方

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

mBleScanner = mBleAdapter.getBluetoothLeScanner();
ScanFilter scanFilter = new ScanFilter.Builder().setServiceUuid(ParcelUuid.fromString(SERVICE_UUID)).build();
ArrayList scanFilterList = new ArrayList();
scanFilterList.add(scanFilter);
ScanSettings scanSettings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_BALANCED).build();


mBleScanner.startScan( scanFilterList, scanSettings, new ScanCallback() {
    ....
});

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

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月に株式会社クリエイターズ・ラボを設立。

株式会社クリエイターズ・ラボ 代表取締役。株式会社078 取締役。

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

記事一覧

関連記事

Raspberry Pi 3でBluetooth LEを導入…

Raspberry Pi 3から、Bluetoothモジュールが標準装備されたモデルが発売されています。今回はその機能を使い、BLEをプログラムで制御する手始めをご説…

  • 0 view

Raspberry Pi 3とタクトスイッチでLEDを制御す…

今回は、ラズパイを用いて、いわゆるLチカというやつをやってみたいと思います。とはいっても、ただLEDを光らせるだけでは面白くないので、ソフトウェアエンジニアリング…

  • 0 view

Macを使ったRaspberry Pi 3 model Bの…

この記事は、実際にRaspberry Piを購入し、Raspberry PiにOSをインストールするところまでを習得することをゴールにしております。この記事の続きは順…

  • 0 view

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


%d人のブロガーが「いいね」をつけました。