我制作了一个音乐播放器,我想保存专辑封面的图像。我应该在哪里放置所有图像:在Asset文件夹中还是在其他位置?图像数量很大,我希望在发布后可以在应用程序中使用这些图像。
我也尝试使用此方法通过URL获取图像
private Bitmap downloadBitmap(final String url) {
final MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(url, new HashMap<String, String>());
try {
final byte[] art = metaRetriever.getEmbeddedPicture();
return BitmapFactory.decodeByteArray(art, 0, art.length);
} catch (Exception e) {
Log.d("ALBUM ERROR", "Couldn't create album art: " + e.getMessage());
return null;
}finally {
metaRetriever.release();
}
}
但图像加载速度很慢。这就是我尝试将图像保存在应用资产文件夹中的原因,因此如果应用程序已发布,则图像始终存在。
答案 0 :(得分:1)
您应该阅读有关可用存储选项的Offical Documentation,如何访问它们以及使用哪些存储选项。
assets属性文件夹用于保存随应用程序一起提供的文件,而不是您以后动态创建的文件。此外,既然你提到会有很多图像你应该注意不要浪费空间&#34;内部存储&#34;因为一些(较旧的)设备的内部空间非常有限。
我建议您使用&#34;外部存储&#34;正如你所说,将有相当多的图像。我无法看到专辑艺术文件需要私有,所以这样的公共位置就可以了,尽管您可以选择使用私有存储来隐藏媒体扫描仪中的图像以及显示在用户中的所有图像&# 39;画廊。
调用它&#34;外部&#34;并不一定意味着它是外部的,例如可移动的SD卡。某些设备会在内部存储器上模拟此存储。但您应该处理实际上是外部硬件位置并且用户已移除或卸载介质的情况。
答案 1 :(得分:0)
如果您对服务器端编程有任何经验,我建议您自己在廉价主机(例如DigitalOcean)中托管一个简单的服务器,或者您可以尝试另一种更简单的休息API解决方案,例如Parse。
我个人非常喜欢Digital Ocean,因为它每月仅需5美元,内存为20 GB。唯一的缺点是您必须熟悉使用命令行来托管您的服务器:)