Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Kioskアプリと端末の作り方 ~DroidKaigi2018発表内容の要約+α~

More than 1 year has passed since last update.

はじめに

光栄なことに「Kioskアプリと端末の作り方」というテーマで DroidKaigi 2018 に登壇させて頂きました。
セッションにお越し頂いた方々、ありがとうございました!

本記事は発表内容の要約+オフィスアワーでのお話し、です。

本記事の対象者

本記事の対象者は下記の通りです。

  • セッションに参加したが、その後のオフィスアワーでどのような話があったのか気になる
  • セッションは不参加だが、要点だけをざっくり確認したい

発表動画

発表資料

GIFアニメ無し
https://speakerdeck.com/tomoya0x00/kioskapuritoduan-mo-falsezuo-rifang

GIFアニメ有り(環境によってはちょっとレイアウト崩れるかも)
https://docs.google.com/presentation/d/1K9-Tn13yRAyOmN480DhchDTchVANaUDMn5y4gvRpoLc/edit?usp=sharing

サンプルソース
https://goo.gl/ryz8mX

発表内容の要約

Kiosk端末とは?

  • 特定用途に特化した情報端末
  • 回転寿司屋や居酒屋に設置してあるタッチパネルなど

Kiosk端末の実現方法

  • DeviceOwnerをうまく活用する
    • 端末に様々な制約を課すことが出来る特別な管理者
    • Android 5.0から追加された
    • 基本的に端末の初期化が必要
  • Lock task mode
    • 特定アプリ以外への遷移を制限できる
    • DeviceOwnerで許可されたアプリだけが開始できる
  • 強制的にホームアプリ化
    • DevicePolicyManager#addPersistentPreferredActivity でできる
    • DeviceOwner権限が必要
  • DeviceOwner指定時の注意点
    • 端末のファクトリーリセット後、極力初期設定をスキップすること
    • WiFiやアカウント設定してしまうと、DeviceOwnerの指定に失敗することがある
      • 挙動は端末依存

活用事例紹介

実際のサービスで活用しているDeviceOwnerの機能紹介

  • サイレントインストール
  • ワイプ
  • USBデバッグOFF
  • スクリーンショットOFF

Kiosk端末開発のノウハウ

  • バッテリー残量と電波強度が表示されない
    • Lock task modeではステータスバーが表示されない
    • APIで取得してアプリ内で表示
  • ホームアプリ化すると再起動後にロック画面が表示される
    • 設定でロック画面無しにする
  • Kioskアプリが落ちると他画面に遷移できてしまう
    • 例外処理を横取りして自分自身を再起動させる
  • 端末起動直後のアップデート確認処理が毎回失敗する
    • 端末起動直後はネットワーク接続確立されてないので注意
    • リトライ回数や間隔を増やしましょう
  • ホームアプリ化が解除されない
    • DeviceOwner権限削除前にホームアプリ化解除 or セキュリティ->端末管理アプリからチェック外してadb uninstall
  • デバッグメニューが欲しい
    • Activityの邪魔にならない箇所にデバッグメニュー表示ボタンを置いておく

オフィスアワーでのお話し

※公開するとマズイお話しがある場合、ご連絡ください。

  • セーフモードではKioskアプリの起動を回避できてしまうのでは?
    • いいえ。回避は出来ず、Kioskアプリが起動します。
    • この回答は自分では無く、 DroidKaigi 2018 サポーター アイキューブドシステムズ 所属のエンジニア様が答えてくださいました!ありがとうございます。
  • ユーザー様側でKiosk端末化をお願いすることはできそうか?
    • NFCを使えばワンタッチでKiosk化できるみたいですが、試せていません。
    • 弊社では端末セットアップ手順書を作成し、キッティング作業を専用の会社様に委託しています。
  • Kioskアプリ自体をサイレントインストールでアップデートできるか?
    • 今回のサンプルソースでは試せていませんが、できると思います。
  • オフィスアワーで電源ボタン無効化の話題があったが、電源ボタンの長押しを onWindowFocuschanged() で検出(電源オフするか確認のダイアログが表示されるので)し、自分自身を起動することで回避できる。
    • 株式会社東京 のエンジニア様に教えていただきました!ありがとうございます!

最後に

発表準備は大変(公の場での発表はこれまで5分LTだけだったので)でしたが、
皆様からのフィードバックを頂き「発表して良かった!」という気持ちが強いです。
(特にKiosk化の苦労を分かち合えたのが嬉しい)

また、逆に開発ノウハウを教えて頂く事もあり、「情報を発信すると情報が集まってくる」を実感いたしました。

次はもっとうまく発表できるように頑張ります!

tomoya0x00
元は車載関連の組み込み屋。現在はAndroidアプリ作ってる。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away