如何调试Timber添加Android Auto支持时的「获取您的选择...」异常
Android Auto 播放控制/进度不显示问题排查方案
一、针对性调试步骤
- 配置专属日志过滤:在Logcat中设置过滤条件
tag:MediaBrowserService tag:MediaSession tag:CarAppService tag:PlaybackState,捕获车载媒体核心组件的交互日志;同时在手机端Android Auto应用中连续点击版本号7次开启调试模式,打开「启用车载调试日志」,获取更详细的车载交互细节。 - 验证MediaSession状态同步:播放开始后,主动打印
MediaSessionCompat.getController().getPlaybackState()的完整信息,确认是否正确设置了STATE_PLAYING状态、实时进度值、播放速度;检查是否在播放状态变化时调用PlaybackStateCompat.Builder.build()并通过MediaSessionCompat.setPlaybackState()完成状态更新。 - 排查MediaBrowserService连接逻辑:在
MediaBrowserServiceCompat的onGetRoot、onLoadChildren方法中添加日志,确认车载端是否成功获取媒体列表,以及选歌后是否触发了正确的播放指令传递;检查MediaSessionCompat.Callback的onPlay、onPlayFromMediaId等回调是否被触发,确认指令从车载端到应用端的通路是否正常。 - 查看车载模拟器本地日志:通过Android Studio的「Device File Explorer」,访问车载模拟器的
/data/data/com.google.android.projection.gearhead/files目录,查看该目录下的日志文件,这里会记录车载应用与第三方媒体应用的交互细节,可能包含Logcat未显示的警告信息。
二、Android Auto 媒体应用的预期行为与必达要求
预期行为
选中歌曲后,车载界面应立即切换到播放控制页,显示歌曲封面、标题、艺术家信息,同时展示播放/暂停、上一首/下一首控制按钮,以及实时更新的播放进度条;播放状态变化需实时同步到车载端,界面元素即时响应。
可能未满足的核心要求
- PlaybackState配置缺失:播放开始时必须构建包含
setState(STATE_PLAYING, 当前进度, 播放速度)的PlaybackStateCompat对象,并同步到MediaSession。若进度设为POSITION_UNKNOWN或未设置正确播放状态,车载端会显示「获取您的选择...」,无法加载控制元素。 - MediaSession与MediaBrowserService未正确关联:确保
MediaBrowserServiceCompat的onCreate方法中正确初始化MediaSessionCompat,并调用setSessionToken(getSessionToken()),让车载端能通过服务绑定获取会话信息。 - 媒体元数据未同步:播放时需通过
MediaMetadataCompat.Builder设置歌曲标题、艺术家、时长等元数据,并调用MediaSessionCompat.setMetadata()。缺少元数据会导致车载端无法识别播放内容,无法加载控制界面。 - 车载会话回调未实现:必须实现
MediaSessionCompat.Callback的核心方法(onPlay、onPause、onSkipToNext等),并确保这些方法能正确控制应用内的播放逻辑。若回调未实现或未关联到MediaSession,车载端无法发送控制指令,也无法获取播放状态。
内容的提问来源于stack exchange,提问作者LOST
相关产品推荐
相关产品推荐

