0

需要帮助

我使用 JID3 库来编辑 mp3 标签。只要音乐在内部 SD 卡上,它就可以正常工作。但是,对于 api 19+,这不再适用于外部 sdcard。

我知道我需要实现存储访问框架,但不知道如何去做。JID3 的工作方式是读取 mp3 文件,提取考虑中的标签,比如艺术家,用新值更新标签。

以下步骤需要修改:

  1. 在轨道所在的实际文件夹中创建一个 .tmp 文件,该文件最终成为带有修改标签的实际轨道

  2. 删除原音轨

  3. 使用原始曲目名称重命名 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);
   }
4

0 回答 0