如何使用元数据在Android Q上保存下载的音频文件?

如何使用元数据在Android Q上保存下载的音频文件?,android,audio,q,android-contentresolver,mediastore,Android,Audio,Q,Android Contentresolver,Mediastore,我尝试使用ContentResolver保存下载的文件,以维护艺术家、专辑和标题等元数据 第一个问题: 我是否需要一个带有ID3标记的文件,或者通过MediaStore指定元数据就足够了? 下载的MP3文件没有ID3标记 第二个问题: 我使用以下代码将mp3文件保存到MediaStore: ContentValues values = new ContentValues(7); values.put(MediaStore.Audio.Media.TITLE, audiodata.getTitle

我尝试使用ContentResolver保存下载的文件,以维护艺术家、专辑和标题等元数据

第一个问题: 我是否需要一个带有ID3标记的文件,或者通过MediaStore指定元数据就足够了? 下载的MP3文件没有ID3标记

第二个问题: 我使用以下代码将mp3文件保存到MediaStore:

ContentValues values = new ContentValues(7);
values.put(MediaStore.Audio.Media.TITLE, audiodata.getTitle());
values.put(MediaStore.Audio.Media.ARTIST, audiodata.getArtist());
values.put(MediaStore.Audio.Media.ALBUM, audiodata.getAlbum());
values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (System.currentTimeMillis() / 1000));
values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.DISPLAY_NAME, audiodata.getTitle() + ".mp3");
values.put(MediaStore.Audio.Media.RELATIVE_PATH, "Music/AudioConverter/");

Uri audiouri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values);
ParcelFileDescriptor file = null;
try {
    file = getContentResolver().openFileDescriptor(audiouri, "w");
    boolean writtenToDisk = writeResponseBodyToDisk(response.body(), file);
    btnSelectFile.setText("Datei wählen...");
    pbMain.setVisibility(View.GONE);
} catch (FileNotFoundException e) {
    e.printStackTrace();
    pbMain.setVisibility(View.GONE);
    Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
如果我从显示名称中删除扩展名“.mp3”,Musicplayer会显示正确的艺术家、专辑等。但是,如果我像上面所示保留扩展名,那么除了显示名之外,不会保存任何元数据。
有什么问题吗?我错过了什么吗?

我现在看到的正是同样的问题@尼克,你能在这里找到解决办法吗?我现在也看到了同样的问题@尼克,你能在这里找到解决办法吗?