Open2

Androidから任意のアプリをアシスタント経由で起動させる

waterz1815waterz1815

意外と闇が深かった

  • やりたかったこと
    • NTCとかFitとかのアプリで、毎回メニュー操作するの面倒だった
    • 音声一発でアプリ起動して、目的に応じた画面に移動させたい
      • 「OK Google、ヨガ!」・・・って叫ぶと、NTCが起動してお気に入りのヨガメニューを開始する・・・ようなことがしたい
    • ルーチンタイマーとか、ややマイナーなアプリもタスクごとに音声だけで起動させたい
    • Taskerで作ったアプリも同様に操作したい
  • 一応実現はできた
    • Taskerで「Hey Google Command Intercept」プロジェクトを取り込んで、カスタマイズした
    • 「OK Google」でアシスタントを単体起動させてスタート
    • アシスタント起動をInterceptして、音声認識を起動させ、そこで任意の独自音声コマンドを入力
    • その認識結果をTasker内で作ったIF文の塊を通して、「独自音声コマンド」と「起動対象アプリ」を紐づけて起動する
    • 任意のアプリの自動操作は、AutoInputプラグインを使い、RPAっぽく操作した
    • 条件に合わないコマンドだった時は、再度アシスタントを起動させ、キーボード入力でアシスタントにコマンドを再入力させる(独自コマンドのみ独自の動きをさせ、それ以外は通常のアシスタントを起動させる)
  • ネットでの情報は錯綜している
    • Googleアシスタント単体でアプリが起動できる説
      • アプリとアシスタントの紐付けは可能だが、不安定で確実性がない
      • 設定画面で起動対象から除外するかを選べるが、有効にしても選んでくれるとは限らない
      • 有名アプリは結構起動まではしてくれるが、細かい操作はできない。起動して終わり
      • Google製アプリはちょこっとだけ中途半端に操作できたりする(Keepとか)
      • マイナーアプリは今のところ、アプリ名を叫んでもWEB検索結果が返ってくるだけ
      • 時間がたつと学習して起動してくれる説もあり
    • 昔はAutoVoiceプラグインがGoogleNowサービスと連携して近いことができたらしい
      • 今はGoogleNowサービスが終了しちゃってそのやり方は使えない
    • AutoVoiceプラグイン自体を独自アシスタントとして登録して起動する
      • 独自コマンドは作れるが、Googleアシスタントが使えなくなるのでこの方法は断念した
waterz1815waterz1815

条件に合わないコマンドだった時は、再度アシスタントを起動させ、
キーボード入力でアシスタントにコマンドを再入力させる

・・・の箇所で、コマンドの再入力はできたが、そのあとの確定処理が有効にならずハマった。

頑張ってコマンドの最後にEnterを放り込むも、確定しない。
ソフトウェアキーボードのEnterを押すと確定する。

よくよくソフトウェアキーボード(GBoard)のEnterを見ると、マークが普段のリターン記号「↵」ではなく、「→」になってる。
SwiftKeyに変えてみると、今度はチェックマーク「✓」表示になってる。

ハハァ・・・、特殊なエンターキー文字に違いないと調べると、
enterkeyhintがヒット。

https://www.tohoho-web.com/html/attr/enterkeyhint.htm

エンターキーの表示や意味合いを変えれるらしい。
確かに検索時は、エンターキーの箇所が虫眼鏡になってるもんね・・・

enter
    入力
done
    完了
go
    進む
next
    次へ
previous
    前へ
search
    検索
send
    送信 

SwiftKeyのチェックマーク「✓」から考えて、Done・・・だろ・・・と思ったら反応せず、
正解は「Go」でした・・・。
・・・わからん・・・。

結果的には無事確定まで持って行けて良かった。