如何为 Android Auto 更新媒体浏览器中的默认错误文本?
How to update default error text in media browser for Android Auto?
我正在开发 Android 汽车媒体应用程序,我想在由于网络错误等原因加载项目失败时设置自定义错误文本(或自定义背景文本)。默认情况下只有两个极端情况:
- "No items" 文本将在 MediaBrowserServiceCompat 的
onLoadChildren()
方法 returns 为空列表时显示。
- 发生错误时,带有感叹号图标的通用 "Something went wrong" 文本。
有什么方法可以更新一个或另一个吗?
到目前为止,我发现只有一个媒体应用程序在 Android 自动显示第二种情况的自定义消息。这是带有消息 "Spotify is currently set to offline" 的 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);
}
我正在开发 Android 汽车媒体应用程序,我想在由于网络错误等原因加载项目失败时设置自定义错误文本(或自定义背景文本)。默认情况下只有两个极端情况:
- "No items" 文本将在 MediaBrowserServiceCompat 的
onLoadChildren()
方法 returns 为空列表时显示。 - 发生错误时,带有感叹号图标的通用 "Something went wrong" 文本。
有什么方法可以更新一个或另一个吗?
到目前为止,我发现只有一个媒体应用程序在 Android 自动显示第二种情况的自定义消息。这是带有消息 "Spotify is currently set to offline" 的 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);
}