MP3 JID3库修正案

时间:2017-09-18 13:35:23

标签: android mp3 storage-access-framework playlists

需要帮助

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

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

以下步骤需要修改:

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

  2. 删除原始曲目

  3. 使用原始曲目名称重命名tmp文件。

  4. 我发布了相关的代码

          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);
       }
    

0 个答案:

没有答案