Joinを利用してフルAndroidスマウォから親スマホの電話を発信させる

Full Android Smart Watch Phoneは、Android7搭載機以降は、Googleのポリシー変更のため、Bluetooth Callingが出来ません。Bluetooth CallingとはBluetoothを介して親スマホの電話機能(発信、通話、終了)を時計側で利用すると言うものです。格安のスマートウォッチなんかでも意外と付いてたりする機能のようです。なんかセキュリティーの不具合でもあったのか、フルAndroid同士ではこの機能はスポイルされています。

 

なお、Full Android機でのBluetooth CallingについてはFull Android Watchというコミュニティーにまとめがあります。英語。成功例の報告はない。

 

https://www.fullandroidwatch.org/c/announcements/bluetooth-calling/72

 

このコミュニティーは、スマートバンドや一般的なスマートウォッチではなく、時計型のAndroidスマートフォン(Full Android Smart Watch Phone)を使ってる人のコミュニティーで、非常に為になる情報が山盛りです。新製品の情報から、明らかに中の人の書き込みやら、便利な使い方、WatchFaceの配布、ファームウェアの配布など、フルAndroid機を使うなら目を通さにゃ損。Universal Launcher New GenやらWatchdroidなんてフルAndroid機では常識レベルのアプリについては、私はココで初めて知りました。

 

 

WatchDroid、そしてjoin by joaoapps とは

フルAndroid機では、親スマホの通知を時計側にリンクさせるのにwiiwatch2というアプリが用意されています。しかしながら、このアプリ、非常に出来が悪く、使い物になりません。よくレビューで「通知がこない」とか「接続が切れやすい」とか「通知を送る対象に出来るアプリがLINEとかくらいしかない」なんてボロクソに言われてます。

 

フルAndroid機なら、違うアプリを使えば良いじゃないの。何のためのフルAndroid。IFTTTも使えるのよ。

 

ということで、Wiiwatch2の代替になるアプリが主に2つあります。1つはWatchdroidというアプリです。これは2つのアプリで構成されていて、WatchDroidPhoneを親スマホ側に入れ、時計側にWatchDroidAssistantを入れることで、Bluetooth経由して通知の同期とか親スマホの音楽再生とかが出来るようになります。Bluetoothで連携させるなら必須レベルのアプリです。wiiwatch2なんて窓から棄ててしまえ。

 

最近では一定周期の心拍数測定、(Android10機ではバグってるけど)歩数履歴の収集、電池とイベントの収集機能まで付いています。便利機能の一部は有償ですが、基本的な連結機能は無料で利用できます。

 

 

Joinはもう一つの対策手段で、Googleサーバーを介して複数のAndroid機の通知の同期や簡単な操作などを行えるアプリです。同期にはインターネットへの接続がいりますが、SIMを刺すか親スマホBluetooth PANを利用するなどすれば使えます。

 

これは試用1カ月付きの有料アプリですが、値段分の価値は大いにあります。かつてAndroid7搭載機の私の環境ではGoogle Cloud Messageへのコネクションが一定時間で切れてしまうという結構な問題があったのですが、Android10搭載機ではコネクションが切れなくなりました(うちの場合)。使えるなら物凄く便利。

 

Joinの魅力は色々有りますが、提供しているのが彼の有名なマクロアプリ、Taskerのチームであることが大きな魅力です。Taskerはたぶん、Androidで何か自動化したいという要求をもった人なら絶対聞いたことがあるレベルの超有名アプリです(有料)。

 

 

で、何をしたいのか

実はJoinではPCからであればスマホ電話発信と着信対応を指示出来ます(他にも遠隔でTaskerのマクロ操作とかも。こちらはAndroid同士でも勿論、可能)

 

あれ、上手くやれば時計側から親スマホの電話発信操作出来るんじゃね? なお、着信はもともとJoinで操作対応をしています。

 

 

やること

AutomateとJoinとTaskerを組み合わせて、フルAndroidスマートウォッチからスマホの電話発信させる。時計で通話は出来ないけど、Bluetooth Callingの機能のうち、2つをカバーさせる。

 

 

