diff --git a/app/src/main/java/com/dkanada/gramophone/fragments/player/AbsPlayerFragment.java b/app/src/main/java/com/dkanada/gramophone/fragments/player/AbsPlayerFragment.java index 13c794cf..34969666 100644 --- a/app/src/main/java/com/dkanada/gramophone/fragments/player/AbsPlayerFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/fragments/player/AbsPlayerFragment.java @@ -80,7 +80,7 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen } protected void toggleFavorite(Song song) { - MusicUtil.toggleFavorite(requireActivity(), song); + MusicUtil.toggleFavorite(song); } protected boolean isToolbarShown() { diff --git a/app/src/main/java/com/dkanada/gramophone/service/DownloadService.java b/app/src/main/java/com/dkanada/gramophone/service/DownloadService.java index 303c8c98..5d2ee748 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/DownloadService.java +++ b/app/src/main/java/com/dkanada/gramophone/service/DownloadService.java @@ -23,6 +23,7 @@ import java.net.URLConnection; import java.util.concurrent.Executor; import java.util.concurrent.Executors; +@SuppressWarnings("ResultOfMethodCallIgnored") public class DownloadService extends Service { public static final String PACKAGE_NAME = BuildConfig.APPLICATION_ID; public static final String EXTRA_SONG = PACKAGE_NAME + ".extra.song"; @@ -59,6 +60,8 @@ public class DownloadService extends Service { download.getParentFile().mkdirs(); download.createNewFile(); + audio.getParentFile().mkdirs(); + audio.createNewFile(); InputStream input = connection.getInputStream(); OutputStream output = new FileOutputStream(download); @@ -78,10 +81,14 @@ public class DownloadService extends Service { input = new FileInputStream(download); output = new FileOutputStream(audio); - output.write(input.read()); + while ((count = input.read(data)) != -1) { + output.write(data, 0, count); + } + input.close(); output.close(); + download.delete(); App.getDatabase().cacheDao().insertCache(new Cache(song)); } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java index e7e809f1..dc119883 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java @@ -86,12 +86,17 @@ public class MusicUtil { public static String getFileUri(Song song) { File root = new File(PreferenceUtil.getInstance(App.getInstance()).getLocationDownload(), "music"); - String path = "/" + song.artistName + "/" + song.albumName + "/"; - String name = song.discNumber + "." + song.trackNumber + " - " + song.title + "." + song.container; + String path = "/" + ascii(song.artistName) + "/" + ascii(song.albumName); + String name = "/" + song.discNumber + "." + song.trackNumber + " - " + ascii(song.title) + "." + song.container; return root + path + name; } + @NonNull + public static String ascii(String string) { + return string.replaceAll("[^\\x20-\\x2E\\x30-\\x7E]", ""); + } + @NonNull public static Intent createShareSongFileIntent(@NonNull final Song song, Context context) { try { @@ -175,10 +180,10 @@ public class MusicUtil { @NonNull public static String buildInfoString(@Nullable final String one, @Nullable final String two) { - // skip empty strings if (TextUtils.isEmpty(one)) { return TextUtils.isEmpty(two) ? "" : two; } + if (TextUtils.isEmpty(two)) { return TextUtils.isEmpty(one) ? "" : one; } @@ -186,7 +191,7 @@ public class MusicUtil { return one + " • " + two; } - public static void toggleFavorite(@NonNull final Context context, @NonNull final Song song) { + public static void toggleFavorite(Song song) { song.favorite = !song.favorite; String user = App.getApiClient().getCurrentUserId(); @@ -205,7 +210,7 @@ public class MusicUtil { } @NonNull - public static String getSectionName(@Nullable String musicMediaTitle) { + public static String getSectionName(String musicMediaTitle) { if (TextUtils.isEmpty(musicMediaTitle)) return ""; musicMediaTitle = musicMediaTitle.trim().toLowerCase(); @@ -215,7 +220,10 @@ public class MusicUtil { musicMediaTitle = musicMediaTitle.substring(2); } - if (musicMediaTitle.isEmpty()) return ""; + if (musicMediaTitle.isEmpty()) { + return ""; + } + return String.valueOf(musicMediaTitle.charAt(0)).toUpperCase(); } } diff --git a/app/src/main/res/values/parents.xml b/app/src/main/res/values/parents.xml index b2474a77..9149fc36 100644 --- a/app/src/main/res/values/parents.xml +++ b/app/src/main/res/values/parents.xml @@ -63,7 +63,6 @@ #18FFFFFF #424242 #212121 - #212121