1 Android for Cars介绍

构建可帮助用户在行车过程中通过 Android Automotive OS 和 Android Auto 进行连接的应用
可以分为两类:

  • Android Automotive OS
    • 拥有搭载 Android Automotive OS 的车辆的用户可以将应用安装到其车辆的信息娱乐系统中
    • Android Automotive OS 是一款 Android 信息娱乐系统,专门内置到了车辆中。车载系统是专为车辆优化的独立 Android 设备。
    • 用户不用使用手机应用,而是直接在音响主机上安装驾驶员优化的应用版本。
  • Android Auto :
    • Android Auto 提供了针对驾驶员优化的应用体验,适用于使用 Android 手机和 Android Auto 应用但没有 Android Automotive OS 车辆的用户
    • 将手机(Android 5.0 或更高版本)连接到兼容的车辆上,
    • 如果用户的汽车或售后市场立体音响系统支持 Android Auto,则可以通过连接手机直接在汽车显示屏上使用您的应用。

2 Cars 支持的应用类型

Android Automotive OS 和 Android Auto 并不支持所有类型的应用

  • 媒体应用类型

    • 构建媒体应用(音乐,电台和有声读物播放器),用户可以将这些应用安装到车辆或者通过手机投影到车内
    • 应用允许用户在车内浏览和播放音乐和语音内容
  • 即时通讯应用

    • 构建即时通讯应用,用于接受传入通知、使用文字转语音阅读消息,并且让用户在行车过程中使用语音通过Android Auto 进行回复
    • 允许用户接收传入通知,使用文字转语音功能阅读信息,以及通过车载语音输入发送回复

3 汽车媒体应用构建

1.关键术语和概念

  • 媒体浏览服务
    媒体应用实现且符合 MediaBrowseServiceCompat API 要求的 Android 服务。应用使用此服务将媒体浏览内容公开给 Android Automotive OS 和 Android Auto。
  • 媒体浏览
    媒体应用用于将内容公开给 Android Automotive OS 和 Android Auto 的 API。
  • 媒体项
    媒体浏览树中单个 MediaBrowserCompat.MediaItem 对象。
  • 媒体项类型包括:

    • 可播放项:这类媒体项表示实际的声音流,如专辑歌曲、图书章节或播客剧集。既可浏览又可播放的媒体项被视为可播放项。
    • 可浏览项:这类媒体项将可播放的媒体项整理成组。例如,您可以将多个章节分组为一本图书,将多首歌曲分组为一张专辑,或者将多个剧集分组为一个播客。
  • 车辆优化

    • 只有在车载用户体验限制 (CUXR) 未生效时才允许显示车辆优化界面,因为这些界面可能需要用户长时间关注或互动。汽车处于停车状态时 CUXR 不起作用,但在汽车行驶时始终有效。
    • 遵循 Android Automotive OS 设计指南
    • 设计原则包括使用较大的点按目标和字体大小、支持日夜模式以及提高对比度。

2 配置应用的清单文件
需要配置应用的清单文件,以表明您的应用适用于 Android Automotive OS,并且您的手机应用支持 Android Auto 的媒体服务。

  • 声明对 Android Automotive OS 的支持
         
  • 声明 Android Auto 媒体支持
          