なおAutomateを使用するのは私が基本的に使用しているのがそれと言うだけの話です。本当は全てTaskerとJoinだけで実装可能と思います。なお、Automateだけで実装しないのはAutomateのロック画面中の挙動が怪しく、Taskerでは上手く行くことがAutomateでは失敗する為です。

 

 

続く。

 

 

 

 

 

Automate Ver 1.26.0でのFlow Shortcutが作成出来ない件について

2021 0416追記

Automate Ver.1.28.2にて再びflow shortcutが生成出来るように仕様が戻されたようです。ありがとう、中の人!

 

 

さて、私はAndroidのマクロアプリとしてAutomateを愛用してるんですが、その機能のうち他アプリからAutomateのフローを直接起動させるFlow Shortcutを多用しています。丸型のフルAndroidスマートウォッチでは、エッジジェスチャーなどのアプリからAutomateを直接起動させて操作性を改善するのに大変便利だからです。おっぱい。

 


丸型のAndroid Smart Watch Phoneにて四隅のへのタッチ入力を行う(まとめ直し) - diablo3cs’s diary

 

↑ 丸型のフルAndroid機で四隅にタッチ入力する例。他にもエッジジェスチャーから一発でYouTubeChromeの音声検索を起動させるとか。

 

しかしながらVer1.26.0で他社アプリからのショートカット起動割り当てに反応しなくなりました。なんでもAPIを使うように変更したのと、本来、ショートカット起動はシステムランチャーにだけ実行が推奨されるからだそうで(既に開発者には、この不具合を連絡済みです。元に戻す検討はする、とのこと。元に戻らないと私は大変困るが、時間係りそうとのコメント。大丈夫かいな)。同時に1.26.0で作成したフローが1.25.1以前では読み込めなくなっています。

 

 

ということで、Automateを使った便利なTipsは1.26.0では成立しないので、対処療法を考えた。

 

 

旧バージョンのダウンロード先

ググれば出てくる。リンク先の安全性は保証しません。

https://automate-beta.en.uptodown.com/android/versions

 

上記のとおり、1.26.0で作成したフローは1.25.1では読み込めません。この為、もし1.26.0で作成したフローがあるならば、バージョンダウンさせるにともない、そのフローは使えなくなります

 

バージョンダウンは次の手順で行います。

 

  1. アンインストールにてフローは全て消えますので、フローを保存しておきます。
  2. インストールされている1.26.0をアンインストールします。これに伴い、エッジジェスチャーなどからのリンクは全て無効化されます。
  3. 別途ダウンロードした1.25.1をインストールします。
  4. Google Play Storeにて、Automateを検索、表示させて右上のメニューから自動更新の有効化のチェックを外す。なお今後も、解決するまで、Google Play Storeから手動で更新してしまわないよう注意する。
  5. 各フローを読み込ませます。
  6. エッジジェスチャーなど、リンクさせていたアプリから再度リンクを構成させます。

 

 

対処療法、別なマクロアプリを使う

例えばMacroDroidは初期からクリックエミュレーションが出来るので、こちらを使えば丸画面での四隅への入力はカバー出来ます。ただし、クリック指定はポイント単位でAutomateのようにざっくり%指定ではないので調整がかなりいると思います。

 

Taskerを使う場合は、Auto AppsのAutoInputを使用することで簡単に、、簡単かこれ、、いちおう、出来るようです。めんどくさくてやりたくねぇ…

 

 

 

感想

いずれにしても簡単にAutomateのフローを呼び出す方法がスポイルされてしまったとです。同じ動作をするマクロをMacrodroidやTaskerで組もうと思うと死ぬほど大変なのでちょっと遠慮したいとです。なんでMacroDroidやTaskerでは当然のように出来るショートカット呼び出しを、Automateは潰したんだ…理不尽すぎる

 

 

追記 2020 02 24

別な対策を思い付いたので参考書ください。

 


