Google Android for Cars的整理Android Automotive OS(一)

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 的支持
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
             package="com.example.media">
      <uses-feature
              android:name="android.hardware.type.automotive"
              android:required="true"/>
   </manifest>
  • 声明 Android Auto 媒体支持
<application>
       <meta-data android:name="com.google.android.gms.car.application"
           android:resource="@xml/automotive_app_desc"/>
   <application>

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

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

    <application>
         <service android:name=".MyMediaBrowserService"
                  android:exported="true">
             <intent-filter>
                 <action android:name="android.media.browse.MediaBrowserService"/>
             </intent-filter>
         </service>
     <application>
     
    
  • 构建媒体浏览服务
    通过扩展 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() 在用户选择停止播放时调用
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值