Java 在将应用发布到市场之前,在何处保存图像?

Java 在将应用发布到市场之前,在何处保存图像?,java,android,image,audio-player,android-music-player,Java,Android,Image,Audio Player,Android Music Player,我制作了一个音乐播放器,我想为专辑艺术保存图像。我应该将所有图像放在哪里:在资产文件夹中还是其他地方?图片数量很大,我希望发布后应用程序中的图片可用 我还尝试用这种方法通过URL获取图像 private Bitmap downloadBitmap(final String url) { final MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever(); metaRetriever.s

我制作了一个音乐播放器,我想为专辑艺术保存图像。我应该将所有图像放在哪里:在资产文件夹中还是其他地方?图片数量很大,我希望发布后应用程序中的图片可用

我还尝试用这种方法通过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();
        }
    }
私有位图下载位图(最终字符串url){
final MediaMetadataRetriever metaRetriever=新的MediaMetadataRetriever();
setDataSource(url,newHashMap());
试一试{
最后一个字节[]art=metaRetriever.getEmbeddedPicture();
返回BitmapFactory.decodeByteArray(艺术,0,艺术长度);
}捕获(例外e){
Log.d(“唱片集错误”,“无法创建唱片集艺术:+e.getMessage());
返回null;
}最后{
metaRetriever.release();
}
}

但是图像加载非常慢。这就是为什么我尝试将图像保存在app asset文件夹中,以便在app发布时图像始终存在。

您应该通读有关可用存储选项、如何访问它们以及使用哪些选项的信息

“资产”文件夹用于保存应用程序附带的文件,而不是稍后动态创建的文件。此外,由于您提到会有许多图像,您应该注意不要在“内部存储”上浪费空间,因为某些(较旧)设备的可用内部空间非常有限

我建议你使用“外部存储”,因为你说会有很多图像。我也看不到需要私有的相册艺术文件,所以像这样的公共位置也可以,尽管您可能会选择使用私有存储来隐藏媒体扫描仪中的图像以及用户画廊中显示的所有图像


称之为“外部”并不一定意味着它是外部的,例如可移动SD卡。某些设备在内部内存上模拟此存储。但是您应该处理这样的情况,即is实际上是一个外部硬件位置,并且用户已删除或卸载了介质。

如果您有服务器端编程的经验,我建议您自己在一个便宜的主机(例如)中托管一个简单的服务器,或者您可以尝试其他更简单的rest api解决方案(例如)


我个人非常喜欢Digital Ocean,因为它每月只有5美元,存储容量为20GB。唯一的缺点是您必须熟悉使用命令行托管服务器:)

Samuh在这里给出了一个非常全面的答案