先日、某CASIOのG-SHOCKシリーズの腕時計を購入しました。ただのG-SHOCKではなく、Bluetoothでスマートフォンと連携できる製品です。(型番はGB-5600Bといいます)
近ごろはスマートウォッチというものが話題になっておりますが、(そしてSONYやLGの製品などは1, 2万円台の腕時計とコスト的に張り合えるものになってきていますが、)それらの製品を選ぶ積極的な理由がないということで、スマホに毛が生えたようなスマートウォッチではなく、どちらかというと腕時計に毛が生えたようなこの製品を選びました。充電を忘れると使い物にならない腕時計なんて嫌ですし…
※まあこの製品も広義にはスマートウォッチなのでしょうが細かい話は省略しましょう。
さて、この製品、電話やSMSの着信時には、振動や通知音で知らせてくれます。スマホの通知に気づかないこともありますし、マナーモードで少し離れているようなときでも通知してくれるので、なかなか便利です。通知時には時計の画面を見れば発信者もわかりますよ。
ですが、それだけなんですよ。専用アプリに含まれている他の通知機能では、Twitter等の一部のSNSや、IMAPで独自に登録したメールアカウントもチェックはしてくれるんですが、それが5分おきだったり10分おきだったりして、通知が遅れるんですね。SMSは着信と同時にリアルタイムで教えてくれるのに、Twitterはだいぶ間が空いて来るわけです。
そこで、自作のアプリから任意の通知を時計に送れないかということで、実験をしてみました。
方法①Bluetoothで腕時計とペアリングしてごにょごにょして通知を送る
→ペアリングでいろいろとコードを書かないといけないし通信部分の仕様も非公開。面倒すぎるので却下
方法②SMSが来たかのように振る舞って専用アプリをだまし、通知を送ってもらう
→普通に作っていればBroadcast Receiverで実装しているはずなので、アプリから勝手にSMS受信時と同じBroadcastを送れば反応してくれるはず…と試してみたらうまくいきました。

SMSが来たことになっているので「S」と表示されていますが、そこはお気になさらず。
Intentの情報として「発信者番号」「本文」の情報が必要になります。この発信者番号の部分を適当な電話番号(普段使わない範囲の番号の方が都合が良いので060始まりとかで良いでしょう)にして、その番号と表示名を電話帳に登録しておくと、腕時計にもその表示名が表示されます。上の写真は「テスト」と登録した場合のものです。
あとは適当な方法で通知を取得して(AccessibilityServiceというので取得できます)、通知を流すのみです。
ということで、とりあえずGmail, LINE, Twitterの通知をリアルタイムで流すように作ってみました。
Gmail

電話帳のデータ

これを応用して、「通知させたいパッケージ名」「パッケージ名と電話番号の関連付け」「電話番号と表示名の関連付け(電話帳)」をGUIで設定できるようにすれば、好きな通知を流せるアプリができそうです。
時間があったら(というか今、いつもの開発環境ではなく臨時の環境というのもあるんですが)作ってみようと思います。
明日まではまだ寒いそうですね。
風邪と花粉症には気を付けましょう…
スポンサーサイト