diff --git a/detekt-baseline.xml b/detekt-baseline.xml index 8c0868eb..cecd8495 100644 --- a/detekt-baseline.xml +++ b/detekt-baseline.xml @@ -25,7 +25,7 @@ ImplicitDefaultLocale:LocalMediaPlayer.kt$LocalMediaPlayer.BufferTask$String.format("BufferTask (%s)", downloadFile) ImplicitDefaultLocale:LocalMediaPlayer.kt$LocalMediaPlayer.CheckCompletionTask$String.format("CheckCompletionTask (%s)", downloadFile) ImplicitDefaultLocale:ShareHandler.kt$ShareHandler$String.format("%d:%s", timeSpanAmount, timeSpanType) - ImplicitDefaultLocale:ShareHandler.kt$ShareHandler.<no name provided>$String.format("%s\n\n%s", Util.getShareGreeting(context), result.url) + ImplicitDefaultLocale:ShareHandler.kt$ShareHandler.<no name provided>$String.format("%s\n\n%s", Util.getShareGreeting(), result.url) ImplicitDefaultLocale:SongView.kt$SongView$String.format("%02d.", trackNumber) ImplicitDefaultLocale:SongView.kt$SongView$String.format("%s ", bitRate) ImplicitDefaultLocale:SongView.kt$SongView$String.format("%s > %s", suffix, transcodedSuffix) diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/SettingsFragment.java b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/SettingsFragment.java index 240749ed..fcc81219 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/SettingsFragment.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/SettingsFragment.java @@ -139,7 +139,7 @@ public class SettingsFragment extends PreferenceFragmentCompat showArtistPicture = findPreference(Constants.PREFERENCES_KEY_SHOW_ARTIST_PICTURE); setupServersCategory(); - sharingDefaultGreeting.setText(Util.getShareGreeting(getActivity())); + sharingDefaultGreeting.setText(Util.getShareGreeting()); setupClearSearchPreference(); setupGaplessControlSettingsV14(); setupFeatureFlagsPreferences(); diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/Downloader.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/Downloader.java index 7874803e..1926e8ca 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/Downloader.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/service/Downloader.java @@ -35,7 +35,6 @@ public class Downloader private final ShufflePlayBuffer shufflePlayBuffer; private final ExternalStorageMonitor externalStorageMonitor; private final LocalMediaPlayer localMediaPlayer; - private final Context context; // TODO: This is a circular reference, try to remove private Lazy jukeboxMediaPlayer = inject(JukeboxMediaPlayer.class); @@ -45,10 +44,9 @@ public class Downloader private ScheduledExecutorService executorService; private long revision; - public Downloader(Context context, ShufflePlayBuffer shufflePlayBuffer, ExternalStorageMonitor externalStorageMonitor, + public Downloader(ShufflePlayBuffer shufflePlayBuffer, ExternalStorageMonitor externalStorageMonitor, LocalMediaPlayer localMediaPlayer) { - this.context = context; this.shufflePlayBuffer = shufflePlayBuffer; this.externalStorageMonitor = externalStorageMonitor; this.localMediaPlayer = localMediaPlayer; @@ -100,10 +98,10 @@ public class Downloader if (shufflePlayBuffer.isEnabled) { - checkShufflePlay(context); + checkShufflePlay(); } - if (jukeboxMediaPlayer.getValue().isEnabled() || !Util.isNetworkConnected(context)) + if (jukeboxMediaPlayer.getValue().isEnabled() || !Util.isNetworkConnected()) { return; } @@ -188,7 +186,7 @@ public class Downloader DownloadFile downloadFile = backgroundDownloadList.get(i); if (downloadFile.isWorkDone() && (!downloadFile.shouldSave() || downloadFile.isSaved())) { - Util.scanMedia(context, downloadFile.getCompleteFile()); + Util.scanMedia(downloadFile.getCompleteFile()); // Don't need to keep list like active song list backgroundDownloadList.remove(i); @@ -316,7 +314,7 @@ public class Downloader for (MusicDirectory.Entry song : songs) { - DownloadFile downloadFile = new DownloadFile(context, song, save); + DownloadFile downloadFile = new DownloadFile(song, save); downloadList.add(getCurrentPlayingIndex() + offset, downloadFile); offset++; } @@ -325,7 +323,7 @@ public class Downloader { for (MusicDirectory.Entry song : songs) { - DownloadFile downloadFile = new DownloadFile(context, song, save); + DownloadFile downloadFile = new DownloadFile(song, save); downloadList.add(downloadFile); } } @@ -336,7 +334,7 @@ public class Downloader { for (MusicDirectory.Entry song : songs) { - DownloadFile downloadFile = new DownloadFile(context, song, save); + DownloadFile downloadFile = new DownloadFile(song, save); backgroundDownloadList.add(downloadFile); } @@ -376,7 +374,7 @@ public class Downloader DownloadFile downloadFile = downloadFileCache.get(song); if (downloadFile == null) { - downloadFile = new DownloadFile(context, song, false); + downloadFile = new DownloadFile(song, false); downloadFileCache.put(song, downloadFile); } return downloadFile; @@ -398,7 +396,7 @@ public class Downloader } } - private synchronized void checkShufflePlay(Context context) + private synchronized void checkShufflePlay() { // Get users desired random playlist size int listSize = Util.getMaxSongs(); @@ -412,7 +410,7 @@ public class Downloader { for (MusicDirectory.Entry song : shufflePlayBuffer.get(listSize - size)) { - DownloadFile downloadFile = new DownloadFile(context, song, false); + DownloadFile downloadFile = new DownloadFile(song, false); downloadList.add(downloadFile); revision++; } @@ -426,7 +424,7 @@ public class Downloader int songsToShift = currIndex - 2; for (MusicDirectory.Entry song : shufflePlayBuffer.get(songsToShift)) { - downloadList.add(new DownloadFile(context, song, false)); + downloadList.add(new DownloadFile(song, false)); downloadList.get(0).cancelDownload(); downloadList.remove(0); revision++; diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/LegacyImageLoader.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/LegacyImageLoader.java index 28e203fa..47654e98 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/LegacyImageLoader.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/LegacyImageLoader.java @@ -79,7 +79,7 @@ public class LegacyImageLoader implements Runnable, ImageLoader { imageSizeDefault = drawable.getIntrinsicHeight(); } - imageSizeLarge = Util.getMaxDisplayMetric(context); + imageSizeLarge = Util.getMaxDisplayMetric(); createLargeUnknownImage(context); createUnknownAvatarImage(context); } diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/ShufflePlayBuffer.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/ShufflePlayBuffer.java index e13f1ae2..203e6d98 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/ShufflePlayBuffer.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/ShufflePlayBuffer.java @@ -97,7 +97,7 @@ public class ShufflePlayBuffer // Check if active server has changed. clearBufferIfNecessary(); - if (buffer.size() > REFILL_THRESHOLD || (!Util.isNetworkConnected(context) && !ActiveServerProvider.Companion.isOffline())) + if (buffer.size() > REFILL_THRESHOLD || (!Util.isNetworkConnected() && !ActiveServerProvider.Companion.isOffline())) { return; } diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java index dc4ef45e..f89ed103 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java @@ -167,10 +167,14 @@ public class Util } } - public static int getMaxBitRate(Context context) - { - ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + public static ConnectivityManager getConnectivityManager() { + Context context = appContext(); + return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + } + public static int getMaxBitRate() + { + ConnectivityManager manager = getConnectivityManager(); NetworkInfo networkInfo = manager.getActiveNetworkInfo(); if (networkInfo == null) @@ -548,9 +552,9 @@ public class Util return null; } - public static boolean isNetworkConnected(Context context) + public static boolean isNetworkConnected() { - ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + ConnectivityManager manager = getConnectivityManager(); NetworkInfo networkInfo = manager.getActiveNetworkInfo(); boolean connected = networkInfo != null && networkInfo.isConnected(); @@ -648,9 +652,9 @@ public class Util return bitmap; } - public static WifiManager.WifiLock createWifiLock(Context context, String tag) + public static WifiManager.WifiLock createWifiLock(String tag) { - WifiManager wm = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); + WifiManager wm = (WifiManager) appContext().getApplicationContext().getSystemService(Context.WIFI_SERVICE); return wm.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, tag); } @@ -945,15 +949,15 @@ public class Util return size; } - public static int getMinDisplayMetric(Context context) + public static int getMinDisplayMetric() { - DisplayMetrics metrics = context.getResources().getDisplayMetrics(); + DisplayMetrics metrics = appContext().getResources().getDisplayMetrics(); return Math.min(metrics.widthPixels, metrics.heightPixels); } - public static int getMaxDisplayMetric(Context context) + public static int getMaxDisplayMetric() { - DisplayMetrics metrics = context.getResources().getDisplayMetrics(); + DisplayMetrics metrics = appContext().getResources().getDisplayMetrics(); return Math.max(metrics.widthPixels, metrics.heightPixels); } @@ -1251,10 +1255,12 @@ public class Util return preferences.getString(Constants.PREFERENCES_KEY_DEFAULT_SHARE_DESCRIPTION, ""); } - public static String getShareGreeting(Context context) + public static String getShareGreeting() { SharedPreferences preferences = getPreferences(); - return preferences.getString(Constants.PREFERENCES_KEY_DEFAULT_SHARE_GREETING, String.format(context.getResources().getString(R.string.share_default_greeting), context.getResources().getString(R.string.common_appname))); + Context context = appContext(); + String defaultVal = String.format(context.getResources().getString(R.string.share_default_greeting), context.getResources().getString(R.string.common_appname)); + return preferences.getString(Constants.PREFERENCES_KEY_DEFAULT_SHARE_GREETING, defaultVal); } public static String getDefaultShareExpiration() @@ -1313,11 +1319,11 @@ public class Util return preferences.getBoolean(Constants.PREFERENCES_KEY_SHOW_ALL_SONGS_BY_ARTIST, false); } - public static void scanMedia(Context context, File file) + public static void scanMedia(File file) { Uri uri = Uri.fromFile(file); Intent scanFileIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri); - context.sendBroadcast(scanFileIntent); + appContext().sendBroadcast(scanFileIntent); } public static int getImageLoaderConcurrency() diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/MediaPlayerModule.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/MediaPlayerModule.kt index 5c16e916..bd887e48 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/MediaPlayerModule.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/MediaPlayerModule.kt @@ -21,7 +21,7 @@ val mediaPlayerModule = module { single { DownloadQueueSerializer(androidContext()) } single { ExternalStorageMonitor() } single { ShufflePlayBuffer(androidContext()) } - single { Downloader(androidContext(), get(), get(), get()) } + single { Downloader(get(), get(), get()) } single { LocalMediaPlayer(get(), androidContext()) } single { AudioFocusHandler(get()) } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/CommunicationErrorHandler.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/CommunicationErrorHandler.kt index 39a72dcf..588ac266 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/CommunicationErrorHandler.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/CommunicationErrorHandler.kt @@ -51,7 +51,7 @@ class CommunicationErrorHandler { } fun getErrorMessage(error: Throwable, context: Context): String { - if (error is IOException && !Util.isNetworkConnected(context)) { + if (error is IOException && !Util.isNetworkConnected()) { return context.resources.getString(R.string.background_task_no_network) } else if (error is FileNotFoundException) { return context.resources.getString(R.string.background_task_not_found) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadFile.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadFile.kt index 6e773940..6c75e62d 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadFile.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadFile.kt @@ -21,6 +21,7 @@ import java.io.OutputStream import java.io.RandomAccessFile import org.koin.core.component.KoinApiExtension import org.koin.java.KoinJavaComponent.inject +import org.moire.ultrasonic.app.UApp import org.moire.ultrasonic.domain.MusicDirectory import org.moire.ultrasonic.service.MusicServiceFactory.getMusicService import org.moire.ultrasonic.util.CacheCleaner @@ -37,7 +38,6 @@ import timber.log.Timber */ @KoinApiExtension class DownloadFile( - private val context: Context, val song: MusicDirectory.Entry, private val save: Boolean ) { @@ -48,7 +48,7 @@ class DownloadFile( var isFailed = false private var retryCount = MAX_RETRIES - private val desiredBitRate: Int = Util.getMaxBitRate(context) + private val desiredBitRate: Int = Util.getMaxBitRate() @Volatile private var isPlaying = false @@ -138,7 +138,7 @@ class DownloadFile( Util.delete(completeFile) Util.delete(saveFile) - Util.scanMedia(context, saveFile) + Util.scanMedia(saveFile) } fun unpin() { @@ -186,7 +186,7 @@ class DownloadFile( } else if (completeWhenDone) { if (save) { Util.renameFile(partialFile, saveFile) - Util.scanMedia(context, saveFile) + Util.scanMedia(saveFile) } else { Util.renameFile(partialFile, completeFile) } @@ -211,7 +211,7 @@ class DownloadFile( var wifiLock: WifiLock? = null try { wakeLock = acquireWakeLock(wakeLock) - wifiLock = Util.createWifiLock(context, toString()) + wifiLock = Util.createWifiLock(toString()) wifiLock.acquire() if (saveFile.exists()) { @@ -285,7 +285,7 @@ class DownloadFile( } else { if (save) { Util.renameFile(partialFile, saveFile) - Util.scanMedia(context, saveFile) + Util.scanMedia(saveFile) } else { Util.renameFile(partialFile, completeFile) } @@ -317,6 +317,7 @@ class DownloadFile( private fun acquireWakeLock(wakeLock: WakeLock?): WakeLock? { var wakeLock1 = wakeLock if (Util.isScreenLitOnDownload()) { + val context = UApp.applicationContext() val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager val flags = PowerManager.SCREEN_DIM_WAKE_LOCK or PowerManager.ON_AFTER_RELEASE wakeLock1 = pm.newWakeLock(flags, toString()) @@ -333,7 +334,7 @@ class DownloadFile( private fun downloadAndSaveCoverArt(musicService: MusicService) { try { if (!TextUtils.isEmpty(song.coverArt)) { - val size = Util.getMinDisplayMetric(context) + val size = Util.getMinDisplayMetric() musicService.getCoverArt(song, size, true, true) } } catch (e: Exception) { diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt index 66c94cfb..0b48f666 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt @@ -397,7 +397,7 @@ class LocalMediaPlayer( secondaryProgress = (percent.toDouble() / 100.toDouble() * progressBar.max).toInt() - if (song.transcodedContentType == null && Util.getMaxBitRate(context) == 0) { + if (song.transcodedContentType == null && Util.getMaxBitRate() == 0) { progressBar?.secondaryProgress = secondaryProgress } } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerService.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerService.kt index 63533b10..de935eef 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerService.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerService.kt @@ -478,12 +478,11 @@ class MediaPlayerService : Service() { // Set Metadata val metadata = MediaMetadataCompat.Builder() - val context = applicationContext if (currentPlaying != null) { try { val song = currentPlaying.song val cover = FileUtil.getAlbumArtBitmap( - song, Util.getMinDisplayMetric(context), + song, Util.getMinDisplayMetric(), true ) metadata.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, -1L) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/NetworkAndStorageChecker.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/NetworkAndStorageChecker.kt index aa508821..1bab7f17 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/NetworkAndStorageChecker.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/NetworkAndStorageChecker.kt @@ -12,7 +12,7 @@ class NetworkAndStorageChecker(val context: Context) { fun warnIfNetworkOrStorageUnavailable() { if (!Util.isExternalStoragePresent()) { Util.toast(context, R.string.select_album_no_sdcard) - } else if (!isOffline() && !Util.isNetworkConnected(context)) { + } else if (!isOffline() && !Util.isNetworkConnected()) { Util.toast(context, R.string.select_album_no_network) } } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/ShareHandler.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/ShareHandler.kt index 99551418..e52e98d9 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/ShareHandler.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/ShareHandler.kt @@ -91,7 +91,7 @@ class ShareHandler(val context: Context) { intent.type = "text/plain" intent.putExtra( Intent.EXTRA_TEXT, - String.format("%s\n\n%s", Util.getShareGreeting(context), result.url) + String.format("%s\n\n%s", Util.getShareGreeting(), result.url) ) fragment.activity?.startActivity( Intent.createChooser( diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/VideoPlayer.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/VideoPlayer.kt index f8afd6a9..fb03a627 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/VideoPlayer.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/VideoPlayer.kt @@ -10,7 +10,7 @@ import org.moire.ultrasonic.util.Util */ class VideoPlayer() { fun playVideo(context: Context, entry: MusicDirectory.Entry?) { - if (!Util.isNetworkConnected(context)) { + if (!Util.isNetworkConnected()) { Util.toast(context, R.string.select_album_no_network) return }