Search in sources :

Example 6 with Tag

use of org.jaudiotagger.tag.Tag in project JamsMusicPlayer by psaravan.

the class ID3sSongEditorDialog method saveSongTags.

//This method is called if the user touches the 'OK' button when they're editing an individual song's tags.
public boolean saveSongTags(String uri) {
    File file = new File(uri);
    AudioFile audioFile = null;
    //Update the DB entries.
    DBAccessHelper dbHelper = new DBAccessHelper(mContext.getApplicationContext());
    //Escape any rogue apostrophes.
    if (SONG_URI.contains("'")) {
        SONG_URI = SONG_URI.replace("'", "''");
    }
    String whereClause = DBAccessHelper.SONG_FILE_PATH + "=" + "'" + SONG_URI + "'";
    ContentValues values = new ContentValues();
    try {
        audioFile = AudioFileIO.read(file);
    } catch (CannotReadException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (TagException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ReadOnlyFileException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InvalidAudioFrameException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Tag tag = audioFile.getTag();
    if (tag != null) {
        if (titleEdited == false) {
        //Don't do anything here. The user didn't change the title.
        } else {
            try {
                tag.setField(FieldKey.TITLE, titleEditText.getText().toString());
            } catch (KeyNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FieldDataInvalidException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String title = titleEditText.getText().toString();
            if (title.contains("'")) {
                title = title.replace("'", "''");
            }
            values.put(DBAccessHelper.SONG_TITLE, title);
        }
        if (albumEdited == false) {
        //Don't do anything here. The user didn't change the album.
        } else {
            try {
                tag.setField(FieldKey.ALBUM, albumEditText.getText().toString());
            } catch (KeyNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FieldDataInvalidException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String album = albumEditText.getText().toString();
            if (album.contains("'")) {
                album = album.replace("'", "''");
            }
            values.put(DBAccessHelper.SONG_ALBUM, album);
        }
        if (artistEdited == false) {
        //Don't do anything here. The user didn't change the artist.
        } else {
            try {
                tag.setField(FieldKey.ARTIST, artistEditText.getText().toString());
            } catch (KeyNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FieldDataInvalidException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String artist = artistEditText.getText().toString();
            if (artist.contains("'")) {
                artist = artist.replace("'", "''");
            }
            values.put(DBAccessHelper.SONG_ARTIST, artist);
        }
        if (albumArtistEdited == false) {
        //Don't do anything here. The user didn't change the album artist.
        } else {
            try {
                tag.setField(FieldKey.ALBUM_ARTIST, albumArtistEditText.getText().toString());
            } catch (KeyNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FieldDataInvalidException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String albumArtist = albumArtistEditText.getText().toString();
            if (albumArtist.contains("'")) {
                albumArtist = albumArtist.replace("'", "''");
            }
            values.put(DBAccessHelper.SONG_ALBUM_ARTIST, albumArtist);
        }
        if (genreEdited == false) {
        //Don't do anything here. The user didn't change the genre.
        } else {
            try {
                tag.setField(FieldKey.GENRE, genreEditText.getText().toString());
            } catch (KeyNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FieldDataInvalidException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if (producerEdited == false) {
        //Don't do anything here. The user didn't change the producer.
        } else {
            try {
                tag.setField(FieldKey.PRODUCER, producerEditText.getText().toString());
            } catch (KeyNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FieldDataInvalidException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if (yearEdited == false) {
        //Don't do anything here. The user didn't change the year.
        } else {
            try {
                tag.setField(FieldKey.YEAR, yearEditText.getText().toString());
            } catch (KeyNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FieldDataInvalidException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String year = yearEditText.getText().toString();
            if (year.contains("'")) {
                year = year.replace("'", "''");
            }
            values.put(DBAccessHelper.SONG_YEAR, year);
        }
        if (trackEdited == false) {
        //Don't do anything here. The user didn't change the track number.
        } else {
            try {
                tag.setField(FieldKey.TRACK, trackEditText.getText().toString());
            } catch (KeyNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FieldDataInvalidException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String track = trackEditText.getText().toString();
            if (track.contains("'")) {
                track = track.replace("'", "''");
            }
            values.put(DBAccessHelper.SONG_TRACK_NUMBER, track);
        }
        try {
            tag.setField(FieldKey.TRACK_TOTAL, trackTotalEditText.getText().toString());
        } catch (KeyNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FieldDataInvalidException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchElementException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if (commentEdited == false) {
        //Don't do anything here. The user didn't change the comments.
        } else {
            try {
                tag.setField(FieldKey.COMMENT, commentsEditText.getText().toString());
            } catch (KeyNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FieldDataInvalidException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        try {
            audioFile.commit();
        } catch (CannotWriteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //Write the values to the DB.
        if (values.size() != 0) {
            //Write the values to the DB.
            try {
                dbHelper.getWritableDatabase().update(DBAccessHelper.MUSIC_LIBRARY_TABLE, values, whereClause, null);
                dbHelper.close();
                dbHelper = null;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } else {
        Toast.makeText(mContext, R.string.unable_to_edit_song_tags, Toast.LENGTH_SHORT).show();
    }
    return true;
}
Also used : ContentValues(android.content.ContentValues) CannotWriteException(org.jaudiotagger.audio.exceptions.CannotWriteException) CannotReadException(org.jaudiotagger.audio.exceptions.CannotReadException) DBAccessHelper(com.jams.music.player.DBHelpers.DBAccessHelper) InvalidAudioFrameException(org.jaudiotagger.audio.exceptions.InvalidAudioFrameException) IOException(java.io.IOException) ReadOnlyFileException(org.jaudiotagger.audio.exceptions.ReadOnlyFileException) CannotReadException(org.jaudiotagger.audio.exceptions.CannotReadException) FieldDataInvalidException(org.jaudiotagger.tag.FieldDataInvalidException) NoSuchElementException(java.util.NoSuchElementException) CannotWriteException(org.jaudiotagger.audio.exceptions.CannotWriteException) KeyNotFoundException(org.jaudiotagger.tag.KeyNotFoundException) IOException(java.io.IOException) TagException(org.jaudiotagger.tag.TagException) InvalidAudioFrameException(org.jaudiotagger.audio.exceptions.InvalidAudioFrameException) AudioFile(org.jaudiotagger.audio.AudioFile) TagException(org.jaudiotagger.tag.TagException) FieldDataInvalidException(org.jaudiotagger.tag.FieldDataInvalidException) ReadOnlyFileException(org.jaudiotagger.audio.exceptions.ReadOnlyFileException) Tag(org.jaudiotagger.tag.Tag) AudioFile(org.jaudiotagger.audio.AudioFile) File(java.io.File) KeyNotFoundException(org.jaudiotagger.tag.KeyNotFoundException) NoSuchElementException(java.util.NoSuchElementException)

Example 7 with Tag

use of org.jaudiotagger.tag.Tag in project JamsMusicPlayer by psaravan.

the class PlaylistPagerFlippedFragment method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_playlist_pager_flipped, container, false);
    mContext = getActivity().getApplicationContext();
    mApp = (Common) mContext;
    ratingBar = (RatingBar) rootView.findViewById(R.id.playlist_pager_flipped_rating_bar);
    lyricsRelativeLayout = (RelativeLayout) rootView.findViewById(R.id.lyricsRelativeLayout);
    lyricsTextView = (TextView) rootView.findViewById(R.id.playlist_pager_flipped_lyrics);
    headerTextView = (TextView) rootView.findViewById(R.id.playlist_pager_flipped_title);
    noLyricsFoundText = (TextView) rootView.findViewById(R.id.no_embedded_lyrics_found_text);
    lyricsTextView.setTypeface(TypefaceHelper.getTypeface(mContext, "RobotoCondensed-Light"));
    lyricsTextView.setPaintFlags(lyricsTextView.getPaintFlags() | Paint.ANTI_ALIAS_FLAG | Paint.SUBPIXEL_TEXT_FLAG);
    headerTextView.setTypeface(TypefaceHelper.getTypeface(mContext, "RobotoCondensed-Light"));
    headerTextView.setPaintFlags(headerTextView.getPaintFlags() | Paint.ANTI_ALIAS_FLAG | Paint.SUBPIXEL_TEXT_FLAG);
    noLyricsFoundText.setTypeface(TypefaceHelper.getTypeface(mContext, "RobotoCondensed-Light"));
    noLyricsFoundText.setPaintFlags(noLyricsFoundText.getPaintFlags() | Paint.ANTI_ALIAS_FLAG | Paint.SUBPIXEL_TEXT_FLAG);
    lyricsRelativeLayout.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View arg0) {
            //Fire a broadcast that notifies the PlaylistPager to update flip back to the album art.
            Intent intent = new Intent(broadcastMessage);
            intent.putExtra("MESSAGE", broadcastMessage);
            //Initialize the local broadcast manager.
            localBroadcastManager = LocalBroadcastManager.getInstance(mContext);
            localBroadcastManager.sendBroadcast(intent);
            return true;
        }
    });
    //Get the file path of the current song.
    String updatedSongTitle = "";
    String updatedSongArtist = "";
    String songFilePath = "";
    String songId = "";
    MediaMetadataRetriever mmdr = new MediaMetadataRetriever();
    tempCursor = mApp.getService().getCursor();
    tempCursor.moveToPosition(mApp.getService().getPlaybackIndecesList().get(mApp.getService().getCurrentSongIndex()));
    if (tempCursor.getColumnIndex(DBAccessHelper.SONG_FILE_PATH) == -1) {
        //Retrieve the info from the file's metadata.
        songFilePath = tempCursor.getString(tempCursor.getColumnIndex(null));
        mmdr.setDataSource(songFilePath);
        updatedSongTitle = mmdr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
        updatedSongArtist = mmdr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
    } else {
        /* Check if the cursor has the SONG_FILE_PATH column. If it does, we're dealing 
			 * with the SONGS table. If not, we're dealing with the PLAYLISTS table. We'll 
			 * retrieve data from the appropriate columns using this info. */
        if (tempCursor.getColumnIndex(DBAccessHelper.SONG_FILE_PATH) == -1) {
            //We're dealing with the Playlists table.
            songFilePath = tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.PLAYLIST_FILE_PATH));
            mmdr.setDataSource(songFilePath);
            updatedSongTitle = mmdr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
            updatedSongArtist = mmdr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
        } else {
            //We're dealing with the songs table.
            songFilePath = tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_FILE_PATH));
            updatedSongTitle = tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_TITLE));
            updatedSongArtist = tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_ARTIST));
            songId = tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_ID));
        }
    }
    headerTextView.setText(updatedSongTitle + " - " + updatedSongArtist);
    ratingBar.setStepSize(1);
    int rating = mApp.getDBAccessHelper().getSongRating(songId);
    ratingBar.setRating(rating);
    //Get the rating value for the song.
    AudioFile audioFile = null;
    File file = null;
    try {
        audioFile = null;
        file = new File(songFilePath);
        try {
            audioFile = AudioFileIO.read(file);
        } catch (CannotReadException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (org.jaudiotagger.tag.TagException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (ReadOnlyFileException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (InvalidAudioFrameException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    try {
        final AudioFile finalizedAudioFile = audioFile;
        final String finalSongFilePath = songFilePath;
        final String finalSongId = songId;
        ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

            @Override
            public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
                //Change the rating in the DB and the actual audio file itself.
                Log.e("DEBUG", ">>>>>RATING: " + rating);
                try {
                    Tag tag = finalizedAudioFile.getTag();
                    tag.addField(FieldKey.RATING, "" + ((int) rating));
                } catch (KeyNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (FieldDataInvalidException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                    Log.e("DEBUG", ">>>>>>>RATING FIELD NOT FOUND");
                }
                try {
                    finalizedAudioFile.commit();
                } catch (CannotWriteException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                mApp.getDBAccessHelper().setSongRating(finalSongId, (int) rating);
            }
        });
        //Check if the audio file has any embedded lyrics.
        String lyrics = null;
        try {
            Tag tag = audioFile.getTag();
            lyrics = tag.getFirst(FieldKey.LYRICS);
            if (lyrics == null || lyrics.isEmpty()) {
                lyricsTextView.setVisibility(View.GONE);
                noLyricsFoundText.setVisibility(View.VISIBLE);
                return rootView;
            }
            //Since the song has embedded lyrics, display them in the layout.
            lyricsTextView.setVisibility(View.VISIBLE);
            noLyricsFoundText.setVisibility(View.GONE);
            lyricsTextView.setText(lyrics);
        } catch (Exception e) {
            e.printStackTrace();
            lyricsTextView.setVisibility(View.GONE);
            noLyricsFoundText.setVisibility(View.VISIBLE);
            return rootView;
        }
    } catch (Exception e) {
        e.printStackTrace();
    //Can't do much here.
    }
    return rootView;
}
Also used : CannotWriteException(org.jaudiotagger.audio.exceptions.CannotWriteException) InvalidAudioFrameException(org.jaudiotagger.audio.exceptions.InvalidAudioFrameException) FieldDataInvalidException(org.jaudiotagger.tag.FieldDataInvalidException) OnLongClickListener(android.view.View.OnLongClickListener) ReadOnlyFileException(org.jaudiotagger.audio.exceptions.ReadOnlyFileException) CannotReadException(org.jaudiotagger.audio.exceptions.CannotReadException) OnRatingBarChangeListener(android.widget.RatingBar.OnRatingBarChangeListener) ViewGroup(android.view.ViewGroup) Intent(android.content.Intent) IOException(java.io.IOException) View(android.view.View) TextView(android.widget.TextView) RatingBar(android.widget.RatingBar) Paint(android.graphics.Paint) ReadOnlyFileException(org.jaudiotagger.audio.exceptions.ReadOnlyFileException) CannotReadException(org.jaudiotagger.audio.exceptions.CannotReadException) FieldDataInvalidException(org.jaudiotagger.tag.FieldDataInvalidException) CannotWriteException(org.jaudiotagger.audio.exceptions.CannotWriteException) KeyNotFoundException(org.jaudiotagger.tag.KeyNotFoundException) IOException(java.io.IOException) InvalidAudioFrameException(org.jaudiotagger.audio.exceptions.InvalidAudioFrameException) AudioFile(org.jaudiotagger.audio.AudioFile) MediaMetadataRetriever(android.media.MediaMetadataRetriever) Tag(org.jaudiotagger.tag.Tag) AudioFile(org.jaudiotagger.audio.AudioFile) File(java.io.File) KeyNotFoundException(org.jaudiotagger.tag.KeyNotFoundException)

Example 8 with Tag

use of org.jaudiotagger.tag.Tag in project libresonic by Libresonic.

the class JaudiotaggerParser method getArtwork.

private Artwork getArtwork(MediaFile file) throws Exception {
    AudioFile audioFile = AudioFileIO.read(file.getFile());
    Tag tag = audioFile.getTag();
    return tag == null ? null : tag.getFirstArtwork();
}
Also used : AudioFile(org.jaudiotagger.audio.AudioFile) Tag(org.jaudiotagger.tag.Tag)

Example 9 with Tag

use of org.jaudiotagger.tag.Tag in project libresonic by Libresonic.

the class JaudiotaggerParser method getRawMetaData.

/**
     * Parses meta data for the given music file. No guessing or reformatting is done.
     *
     *
     * @param file The music file to parse.
     * @return Meta data for the file.
     */
@Override
public MetaData getRawMetaData(File file) {
    MetaData metaData = new MetaData();
    try {
        AudioFile audioFile = AudioFileIO.read(file);
        Tag tag = audioFile.getTag();
        if (tag != null) {
            metaData.setAlbumName(getTagField(tag, FieldKey.ALBUM));
            metaData.setTitle(getTagField(tag, FieldKey.TITLE));
            metaData.setYear(parseYear(getTagField(tag, FieldKey.YEAR)));
            metaData.setGenre(mapGenre(getTagField(tag, FieldKey.GENRE)));
            metaData.setDiscNumber(parseInteger(getTagField(tag, FieldKey.DISC_NO)));
            metaData.setTrackNumber(parseTrackNumber(getTagField(tag, FieldKey.TRACK)));
            String songArtist = getTagField(tag, FieldKey.ARTIST);
            String albumArtist = getTagField(tag, FieldKey.ALBUM_ARTIST);
            metaData.setArtist(StringUtils.isBlank(songArtist) ? albumArtist : songArtist);
            metaData.setAlbumArtist(StringUtils.isBlank(albumArtist) ? songArtist : albumArtist);
        }
        AudioHeader audioHeader = audioFile.getAudioHeader();
        if (audioHeader != null) {
            metaData.setVariableBitRate(audioHeader.isVariableBitRate());
            metaData.setBitRate((int) audioHeader.getBitRateAsNumber());
            metaData.setDurationSeconds(audioHeader.getTrackLength());
        }
    } catch (Throwable x) {
        LOG.warn("Error when parsing tags in " + file, x);
    }
    return metaData;
}
Also used : AudioFile(org.jaudiotagger.audio.AudioFile) AudioHeader(org.jaudiotagger.audio.AudioHeader) Tag(org.jaudiotagger.tag.Tag)

Example 10 with Tag

use of org.jaudiotagger.tag.Tag in project Shuttle by timusus.

the class ArtworkUtils method getFolderArtwork.

/**
 * Searches the parent directory of the passed in path for [cover/album/artwork].[png/jpg/jpeg]
 * using regex and returns a {@link InputStream} representing the artwork
 */
@WorkerThread
public static InputStream getFolderArtwork(@Nullable final String path) {
    InputStream fileInputStream = null;
    if (path != null) {
        File[] files;
        File file = new File(path);
        File parent = file.getParentFile();
        if (parent.exists() && parent.isDirectory()) {
            final Pattern pattern = Pattern.compile("(folder|cover|album).*\\.(jpg|jpeg|png)", Pattern.CASE_INSENSITIVE);
            files = parent.listFiles(file1 -> pattern.matcher(file1.getName()).matches());
            if (files.length > 0) {
                try {
                    File artworkFile = Stream.of(files).filter(aFile -> aFile.exists() && aFile.length() > 1024).max((a, b) -> (int) (a.length() / 1024 - b.length() / 1024)).get();
                    fileInputStream = getFileArtwork(artworkFile);
                } catch (NoSuchElementException e) {
                    Log.e(TAG, "getFolderArtwork failed: " + e.toString());
                }
            }
        }
    }
    return fileInputStream;
}
Also used : ReadOnlyFileException(org.jaudiotagger.audio.exceptions.ReadOnlyFileException) CannotReadException(org.jaudiotagger.audio.exceptions.CannotReadException) Album(com.simplecity.amp_library.model.Album) Stream(com.annimon.stream.Stream) Uri(android.net.Uri) NonNull(android.support.annotation.NonNull) ArrayList(java.util.ArrayList) Song(com.simplecity.amp_library.model.Song) AudioFile(org.jaudiotagger.audio.AudioFile) ByteArrayInputStream(java.io.ByteArrayInputStream) MediaStore(android.provider.MediaStore) NoSuchElementException(java.util.NoSuchElementException) Log(android.util.Log) Cursor(android.database.Cursor) IOException(java.io.IOException) Tag(org.jaudiotagger.tag.Tag) FileInputStream(java.io.FileInputStream) WorkerThread(android.support.annotation.WorkerThread) File(java.io.File) FileNotFoundException(java.io.FileNotFoundException) ShuttleApplication(com.simplecity.amp_library.ShuttleApplication) List(java.util.List) TagException(org.jaudiotagger.tag.TagException) AudioFileIO(org.jaudiotagger.audio.AudioFileIO) InvalidAudioFrameException(org.jaudiotagger.audio.exceptions.InvalidAudioFrameException) Pattern(java.util.regex.Pattern) Nullable(android.support.annotation.Nullable) ContentUris(android.content.ContentUris) InputStream(java.io.InputStream) Pattern(java.util.regex.Pattern) ByteArrayInputStream(java.io.ByteArrayInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) AudioFile(org.jaudiotagger.audio.AudioFile) File(java.io.File) NoSuchElementException(java.util.NoSuchElementException) WorkerThread(android.support.annotation.WorkerThread)

Aggregations

Tag (org.jaudiotagger.tag.Tag)23 AudioFile (org.jaudiotagger.audio.AudioFile)21 IOException (java.io.IOException)17 CannotReadException (org.jaudiotagger.audio.exceptions.CannotReadException)16 InvalidAudioFrameException (org.jaudiotagger.audio.exceptions.InvalidAudioFrameException)16 ReadOnlyFileException (org.jaudiotagger.audio.exceptions.ReadOnlyFileException)16 File (java.io.File)15 TagException (org.jaudiotagger.tag.TagException)15 Cursor (android.database.Cursor)7 CannotWriteException (org.jaudiotagger.audio.exceptions.CannotWriteException)7 ContentValues (android.content.ContentValues)5 MediaStore (android.provider.MediaStore)4 NonNull (android.support.annotation.NonNull)4 Query (com.simplecity.amp_library.model.Query)4 AudioFileIO (org.jaudiotagger.audio.AudioFileIO)4 ContentUris (android.content.ContentUris)3 Log (android.util.Log)3 FileOutputStream (java.io.FileOutputStream)3 FieldDataInvalidException (org.jaudiotagger.tag.FieldDataInvalidException)3 Manifest (android.Manifest)2