android - 如何在 Android Auto 的媒体浏览器中更新默认错误文本?
问题描述
我正在开发 Android 自动媒体应用程序,当由于网络错误等原因加载项目失败时,我想设置自定义错误文本(或自定义背景文本)。默认情况下,只有两种极端情况:
onLoadChildren()
当 MediaBrowserServiceCompat 的方法返回一个空列表时,将显示“无项目”文本。- 带有感叹号图标的通用“出现问题”文本是发生错误的时间。
有什么办法可以更新一个或另一个?到目前为止,我发现只有一个媒体应用程序为 Android auto 中的第二个场景显示自定义消息。那是带有消息“Spotify 当前设置为离线”的 Spotify,尽管默认的错误图标是相同的。我在文档中找不到任何提及错误消息的MediaBrowserServiceCompat
内容,我将不胜感激。
到目前为止,我尝试设置媒体会话的错误状态并返回 null 作为结果:
@Override
public void onLoadChildren(@NonNull final String parentId, @NonNull final Result<List<MediaBrowserCompat.MediaItem>> result) {
// some logic ...
PlaybackStateCompat errorState = new PlaybackStateCompat.Builder()
.setActions(PlaybackStateCompat.ACTION_STOP)
.setErrorMessage(PlaybackStateCompat.ERROR_CODE_UNKNOWN_ERROR, "MY CUSTOM ERROR TEXT!").build();
mediaSession.setPlaybackState(errorState);
// result.sendError(new Bundle()); // <- does nothing
// result.sendResult(Collections.emptyList()); // default "No items" message will be displayed
result.sendResult(null); // <-- this should trigger an error
}
MediaBrowserServiceCompat.Result
有一个方法sendError
,但只能在自定义操作上调用(根据文档),并且没有如何使用它的示例:
解决方案
我找到了答案,MediaSessionCompat 的播放状态应该更新为 STATE_ERROR。这是显示错误的示例代码:
void setErrorState(String errorMessage) {
PlaybackStateCompat playbackState = new PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_ERROR, 0, 0f)
.setErrorMessage(
PlaybackStateCompat.ERROR_CODE_AUTHENTICATION_EXPIRED,
errorMessage
)
.build();
mediaSession.setPlaybackState(playbackState);
}
推荐阅读
- python - 如何修改 For 循环中的当前元素?
- excel - 将临时文件中的图像嵌入电子邮件时如何使用属性访问器
- ios - 快速检测 Viewcontroller 上的第一次触摸
- php - 在 PHP 中使用 cURL 解析错误发布数据
- kubernetes - 未完成的节点导出器 pod 的 Prometheus 错误在哪里?
- javascript - 给第一次 chrome 扩展开发者的安全建议
- sql - SQL - NOT LIKE 和 LIKE 只有字符
- sql - 根据另一个中的行数将多行插入表中
- python - 如何对熊猫数据框的产品求和?
- html - 设置弹性项目之间的垂直间隙