android - 使用 Exoplayer2,如何始终使用默认图稿(即使音频已嵌入图稿?)
问题描述
我的 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中删除了
在我的 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);
推荐阅读
- c# - 如何在我的控制器中提取从邮递员以 zip 文件形式发送的文件
- angular - 使用前端 Angular 进行 CAS 身份验证
- sql - 在 where 子句中使用子查询来查找第二小的值
- r - 如何找到几列之间的差异
- amazon-web-services - 如何在亚马逊云端设置缓存控制标头?
- java - 如何从java中的文本文件中获取长度?
- mysql - 大约 4 周后,while 循环刚刚停止工作,没有问题
- node.js - 防止 NoSQL 注入:猫鼬不应该根据给定的模式转换输入吗?
- scala - 从 Kafka 获取错误的偏移量
- ios - 如何使用 Firebase 分析事件。以及我们如何从 Firebase 控制台进行管理