GitHubに公開したAndroidアプリ「BleSwitch」について(概要)

ざっくりと言って何するものか?

アンドロイド版BLEスイッチという、
GitHubに公開しているAndroidアプリ(コード)について、解説します。

https://github.com/krasavkana/android-ble-switch

このアプリは、BLEビーコンデバイスをAndroidアプリの操作に使えるようにする橋渡しアプリです。

「Bluetoothリモートシャッター」というのが100均で売っています。iPhoneやAndroidデバイスの内蔵カメラを起動しておけば、このデバイスを使って離れた場所からシャッターを操作することができます。

clip-20191005115218.png

くり返しになりますが、本アプリは、【BLEビーコンデバイス】を【Androidアプリの操作】に使えるようにする【橋渡しアプリ】です。これを「Bluetoothリモートシャッター」の動作に対応させて説明すると、

  • 【BLEビーコンデバイス】 ⇒ 「Bluetoothリモートシャッター」
  • 【Androidアプリの操作】 ⇒ シャッターを操作する
  • 【橋渡しアプリ】 ⇒ デバイスのボタン操作をAndroidアプリのシャッター操作に橋渡しする

となります。

じゃあ、100均デバイスとの違いは?

これ、実はこの問い自体がちょっと違います。 世の中のほとんどすべてのデバイスについて言えますが、デバイス単体で動作するものはありません。デバイスと連携して動作するコード(アプリ、ソフトウエア)が必要です。

デバイス+橋渡しアプリで動作する

100均デバイスの場合は、デバイスとペアリングしてくれるサービスが【橋渡しアプリ】として機能して100均デバイスのボタン操作をAndroidアプリ(内蔵カメラアプリ)に橋渡ししてくれます。

本アプリの対応デバイスは?

本アプリの場合、アプリ自体は【橋渡しアプリ】なので、一緒に動作させる【BLEビーコンデバイス】を考える必要があります。

コード公開にあたり実機テストをしています。その際次の【BLEビーコンデバイス】を使って動作確認しています。

PochiruEco
http://www.products.braveridge.com/pochiru_eco/

この場合、

  • 【BLEビーコンデバイス】 ⇒ 「Pochiru(Eco)」
  • 【Androidアプリの操作】 ⇒ 本アプリでは専用カメラアプリを起動する
  • 【橋渡しアプリ】 ⇒ 本アプリのこと

として動作します。

100均デバイス+橋渡しアプリとの違いは?

漸く、元の話題に戻ってきました。100均デバイス+橋渡しアプリとの違いは、下記3点です。

  • ペアリング不要
  • Androidデバイス内のアプリを起動する
  • ビーコン(BLE)を認識できる

ペアリング不要

ペアリングする場合、デバイスとペアリング認証する必要があり、同時に複数のAndroidアプリを同時に動作させることができません。

これはメリットにもなりデメリットにもなります。想定するものに依って変わります。

ペアリングしていない場合、スマホアプリからはデバイス個体を見分けることができないため、すぐ近くで同じ種類の100均デバイスが使われるとそれに反応してしまうという困ったことが起きる可能性があります。
逆に、ペアリングしている場合、ひとつのデバイスで複数台のスマホアプリを同時に処理させることができません。

本アプリの場合、複数台のスマホアプリを同時に起動できます。

例えば、複数台のスマホ内蔵カメラを同時に起動することができます。シャッターのタイミングは、スマホ内蔵カメラをハンドリングするカメラアプリが担当するので何とも言えませんが、ほぼ同時に処理することができます。

なので、同じ被写体に向かって前後左右上下の6台のスマホを用意すれば、同時に6方向からの画像を撮影することが可能になります。映画「マトリックス」のような一瞬を捉えた連続画像ができそうです。
#ひとりでスマホを6台用意するのは大変でしょうね。できれば同じもの6台にした方がタイミング合わせのためにもいいですね。

アプリを起動

「Bluetoothリモートシャッター」の場合にできる操作は、離れた場所からシャッターを切る、でした。これには事前にスマホの内蔵カメラアプリを起動しておくなどの操作が必要です。

本アプリの場合、そうした準備は不要で、スマホアプリ自体を起動することができます。

公開したコードサンプルでは、拙作のカメラアプリを起動しています。起動されたカメラアプリは起動したらすぐにシャッターを切ります。暗い場所やフォーカスしにくい被写体などはピンぼけになるかも知れませんけどね。

BLEビーコンを認識

本アプリでは、ペアリングは行わず、ビーコンの送信(アドバタイジング)をスキャンします。デバイス名やデバイスアドレス、サービスUUID等のパラメータを指定することにより、周囲にある複数のビーコンから指示を待つべきビーコンを絞ります。

デバイス個体を特定するパラメータ指定がなければ、その時初めて遭遇したBLEビーコンに反応することになります。あまりそうした使い方は想定していませんが、それはそれで使い道があるかも知れません。アイデア次第ですね。

本アプリの公開コードで使用した【BLEビーコンデバイス】である「Pochiru(Eco)」の場合、標準的なビーコン(iBeaconやEdyStoneなど)の動作仕様とはかなり違った動きをするようです。

たとえば、標準ビーコンは100ms毎に発信するのに比べ、このデバイスは800ms毎の発信であるとか。標準ビーコンは電池が切れるまで何か月でも連続発信するけど、このデバイスはボタンをONして20秒弱しか発信しないだとか。標準ビーコンは電池が入って切れるまで動作するので、元々発信ボタンが必要ないですよね。

本アプリでは、こうした標準ビーコンの動作仕様を想定していません。コードを書き換えればそういうものも認識させることができます。認識させることができれば、お店に設置してある標準ビーコンを察知してスマホ等に通知するとか、お年寄りや子供にポータブルな標準ビーコンを携帯してもらっておいて、近づいたり遠ざかったりしたらスマホに通知するとか、ができるようになるでしょう。

関連する記事・ページ

GitHubに公開したAndroidアプリ「BleSwitch」について(技術解説)
GitHubに公開したAndroidアプリ「BleSwitch」について(使い方)
GitHubに公開したAndroidアプリ「BleSwitch」について(概要)

お世話になったリンク

Android 5.0におけるBLE について – 受信編 –
THETA プラグインで 市販の BLE ボタンをリモコンにしてみた
iBeaconとは

以上です。

コメントを残す

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