需要帮助
我使用JID3库来编辑mp3标签。只要音乐在内部SD卡上,这就可以正常工作。但是,对于api 19+,这不再适用于外部SD卡。
我知道我需要实现存储访问框架,但不知道如何解决这个问题。 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);
}