Automate Ver 1.26.0でのFlow Shortcutが作成出来ない件、その2 - diablo3cs’s diary

Kospet Prime2、Rogbid Brave Proなどで腕を上げて画面オンの時間を強制的に設定する

Android10搭載しているKospet Prime2やRogbid Brave Proではデフォルトで付いてる「腕を上げて点灯」(screen on rising)の時間が約2秒と大変短いです。時計を一瞬確認するには十分なものの、色々しようと思うと短すぎる。

 

このディスプレイ点灯時間を強引に調整するAutomateのフローを作りました。なお、作成時は、2/14バレンタインの日でありました。血と涙の結晶です。

 

 


Automate for Android ⋅ display alive2

 

 

前提

  • Android10搭載、Full Android Smart Watch向け。Kospet Prime2とRogbid Brave Proで動作確認。
  • Automateが使えること。
  • 腕を上げて画面点灯(screen on rising)がオンであること。
  • スクリーンロックは使用していないこと。ロック画面では非root端末はAutomateの操作を受け付けません。
  • ホームアプリはデフォルトのwiiteを想定。Universal Launcherの場合、デフォルトのscreen on risingをオフにして、Universal Launcherのscreen on risingを使用することでちゃんと点灯時間を設定出来ます。

 

動作

  • 画面が点灯すると、画面の端っこにタッチ入力する。2秒で画面が今回オフになるのを防ぐため。
  • 6秒後に画面ロック(=Display off )する。
  • 同時に非常にゆっくりとスワイプが入力される。
  • ユーザーが画面タッチなどをすると、それにより、ゆっくりなスワイプ操作が中断される。これを検出して、動作中止する(設定のディスプレイ消灯時間は有効)。

 

 

Full Android Smart Watchをジェスチャーで操作する、Android10対応

Android10搭載するスマートウォッチでは、若干センサーの感度の癖がAndroid7.1搭載機と変わっています。またデフォルトのホームアプリがwatchからwiiteに変更になった為、以前Automate のコミュニティに上げていたジェスチャー操作のフローはそのままでは使えなくなっていました。

 

と言うことで、Android10機に最適化してついでに使いやすさを(自分で使うのに便利なようにして)改良したものを上げます。

 

↓過去記事


ジェスチャーでAndroid Smart Watchを操作する(改) - diablo3cs’s diary

 

前提

Automateの有料版を使えること。ブロック数がそれなりにありますので、無料版では動きません。

よくAutomateの事項読んだら無料版でも動く、のか?

 


Automate for Android ⋅ GestureControl_AndroidWatchPhone_Rev3.35n

 

 

動作など

Full Android Smart Watchをwear OSライクにジェスチャー操作するフローの構築例です。Android10端末のKospet Prime2とRogbid Brave Proにて動作を最適化してあります。必要に応じてMotion Gestureのブロックのモーション記録を調整してください。

 

2回シェイクしてジェスチャー操作モードになる。 

 

ジェスチャー操作モードでは、

ホームアプリがフロントに来ている場合(watchとwiiteとUniversal Launcherを認識します)

  • 1回シェイク:左から右スワイプ
  • 2回シェイク:右から左スワイプ
  • 4回シェイク:画面ロック
  • 腕上げてシェイク:通知画面の引き出すorしまう


ホームアプリがフロントにない場合(含む通知バー展開中)

  • 1回シェイク: 下から上スワイプ
  • 2回シェイク: 上から下スワイプ
  • 4回シェイク: 画面ロック
  • 腕上げてシェイク: Back入力


WatchDroidAssistantがインストールされている、Bluetoothがオンの場合、かつホームアプリがフロントの場合

  • 1回シェイク: 左から右スワイプ
  • 2回シェイク: WatchDroidAssistantを起動し、通知履歴をクリックする

 

画面がオフになると(≒画面がロックされる)、全てのモーション待機状態とジェスチャー操作モードを解除し、ホーム入力を入れたのち、画面がオンになるのを待ちます。

 

通常時


