Я работаю над мультимедийным приложением для Android Auto и в настоящее время создаю некоторые настраиваемые действия. Я создал пользовательское действие, чтобы установить режим повтора плеера, и я использую значки 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, он изменится между обоими идентификаторами значков, но на визуальном дисплее останется только белый цвет. У кого-нибудь были подобные проблемы с Android Auto?
Спасибо.
После долгой борьбы с этими пользовательскими значками действий я смог заставить их работать. Судя по всему, DHU не сразу распознает созданные пользовательские значки. Поэтому каждый раз, когда я добавлял новый значок, DHU отображал случайные значки, которые не соответствовали тому, что я создал. Я пытался удалить приложение с мобильного телефона, а также перезапустить DHU, но даже несмотря на то, что он не распознавал новые значки.
Единственный способ заставить его работать - это выполнить следующие шаги:
После всего этого шага DHU может распознать наличие новых пользовательских значков и соответствующим образом обновить отображение.
Я пробовал несколько подходов, в том числе, но следование этим шагам по порядку было единственным способом заставить его работать. Если у вас возникнет такая же проблема и вы найдете другой способ ее решения, дайте мне знать!