Rebounder Tech Blog

運用している当事者が書く、本番システムの記録。

Google TV をキオスク化して数ヶ月運用した記録

公開 読了時間 約3分執筆: Rebounder 開発チーム(当該システムの運用当事者)

※本記事にはアフィリエイトリンクを含む場合があります。内容は広告の有無に影響されません。

結論

Google TV をサイネージ専用機にする作業の大半は表示ではなく電源と権限であり、キオスク化の中核である Device Owner は端末に Google アカウントが1つも無い状態でしか設定できない。

結論から

数ヶ月ノータッチで動いています。ただし、そこに至るまでの作業のほとんどは表示とは無関係でした。

Web ページを全画面で映すだけなら数分で終わります。難しいのは「人が触らない前提で、何ヶ月も勝手に動き続ける」ほうで、実際に潰すことになったのは次の3つでした。

  • リモコンやホームボタンで、いつの間にか別アプリへ抜ける
  • 省エネ設定で夜中に画面が消え、朝になっても戻らない
  • 一度フリーズや停電が起きると、誰かが手で復帰させるまで真っ黒

派手なコードは一行も要りませんでした。電源・権限・機種依存、この3つだけです。

構成

Raspberry Pi と Chromium でキオスクを組む選択肢もありましたが、Android が最初から持っている「端末を丸ごと支配する仕組み」に乗ることにしました。テレビ型なら画面・電源・音が一体で、置くだけで完結します。

必要なものは Google TV 端末と、PC から adb でつなぐ環境だけです。端末側で開発者モードを開けば準備は終わりです。

中核は Device Owner

Android には Device Owner(端末所有者) という強い権限があります。企業が配る業務端末をロックダウンするための仕組みで、これを自作アプリに与えると、追加の許可なしで次のことができます。

  • 画面を1つのアプリに固定する(ホームも戻るも効かない)=キオスク化
  • 夜間は画面のバックライトだけを OFF にし、本体は起こしたままにする

肝は 消灯しても本体は生きていることです。ここで本体ごとスリープさせると、リモートからの復帰も効かなくなり、「復帰不能」の温床になります。消すのは画面だけ、頭は起こしておく。

踏んだ罠

① アカウントが1つでもあると、所有者になれない

Device Owner は「端末に Google アカウントが1つも無い」状態でしか設定できません。初期設定でうっかりログインすると詰みで、factory reset からやり直しになります。

セットアップ中に一瞬ネットワークを切ってアカウント追加を飛ばす、が現実的な回避策でした。

② 権限が無いと、機能が無言で死ぬ

連携している人感センサがまったく反応しない。エラーも例外も出ない。

原因は位置情報権限が未付与だっただけでした。BLE スキャンは位置情報が無いと何も言わずに0件を返します。ログにすら出ません。

この手の「無言の失敗」が、いちばん時間を溶かしました。丸一日です。

③ テレビ本体のタイマーは、コマンドで消せない

ソフト側で徹底的に「消えない設定」を入れたのに、夕方になると箱ごと電源が落ちる。

犯人はテレビのファームウェアが持つ電源オフタイマーで、adb の設定では消えませんでした。結局、テレビ本体のメニューから手で切るしかありません。

「設定を入れたつもり」がいちばん危険です。

④ 設定が黙って無視される機種がある

そもそも「画面を消さない」系の設定は、メーカーによって適用したフリで無視されることがあります。

なので夜間消灯は、真っ黒のオーバーレイをかぶせる擬似消灯を既定にしました。どんな機種でも朝は必ず戻るほうへ倒した形です。確実性を取って省電力を捨てました。

4つの罠に共通していたこと

並べてみると、性質が揃っています。どれも「失敗したことに気づけない」形をしています。

  • ①は、詰んだことが factory reset の段階まで分からない
  • ②は、エラーも例外もログも出ない
  • ③④は、設定した側は成功したと思っている

つまり問題は難易度ではなく可視性でした。難しくて解けないのではなく、失敗したまま先に進めてしまう。だから時間が溶けます。

対策として実際に効いたのは、コードではなく順序でした。確認できない設定に依存せず、確認できる形に倒すという一点です。夜間消灯で擬似消灯を既定にしたのがまさにそれで、機種ごとの「消えない設定」が効いたかどうかは確かめられませんが、オーバーレイが乗っているかは見れば分かります。

確実性を取って省電力を捨てた判断は、いまのところ正解でした。

向いている場合とそうでない場合

常時表示の端末を人手をかけずに何ヶ月も回したいなら、手離れは非常によいです。置いてから数ヶ月ノータッチで動いています。

逆に、GUI だけで完結させたい場合や、コマンドを1回も打ちたくない場合は、市販のサイネージ製品や既製のキオスクアプリを使うほうが合っています。Device Owner まで持っていくコストは、台数が増えて初めて回収できます。

よくある質問

Q1Device Owner の設定に失敗したらどうなりますか?

端末に Google アカウントが1つでも存在すると Device Owner は設定できません。初期設定でログインしてしまった場合、factory reset からやり直しになります。セットアップ中に一時的にネットワークを切り、アカウント追加を飛ばすのが現実的な回避策です。

Q2夜間は画面を消したいのですが、スリープさせてはいけないのですか?

本体ごとスリープさせると復帰しなくなる恐れがあります。消すのは画面のバックライトだけにして、本体は起こしたままにします。機種によっては消灯の設定自体が無視されるため、黒いオーバーレイをかぶせる擬似消灯のほうが確実です。

Q3Raspberry Pi でキオスクを組むのとどちらがよいですか?

画面・電源・音が一体で、置くだけで完結するのが Android 側の利点です。一方で Device Owner の可否や電源まわりの挙動が機種依存になります。構成の比較は別記事にまとめています。