清单条目引用了一个 XML 文件,用于声明您的应用支持的车载功能。要表明您有媒体应用,请将名为 automotive_app_desc.xml 的 XML 文件添加到项目的 res/xml/ 目录中。此文件应包含以下内容:

            
  • 声明媒体浏览服务
    Android Automotive OS 和 Android Auto 均可通过媒体浏览服务连接到您的应用,以便浏览媒体项。在清单中声明媒体浏览服务,以便让 Android Automotive OS 和 Android Auto 能够发现服务并连接到您的应用

                                               
  • 构建媒体浏览服务
    通过扩展 MediaBrowserServiceCompat 类来创建媒体浏览服务。然后,Android Automotive OS 和 Android Auto 可以使用您的服务执行以下操作

  • 浏览应用的内容层次结构,以向用户展示菜单。

  • 获取应用的 MediaSessionCompat 对象的令牌,以便控制音频播放

  • 媒体浏览服务工作流
    Android Automotive OS 和 Android Auto 如何与媒体浏览服务互动

  1. 用户在 Android Automotive OS 或 Android Auto 中启动您的应用。
  2. Android Automotive OS 或 Android Auto 使用 onCreate() 方法与应用的媒体浏览服务联系。在 onCreate() 方法的实现中,您必须创建并注册 MediaSessionCompat 对象及其回调对象。
  3. Android Automotive OS 或 Android Auto 调用服务的 onGetRoot() 方法,以获取内容层次结构中的根媒体项。根媒体项不会显示出来,而是用于从您的应用中检索更多内容。
  4. Android Automotive OS 或 Android Auto 调用您的服务的 onLoadChildren() 方法来获取根媒体项的子项。Android Automotive OS 和 Android Auto 会将这些媒体项显示为顶级内容项。顶级内容项应该是可浏览项。
  5. 如果用户选择了可浏览媒体项,系统会再次调用您的服务的 onLoadChildren() 方法,以检索所选菜单项的子项。
  6. 如果用户选择了可播放媒体项,Android Automotive OS 或 Android Auto 会调用相应的媒体会话回调方法来执行该操作。
  7. 如果您的应用支持,用户还可以搜索您的内容。这时,Android Automotive OS 或 Android Auto 会调用您的服务的 onSearch() 方法。
  • 构建内容层次结构
    Android Automotive OS 和 Android Auto 调用应用的媒体浏览服务,以查找可用内容。为提供相应支持,您需要在浏览服务中实现 onGetRoot() 和 onLoadChildren() 这两种方法
  1. 实现 onGetRoot,服务的 onGetRoot() 方法返回有关内容层次结构根节点的信息
  2. 实现 onLoadChildren() Android Automotive OS 和 Android Auto 会在根节点对象上调用 onLoadChildren() 来获取其子节点,以构建顶级菜单。客户端应用使用子节点对象调用同一方法来构建子菜单。
  3. 显示可浏览的搜索结果 onSearch() 来实现搜索
    具体的实现需要去参考官方文档 ?
    官方链接
  • 注册媒体会话
    在媒体浏览服务的 onCreate() 方法中,创建 MediaSessionCompat,然后通过调用 setSessionToken() 注册媒体会话
    实现播放命令
    当用户从您的应用请求播放媒体项时,Android Automotive OS 和 Android Auto 会使用从应用的媒体浏览服务获取的 MediaSessionCompat 对象的 MediaSessionCompat.Callback 类。当用户想要控制内容播放时,例如暂停播放或跳至下一曲目,Android Automotive OS 和 Android Auto 会调用其中一个回调对象的方法。

具体方法:

  1. onPrepare():在媒体来源改变时调用。Android Automotive OS 也会在启动后立即调用此方法。您的媒体应用必须实现此方法
  2. onPlay():如果用户在未选择特定项的情况下选择播放,则调用此方法。您的应用应播放其默认内容。如果之前通过 onPause() 暂停了播放,您的应用应继续播放。但是当刚开始链接的时候是不应该播放的
  3. onPlayFromMediaId() 在用户选择播放特定项时调用。系统会将您的媒体浏览服务为内容层次结构中的媒体项分配的 ID 传递给这个方法
  4. onPlayFromSearch() 在用户选择从搜索查询中播放时调用。应用应根据传入的搜索字符串做出适当的选择
  5. onPause() 在用户选择暂停播放时调用。
  6. onSkipToNext() 在用户选择跳至下一项时调用。
  7. onStop() 在用户选择停止播放时调用

更多相关文章

  1. Android(安卓)NDK带来什么
  2. Android中包含多个Activity的应用退出按钮实现
  3. Android简明开发教程九:创建应用程序框架
  4. 使用Qt5.9开发Android(安卓)应用程序(Windows平台篇)
  5. Android开发工具
  6. android api code学习--第一个比较完整的应用
  7. Android学习系列之一
  8. Android模拟器环境中安装和删除应用程序
  9. Android(安卓)NDK带来什么

随机推荐

  1. Android Developers 系列 01 - Introduct
  2. 重新解压打包android 根文件系统 ramdisk
  3. Android app 升级:android:versionCode和a
  4. 怎样搭建Android开发平台
  5. Windows下Camtasia Studio的安装与卸载
  6. android 开发技巧(5)--使 用 TextSwitche
  7. 【Android小经验】android:gravity和andr
  8. Android中webView与h5交互
  9. Android和Linux关系
  10. Android CTS 兼容性测试