需要帮助
我使用 JID3 库来编辑 mp3 标签。只要音乐在内部 SD 卡上,它就可以正常工作。但是,对于 api 19+,这不再适用于外部 sdcard。
我知道我需要实现存储访问框架,但不知道如何去做。JID3 的工作方式是读取 mp3 文件,提取考虑中的标签,比如艺术家,用新值更新标签。
以下步骤需要修改:
在轨道所在的实际文件夹中创建一个 .tmp 文件,该文件最终成为带有修改标签的实际轨道
删除原音轨
使用原始曲目名称重命名 tmp 文件。
我发布了相关的代码
public class MP3File extends MediaFile
// create temporary file to work with
try
{
oTmpFileSource = m_oFileSource.createTempFile("id3.", ".tmp");
}
catch (Exception e)
{
throw new ID3Exception("Unable to create temporary file.", e);
}
m_oFileSource.delete();
oTmpFileSource.renameTo(m_oFileSource);
public class FileSource implements IFileSource
public IFileSource createTempFile(String sPrefix, String sSuffix)
throws IOException
{
File oTmpFile = File.createTempFile("id3.", ".tmp", m_oFile.getAbsoluteFile().getParentFile());
return new FileSource(oTmpFile);
}
public boolean delete()
{
return m_oFile.delete();
}
public boolean renameTo(IFileSource oFileSource)
throws IOException
{
if ( ! (oFileSource instanceof FileSource))
{
throw new IOException("Cannot rename between different file source types.");
}
return m_oFile.renameTo(((FileSource)oFileSource).m_oFile);
}