Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android Autoアプリ開発の今 −ナビゲーションアプリ開発から学ぶケーススタディ− (...

Android Autoアプリ開発の今 −ナビゲーションアプリ開発から学ぶケーススタディ− (DroidKaigi2024)

DroidKaigi2024に発表する「Android Autoアプリ開発の今 −ナビゲーションアプリ開発から学ぶケーススタディ−」の資料になります。

LY Corporation Tech

September 12, 2024
Tweet

More Decks by LY Corporation Tech

Other Decks in Technology

Transcript

  1. © LY Corporation 根岸 拓郎 LINEヤフー株式会社 Androidエンジニア 2 2019年〜 複数社でAndroidアプリ開発を経験

    2021年〜 LINEヤフー株式会社 中途⼊社 Yahoo!カーナビAndroid版アプリを担当 過去執筆:Yahoo! JAPAN Tech Blog 循環的複雑度に着⽬し10年モノのコードを改善する (Yahoo!カーナビのコード品質可視化と改善の歩み) https://techblog.yahoo.co.jp/entry/2023041030419798/
  2. © LY Corporation 新たな⾃動⾞向けアプリ品質レベル • Tier 1: Car differentiated:⾞内の様々なハードウェア、画⾯に最適化されたアプリ •

    Tier 2: Car optimized:⾞独⾃の体験を提供するアプリ • Tier 3: Car ready:⼤画⾯に対応し、最低限動作するアプリ Tier 3の対象を広げる動きがある • 対象アプリジャンル:Video、Game、Browserなど • すでにアダプティブ・⼤画⾯対応済みのモバイルアプリを積極的に審査する • 追加対応がほぼ無しでAndroid Auto/Automotive向けにアプリを公開できる • Early Accessのフォームがある 9 Google I/O 2024より より簡単にAndroid Auto対応が可能に https://android-developers.googleblog.com/2024/05/android-for-cars-bringing-more-apps-to-cars.html
  3. © LY Corporation 10 Android Autoとは https://developers.google.com/cars/design/create-apps/app-types/navigation?hl=ja • ⾃動⾞内でのAndroid端末やアプリ の操作を⾞載システムに最適化する

    仕組み • Google I/O 2024での発表によると、 新⾞の98%がAndroid Autoをサポー トしている • 様々な種類のアプリがある • Media、Browsers、Navigation、Point-of- Interest、Video、Game
  4. © LY Corporation Agenda 1 ナビゲーションアプリ開発の基本 2 Android Autoの画⾯ 3

    Android Autoのシミュレーター 4 Android Autoガイドラインの紹介 13
  5. © LY Corporation Agenda 1 ナビゲーションアプリ開発の基本 2 Android Autoの画⾯ 3

    Android Autoのシミュレーター 4 Android Autoガイドラインの紹介 14 概要・基礎 注意点・ポイント
  6. © LY Corporation 17 Android Autoで登場するクラス CarAppService Session Screen Template

    • CarAppService • Serviceを継承 • onCreateSession を使⽤して接続ごとに Session インスタンスを提供する https://developer.android.com/training/cars/apps?hl=ja#key-terms-concepts
  7. © LY Corporation 18 Android Autoで登場するクラス CarAppService Session Screen Template

    • CarAppService • Serviceを継承 • onCreateSession を使⽤して接続ごとに Session インスタンスを提供する https://developer.android.com/training/cars/apps?hl=ja#key-terms-concepts CarAppServiceは Sessionを返す
  8. © LY Corporation 19 Android Autoで登場するクラス CarAppService Session Screen Template

    • Session • ⾞の画⾯に情報を表⽰するためのエントリポイント • Android Auto上のアプリの状態を通知する • ライフサイクルがある https://developer.android.com/training/cars/apps?hl=ja#key-terms-concepts
  9. © LY Corporation 20 Android Autoで登場するクラス CarAppService Session Screen Template

    https://developer.android.com/training/cars/apps?hl=ja#key-terms-concepts SessionはScreenを返す • Session • ⾞の画⾯に情報を表⽰するためのエントリポイント • Android Auto上のアプリの状態を通知する • ライフサイクルがある
  10. © LY Corporation 21 Android Autoで登場するクラス CarAppService Session Screen Template

    • Screen • 表⽰するテンプレートをアプリから送信する機構 • ライフサイクルがある https://developer.android.com/training/cars/apps?hl=ja#key-terms-concepts ボタン類の設定
  11. © LY Corporation 22 Android Autoで登場するクラス CarAppService Session Screen Template

    • Screen • 表⽰するテンプレートをアプリから送信する機構 • ライフサイクルがある https://developer.android.com/training/cars/apps?hl=ja#key-terms-concepts 地図操作ボタン 類の設定
  12. © LY Corporation 23 Android Autoで登場するクラス CarAppService Session Screen Template

    • Template • 画⾯のテンプレート • ドライバーの注意を散漫しないように 設計されている • デベロッパーはテンプレートに沿う形で UI要素を構成できる https://developer.android.com/training/cars/apps?hl=ja#key-terms-concepts
  13. © LY Corporation 24 Android Autoアプリのライフサイクル https://developer.android.com/training/cars/apps?hl=ja#carappservice-session-screen-lifecycles • Session •

    LifecycleOwnerを継承している • Android Autoとの接続時に⽣成 • onCreateSessionで最初に表⽰する Screenを返す • onDestroyでパラメータのリセット、 後処理
  14. © LY Corporation 46 テンプレートの制約 https://developer.android.com/training/cars/apps?hl=ja#template-restrictions テンプレートには制限事項がある • スタックできるテンプレートの数は最⼤ 5

    つ • 最後(5つ⽬)のテンプレートは以下のいずれかでなければならない • NavigationTemplate • PaneTemplate • MessageTemplate 参考:【Android Auto】画⾯スタックとテンプレートでハマるポイント https://note.com/navitime_tech/n/n8d7ce9424847
  15. © LY Corporation Agenda 1 ナビゲーションアプリ開発の基本 2 Android Autoの画⾯ 3

    Android Autoのシミュレーター 4 Android Autoガイドラインの紹介 48 概要・基礎 注意点・ポイント
  16. © LY Corporation Agenda 1 ナビゲーションアプリ開発の基本 2 Android Autoの画⾯ 3

    Android Autoのシミュレーター 4 Android Autoガイドラインの紹介 49 概要・基礎 注意点・ポイント ポイント 開発中のつまずきやすいポイント 審査でリジェクトされやすいポイントを紹介
  17. © LY Corporation 54 Android Autoのシミュレーター https://developer.android.com/training/cars/testing/dhu?hl=ja ▪実⾏⼿順 ・ADB トンネリングを使⽤して接続する

    $ adb forward tcp:5277 tcp:5277 ・シミュレーターの起動 $ cd SDK_LOCATION/extras/google/auto $ ./desktop-head-unit
  18. © LY Corporation 55 Android Autoのシミュレーター シミュレーター起動後 通常のAndroid Autoと 同じ操作が可能

    マウスでボタンのタッ プ・地図の操作が可能 (C)Mapbox,(C)OpenStreetMap,(C)LY Corporation
  19. © LY Corporation 56 Android Autoのシミュレーター -cオプションでconfigファイルを複数指定可能 $ ./desktop-head-unit -c

    ./default_1080p.ini →1080p(1920x1080)のシミュレーターを起動 する (C)Mapbox,(C)OpenStreetMap,(C)LY Corporation
  20. © LY Corporation 57 Android Autoのシミュレーター configファイル(.ini)は編集可能 参考: https://developer.android.com/training/cars /testing/dhu?hl=ja#configure-dhu

    よく使う項⽬ ・resolution 800x480、1280x720、1920x1080 のいずれか ・instrumentcluster インストルメント クラスタを有効にする (後述)
  21. © LY Corporation 63 ⾞に対応したアプリのガイドライン https://developer.android.com/docs/quality-guidelines/car-app-quality https://developers.google.com/cars/design Car app quality

    ⾞向けアプリのチェックリストが⽤意されている アプリカテゴリごとの品質要件が記載されている Design for Driving 主にUI設計のガイドライン ドライバーの運転を妨げないように 注意を散漫させないように
  22. © LY Corporation ⽇中・夜間モード ナビゲーションをシミュレートする機能の提供 インストルメントクラスタへの対応 1 3 2 65

    特に注意が必要なガイドライン ナビゲーションインテントの対応 4 ロータリーモードへの対応 5 ポイント
  23. © LY Corporation 66 ⽇中・夜間モード Car app quality > The

    app must draw a light-themed or dark-themed map when instructed to do so https://developer.android.com/docs/quality-guidelines/car-app-quality https://developers.google.com/cars/design Design for Driving > ライトモードまたはダークモードの地図の描画を 求められた場合は、描画します。 (C)Mapbox,(C)OpenStreetMap,(C)LY Corporation
  24. © LY Corporation 69 ナビゲーションをシミュレートする機能の提供 https://developer.android.com/training/cars/apps/navigation?hl=ja#simulating-navigation > Google Play ストアへのアプリの送信時に、アプリのナビゲーション機能を

    検証するために、アプリで NavigationManagerCallback.onAutoDriveEnabled コールバックを実装する必要があります。 > このコールバックが呼び出されると、ユーザーがナビゲーションを開始した ときに、選択された⽬的地へのナビゲーションをシミュレートする必要があり ます。 ポイント
  25. © LY Corporation 72 インストルメントクラスタへの対応 「計器盤」 • スピードメーター • 燃料残量

    • など… Android Autoのディスプレ イとは別 ヘッドアップディスプレイ (HUD) もある 曲がる⽅向が正しい⽅向か https://developers.google.com/cars/design/create-apps/sample-flows/view-map-in-cluster?hl=ja ポイント