我的Android应用程序有大量远程托管的媒体文件(通过AWS(,有些包含嵌入的插图。 在播放这些音频媒体中的任何一个时,我希望使用我的默认图稿 - 在没有嵌入图稿时使用 - 代替。 我试过了
app:use_artwork="false"
app:default_artwork="@drawable/backgroundimage"
但与Javadocs似乎建议的结果相反,我当然只是得到一个黑色的背景。 (use_artwork="false"似乎真的意味着"不使用艺术品" - 而Javadocs暗示它意味着"不要使用嵌入式ID3艺术品"(
除了下载千兆字节的媒体文件并对所有文件进行批处理操作(这是一个问题,因为文件通常是动态添加的(,是否有一种解决方案可以抑制嵌入的艺术品并使用我的背景?
四处寻找,我发现了 https://github.com/mpatric/mp3agic,但这里的问题是文件是通过 Exoplayer 流式传输的,而不是下载供我以编程方式操作的。
在浏览了一下 Exoplayer 源代码之后,这就是我想出的。 这不是绝对理想的,因为在替换之前会快速闪烁嵌入的图像,但我认为这只是移动逻辑以找到最佳位置的问题。
我删除了app:use_artwork="false"
从我的activity_main.xml
在我的广播接收器中,在"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);