Android 汽车媒体应用 - 如何更改自定义操作图标

Android Auto media app - How to change custom action icon

我正在开发 Android 汽车媒体应用程序,目前正在创建一些自定义操作。 我创建了一个自定义操作来设置播放器重复模式,并且我使用的是 Exoplayer 图标,它运行良好。 但是,现在我正在处理一个自定义操作来切换随机播放模式。我创建了 2 个矢量可绘制对象作为图标,两者之间的区别只是颜色(启用白色,禁用灰色)。

    private inner class ShuffleModeActionProvider : MediaSessionConnector.CustomActionProvider {

    override fun getCustomAction(player: Player): PlaybackStateCompat.CustomAction? {
        val actionLabel: CharSequence = "Shuffle Mode"
        val iconResourceId: Int = if (player.shuffleModeEnabled) {
            R.drawable.ic_shuffle_on
        } else {
            R.drawable.ic_shuffle_off
        }

        return PlaybackStateCompat.CustomAction.Builder(ACTION_SHUFFLE_MODE, actionLabel, iconResourceId).build()
    }

    override fun onCustomAction(player: Player, action: String, extras: Bundle?) {
        player.shuffleModeEnabled = !player.shuffleModeEnabled
    }
}

当我测试它时,它只显示 ic_shuffle_on,白色图标。该按钮正在工作,并且正在随机播放播放列表,但图标没有改变。如果我打印 iconResourceId,它会在两个图标 ID 之间变化,但视觉显示仍然只显示白色。 Android Auto 是否有人遇到过类似问题?

谢谢。

在与这些自定义操作图标斗争了很长时间之后,我终于能够让它工作了。 显然,DHU 无法立即识别创建的自定义图标。因此,每次我添加新图标时,DHU 都会随机显示与我创建的图标不匹配的图标。 我试过从手机上卸载应用程序,也重新启动DHU,但即使它不能识别新图标。

我让它工作的唯一方法是按照以下步骤操作:

  1. 关闭 DHU 如果是 运行
  2. 如果您的手机安装了该应用程序,请将其卸载
  3. 停止手机主机服务器
  4. 重启手机
  5. 安装应用程序
  6. 启动主机服务器
  7. 运行您电脑中的DHU

完成这一步后,DHU 能够识别出有新的自定义图标,并相应地更新显示。

我尝试了多种方法,包括但按顺序执行这些步骤是我让它起作用的唯一方法。如果您遇到同样的问题并找到其他解决方法,请告诉我!