Extracted deprecated methods to functions e.g. Environment.getExternalStorageDirectory()
This commit is contained in:
parent
aaee076718
commit
3105da068d
24 changed files with 94 additions and 67 deletions
|
@ -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
|
||||
|
|
|
@ -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<File>? = 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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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<GenreAdapter, LinearLayoutManager>(),
|
|||
else
|
||||
adapter?.swapDataSet(listOf())
|
||||
}
|
||||
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
|
||||
remove()
|
||||
requireActivity().onBackPressed()
|
||||
}
|
||||
}
|
||||
|
||||
override fun createLayoutManager(): LinearLayoutManager {
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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<Song> {
|
||||
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()
|
||||
}
|
||||
|
|
|
@ -5,10 +5,10 @@ import java.io.File
|
|||
|
||||
object FilePathUtil {
|
||||
fun blacklistFilePaths(): List<String> {
|
||||
return listOf<File>(
|
||||
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)
|
||||
}
|
||||
|
|
|
@ -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<Storage> listRoots() {
|
||||
ArrayList<Storage> storageItems = new ArrayList<>();
|
||||
HashSet<String> 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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue