如何在android中使用Jaudiotagger和MediaScanner更改专辑艺术?

如何在android中使用Jaudiotagger和MediaScanner更改专辑艺术?,android,mp3,jaudiotagger,Android,Mp3,Jaudiotagger,我正在使用Jaudiotagger 2.2.5作为android音乐标签应用程序。我可以更改元数据,如专辑名称、艺术家名称、流派等。但无论我尝试什么,我都无法让专辑艺术部分正常工作。我已经用尽了所有我能在网上找到的建议,但似乎什么都不管用。Jaudiotager本身缺乏文档,开发人员在回答此类问题时也不是很有帮助 for(Song s : songlist){ //for each song in the album File file = new File(artUri);

我正在使用Jaudiotagger 2.2.5作为android音乐标签应用程序。我可以更改元数据,如专辑名称、艺术家名称、流派等。但无论我尝试什么,我都无法让专辑艺术部分正常工作。我已经用尽了所有我能在网上找到的建议,但似乎什么都不管用。Jaudiotager本身缺乏文档,开发人员在回答此类问题时也不是很有帮助

for(Song s : songlist){ //for each song in the album

    File file = new File(artUri);
      if(file.exists()) {

         Artwork cover = ArtworkFactory.createArtworkFromFile(file);
         tag.deleteArtworkField(); 
         tag.createField(cover);
         tag.setField(cover);
         af.commit();
    }



    Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    intent.setData(Uri.fromFile(f));
    sendBroadcast(intent);
}
此外,我正在使用另一种方法更新mediastore:

public void updateAlbumArtMediaStore(Context context, final long id, String art){
    Uri uri = ContentUris.withAppendedId(Uri.parse("content://media/external/audio/albumart"), id);
    context.getContentResolver().delete(uri,null, null);
    ContentValues values = new ContentValues();
    values.put("album_id", id);
    values.put("_data", art);

    Uri newuri = context.getContentResolver()
            .insert(Uri.parse("content://media/external/audio/albumart"),
                    values);
    if(newuri!=null){
        Toast.makeText(AlbumTagEditorActivity.this, "UPDATED", Toast.LENGTH_LONG).show();
        context.getContentResolver().notifyChange(uri, null);

    }else{
        Toast.makeText(AlbumTagEditorActivity.this, "FAILED", Toast.LENGTH_LONG).show();

    }
}
但当我这样做的时候,它只会删除封面艺术


我已经好几个月没有试着把这件事做好了。我试过的东西都不管用

您是否尝试了
addField
而不是
createField
setField
?让我们分开两件事:在文件中设置艺术品,然后通知Android层。你能首先确认文件中的艺术品是否已更新吗?只需运行代码,然后检查文件。假设这是可行的(它应该可以,WFM),那么就转到
意图
不起作用的原因。实际上问题在于AudioFileIO.read(文件)。由于某种原因,这部分代码不起作用。你找到解决办法了吗?是的。删除缓存。你能回答这个问题吗,这样别人就不会受苦了?你试过
addField
而不是
createField
setField
?让我们分开两件事:在文件中设置艺术品,然后通知Android层。你能首先确认文件中的艺术品是否已更新吗?只需运行代码,然后检查文件。假设这是可行的(它应该可以,WFM),那么就转到
意图
不起作用的原因。实际上问题在于AudioFileIO.read(文件)。由于某种原因,这部分代码不起作用。你找到解决办法了吗?是的。删除缓存。你能回答这个问题,这样别人就不会受苦了吗?