Java 下载带有元数据/属性(如标题、艺术家等)的mp3

Java 下载带有元数据/属性(如标题、艺术家等)的mp3,java,android,mp3,metadata,Java,Android,Mp3,Metadata,我有以下代码。当我使用默认的音乐播放器播放时,除了下载的MP3文件没有任何属性(元数据),例如艺术家、标题等,其他一切都正常工作。如果尝试直接使用android浏览器从站点下载相同的mp3文件,并使用默认音乐播放器播放,则所有metatdata都是完整的(即音乐播放器显示标题、艺术家等) 下载完成后,系统内容提供商没有立即更新。 尝试重新启动emulator或安装/取消安装sd卡,查看内容提供商是否更新 uri是MediaStore.Audio.Media.EXTERNAL\u CONTENT\

我有以下代码。当我使用默认的音乐播放器播放时,除了下载的MP3文件没有任何属性(元数据),例如艺术家、标题等,其他一切都正常工作。如果尝试直接使用android浏览器从站点下载相同的mp3文件,并使用默认音乐播放器播放,则所有metatdata都是完整的(即音乐播放器显示标题、艺术家等)


下载完成后,系统内容提供商没有立即更新。 尝试重新启动emulator或安装/取消安装sd卡,查看内容提供商是否更新

uri是
MediaStore.Audio.Media.EXTERNAL\u CONTENT\u uri
,您可以通过查询
MediaStore.Audio.Media.DATA、MediaStore.Audio.Media.TITLE、,
MediaStore.Audio.Media.COMPOSER、MediaStore.Audio.Media.ALBUM、,
MediaStore.Audio.Media.ARTIST
和其他(都在MediaStore.Audio.Media.*中)


如果您想立即获得信息,也许您应该自己更新内容提供商手册。

下载完成后,系统内容提供商没有立即更新。 尝试重新启动emulator或安装/取消安装sd卡,查看内容提供商是否更新

uri是
MediaStore.Audio.Media.EXTERNAL\u CONTENT\u uri
,您可以通过查询
MediaStore.Audio.Media.DATA、MediaStore.Audio.Media.TITLE、,
MediaStore.Audio.Media.COMPOSER、MediaStore.Audio.Media.ALBUM、,
MediaStore.Audio.Media.ARTIST
和其他(都在MediaStore.Audio.Media.*中)


如果您想立即获得信息,也许您应该自己更新内容提供商手册。

谢谢JohnCookie。我使用默认的mp3播放器立即播放mp3文件,但它不显示标题、艺术家等。我在手机中尝试了这一点。(不在emulator中)。但在我使用android浏览器下载后,我试着播放了这首歌,它显示了标题、艺术家等。应该是系统数据库没有立即更新细节。系统MediaPlayer应用程序也通过URI获取信息,是否尝试手动更新?(我不确定,我只知道我们可以通过contentProvider获得媒体详细信息,当设备重新启动或sd卡重新加载时,它会自动更新)谢谢Johncokie。我使用默认的mp3播放器立即播放mp3文件,但它不显示标题、艺术家等。我在手机中尝试了这一点。(不在emulator中)。但在我使用android浏览器下载后,我试着播放了这首歌,它显示了标题、艺术家等。应该是系统数据库没有立即更新细节。系统MediaPlayer应用程序也通过URI获取信息,是否尝试手动更新?(我不确定,我只知道我们可以通过contentProvider获取媒体详细信息,当设备重新启动或sd卡重新加载时,它会自动更新)
    @Override
    protected String doInBackground(String... aurl) {
        int count;

        i = Integer.parseInt(aurl[0]);
        try {
            sura = "abc.mp3";
            String addr = "http://www.xyzabc.com/" + sura;

            URL url = new URL(addr);
            HttpURLConnection conexion = (HttpURLConnection) url.openConnection();
              conexion.setRequestMethod("GET");
                conexion.setDoOutput(true);
            conexion.connect();

            int lenghtOfFile = conexion.getContentLength();

            InputStream input = new BufferedInputStream(url.openStream());
            File file = new File(rootDir + "/mysite/" + sura);
            OutputStream output = new FileOutputStream(file);

            byte data[] = new byte[1024];

            long total = 0;

            while ((count = input.read(data)) != -1 & run == true) {
                total += count;
                publishProgress("" + (int) ((total * 100) / lenghtOfFile));
                output.write(data, 0, count);
            }

            output.flush();
            output.close();
            input.close();

        } catch (Exception e) {
        }

        return null;
    }