ストリーミング・メディア・プレーヤAmigo 7xJPの画面共有

AndroidTV準拠ストリーミング・メディア・プレーヤAmigo 7xJPで画面共有ができる必要がある。この機器はいずれ他人様宅に設置されることになっているが,その後も継続的に私がメンテしなくてはならないから。このお宅は決して自分にとって簡単に行ける場所にはないので,遠隔(リモート)でアクセスできるようにしておくことが必須。

TeamViewer

結論としてはTeamViewerを採用。NAT越え・セキュリティーの面倒を見てくれる,多数のプラットフォームにサーバ/クライアントが用意されている,といったところが選択の理由。SSHトンネリングはいずれにしろやらなければならないと思っているので,それ前提でVNCを利用することも考えたが,TeamViewerの方が圧倒的に楽。

ちなみにこの経験はこのお宅の主がご利用になっているHuawei Nova Lite 3を外部から操作するのにもそのまま流用できるしそのつもり。 “老人のスマホデビューを助けるには” で自分で有効な手段としてお勧めしていた画面共有がやっと実現できる。

インストール

Amigo 7xJP側にTeamViewer HostアプリTeamViewer Universal Add-onが必要になる。外部からの接続に常時対応できるためには,QuickSupportアプリやTeamViewerアプリでは力不足。HostアプリはAmigo 7xJP上のPlay Storeから普通にインストールできるが,Universal Add-onは「デバイスが互換ではない」とかいった理由でインストールできない。自分は代わりにAptoide TVからインストール。後者をインストールする前に前者をインストールして起動すると,アドオンのインストールが求められる。そのときインストール元としてAptoide TVを選ぶのが一番手間がかからないだろう。Windows PC側にはTeamViewerアプリ。

Hostアプリには「他のアプリの上にオーバーラップして表示する」権限,そしてアドオンにはユーザ補助(アクセシビリティー)へのアクセス権限を与えなければならない。どちらもシステムの設定メニューから設定できる。

  • Hostアプリにオーバーラップ表示を許可: Settings -> Apps -> Special app access -> Display over other apps (合わせて Special app access -> Energy optimization で省電力の対象から外しておく)
  • Universal Add-onアプリにアクセシビリティー機能を許可: Settings -> Device preferences -> Accessibility

アプリが親切心から設定画面を開いてくれようとするが,通常のAndroid端末との違いからか的外れの画面が開かれることがある。思わず「なんですと?」となるが,上のように自分で必要な設定画面に到達して設定すればよい。

画面共有の許可

何もなしに画面共有をしようとするとAmigo 7xJP側で右のような画面が表示され,許可を与えることを求められる。このままでは画面共有しようとするたびにAmigo 7xJP側で誰かが手動でこの許可を与えなければならない。これは激しく不便だが,このステップを省けるよう設定できる。

そのためにAdbを使って設定をしてやる必要がある。遠隔Adbのための準備は済んでいるので,”Android stop permission promt for screen recording – Stack Overflow” を参考に,PC上で

adb shell appops set com.teamviewer.host.market PROJECT_MEDIA allow

操作法

PCの物理キーボードでHomeキーがホームボタン代わりでBackspaceキーがバックボタン代わり。TeamViewerアプリ画面下部に表示されるバックボタンを表していると思われる◁ボタンや,ホームボタンを表していると思われる◯ボタンは動作しない。メニューボタンを表していると思われる横棒が縦に3本ならんでるアイコンのボタンも動作しない。

マウス操作は思うような結果になるとは限らない。これはひとえにAndroid TVは十字キー(D pad)を備えたリモコンで操作することを前提に作られていることによる。TeamViewerは現時点でそれに応じたキーコードを送信するようなお膳立てはないようなので,十字キーでの操作に特化したようなアプリはTeamViewerからは思うように操作できない。逆に,一般Androidアプリは普通に操作できる。Amigo 7xJP本体上で操作するときは,十字キーリモコンに対応していないアプリは場合によっては操作が非常に困難なのだが,PC上のTeamViewerからリモート・アクセスしたときはむしろ扱いやすいというのがなんとも皮肉。

