MP3 JID3 Library amendments

90 views Asked by At

Help needed

I use the JID3 library to edit mp3 tags. This works fine as long as the music is on an internal sdcard. However, for api 19+ this no longer works for the external sdcard.

I understand I need to implement the Storage Access Framework but have no idea how to go about this. The way JID3 works is it reads the mp3 file, extracts the tag(s) under consideration, say artist, updates the tag(s) with the new value.

the following steps need amendment:

  1. create a .tmp file in the actual folder where the track resides, which ends up as the actual track with amended tag(s)

  2. delete original track

  3. rename the tmp file with the original track name.

I posted the relevant pieces of code

      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

There are 0 answers