Full Android Smart Watchをジェスチャーで操作する、説明動画その1 - YouTube

 

↓WatchDroidインストール済み、かつBluetoothがオンのとき。


ジェスチャー操作でFull Android Smart Watchを操作する、そ の2 - YouTube

 

 

補足説明

上の方にあるNo.179のStart Flowのブロックは別に上げているJoin通知時に強引に表示するフローのstopを指定することで、ジェスチャー操作モードに入ると同時にあちらの動作を停止させる為のもの。ユーザーによってURIが変わるのでup loadしたものは空っぽにしてある。

 


Joinで通知同期したときに、すぐ通知が見られるようにする - diablo3cs’s diary

↑の、Flow Beginning: Stopのこと。

 

なお、Rogbid Brave Proから親スマホBluetoothが繋がってることを認識させようとした(WatchDroidが繋がってることを認識させたかった)が、うまくいかなかったのでペンディング。親スマホからは時計側に繋がっているか判別出来るねんけど…逆が出来ない。なんでだろー

Rogbid Brave Proのバッテリーのもち

もちもち。

 

 

SIMのみ運用の場合

  • SIM経由してJoinで連携。
  • Bluetooth オフ、wifi オフ、GPSオン。
  • ホームアプリはデフォルトのwiite。
  • 画面輝度は最大 
  • Notification Bright Screen をオン。
  • Screen on rising オン

 


f:id:diablo3cs:20210212183541j:image

Kospet Prime2ではこの運用方法で実用4日程度もつ感じでしたが、全然アカン。40時間も保たない。うぬぬ

 

 

SIM+Bluetooth連携の場合

  • SIMあり。ほとんど通信させない(Join連携なし)
  • スマホとの連携はBluetooth通してWatchDroidを使用。WatchDroidの設定ではステップカウンター履歴、心拍数履歴、電池履歴の各同期をオフ。
  • wifi オフ、GPSオン。
  • ホームアプリはデフォのwiite
  • 画面輝度、最大。
  • Notification Bright Screenをオン。
  • screen on risingをオン

 


f:id:diablo3cs:20210212184358j:image

40時間くらい。実用上は1.5日といったところかな。おれ、これで運用してみる。

Rogbid Brave Proを使う

さて、Kospet Prime2は性能的にはピカイチなんですが、残念ながら防水対応ではないのが気になるのと、流石に大きすぎるという意見があるかと思われます。まぁその大きさが操作性の向上とバッテリーの保ちに繋がっているんですが。

 

と言うことでRogbid Brave Proを買ってみたので使ってみるアル。

 

 

性能とか

Rogbid Brave Proは、スペック詐欺商品です。カタログスペックは信用してはいけません! これは同じ製品らしき、BanggoodのLEMFO LEM14も同じと思われます!

  • Android10。
  • チップはMediaTek Helio P22。
  • RAM 4G/ROM64GB
  • 画面は1.69inch IPS 450x450  →実際はKospet Primeとおなじ、1.6inch 400x400 IPSです。
  • 私はカメラ使わないのでどーでもいいですが、カメラスペックも詐欺とのこと。
  • バッテリー容量1600mAh →実際は1100mAhと思われます。実測は残8%からの電源オフフル充電で約930mAh、4800mWhでした。
  • IP68、5ATM防水。防水防塵性は自信ありらしい。
  • Rogbidはこの製品の前にRogbid BraveというKospet Primeの防水性強化したような製品を出してた。ぶっちゃけBrave Proが詐欺スペックなので、あちらも怪しい。

 

外観とか


f:id:diablo3cs:20210210094408j:image

