С Exoplayer2, как всегда использовать обложку по умолчанию (даже если в аудио есть встроенная обложка?) - PullRequest
1 голос
/ 30 сентября 2019

В моем Android-приложении имеется большой объем удаленно размещенных мультимедийных файлов (через AWS), а некоторые содержат встроенные изображения. При воспроизведении любого из этих аудио носителей я хотел бы, чтобы вместо него использовались мои стандартные изображения, которые используются, когда нет встроенных изображений. Я пробовал

app:use_artwork="false"
app:default_artwork="@drawable/backgroundimage"

Но вопреки тому, что Javadocs, кажется, предлагает, результат, я, конечно, просто получаю черный фон. (use_artwork = "false" действительно означает «не использовать иллюстрацию» - хотя Javadocs намекает на то, что это означает «не использовать встроенную иллюстрацию ID3»)

Если не загружать гигабайты медиафайлов ипакетная операция на всех них (проблема, потому что файлы часто добавляются динамически), есть ли решение, в котором я могу подавить встроенную иллюстрацию и использовать свой фон?

Немного ковыряясь, я нашел https://github.com/mpatric/mp3agic, но проблема здесь в том, что файлы передаются через Exoplayer, а не загружаются для программного управления.

1 Ответ

1 голос
/ 30 сентября 2019

Пройдя немного по источнику Exoplayer, я пришел к такому выводу. Это не совсем идеально, потому что перед заменой происходит быстрое мигание встроенного изображения, но я думаю, что это просто вопрос перемещения логики вокруг, чтобы найти лучшее место.

Я удалил app:use_artwork="false" из моего activity_main.xml

В моем BroadcastReceiver, после события «trackChanged», я добавил это (аналогично тому, что делается внутри самой библиотеки Exoplayer):

Bitmap artWork = BitmapFactory.decodeResource(getResources(), R.drawable.backgroundimage);
ImageView aw = (ImageView) findViewById(R.id.exo_artwork);
aw.setImageBitmap(artWork);
aw.setVisibility(View.VISIBLE);
...