diff --git a/playmusicexporter/src/main/java/re/jcg/playmusicexporter/services/ExportAllService.java b/playmusicexporter/src/main/java/re/jcg/playmusicexporter/services/ExportAllService.java index f78d177..00a2977 100644 --- a/playmusicexporter/src/main/java/re/jcg/playmusicexporter/services/ExportAllService.java +++ b/playmusicexporter/src/main/java/re/jcg/playmusicexporter/services/ExportAllService.java @@ -7,6 +7,11 @@ import android.net.Uri; import android.os.PowerManager; import android.util.Log; +import com.mpatric.mp3agic.InvalidDataException; +import com.mpatric.mp3agic.NotSupportedException; +import com.mpatric.mp3agic.UnsupportedTagException; + +import java.io.IOException; import java.util.List; import ly.count.android.sdk.Countly; @@ -35,8 +40,7 @@ public class ExportAllService extends IntentService { Log.i(TAG, "Intent sent!"); } - public ExportAllService() - { + public ExportAllService() { super("AutoGPME-ExportService"); } @@ -80,7 +84,7 @@ public class ExportAllService extends IntentService { } else { Log.i(TAG, "Failed to export Music Track: " + getStringForTrack(lTrack)); } - + } catch (IllegalArgumentException e) { if (e.getMessage().contains("Invalid URI:")) { /* @@ -90,19 +94,14 @@ public class ExportAllService extends IntentService { */ Log.i(TAG, "Automatic export failed, because the URI is invalid."); } else throw e; - } - finally - { - if ( CPULock.isHeld()) - { - CPULock.release(); - } + } catch (Exception e) { + Countly.sharedInstance().logException(e); + e.printStackTrace(); } } } } - if ( CPULock.isHeld()) - { + if (CPULock.isHeld()) { CPULock.release(); } } diff --git a/playmusicexporter/src/main/java/re/jcg/playmusicexporter/services/ExportService.java b/playmusicexporter/src/main/java/re/jcg/playmusicexporter/services/ExportService.java index acc5a12..8fa970f 100644 --- a/playmusicexporter/src/main/java/re/jcg/playmusicexporter/services/ExportService.java +++ b/playmusicexporter/src/main/java/re/jcg/playmusicexporter/services/ExportService.java @@ -30,6 +30,12 @@ import android.net.Uri; import android.os.Bundle; import android.support.v4.app.NotificationCompat; +import com.mpatric.mp3agic.InvalidDataException; +import com.mpatric.mp3agic.NotSupportedException; +import com.mpatric.mp3agic.UnsupportedTagException; + +import java.io.IOException; + import de.arcus.framework.logger.Logger; import ly.count.android.sdk.Countly; import re.jcg.playmusicexporter.R; @@ -201,11 +207,16 @@ public class ExportService extends IntentService { updateNotification(); // Exports the song - if (playMusicManager.exportMusicTrack(mTrackCurrent, uri, path, PlayMusicExporterPreferences.getFileOverwritePreference())) { - Countly.sharedInstance().recordEvent("Exported Song", 1); - } else { - // Export failed - mTracksFailed ++; + try { + if (playMusicManager.exportMusicTrack(mTrackCurrent, uri, path, PlayMusicExporterPreferences.getFileOverwritePreference())) { + Countly.sharedInstance().recordEvent("Exported Song", 1); + } else { + // Export failed + mTracksFailed ++; + } + } catch (Exception e) { + Countly.sharedInstance().logException(e); + e.printStackTrace(); } } else { // Export failed diff --git a/playmusiclib/src/main/java/de/arcus/playmusiclib/PlayMusicManager.java b/playmusiclib/src/main/java/de/arcus/playmusiclib/PlayMusicManager.java index 7b570ce..445dc89 100644 --- a/playmusiclib/src/main/java/de/arcus/playmusiclib/PlayMusicManager.java +++ b/playmusiclib/src/main/java/de/arcus/playmusiclib/PlayMusicManager.java @@ -44,7 +44,10 @@ import com.mpatric.mp3agic.ID3v2; import com.mpatric.mp3agic.ID3v22Tag; import com.mpatric.mp3agic.ID3v23Tag; import com.mpatric.mp3agic.ID3v24Tag; +import com.mpatric.mp3agic.InvalidDataException; import com.mpatric.mp3agic.Mp3File; +import com.mpatric.mp3agic.NotSupportedException; +import com.mpatric.mp3agic.UnsupportedTagException; import java.io.ByteArrayOutputStream; import java.io.File; @@ -138,6 +141,7 @@ public class PlayMusicManager { /** * The database will be copied to a temp folder to access from the app + * * @return Gets the temp path to the database */ private String getTempDatabasePath() { @@ -297,6 +301,7 @@ public class PlayMusicManager { /** * Creates a new PlayMusic manager + * * @param context App context */ public PlayMusicManager(Context context) { @@ -307,8 +312,9 @@ public class PlayMusicManager { /** * Loads all needed information and opens the database - * @throws PlayMusicNotFoundException PlayMusic is not installed - * @throws NoSuperUserException No super user permissions + * + * @throws PlayMusicNotFoundException PlayMusic is not installed + * @throws NoSuperUserException No super user permissions * @throws CouldNotOpenDatabaseException Could not open the database */ public void startUp() throws PlayMusicNotFoundException, NoSuperUserException, CouldNotOpenDatabaseException { @@ -345,7 +351,8 @@ public class PlayMusicManager { /** * Copies the database to a temp directory and opens it - * @throws NoSuperUserException No super user permissions + * + * @throws NoSuperUserException No super user permissions * @throws de.arcus.playmusiclib.exceptions.CouldNotOpenDatabaseException Could not open the database */ private void loadDatabase() throws NoSuperUserException, CouldNotOpenDatabaseException { @@ -370,7 +377,8 @@ public class PlayMusicManager { /** * Reloads the database from PlayMusic - * @throws NoSuperUserException No super user permissions + * + * @throws NoSuperUserException No super user permissions * @throws CouldNotOpenDatabaseException Could not open the database */ public void reloadDatabase() throws NoSuperUserException, CouldNotOpenDatabaseException { @@ -403,6 +411,7 @@ public class PlayMusicManager { /** * Gets the path to the music track + * * @param localCopyPath The local copy path * @return The path to the music file */ @@ -437,6 +446,7 @@ public class PlayMusicManager { /** * Gets the full path to the artwork + * * @param artworkPath The artwork path * @return The full path to the artwork */ @@ -469,12 +479,13 @@ public class PlayMusicManager { /** * Exports a track to the sd card - * @param musicTrack The music track you want to export - * @param dest The destination path - * @param forceOverwrite Forces overwrite of the destination file + * + * @param musicTrack The music track you want to export + * @param dest The destination path + * @param forceOverwrite Forces overwrite of the destination file * @return Returns whether the export was successful */ - public boolean exportMusicTrack(MusicTrack musicTrack, String dest, boolean forceOverwrite ) { + public boolean exportMusicTrack(MusicTrack musicTrack, String dest, boolean forceOverwrite) throws InvalidDataException, IOException, UnsupportedTagException, NotSupportedException { // Creates the destination directory File directory = new File(dest).getParentFile(); @@ -487,12 +498,13 @@ public class PlayMusicManager { /** * Exports a track to the sd card - * @param musicTrack The music track you want to export - * @param uri The document tree - * @param forceOverwrite Forces overwrite of the destination file + * + * @param musicTrack The music track you want to export + * @param uri The document tree + * @param forceOverwrite Forces overwrite of the destination file * @return Returns whether the export was successful */ - public boolean exportMusicTrack(MusicTrack musicTrack, Uri uri, String path, boolean forceOverwrite) { + public boolean exportMusicTrack(MusicTrack musicTrack, Uri uri, String path, boolean forceOverwrite) throws InvalidDataException, IOException, UnsupportedTagException, NotSupportedException { // Check for null if (musicTrack == null) return false; @@ -504,10 +516,9 @@ public class PlayMusicManager { String uniqueID = UUID.randomUUID().toString(); - if ( forceOverwrite || !isAlreadyThere(uri, path) ) - { + if (forceOverwrite || !isAlreadyThere(uri, path)) { - String fileTmp = getTempPath() + uniqueID +"_tmp.mp3"; + String fileTmp = getTempPath() + uniqueID + "_tmp.mp3"; // Copy to temp path failed if (!SuperUserTools.fileCopy(srcFile, fileTmp)) @@ -515,7 +526,7 @@ public class PlayMusicManager { // Encrypt the file if (musicTrack.isEncoded()) { - String fileTmpCrypt = getTempPath() + uniqueID +"_crypt.mp3"; + String fileTmpCrypt = getTempPath() + uniqueID + "_crypt.mp3"; // Encrypts the file if (trackEncrypt(musicTrack, fileTmp, fileTmpCrypt)) { @@ -530,7 +541,6 @@ public class PlayMusicManager { } - String dest; Uri copyUri = null; if (uri.toString().startsWith("file://")) { @@ -541,19 +551,19 @@ public class PlayMusicManager { FileTools.directoryCreate(parentDirectory); } else { // Complex uri (Lollipop) - dest = getTempPath() + uniqueID +"_final.mp3"; + dest = getTempPath() + uniqueID + "_final.mp3"; // The root DocumentFile document = DocumentFile.fromTreeUri(mContext, uri); // Creates the subdirectories String[] directories = path.split("\\/"); - for(int i=0; i