箱から出したところ、と付属品など。付属品はなかなか充実していて、

  • 換えのバンド。バンド幅は24mm。
  • 硬質保護フィルム(ガラスかな)、2枚。清掃用エタノールシート付き。ただし他製品ですと最初から画面に保護フィルム付けてくれていることが多いのですが、Brave Proは付いてません。
  • SIMスロットを開けるためのドライバー。予備ネジはなし。あんまり良いドライバーじゃない。私、SIM蓋開けるとき、ネジ固くて苦労したアル。
  • マニュアルなど。
  • 2200mAhって書いてある、充電ベース兼バッテリー。おまえホントに2200mAhあるんか?
  • Type A to micro USB type Bオスのケーブル。充電ベースに接続する奴。
  • POGOピン4本の充電ケーブル。Brave ProのPOGOピン間隔は汎用品(Thor4、LEMX、LEM13などで使える奴)と違うので互換性はありません。とはいえ、Prime2のように極性まで入れ替わってはいない模様。最初から充電系が2つ付いてるはありがたい。

 


f:id:diablo3cs:20210210095917j:image

SIM スロットの蓋をあけたところ。Brave Proで褒めるところが有るとすれば、防水性になりそう。私が今までに買ったFull Android Smart Watchのなかで一番SIM周りがキチンと防水されている印象。蓋も、心拍センサーの上に透明窓を付ける形になっていて、防水性は悪くなさそうです。

 

 

 
f:id:diablo3cs:20210210100351j:image

比較。左から、Kospet Prime2、Kospet Prime、Rogbid Brave Pro。大きさはKospet Primeより少し大きいくらい。

 


f:id:diablo3cs:20210210100613j:image

横から見たところ。厚みはKospet Primeより1、2mm厚い。だいたいKospet Primeより一回り大きいって感じ。なんでバッテリーはKospet Prime(1260mAh)の方がデカいんやろ。

 

 

バッテリーのもち

まだお試し中ですが、基本的にはPrime2の2/3と考えて良さそう。

  • SIMなしBluetoothで通知同期(WatchDroid)、画面オンのみBT PAN接続で40~45時間の待ち受け。
  • SIMのみ運用、Join連携にて50時間程度待ち受け可能。

 

やはりBluetoothの消費電力が、期待されるよりも大きい感じです。とはいえ、Prime2ほど劇的にBluetooth運用とSIM単体運用に差があるわけではなさそうなので、迷うところではあります。

 

Joinで通知同期したときに、すぐ通知が見られるようにする

Kospet Prime2では、Bluetoothによる親スマホとの通知同期より、LTEを介して通知同期したほうが省電力です。しかしながらJoinによる通知はデフォルトのホームアプリwiiteでは即座に通知画面にならないという制約があります。

 

と言うことでAutomateを使用して強引に解決してみました。

 

 

 

作ったもの


Automate for Android ⋅ join show 2.6.2n

 

 

Full Android Smart Watchにて、Joinで親スマホと通知同期させた場合、通知取得時に自動的に通知表示画面にならないので、これを力業で強引に解決したものです。


前提
- Smart Watch側でNotification Bright Screenがオンになっている。
- Joinにてスマホ側からSmart Watchに通知を送っている。
- ホームアプリはデフォルトのwiite
- ホーム画面は時計表示である。
- Kospet Prime2とRogbid Brave Proにて動作確認。


動作
- Joinにて通知が来た場合、左からスワイプして通知を表示する。Vibration強を追加し、6秒表示後、右からスワイプして時計画面に戻し、画面をロックする。
- 最初の通知から9秒以内に追加の通知が来た場合には表示時間を延長する。
- ホームアプリwiite以外がフロントに来ている場合には動作しない。また、Joinからの通知到達時に画面がオンの場合にも動作しない。
- Flow Beginning: stopのフローを外部などからスタートさせた場合、動作を停止する。別に組んだジェスチャー操作にてここを叩かせることで意図しない動作を止めるもの。


https://youtu.be/X5mCdiMobsk

 

 

蛇足

別フローからファイバーをキルする方法がよくわからなかったのでatomicを使用して強引に解決してますが、なんか上手い方法あったら知りたい。

 

注意点としてはファイバーが分岐するときにatomicではない関数はそれぞれのファイバーに別れて付いていき、フロー全体で共有されないので、Stop Fiberの手前にてChild FiberのURIが関数に格納されていなければ、Stopさせられない、ってことかなぁ。