TeamViewerでのアクセスを最初に試みたときには,「外部からはマウススクロールはできるのだがクリックによるアプリ起動のようなことはできない」のでTeamViewerからの遠隔操作は使い物にならないと判断した。しかしわかってみるとこれは早とちりの誤解だった。

Android TVの現時点でのホーム画面において,Appsの行に並ぶアイコンはクリックしても反応しない(上図)。ここは十字キーでのみアクセスできるようで,そのキーコードを送るすべのないTeamViewerでは直接アクセスできない。では希望のアプリを起動する方法はないのかというとそういうわけでもない。

まずその左端のAppsアイコンをクリックする。これにより画面右半分以上を覆う形でアプリのアイコンの表が提示される(右図)。この中にお目当てのアプリが見つかればそれをクリックすればいい。ここではクリックに反応する。

しかし,自分でサイドロードしたような一般Androidアプリはここには表示されない。そういったアプリを起動するには,ここに含まれている(自分でインストールした)Mix-Appsアプリを一旦起動し,そこからお目当てのアプリを見つけ,クリックして起動する。

十字キーなしではにっちもさっちも行かなくことはよく起こる。Google Play StoreアプリはAndroid TV用に完全にチューンしてあるため,逆にTeamViewerからはほとんど思うように操作できない

文字入力に関しても,デフォルトのAndroid TV仕様のGboardキーボードが十字キーでの操作を前提にしているため,TeamViewerからは全く操作できず文字入力できない。しかし他の仮想キーボードを使うことで不便ながらも遠隔に文字入力できるようにはできる

十字キーなしではにっちもさっちも行かなくもうひとつの例。アプリアイコンを表状に提示するとき,その位置を変えられることがある(図)。通常の状態ではアイコンを選択した状態でボタン長押し,アクセシビリティーのサポートのある状態では単なるボタン押しやクリックで図にあるようなメニューがポップアップ表示される。これの “Move” メニューアイテムを選ぶと,いわば並び替えモードになり,画面下部にそのための5つのボタンが表示される(次の図)。

直接移動先を指定できるポインティングデバイスがあれば必要ないUIだが,十字キーで移動をできるよう工夫した結果なのだろう。さてここで問題なのが,TeamViewerからこの画面に到達したとしても,これらボタンを押す手段が全くないこと。つまり,TeamViewerからは並び替えは全くできない直接Amigo 7xJPに対して付属リモコンで操作するしかないのだ。これによってAmigo 7xJPが決定的に使えなくなる,ということはないにしろ,使い勝手は地味に悪い。


また,一部アプリでは立ち上がったあとその画面は真っ黒な画面になってしまうことがあった。YouTubeはじめビデオストリーミングサービスのアプリで皆そうだが,この挙動はまぁ理にかなっている。この挙動はTeamViewerの機能の制限ではなく,著作権保護のためのAmigo 7xJP側の意図的な制限だろう。

自動起動

Hostアプリは自動起動してもらわなければ困る。自身でそういう機能は持っていないようなので,自動起動アプリを試してみたがうまくいかない。結局Automateアプリを使ってBOOT_COMPLETEDブロードキャストがあったときにアプリを起動するようにした。もちろんAutomateアプリ自身が自動起動するようにすること,また,省電力機能の餌食にならないよう設定。

しかしこれでも安定して立ち上がってくれない。ログを見てみるとネットワークに接続できていないのか?よくわからないが,BOOT_COMPLETEDを受け取ってから2分待ってからHostアプリを立ち上げるようにした。さらにその後1分経ってからホーム画面(Android TV Home com.google.android.tvlauncher)アプリを開く(実際には既に立ち上がっているのでフォアグラウンドに持ってくるだけ)。これはAmigo 7xJPをお使いの方が,それを立ち上げて画面を見たらTeam Viewer Hostアプリが開いていたら面食らうだろう,という配慮。

Hostアプリには「エコモード」なるモードがあるがこれは解除。これはアプリをフルに立ち上げておくのではなく,最小限のリスナを用意しておいて,外部から接続されたときにアプリを立ち上げる,という機能なんじゃないかと勝手に思っているが,ログを見てみると,それがうまく行きそうになかったから。

