From 3105da068d2a36dafdbc10d9859a60f933193491 Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Tue, 19 Apr 2022 13:45:01 +0530 Subject: [PATCH] Extracted deprecated methods to functions e.g. Environment.getExternalStorageDirectory() --- .../code/name/monkey/retromusic/Constants.kt | 4 +++- .../dialogs/BlacklistFolderChooserDialog.kt | 5 ++-- .../fragments/albums/AlbumDetailsFragment.kt | 2 +- .../artists/AbsArtistDetailsFragment.kt | 2 +- .../fragments/folder/FoldersFragment.kt | 8 ++++--- .../fragments/genres/GenresFragment.kt | 5 ---- .../retromusic/fragments/home/HomeFragment.kt | 4 ---- .../fragments/other/DetailListFragment.kt | 6 +++-- .../playlists/PlaylistDetailsFragment.kt | 23 +++++++++++-------- .../fragments/playlists/PlaylistsFragment.kt | 5 ---- .../monkey/retromusic/helper/BackupHelper.kt | 3 ++- .../retromusic/helper/MusicPlayerRemote.kt | 4 ++-- .../retromusic/providers/BlacklistStore.java | 7 +++--- .../providers/MusicPlaybackQueueStore.java | 5 ++-- .../repository/PlaylistRepository.kt | 4 ++-- .../repository/PlaylistSongsLoader.kt | 5 ++-- .../retromusic/repository/SongRepository.kt | 14 ++++++----- .../monkey/retromusic/util/FilePathUtil.kt | 8 +++---- .../name/monkey/retromusic/util/FileUtil.java | 12 ++++++---- .../name/monkey/retromusic/util/FileUtils.kt | 18 ++++++++++++++- .../name/monkey/retromusic/util/LyricUtil.kt | 2 +- .../name/monkey/retromusic/util/MusicUtil.kt | 6 ++--- .../monkey/retromusic/util/PlaylistsUtil.java | 6 +++-- .../name/monkey/retromusic/util/UriUtil.kt | 3 ++- 24 files changed, 94 insertions(+), 67 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/Constants.kt b/app/src/main/java/code/name/monkey/retromusic/Constants.kt index 93012f84e..dc34ed8e9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/Constants.kt +++ b/app/src/main/java/code/name/monkey/retromusic/Constants.kt @@ -37,6 +37,8 @@ object Constants { const val IS_MUSIC = MediaStore.Audio.AudioColumns.IS_MUSIC + "=1" + " AND " + MediaStore.Audio.AudioColumns.TITLE + " != ''" + const val DATA = "_data" + @Suppress("Deprecation") val baseProjection = arrayOf( BaseColumns._ID, // 0 @@ -44,7 +46,7 @@ object Constants { MediaStore.Audio.AudioColumns.TRACK, // 2 MediaStore.Audio.AudioColumns.YEAR, // 3 MediaStore.Audio.AudioColumns.DURATION, // 4 - MediaStore.Audio.AudioColumns.DATA, // 5 + DATA, // 5 MediaStore.Audio.AudioColumns.DATE_MODIFIED, // 6 MediaStore.Audio.AudioColumns.ALBUM_ID, // 7 MediaStore.Audio.AudioColumns.ALBUM, // 8 diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.kt index 738269cb3..ab771e074 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.kt @@ -10,13 +10,14 @@ import androidx.fragment.app.DialogFragment import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R import code.name.monkey.retromusic.extensions.materialDialog +import code.name.monkey.retromusic.util.getExternalStorageDirectory import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.listItems import com.afollestad.materialdialogs.list.updateListItems import java.io.File class BlacklistFolderChooserDialog : DialogFragment() { - private var initialPath: String = Environment.getExternalStorageDirectory().absolutePath + private var initialPath: String = getExternalStorageDirectory().absolutePath private var parentFolder: File? = null private var parentContents: Array? = null private var canGoUp = false @@ -97,7 +98,7 @@ class BlacklistFolderChooserDialog : DialogFragment() { parentFolder = parentContents?.getOrNull(if (canGoUp) i - 1 else i) canGoUp = true if (parentFolder?.absolutePath == "/storage/emulated") { - parentFolder = Environment.getExternalStorageDirectory() + parentFolder = getExternalStorageDirectory() } } reload() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt index 2014bf33f..1fdf34e9a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt @@ -120,7 +120,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det binding.albumCoverContainer.transitionName = arguments.extraAlbumId.toString() postponeEnterTransition() detailsViewModel.getAlbum().observe(viewLifecycleOwner) { - requireView().doOnPreDraw { + view.doOnPreDraw { startPostponedEnterTransition() } albumArtistExists = !it.albumArtist.isNullOrEmpty() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt index 16537d90b..b329ff2fe 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt @@ -91,7 +91,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm binding.artistCoverContainer.transitionName = (artistId ?: artistName).toString() postponeEnterTransition() detailsViewModel.getArtist().observe(viewLifecycleOwner) { - requireView().doOnPreDraw { + view.doOnPreDraw { startPostponedEnterTransition() } showArtist(it) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt index e52270769..a1db231c7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt @@ -58,6 +58,8 @@ import code.name.monkey.retromusic.util.FileUtil import code.name.monkey.retromusic.util.PreferenceUtil.startDirectory import code.name.monkey.retromusic.util.RetroColorUtil import code.name.monkey.retromusic.util.ThemedFastScroller.create +import code.name.monkey.retromusic.util.getExternalStorageDirectory +import code.name.monkey.retromusic.util.getExternalStoragePublicDirectory import code.name.monkey.retromusic.views.BreadCrumbLayout.Crumb import code.name.monkey.retromusic.views.BreadCrumbLayout.SelectionCallback import com.afollestad.materialcab.attached.AttachedCab @@ -420,7 +422,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), if (_binding != null) { binding.recyclerView.updatePadding( bottom = if (count > 0 && playingQueue.isNotEmpty()) dip(R.dimen.mini_player_height_expanded) - else dip(R.dimen.mini_player_height_expanded) + else dip(R.dimen.mini_player_height) ) } } @@ -654,11 +656,11 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), val defaultStartDirectory: File get() { val musicDir = - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) + getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) val startFolder = if (musicDir.exists() && musicDir.isDirectory) { musicDir } else { - val externalStorage = Environment.getExternalStorageDirectory() + val externalStorage = getExternalStorageDirectory() if (externalStorage.exists() && externalStorage.isDirectory) { externalStorage } else { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt index 571e998cd..3064be556 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt @@ -19,7 +19,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import androidx.activity.addCallback import androidx.core.os.bundleOf import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.GridLayoutManager @@ -46,10 +45,6 @@ GenresFragment : AbsRecyclerViewFragment(), else adapter?.swapDataSet(listOf()) } - requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { - remove() - requireActivity().onBackPressed() - } } override fun createLayoutManager(): LinearLayoutManager { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt index 5f4043521..d0b75bb8f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt @@ -93,10 +93,6 @@ class HomeFragment : binding.appBarLayout.statusBarForeground = MaterialShapeDrawable.createWithElevationOverlay(requireContext()) binding.toolbar.drawNextToNavbar() - requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { - remove() - requireActivity().onBackPressed() - } view.doOnLayout { adjustPlaylistButtons() } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt index 61600960c..e712410fc 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt @@ -318,9 +318,11 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de libraryViewModel.clearHistory() val snackBar = - Snackbar.make(binding.container, + Snackbar.make( + binding.container, getString(R.string.history_cleared), - Snackbar.LENGTH_LONG) + Snackbar.LENGTH_LONG + ) .setAction(getString(R.string.history_undo_button)) { libraryViewModel.restoreHistory() } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt index 4e21eea24..e76ebb565 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt @@ -1,11 +1,11 @@ package code.name.monkey.retromusic.fragments.playlists +import android.graphics.Color import android.os.Bundle import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import androidx.activity.addCallback import androidx.core.view.doOnPreDraw import androidx.core.view.isVisible import androidx.navigation.fragment.findNavController @@ -31,6 +31,8 @@ import com.afollestad.materialcab.attached.destroy import com.afollestad.materialcab.attached.isActive import com.afollestad.materialcab.createCab import com.google.android.material.shape.MaterialShapeDrawable +import com.google.android.material.transition.MaterialArcMotion +import com.google.android.material.transition.MaterialContainerTransform import com.google.android.material.transition.MaterialSharedAxis import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator @@ -52,6 +54,16 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli private lateinit var playlist: PlaylistWithSongs private lateinit var playlistSongAdapter: OrderablePlaylistSongAdapter + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + sharedElementEnterTransition = MaterialContainerTransform(requireContext(), true).apply { + drawingViewId = R.id.fragment_container + scrimColor = Color.TRANSPARENT + setAllContainerColors(surfaceColor()) + setPathMotion(MaterialArcMotion()) + } + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) _binding = FragmentPlaylistDetailBinding.bind(view) @@ -72,13 +84,7 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli } } postponeEnterTransition() - requireView().doOnPreDraw { startPostponedEnterTransition() } - requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { - if (!handleBackPress()) { - remove() - requireActivity().onBackPressed() - } - } + view.doOnPreDraw { startPostponedEnterTransition() } binding.appBarLayout.statusBarForeground = MaterialShapeDrawable.createWithElevationOverlay(requireContext()) } @@ -201,5 +207,4 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli } return cab as AttachedCab } - } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt index 1a928ab27..fbc3948f5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt @@ -16,7 +16,6 @@ package code.name.monkey.retromusic.fragments.playlists import android.os.Bundle import android.view.* -import androidx.activity.addCallback import androidx.core.os.bundleOf import androidx.core.view.MenuCompat import androidx.navigation.fragment.findNavController @@ -46,10 +45,6 @@ class PlaylistsFragment : else adapter?.swapDataSet(listOf()) } - requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { - remove() - requireActivity().onBackPressed() - } } override val titleRes: Int diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/BackupHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/BackupHelper.kt index 32e149239..ac970fe4c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/BackupHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/BackupHelper.kt @@ -11,6 +11,7 @@ import code.name.monkey.retromusic.helper.BackupContent.* import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.repository.Repository import code.name.monkey.retromusic.repository.SongRepository +import code.name.monkey.retromusic.util.getExternalStoragePublicDirectory import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.core.component.KoinComponent @@ -249,7 +250,7 @@ object BackupHelper : KoinComponent { fun getBackupRoot(): File { return File( - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), + getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "RetroMusic/Backups" ) } diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt b/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt index 028460f8b..078d0888c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt @@ -19,7 +19,6 @@ import android.app.Activity import android.content.* import android.database.Cursor import android.net.Uri -import android.os.Environment import android.os.IBinder import android.provider.DocumentsContract import android.widget.Toast @@ -30,6 +29,7 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.repository.SongRepository import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.PreferenceUtil +import code.name.monkey.retromusic.util.getExternalStorageDirectory import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.io.File @@ -440,7 +440,7 @@ object MusicPlayerRemote : KoinComponent { var songFile: File? = null if (uri.authority != null && uri.authority == "com.android.externalstorage.documents") { songFile = File( - Environment.getExternalStorageDirectory(), + getExternalStorageDirectory(), uri.path?.split(":".toRegex(), 2)?.get(1) ) } diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/BlacklistStore.java b/app/src/main/java/code/name/monkey/retromusic/providers/BlacklistStore.java index 90a89770e..b125385a6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/BlacklistStore.java +++ b/app/src/main/java/code/name/monkey/retromusic/providers/BlacklistStore.java @@ -15,6 +15,7 @@ package code.name.monkey.retromusic.providers; import static code.name.monkey.retromusic.service.MusicService.MEDIA_STORE_CHANGED; +import static code.name.monkey.retromusic.util.FileUtilsKt.getExternalStoragePublicDirectory; import android.content.ContentValues; import android.content.Context; @@ -50,11 +51,11 @@ public class BlacklistStore extends SQLiteOpenHelper { if (!PreferenceUtil.INSTANCE.isInitializedBlacklist()) { // blacklisted by default sInstance.addPathImpl( - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS)); + getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS)); sInstance.addPathImpl( - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS)); + getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS)); sInstance.addPathImpl( - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES)); + getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES)); PreferenceUtil.INSTANCE.setInitializedBlacklist(true); } diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/MusicPlaybackQueueStore.java b/app/src/main/java/code/name/monkey/retromusic/providers/MusicPlaybackQueueStore.java index 6875083b9..f1349ad7a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/MusicPlaybackQueueStore.java +++ b/app/src/main/java/code/name/monkey/retromusic/providers/MusicPlaybackQueueStore.java @@ -27,6 +27,7 @@ import androidx.annotation.Nullable; import java.util.List; import code.name.monkey.retromusic.App; +import code.name.monkey.retromusic.Constants; import code.name.monkey.retromusic.model.Song; import code.name.monkey.retromusic.repository.RealSongRepository; @@ -128,7 +129,7 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper { builder.append(AudioColumns.DURATION); builder.append(" LONG NOT NULL,"); - builder.append(AudioColumns.DATA); + builder.append(Constants.DATA); builder.append(" STRING NOT NULL,"); builder.append(AudioColumns.DATE_MODIFIED); @@ -192,7 +193,7 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper { values.put(AudioColumns.TRACK, song.getTrackNumber()); values.put(AudioColumns.YEAR, song.getYear()); values.put(AudioColumns.DURATION, song.getDuration()); - values.put(AudioColumns.DATA, song.getData()); + values.put(Constants.DATA, song.getData()); values.put(AudioColumns.DATE_MODIFIED, song.getDateModified()); values.put(AudioColumns.ALBUM_ID, song.getAlbumId()); values.put(AudioColumns.ALBUM, song.getAlbumName()); diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/PlaylistRepository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/PlaylistRepository.kt index 004dfa370..b1f5c548d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/repository/PlaylistRepository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/repository/PlaylistRepository.kt @@ -148,7 +148,7 @@ class RealPlaylistRepository( val trackNumber = cursor.getInt(AudioColumns.TRACK) val year = cursor.getInt(AudioColumns.YEAR) val duration = cursor.getLong(AudioColumns.DURATION) - val data = cursor.getString(AudioColumns.DATA) + val data = cursor.getString(Constants.DATA) val dateModified = cursor.getLong(AudioColumns.DATE_MODIFIED) val albumId = cursor.getLong(AudioColumns.ALBUM_ID) val albumName = cursor.getString(AudioColumns.ALBUM) @@ -202,7 +202,7 @@ class RealPlaylistRepository( AudioColumns.TRACK, // 2 AudioColumns.YEAR, // 3 AudioColumns.DURATION, // 4 - AudioColumns.DATA, // 5 + Constants.DATA, // 5 AudioColumns.DATE_MODIFIED, // 6 AudioColumns.ALBUM_ID, // 7 AudioColumns.ALBUM, // 8 diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/PlaylistSongsLoader.kt b/app/src/main/java/code/name/monkey/retromusic/repository/PlaylistSongsLoader.kt index 80f0829a8..0c3c17255 100644 --- a/app/src/main/java/code/name/monkey/retromusic/repository/PlaylistSongsLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/repository/PlaylistSongsLoader.kt @@ -18,6 +18,7 @@ import android.content.Context import android.database.Cursor import android.provider.MediaStore.Audio.AudioColumns import android.provider.MediaStore.Audio.Playlists.Members +import code.name.monkey.retromusic.Constants import code.name.monkey.retromusic.Constants.IS_MUSIC import code.name.monkey.retromusic.extensions.getInt import code.name.monkey.retromusic.extensions.getLong @@ -75,7 +76,7 @@ object PlaylistSongsLoader { val trackNumber = cursor.getInt(AudioColumns.TRACK) val year = cursor.getInt(AudioColumns.YEAR) val duration = cursor.getLong(AudioColumns.DURATION) - val data = cursor.getString(AudioColumns.DATA) + val data = cursor.getString(Constants.DATA) val dateModified = cursor.getLong(AudioColumns.DATE_MODIFIED) val albumId = cursor.getLong(AudioColumns.ALBUM_ID) val albumName = cursor.getString(AudioColumns.ALBUM) @@ -113,7 +114,7 @@ object PlaylistSongsLoader { AudioColumns.TRACK, // 2 AudioColumns.YEAR, // 3 AudioColumns.DURATION, // 4 - AudioColumns.DATA, // 5 + Constants.DATA, // 5 AudioColumns.DATE_MODIFIED, // 6 AudioColumns.ALBUM_ID, // 7 AudioColumns.ALBUM, // 8 diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt index bf0184b92..50d23d73d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt @@ -22,6 +22,7 @@ import android.provider.MediaStore import android.provider.MediaStore.Audio.AudioColumns import android.provider.MediaStore.Audio.Media import code.name.monkey.appthemehelper.util.VersionUtils +import code.name.monkey.retromusic.Constants import code.name.monkey.retromusic.Constants.IS_MUSIC import code.name.monkey.retromusic.Constants.baseProjection import code.name.monkey.retromusic.extensions.getInt @@ -32,6 +33,7 @@ import code.name.monkey.retromusic.helper.SortOrder import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.providers.BlacklistStore import code.name.monkey.retromusic.util.PreferenceUtil +import code.name.monkey.retromusic.util.getExternalStoragePublicDirectory import java.text.Collator /** @@ -118,7 +120,7 @@ class RealSongRepository(private val context: Context) : SongRepository { override fun songsByFilePath(filePath: String, ignoreBlacklist: Boolean): List { return songs( makeSongCursor( - AudioColumns.DATA + "=?", + Constants.DATA + "=?", arrayOf(filePath), ignoreBlacklist = ignoreBlacklist ) @@ -133,7 +135,7 @@ class RealSongRepository(private val context: Context) : SongRepository { val trackNumber = cursor.getInt(AudioColumns.TRACK) val year = cursor.getInt(AudioColumns.YEAR) val duration = cursor.getLong(AudioColumns.DURATION) - val data = cursor.getString(AudioColumns.DATA) + val data = cursor.getString(Constants.DATA) val dateModified = cursor.getLong(AudioColumns.DATE_MODIFIED) val albumId = cursor.getLong(AudioColumns.ALBUM_ID) val albumName = cursor.getStringOrNull(AudioColumns.ALBUM) @@ -177,10 +179,10 @@ class RealSongRepository(private val context: Context) : SongRepository { // Whitelist if (PreferenceUtil.isWhiteList) { selectionFinal = - selectionFinal + " AND " + AudioColumns.DATA + " LIKE ?" + selectionFinal + " AND " + Constants.DATA + " LIKE ?" selectionValuesFinal = addSelectionValues( selectionValuesFinal, arrayListOf( - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).canonicalPath + getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).canonicalPath ) ) } else { @@ -219,9 +221,9 @@ class RealSongRepository(private val context: Context) : SongRepository { ): String { val newSelection = StringBuilder( if (selection != null && selection.trim { it <= ' ' } != "") "$selection AND " else "") - newSelection.append(AudioColumns.DATA + " NOT LIKE ?") + newSelection.append(Constants.DATA + " NOT LIKE ?") for (i in 0 until pathCount - 1) { - newSelection.append(" AND " + AudioColumns.DATA + " NOT LIKE ?") + newSelection.append(" AND " + Constants.DATA + " NOT LIKE ?") } return newSelection.toString() } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/FilePathUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/FilePathUtil.kt index da30e71c9..30f662fb2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/FilePathUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/FilePathUtil.kt @@ -5,10 +5,10 @@ import java.io.File object FilePathUtil { fun blacklistFilePaths(): List { - return listOf( - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS), - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES), - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS) + return listOf( + getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS), + getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES), + getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS) ).map { FileUtil.safeGetCanonicalPath(it) } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/FileUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/FileUtil.java index 09957a93c..ca55ae1d0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/FileUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/FileUtil.java @@ -14,6 +14,8 @@ package code.name.monkey.retromusic.util; +import static code.name.monkey.retromusic.util.FileUtilsKt.getExternalStorageDirectory; + import android.content.Context; import android.database.Cursor; import android.os.Environment; @@ -22,6 +24,7 @@ import android.webkit.MimeTypeMap; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.os.EnvironmentCompat; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; @@ -40,6 +43,7 @@ import java.util.LinkedList; import java.util.List; import java.util.StringTokenizer; +import code.name.monkey.retromusic.Constants; import code.name.monkey.retromusic.adapter.Storage; import code.name.monkey.retromusic.model.Song; import code.name.monkey.retromusic.repository.RealSongRepository; @@ -87,7 +91,7 @@ public final class FileUtil { if (files.size() > 0 && files.size() < 999) { // 999 is the max amount Androids SQL implementation can handle. selection = - MediaStore.Audio.AudioColumns.DATA + " IN (" + makePlaceholders(files.size()) + ")"; + Constants.DATA + " IN (" + makePlaceholders(files.size()) + ")"; } } @@ -96,7 +100,7 @@ public final class FileUtil { return songCursor == null ? null - : new SortedCursor(songCursor, paths, MediaStore.Audio.AudioColumns.DATA); + : new SortedCursor(songCursor, paths, Constants.DATA); } private static String makePlaceholders(int len) { @@ -268,7 +272,7 @@ public final class FileUtil { public static ArrayList listRoots() { ArrayList storageItems = new ArrayList<>(); HashSet paths = new HashSet<>(); - String defaultPath = Environment.getExternalStorageDirectory().getPath(); + String defaultPath = getExternalStorageDirectory().getPath(); String defaultPathState = Environment.getExternalStorageState(); if (defaultPathState.equals(Environment.MEDIA_MOUNTED) || defaultPathState.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) { Storage ext = new Storage(); @@ -277,7 +281,7 @@ public final class FileUtil { } else { ext.title = "Internal Storage"; } - ext.file = Environment.getExternalStorageDirectory(); + ext.file = getExternalStorageDirectory(); storageItems.add(ext); paths.add(defaultPath); } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/FileUtils.kt b/app/src/main/java/code/name/monkey/retromusic/util/FileUtils.kt index e38e006ee..8a06bf62b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/FileUtils.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/FileUtils.kt @@ -2,6 +2,7 @@ package code.name.monkey.retromusic.util import android.content.Context import android.net.Uri +import android.os.Environment import android.util.Log import java.io.File import java.io.IOException @@ -23,7 +24,13 @@ object FileUtils { * @return the file * @throws IOException */ - fun createFile(context: Context, directoryName: String, fileName: String, body: String, fileType: String): File { + fun createFile( + context: Context, + directoryName: String, + fileName: String, + body: String, + fileType: String + ): File { val root = createDirectory(context, directoryName) val filePath = "$root/$fileName$fileType" val file = File(filePath) @@ -57,4 +64,13 @@ object FileUtils { } return file } +} +@Suppress("Deprecation") +fun getExternalStorageDirectory(): File { + return Environment.getExternalStorageDirectory() +} + +@Suppress("Deprecation") +fun getExternalStoragePublicDirectory(type: String): File { + return Environment.getExternalStoragePublicDirectory(type) } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.kt index 66e46929a..9bf96fe4f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.kt @@ -26,7 +26,7 @@ import java.io.* */ object LyricUtil { private val lrcRootPath = - Environment.getExternalStorageDirectory().toString() + "/RetroMusic/lyrics/" + getExternalStorageDirectory().toString() + "/RetroMusic/lyrics/" private const val TAG = "LyricUtil" fun writeLrcToLoc( title: String, artist: String, lrcContext: String diff --git a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt index 397637de8..d2b49cabd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt @@ -5,7 +5,6 @@ import android.content.Context import android.content.Intent import android.database.Cursor import android.net.Uri -import android.os.Environment import android.provider.BaseColumns import android.provider.MediaStore import android.util.Log @@ -14,6 +13,7 @@ import androidx.core.content.contentValuesOf import androidx.core.net.toUri import androidx.fragment.app.FragmentActivity import code.name.monkey.appthemehelper.util.VersionUtils +import code.name.monkey.retromusic.Constants import code.name.monkey.retromusic.R import code.name.monkey.retromusic.db.PlaylistEntity import code.name.monkey.retromusic.db.SongEntity @@ -79,7 +79,7 @@ object MusicUtil : KoinComponent { private fun createAlbumArtDir(context: Context): File { val albumArtDir = File( - if (VersionUtils.hasR()) context.cacheDir else Environment.getExternalStorageDirectory(), + if (VersionUtils.hasR()) context.cacheDir else getExternalStorageDirectory(), "/albumthumbs/" ) if (!albumArtDir.exists()) { @@ -385,7 +385,7 @@ object MusicUtil : KoinComponent { ) { val songRepository: SongRepository = get() val projection = arrayOf( - BaseColumns._ID, MediaStore.MediaColumns.DATA + BaseColumns._ID, Constants.DATA ) // Split the query into multiple batches, and merge the resulting cursors var batchStart: Int diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java index 028625509..623734333 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java @@ -16,6 +16,8 @@ package code.name.monkey.retromusic.util; import static android.provider.MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI; +import static code.name.monkey.retromusic.util.FileUtilsKt.getExternalStorageDirectory; + import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; @@ -295,12 +297,12 @@ public class PlaylistsUtil { public static File savePlaylist(Context context, Playlist playlist) throws IOException { return M3UWriter.write( - new File(Environment.getExternalStorageDirectory(), "Playlists"), playlist); + new File(getExternalStorageDirectory(), "Playlists"), playlist); } public static File savePlaylistWithSongs(PlaylistWithSongs playlist) throws IOException { return M3UWriter.writeIO( - new File(Environment.getExternalStorageDirectory(), "Playlists"), playlist); + new File(getExternalStorageDirectory(), "Playlists"), playlist); } public static boolean doesPlaylistExist(@NonNull final Context context, final int playlistId) { diff --git a/app/src/main/java/code/name/monkey/retromusic/util/UriUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/UriUtil.kt index 4b1ef3d16..923e5dac4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/UriUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/UriUtil.kt @@ -6,6 +6,7 @@ import android.net.Uri import android.os.Build import android.provider.MediaStore import androidx.annotation.RequiresApi +import code.name.monkey.retromusic.Constants object UriUtil { @RequiresApi(Build.VERSION_CODES.Q) @@ -13,7 +14,7 @@ object UriUtil { val uri = MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL) val proj = arrayOf(MediaStore.Files.FileColumns._ID) context.contentResolver.query( - uri, proj, MediaStore.Files.FileColumns.DATA + "=?", arrayOf(path), null + uri, proj, Constants.DATA + "=?", arrayOf(path), null )?.use { cursor -> if (cursor.count != 0) { cursor.moveToFirst()