アプリのフリーズ等

ホーム画面はときどき固まったように見えることがある。PC側でHomeキーを叩くと解消することがある。NewPipeアプリは長時間使っているといずれ固まってしまう。Background Apps and Process List アプリで強制的に停止させた上で再起動して解決している。

Termux環境下のスクリプトで一部アプリを強制終了できるようにした

トラブル?

PC側のTeamViewerアプリを15.20.06にアップデートしたら,PC側で画面は見えるものの,遠隔操作できなくなった…と思われた。何か新しいバージョンでバグが入り込んだか,いや,今までは32bit版を使っていたが64bit版に変えたのがよくないか,いやHostアプリやAdd-onアプリをSDカードにインストールした形になっていたのがまずかったか…とかいろいろ考えたが最終的にはどれも外していたもよう。

結論としてはUniversal Add-onアプリのアクセシビリティーの設定が何らかの理由で外れていたのが理由のようだ。設定画面は何度も確認して,そこでは正しく設定されていたように見えていたので,ここでハマるとなかなか脱出できなくなる。Universal Add-onアプリを再インストールし,再度アクセシビリティーの許可をこのアプリに与えることで問題解消

ちなみに,どうやらアクセシビリティーにおいて有効化しているアプリがあると,ホーム画面でアイコンをクリックしたときの挙動が変わるようだ。通常はクリックすると期待された動作(例えば「開く」)がいきなり実行されるが,アクセシビリティーを有効化したアプリがある場合は,一旦ポップアップメニューが開くようだ。後者の挙動が観察されるからといって Universal Add-on アプリがちゃんと動いているという証拠にはならないが,そういった挙動が見られなければUniversal Add-on アプリに関して何か問題が起きていると考えてよい

TeamViewer以外に検討した他の画面共有の方法

この項整理していない。

droidVNC-NG – Apps on Google Play リポジトリrootなしでVNCサーバ D-padのサポートがない

Since Android 10, the permission to access the screen contents has to be given on each start and is not saved. You can, however, work around this by installing adb (or simply Android Studio) on a PC, connecting the device running droidVNC-NG to that PC and running adb shell cmd appops set net.christianbeier.droidvnc_ng PROJECT_MEDIA allow once.

GitHub – Genymobile/scrcpy: Display and control your Android device

Keyboard shortcuts: Ctrl-Shift-Esc · Issue #13 · bk138/droidVNC-NG · GitHub

Vysor

Webkey – Android remote device managementは遠隔操作にrootを要求する。

TeamViewer Hostアプリのログから気になるところ

2021/08/07 14:34:00.055 7575-7595 E/TeamViewer FirewallConsideration: Unable to open routing information.
2021/08/07 14:34:00.056 7575-7595 E/TeamViewer FirewallConsideration: Unable to open cache file.
2021/08/07 14:34:00.057 7575-7595 E/TeamViewer FirewallConsideration: Unable to open routing information.
2021/08/07 14:34:00.058 7575-7595 E/TeamViewer FirewallConsideration: Unable to open cache file.
...
2021/08/07 14:34:00.098 7575-8009 E/SessionEventUiInteractor register listener failed: we will not be able to receive package start requests

 

ストリーミング・メディア・プレーヤAmigo 7xJPの画面共有」への5件のフィードバック

  1. ピンバック: TeamViewerを介してアクセスしたAndroid TVでの文字入力 | あくまで暫定措置としてのブログ
  2. ピンバック: TermuxからBashスクリプトでダイナミックDNSレコードを更新 | あくまで暫定措置としてのブログ
  3. ピンバック: SSHトンネルでLAN内のAndroid TVに外部からアクセス | あくまで暫定措置としてのブログ
  4. ピンバック: Termux環境下でアプリを強制終了 | あくまで暫定措置としてのブログ
  5. ピンバック: ストリーミング・メディア・プレーヤAmigo 7xJPを使ってみて | あくまで暫定措置としてのブログ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください