diff --git a/app/build.gradle b/app/build.gradle index db4680260..c1c507b35 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ proguardDictionaries { android { compileSdkVersion 29 buildToolsVersion = '29.0.2' - + defaultConfig { minSdkVersion 21 targetSdkVersion 29 @@ -24,8 +24,8 @@ android { vectorDrawables.useSupportLibrary = true applicationId "code.name.monkey.retromusic" - versionCode 411 - versionName '3.4.950' + versionCode 413 + versionName '3.4.970' multiDexEnabled true diff --git a/app/src/main/assets/index.html b/app/src/main/assets/index.html index 4d858fba4..037d52fad 100644 --- a/app/src/main/assets/index.html +++ b/app/src/main/assets/index.html @@ -2,8 +2,8 @@
- - diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html index 2e173e329..8717202f0 100644 --- a/app/src/main/assets/retro-changelog.html +++ b/app/src/main/assets/retro-changelog.html @@ -1 +1 @@ -If you see entire app white or dark or black select same theme in settings to fix
*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.
\ No newline at end of file +If you see entire app white or dark or black select same theme in settings to fix
*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.
\ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/App.kt b/app/src/main/java/code/name/monkey/retromusic/App.kt index e00eeb316..afabc12b6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/App.kt +++ b/app/src/main/java/code/name/monkey/retromusic/App.kt @@ -51,7 +51,11 @@ class App : MultiDexApplication() { override fun onProductPurchased(productId: String, details: TransactionDetails?) {} override fun onPurchaseHistoryRestored() { - Toast.makeText(this@App, R.string.restored_previous_purchase_please_restart, Toast.LENGTH_LONG) + Toast.makeText( + this@App, + R.string.restored_previous_purchase_please_restart, + Toast.LENGTH_LONG + ) .show() } @@ -79,7 +83,9 @@ class App : MultiDexApplication() { } fun isProVersion(): Boolean { - return BuildConfig.DEBUG || instance?.billingProcessor!!.isPurchased(PRO_VERSION_PRODUCT_ID) + return BuildConfig.DEBUG || instance?.billingProcessor!!.isPurchased( + PRO_VERSION_PRODUCT_ID + ) } lateinit var musicComponent: MusicComponent 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 3da9b5471..0b3c6fa9d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/Constants.kt +++ b/app/src/main/java/code/name/monkey/retromusic/Constants.kt @@ -19,7 +19,8 @@ import android.provider.MediaStore object Constants { - const val RATE_ON_GOOGLE_PLAY = "https://play.google.com/store/apps/details?id=code.name.monkey.retromusic" + const val RATE_ON_GOOGLE_PLAY = + "https://play.google.com/store/apps/details?id=code.name.monkey.retromusic" const val TRANSLATE = "http://monkeycodeapp.oneskyapp.com/collaboration/project?id=238534" const val GITHUB_PROJECT = "https://github.com/h4h13/RetroMusicPlayer" const val TELEGRAM_CHANGE_LOG = "https://t.me/retromusiclog" @@ -31,19 +32,22 @@ object Constants { const val FAQ_LINK = "https://github.com/h4h13/RetroMusicPlayer/blob/master/FAQ.md" const val PINTEREST = "https://in.pinterest.com/retromusicapp/" - const val BASE_SELECTION = MediaStore.Audio.AudioColumns.IS_MUSIC + "=1" + " AND " + MediaStore.Audio.AudioColumns.TITLE + " != ''" + const val BASE_SELECTION = + MediaStore.Audio.AudioColumns.IS_MUSIC + "=1" + " AND " + MediaStore.Audio.AudioColumns.TITLE + " != ''" - val baseProjection = arrayOf(BaseColumns._ID, // 0 - MediaStore.Audio.AudioColumns.TITLE, // 1 - MediaStore.Audio.AudioColumns.TRACK, // 2 - MediaStore.Audio.AudioColumns.YEAR, // 3 - MediaStore.Audio.AudioColumns.DURATION, // 4 - MediaStore.Audio.AudioColumns.DATA, // 5 - MediaStore.Audio.AudioColumns.DATE_MODIFIED, // 6 - MediaStore.Audio.AudioColumns.ALBUM_ID, // 7 - MediaStore.Audio.AudioColumns.ALBUM, // 8 - MediaStore.Audio.AudioColumns.ARTIST_ID, // 9 - MediaStore.Audio.AudioColumns.ARTIST,// 10 - MediaStore.Audio.AudioColumns.COMPOSER)// 11 + val baseProjection = arrayOf( + BaseColumns._ID, // 0 + MediaStore.Audio.AudioColumns.TITLE, // 1 + MediaStore.Audio.AudioColumns.TRACK, // 2 + MediaStore.Audio.AudioColumns.YEAR, // 3 + MediaStore.Audio.AudioColumns.DURATION, // 4 + MediaStore.Audio.AudioColumns.DATA, // 5 + MediaStore.Audio.AudioColumns.DATE_MODIFIED, // 6 + MediaStore.Audio.AudioColumns.ALBUM_ID, // 7 + MediaStore.Audio.AudioColumns.ALBUM, // 8 + MediaStore.Audio.AudioColumns.ARTIST_ID, // 9 + MediaStore.Audio.AudioColumns.ARTIST,// 10 + MediaStore.Audio.AudioColumns.COMPOSER + )// 11 const val NUMBER_OF_TOP_TRACKS = 99 } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/AboutActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/AboutActivity.kt index 21e443547..bc1b8506d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/AboutActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/AboutActivity.kt @@ -32,22 +32,11 @@ import com.afollestad.materialdialogs.bottomsheets.BottomSheet import com.afollestad.materialdialogs.list.listItems import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import kotlinx.android.synthetic.main.activity_about.toolbar -import kotlinx.android.synthetic.main.card_credit.recyclerView -import kotlinx.android.synthetic.main.card_other.changelog -import kotlinx.android.synthetic.main.card_other.openSource -import kotlinx.android.synthetic.main.card_other.version -import kotlinx.android.synthetic.main.card_retro_info.appGithub -import kotlinx.android.synthetic.main.card_retro_info.appRate -import kotlinx.android.synthetic.main.card_retro_info.appShare -import kotlinx.android.synthetic.main.card_retro_info.appTranslation -import kotlinx.android.synthetic.main.card_retro_info.bugReportLink -import kotlinx.android.synthetic.main.card_retro_info.donateLink -import kotlinx.android.synthetic.main.card_retro_info.faqLink -import kotlinx.android.synthetic.main.card_social.instagramLink -import kotlinx.android.synthetic.main.card_social.pinterestLink -import kotlinx.android.synthetic.main.card_social.telegramLink -import kotlinx.android.synthetic.main.card_social.twitterLink +import kotlinx.android.synthetic.main.activity_about.* +import kotlinx.android.synthetic.main.card_credit.* +import kotlinx.android.synthetic.main.card_other.* +import kotlinx.android.synthetic.main.card_retro_info.* +import kotlinx.android.synthetic.main.card_social.* import java.io.IOException import java.nio.charset.StandardCharsets diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt index 02466a3f1..569ffc73e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt @@ -30,7 +30,6 @@ import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.glide.AlbumGlideRequest import code.name.monkey.retromusic.glide.ArtistGlideRequest import code.name.monkey.retromusic.glide.RetroMusicColoredTarget -import code.name.monkey.retromusic.glide.SongGlideRequest import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.SortOrder.AlbumSongSortOrder import code.name.monkey.retromusic.interfaces.CabHolder @@ -39,31 +38,12 @@ import code.name.monkey.retromusic.model.Artist import code.name.monkey.retromusic.mvp.presenter.AlbumDetailsPresenter import code.name.monkey.retromusic.mvp.presenter.AlbumDetailsView import code.name.monkey.retromusic.rest.model.LastFmAlbum -import code.name.monkey.retromusic.util.MusicUtil -import code.name.monkey.retromusic.util.NavigationUtil -import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.RetroColorUtil -import code.name.monkey.retromusic.util.RetroUtil +import code.name.monkey.retromusic.util.* import com.afollestad.materialcab.MaterialCab import com.bumptech.glide.Glide -import kotlinx.android.synthetic.main.activity_album.albumCoverContainer -import kotlinx.android.synthetic.main.activity_album.albumText -import kotlinx.android.synthetic.main.activity_album.albumTitle -import kotlinx.android.synthetic.main.activity_album.image -import kotlinx.android.synthetic.main.activity_album.toolbar -import kotlinx.android.synthetic.main.activity_album_content.aboutAlbumText -import kotlinx.android.synthetic.main.activity_album_content.aboutAlbumTitle -import kotlinx.android.synthetic.main.activity_album_content.listeners -import kotlinx.android.synthetic.main.activity_album_content.listenersLabel -import kotlinx.android.synthetic.main.activity_album_content.moreRecyclerView -import kotlinx.android.synthetic.main.activity_album_content.moreTitle -import kotlinx.android.synthetic.main.activity_album_content.playAction -import kotlinx.android.synthetic.main.activity_album_content.recyclerView -import kotlinx.android.synthetic.main.activity_album_content.scrobbles -import kotlinx.android.synthetic.main.activity_album_content.scrobblesLabel -import kotlinx.android.synthetic.main.activity_album_content.shuffleAction -import kotlinx.android.synthetic.main.activity_album_content.songTitle -import java.util.ArrayList +import kotlinx.android.synthetic.main.activity_album.* +import kotlinx.android.synthetic.main.activity_album_content.* +import java.util.* import javax.inject.Inject import android.util.Pair as UtilPair @@ -127,7 +107,8 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C if (intent.extras!!.containsKey(EXTRA_ALBUM_ID)) { intent.extras?.getInt(EXTRA_ALBUM_ID)?.let { albumDetailsPresenter.loadAlbum(it) - albumCoverContainer?.transitionName = "${getString(R.string.transition_album_art)}_$it" + albumCoverContainer?.transitionName = + "${getString(R.string.transition_album_art)}_$it" } } else { finish() @@ -357,7 +338,8 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C R.id.action_sort_order_title -> sortOrder = AlbumSongSortOrder.SONG_A_Z R.id.action_sort_order_title_desc -> sortOrder = AlbumSongSortOrder.SONG_Z_A R.id.action_sort_order_track_list -> sortOrder = AlbumSongSortOrder.SONG_TRACK_LIST - R.id.action_sort_order_artist_song_duration -> sortOrder = AlbumSongSortOrder.SONG_DURATION + R.id.action_sort_order_artist_song_duration -> sortOrder = + AlbumSongSortOrder.SONG_DURATION } if (sortOrder != null) { item.isChecked = true @@ -368,9 +350,12 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C private fun setUpSortOrderMenu(sortOrder: SubMenu) { when (savedSortOrder) { - AlbumSongSortOrder.SONG_A_Z -> sortOrder.findItem(R.id.action_sort_order_title).isChecked = true - AlbumSongSortOrder.SONG_Z_A -> sortOrder.findItem(R.id.action_sort_order_title_desc).isChecked = true - AlbumSongSortOrder.SONG_TRACK_LIST -> sortOrder.findItem(R.id.action_sort_order_track_list).isChecked = + AlbumSongSortOrder.SONG_A_Z -> sortOrder.findItem(R.id.action_sort_order_title) + .isChecked = true + AlbumSongSortOrder.SONG_Z_A -> sortOrder.findItem(R.id.action_sort_order_title_desc) + .isChecked = true + AlbumSongSortOrder.SONG_TRACK_LIST -> sortOrder.findItem(R.id.action_sort_order_track_list) + .isChecked = true AlbumSongSortOrder.SONG_DURATION -> sortOrder.findItem(R.id.action_sort_order_artist_song_duration) .isChecked = true diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt index 30a80ee07..8575ce82c 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt @@ -33,32 +33,14 @@ import code.name.monkey.retromusic.model.Artist import code.name.monkey.retromusic.mvp.presenter.ArtistDetailsPresenter import code.name.monkey.retromusic.mvp.presenter.ArtistDetailsView import code.name.monkey.retromusic.rest.model.LastFmArtist -import code.name.monkey.retromusic.util.CustomArtistImageUtil -import code.name.monkey.retromusic.util.MusicUtil -import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.RetroColorUtil -import code.name.monkey.retromusic.util.RetroUtil +import code.name.monkey.retromusic.util.* import com.afollestad.materialcab.MaterialCab import com.bumptech.glide.Glide -import kotlinx.android.synthetic.main.activity_artist_content.albumRecyclerView -import kotlinx.android.synthetic.main.activity_artist_content.albumTitle -import kotlinx.android.synthetic.main.activity_artist_content.biographyText -import kotlinx.android.synthetic.main.activity_artist_content.biographyTitle -import kotlinx.android.synthetic.main.activity_artist_content.listeners -import kotlinx.android.synthetic.main.activity_artist_content.listenersLabel -import kotlinx.android.synthetic.main.activity_artist_content.playAction -import kotlinx.android.synthetic.main.activity_artist_content.recyclerView -import kotlinx.android.synthetic.main.activity_artist_content.scrobbles -import kotlinx.android.synthetic.main.activity_artist_content.scrobblesLabel -import kotlinx.android.synthetic.main.activity_artist_content.shuffleAction -import kotlinx.android.synthetic.main.activity_artist_content.songTitle -import kotlinx.android.synthetic.main.activity_artist_details.artistCoverContainer -import kotlinx.android.synthetic.main.activity_artist_details.artistTitle -import kotlinx.android.synthetic.main.activity_artist_details.image -import kotlinx.android.synthetic.main.activity_artist_details.text -import kotlinx.android.synthetic.main.activity_artist_details.toolbar -import java.util.Locale +import kotlinx.android.synthetic.main.activity_artist_content.* +import kotlinx.android.synthetic.main.activity_artist_details.* +import java.util.* import javax.inject.Inject +import kotlin.collections.ArrayList class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailsView, CabHolder { override fun openCab(menuRes: Int, callback: MaterialCab.Callback): MaterialCab { @@ -238,8 +220,10 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailsView, scrobbles.show() scrobblesLabel.show() - listeners.text = RetroUtil.formatValue(lastFmArtist.artist.stats.listeners.toFloat()) - scrobbles.text = RetroUtil.formatValue(lastFmArtist.artist.stats.playcount.toFloat()) + listeners.text = + RetroUtil.formatValue(lastFmArtist.artist.stats.listeners.toFloat()) + scrobbles.text = + RetroUtil.formatValue(lastFmArtist.artist.stats.playcount.toFloat()) } } } @@ -318,9 +302,14 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailsView, return true } R.id.action_reset_artist_image -> { - Toast.makeText(this@ArtistDetailActivity, resources.getString(R.string.updating), Toast.LENGTH_SHORT) + Toast.makeText( + this@ArtistDetailActivity, + resources.getString(R.string.updating), + Toast.LENGTH_SHORT + ) .show() - CustomArtistImageUtil.getInstance(this@ArtistDetailActivity).resetCustomArtistImage(artist) + CustomArtistImageUtil.getInstance(this@ArtistDetailActivity) + .resetCustomArtistImage(artist) forceDownload = true return true } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt index 7b5ceef6b..633bf0fd9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt @@ -35,19 +35,7 @@ import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import com.bumptech.glide.Glide -import kotlinx.android.synthetic.main.activity_drive_mode.close -import kotlinx.android.synthetic.main.activity_drive_mode.image -import kotlinx.android.synthetic.main.activity_drive_mode.nextButton -import kotlinx.android.synthetic.main.activity_drive_mode.playPauseButton -import kotlinx.android.synthetic.main.activity_drive_mode.previousButton -import kotlinx.android.synthetic.main.activity_drive_mode.progressSlider -import kotlinx.android.synthetic.main.activity_drive_mode.repeatButton -import kotlinx.android.synthetic.main.activity_drive_mode.shuffleButton -import kotlinx.android.synthetic.main.activity_drive_mode.songCurrentProgress -import kotlinx.android.synthetic.main.activity_drive_mode.songFavourite -import kotlinx.android.synthetic.main.activity_drive_mode.songText -import kotlinx.android.synthetic.main.activity_drive_mode.songTitle -import kotlinx.android.synthetic.main.activity_drive_mode.songTotalTime +import kotlinx.android.synthetic.main.activity_drive_mode.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -96,7 +84,8 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { private fun toggleFavourite() { CoroutineScope(Dispatchers.IO).launch { - val isFavourite = MusicUtil.isFavorite(this@DriveModeActivity, MusicPlayerRemote.currentSong) + val isFavourite = + MusicUtil.isFavorite(this@DriveModeActivity, MusicPlayerRemote.currentSong) withContext(Dispatchers.Main) { songFavourite.setImageResource(if (isFavourite) R.drawable.ic_favorite_white_24dp else R.drawable.ic_favorite_border_white_24dp) } @@ -183,7 +172,10 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN ) - else -> shuffleButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + else -> shuffleButton.setColorFilter( + lastDisabledPlaybackControlsColor, + PorterDuff.Mode.SRC_IN + ) } } @@ -191,7 +183,10 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { when (MusicPlayerRemote.repeatMode) { MusicService.REPEAT_MODE_NONE -> { repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp) - repeatButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + repeatButton.setColorFilter( + lastDisabledPlaybackControlsColor, + PorterDuff.Mode.SRC_IN + ) } MusicService.REPEAT_MODE_ALL -> { repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt index d3e2de870..3f57ac584 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt @@ -21,11 +21,8 @@ import code.name.monkey.retromusic.mvp.presenter.GenreDetailsView import code.name.monkey.retromusic.util.DensityUtil import code.name.monkey.retromusic.util.RetroColorUtil import com.afollestad.materialcab.MaterialCab -import kotlinx.android.synthetic.main.activity_playlist_detail.empty -import kotlinx.android.synthetic.main.activity_playlist_detail.emptyEmoji -import kotlinx.android.synthetic.main.activity_playlist_detail.recyclerView -import kotlinx.android.synthetic.main.activity_playlist_detail.toolbar -import java.util.ArrayList +import kotlinx.android.synthetic.main.activity_playlist_detail.* +import java.util.* import javax.inject.Inject /** @@ -134,7 +131,8 @@ class GenreDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder, GenreDet override fun openCab(menuRes: Int, callback: MaterialCab.Callback): MaterialCab { if (cab != null && cab!!.isActive) cab?.finish() - cab = MaterialCab(this, R.id.cab_stub).setMenu(menuRes).setCloseDrawableRes(R.drawable.ic_close_white_24dp) + cab = MaterialCab(this, R.id.cab_stub).setMenu(menuRes) + .setCloseDrawableRes(R.drawable.ic_close_white_24dp) .setBackgroundColor( RetroColorUtil.shiftBackgroundColorForLightText( ATHUtil.resolveColor( diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.java b/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.java index 11881b943..d21171294 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.java +++ b/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.java @@ -18,19 +18,23 @@ import android.graphics.Color; import android.os.Bundle; import android.view.MenuItem; import android.webkit.WebView; + import androidx.annotation.NonNull; import androidx.appcompat.widget.Toolbar; + +import org.jetbrains.annotations.Nullable; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; + import code.name.monkey.appthemehelper.ThemeStore; import code.name.monkey.appthemehelper.util.ATHUtil; import code.name.monkey.appthemehelper.util.ColorUtil; import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper; import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.activities.base.AbsBaseActivity; -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import org.jetbrains.annotations.Nullable; /** * Created by hemanths on 2019-09-27. diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt index f2e2bc98f..5af09dfe6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt @@ -18,7 +18,7 @@ import com.r0adkll.slidr.Slidr import com.r0adkll.slidr.model.SlidrConfig import com.r0adkll.slidr.model.SlidrListener import com.r0adkll.slidr.model.SlidrPosition -import kotlinx.android.synthetic.main.activity_lock_screen.image +import kotlinx.android.synthetic.main.activity_lock_screen.* class LockScreenActivity : AbsMusicServiceActivity() { private var fragment: LockScreenPlayerControlsFragment? = null @@ -29,9 +29,11 @@ class LockScreenActivity : AbsMusicServiceActivity() { setShowWhenLocked(true) setTurnScreenOn(true) } else { - this.window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or - WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or - WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON) + this.window.addFlags( + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or + WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON + ) } setDrawUnderStatusBar() setContentView(R.layout.activity_lock_screen) @@ -53,7 +55,8 @@ class LockScreenActivity : AbsMusicServiceActivity() { override fun onSlideClosed(): Boolean { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + val keyguardManager = + getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager keyguardManager.requestDismissKeyguard(this@LockScreenActivity, null) } finish() diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt index 9dc03ef98..06b59f873 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt @@ -8,11 +8,7 @@ import android.os.Build import android.os.Bundle import android.text.InputType import android.text.TextUtils -import android.view.LayoutInflater -import android.view.MenuItem -import android.view.View -import android.view.ViewGroup -import android.view.WindowManager +import android.view.* import androidx.annotation.StringRes import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment @@ -20,13 +16,8 @@ import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentStatePagerAdapter import androidx.viewpager.widget.ViewPager import code.name.monkey.appthemehelper.ThemeStore -import code.name.monkey.appthemehelper.util.ATHUtil +import code.name.monkey.appthemehelper.util.* import code.name.monkey.appthemehelper.util.ATHUtil.resolveColor -import code.name.monkey.appthemehelper.util.ColorUtil -import code.name.monkey.appthemehelper.util.MaterialUtil -import code.name.monkey.appthemehelper.util.MaterialValueHelper -import code.name.monkey.appthemehelper.util.TintHelper -import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity @@ -47,17 +38,17 @@ import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.bottomsheets.BottomSheet import com.afollestad.materialdialogs.input.getInputLayout import com.afollestad.materialdialogs.input.input -import kotlinx.android.synthetic.main.activity_lyrics.fab -import kotlinx.android.synthetic.main.activity_lyrics.tabs -import kotlinx.android.synthetic.main.activity_lyrics.toolbar -import kotlinx.android.synthetic.main.activity_lyrics.viewPager -import kotlinx.android.synthetic.main.fragment_lyrics.offlineLyrics -import kotlinx.android.synthetic.main.fragment_synced.lyricsView +import kotlinx.android.synthetic.main.activity_lyrics.* +import kotlinx.android.synthetic.main.fragment_lyrics.* +import kotlinx.android.synthetic.main.fragment_synced.* import org.jaudiotagger.tag.FieldKey import java.io.File -import java.util.EnumMap +import java.util.* +import kotlin.collections.ArrayList +import kotlin.collections.set -class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPager.OnPageChangeListener { +class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, + ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { when (state) { ViewPager.SCROLL_STATE_IDLE -> fab.show() diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.java b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.java index e8f809042..aa2db905c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.java +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.java @@ -33,11 +33,25 @@ import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; + import androidx.annotation.NonNull; import androidx.appcompat.widget.Toolbar; import androidx.core.app.ActivityCompat; import androidx.fragment.app.Fragment; import androidx.transition.TransitionManager; + +import com.afollestad.materialcab.MaterialCab; +import com.afollestad.materialcab.MaterialCab.Callback; +import com.google.android.material.appbar.AppBarLayout; +import com.google.android.material.card.MaterialCardView; +import com.google.android.material.textview.MaterialTextView; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; + import code.name.monkey.appthemehelper.util.ATHUtil; import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper; import code.name.monkey.retromusic.R; @@ -47,12 +61,12 @@ import code.name.monkey.retromusic.dialogs.OptionsSheetDialogFragment; import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment; import code.name.monkey.retromusic.fragments.mainactivity.AlbumsFragment; import code.name.monkey.retromusic.fragments.mainactivity.ArtistsFragment; +import code.name.monkey.retromusic.fragments.mainactivity.BannerHomeFragment; +import code.name.monkey.retromusic.fragments.mainactivity.FoldersFragment; import code.name.monkey.retromusic.fragments.mainactivity.GenresFragment; import code.name.monkey.retromusic.fragments.mainactivity.PlayingQueueFragment; import code.name.monkey.retromusic.fragments.mainactivity.PlaylistsFragment; import code.name.monkey.retromusic.fragments.mainactivity.SongsFragment; -import code.name.monkey.retromusic.fragments.mainactivity.FoldersFragment; -import code.name.monkey.retromusic.fragments.mainactivity.BannerHomeFragment; import code.name.monkey.retromusic.helper.MusicPlayerRemote; import code.name.monkey.retromusic.helper.SearchQueryHelper; import code.name.monkey.retromusic.helper.SortOrder.AlbumSortOrder; @@ -70,15 +84,6 @@ import code.name.monkey.retromusic.util.NavigationUtil; import code.name.monkey.retromusic.util.PreferenceUtil; import code.name.monkey.retromusic.util.RetroColorUtil; import code.name.monkey.retromusic.util.RetroUtil; -import com.afollestad.materialcab.MaterialCab; -import com.afollestad.materialcab.MaterialCab.Callback; -import com.google.android.material.appbar.AppBarLayout; -import com.google.android.material.card.MaterialCardView; -import com.google.android.material.textview.MaterialTextView; -import java.util.ArrayList; -import java.util.List; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * Created by hemanths on 2020-02-19. @@ -91,18 +96,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity public static final int APP_INTRO_REQUEST = 100; public static final String EXPAND_PANEL = "expand_panel"; - - @Nullable - MainActivityFragmentCallbacks currentFragment; - - private boolean blockRequestPermissions = false; - - private MaterialCab cab; - - private AppBarLayout mAppBarLayout; - - private MaterialTextView mAppTitle; - private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(final Context context, final Intent intent) { @@ -117,11 +110,14 @@ public class MainActivity extends AbsSlidingMusicPanelActivity } } }; - private final IntentFilter mIntentFilter = new IntentFilter(Intent.ACTION_SCREEN_OFF); - + @Nullable + MainActivityFragmentCallbacks currentFragment; + private boolean blockRequestPermissions = false; + private MaterialCab cab; + private AppBarLayout mAppBarLayout; + private MaterialTextView mAppTitle; private Toolbar mToolbar; - private MaterialCardView mToolbarContainer; @Override @@ -298,7 +294,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity @Override public void onSharedPreferenceChanged(final @NonNull SharedPreferences sharedPreferences, - final @NonNull String key) { + final @NonNull String key) { if (key.equals(PreferenceUtil.GENERAL_THEME) || key.equals(PreferenceUtil.BLACK_THEME) || key.equals(PreferenceUtil.ADAPTIVE_COLOR_APP) || key.equals(PreferenceUtil.DOMINANT_COLOR) || key.equals(PreferenceUtil.USER_NAME) || key.equals(PreferenceUtil.TOGGLE_FULL_SCREEN) || @@ -344,22 +340,14 @@ public class MainActivity extends AbsSlidingMusicPanelActivity } if (!tag.equals(currentTag)) { - getSupportFragmentManager().beginTransaction() + getSupportFragmentManager() + .beginTransaction() .replace(R.id.fragment_container, fragment, tag) .commit(); currentFragment = (MainActivityFragmentCallbacks) fragment; } } - public void setMusicChooser(final int option) { - PreferenceUtil.getInstance(this).setLastMusicChooser(option); - if (option == OptionsSheetDialogFragment.FOLDER) { - setCurrentFragment(FoldersFragment.newInstance(this), FoldersFragment.TAG); - } else { - selectedFragment(PreferenceUtil.getInstance(this).getLastPage()); - } - } - @NotNull @Override protected View createContentView() { @@ -591,7 +579,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity } private long parseIdFromIntent(@NonNull Intent intent, String longKey, - String stringKey) { + String stringKey) { long id = intent.getLongExtra(longKey, -1); if (id < 0) { String idString = intent.getStringExtra(stringKey); @@ -641,8 +629,9 @@ public class MainActivity extends AbsSlidingMusicPanelActivity } } + private void setUpGridSizeMenu(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, - @NonNull SubMenu gridSizeMenu) { + @NonNull SubMenu gridSizeMenu) { switch (fragment.getGridSize()) { case 1: diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt index 4af72c3a0..d68e2b96f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt @@ -19,9 +19,7 @@ import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropM import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils -import kotlinx.android.synthetic.main.activity_playing_queue.clearQueue -import kotlinx.android.synthetic.main.activity_playing_queue.recyclerView -import kotlinx.android.synthetic.main.activity_playing_queue.toolbar +import kotlinx.android.synthetic.main.activity_playing_queue.* open class PlayingQueueActivity : AbsMusicServiceActivity() { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt index ab22a62e1..4541ecb56 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt @@ -28,11 +28,7 @@ import com.afollestad.materialcab.MaterialCab import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils -import kotlinx.android.synthetic.main.activity_playlist_detail.empty -import kotlinx.android.synthetic.main.activity_playlist_detail.emptyEmoji -import kotlinx.android.synthetic.main.activity_playlist_detail.emptyText -import kotlinx.android.synthetic.main.activity_playlist_detail.recyclerView -import kotlinx.android.synthetic.main.activity_playlist_detail.toolbar +import kotlinx.android.synthetic.main.activity_playlist_detail.* import javax.inject.Inject class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, PlaylistSongsView { @@ -148,7 +144,8 @@ class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, Playli if (cab != null && cab!!.isActive) { cab!!.finish() } - cab = MaterialCab(this, R.id.cab_stub).setMenu(menuRes).setCloseDrawableRes(R.drawable.ic_close_white_24dp) + cab = MaterialCab(this, R.id.cab_stub).setMenu(menuRes) + .setCloseDrawableRes(R.drawable.ic_close_white_24dp) .setBackgroundColor( RetroColorUtil.shiftBackgroundColorForLightText( ATHUtil.resolveColor( diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt index 07c1ee041..f2a5ee8e1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt @@ -14,9 +14,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsBaseActivity import com.anjlab.android.iab.v3.BillingProcessor import com.anjlab.android.iab.v3.TransactionDetails -import kotlinx.android.synthetic.main.activity_pro_version.purchaseButton -import kotlinx.android.synthetic.main.activity_pro_version.restoreButton -import kotlinx.android.synthetic.main.activity_pro_version.toolbar +import kotlinx.android.synthetic.main.activity_pro_version.* import java.lang.ref.WeakReference class PurchaseActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SearchActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/SearchActivity.kt index 850aaae34..494b6dd58 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/SearchActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/SearchActivity.kt @@ -29,17 +29,12 @@ import code.name.monkey.retromusic.mvp.presenter.SearchPresenter import code.name.monkey.retromusic.mvp.presenter.SearchView import code.name.monkey.retromusic.util.RetroUtil import com.google.android.material.textfield.TextInputEditText -import kotlinx.android.synthetic.main.activity_search.appBarLayout -import kotlinx.android.synthetic.main.activity_search.back -import kotlinx.android.synthetic.main.activity_search.clearText -import kotlinx.android.synthetic.main.activity_search.empty -import kotlinx.android.synthetic.main.activity_search.keyboardPopup -import kotlinx.android.synthetic.main.activity_search.recyclerView -import kotlinx.android.synthetic.main.activity_search.searchContainer -import kotlinx.android.synthetic.main.activity_search.searchView -import kotlinx.android.synthetic.main.activity_search.voiceSearch -import java.util.Locale +import kotlinx.android.synthetic.main.activity_search.* +import java.util.* import javax.inject.Inject +import kotlin.collections.ArrayList +import kotlin.collections.MutableList +import kotlin.collections.emptyList class SearchActivity : AbsMusicServiceActivity(), OnQueryTextListener, TextWatcher, SearchView { @Inject @@ -71,7 +66,8 @@ class SearchActivity : AbsMusicServiceActivity(), OnQueryTextListener, TextWatch back.setOnClickListener { onBackPressed() } voiceSearch.setOnClickListener { startMicSearch() } clearText.setOnClickListener { searchView.clearText() } - searchContainer.backgroundTintList = ColorStateList.valueOf(ATHUtil.resolveColor(this, R.attr.colorSurface)) + searchContainer.backgroundTintList = + ColorStateList.valueOf(ATHUtil.resolveColor(this, R.attr.colorSurface)) keyboardPopup.setOnClickListener { val inputManager = getSystemService(Service.INPUT_METHOD_SERVICE) as InputMethodManager @@ -80,7 +76,10 @@ class SearchActivity : AbsMusicServiceActivity(), OnQueryTextListener, TextWatch keyboardPopup.backgroundTintList = ColorStateList.valueOf(ThemeStore.accentColor(this)) ColorStateList.valueOf( - MaterialValueHelper.getPrimaryTextColor(this, ColorUtil.isColorLight(ThemeStore.accentColor(this))) + MaterialValueHelper.getPrimaryTextColor( + this, + ColorUtil.isColorLight(ThemeStore.accentColor(this)) + ) ).apply { keyboardPopup.setTextColor(this) keyboardPopup.iconTint = this @@ -175,7 +174,8 @@ class SearchActivity : AbsMusicServiceActivity(), OnQueryTextListener, TextWatch when (requestCode) { REQ_CODE_SPEECH_INPUT -> { if (resultCode == Activity.RESULT_OK && null != data) { - val result: ArrayListMusicPlaybackState
+ *
+ * @param context The {@link Context} to use
+ */
+ public MusicPlaybackQueueStore(final @NonNull Context context) {
+ super(context, DATABASE_NAME, null, VERSION);
+ }
+
/**
* @param context The {@link Context} to use
* @return A new instance of this class.
@@ -56,15 +68,6 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper {
return sInstance;
}
- /**
- * Constructor of MusicPlaybackState
- *
- * @param context The {@link Context} to use
- */
- public MusicPlaybackQueueStore(final @NonNull Context context) {
- super(context, DATABASE_NAME, null, VERSION);
- }
-
@Override
public void onCreate(@NonNull final SQLiteDatabase db) {
createTable(db, PLAYING_QUEUE_TABLE_NAME);
@@ -98,7 +101,7 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper {
}
public synchronized void saveQueues(@NonNull final ArrayList
* This is a class that functions much like a SeekBar but
* follows a circle path instead of a straight line.
*
@@ -36,129 +37,70 @@ import code.name.monkey.retromusic.R;
*/
public class SeekArc extends View {
- public interface OnSeekArcChangeListener {
-
- /**
- * Notification that the progress level has changed. Clients can use the
- * fromUser parameter to distinguish user-initiated changes from those
- * that occurred programmatically.
- *
- * @param seekArc The SeekArc whose progress has changed
- * @param progress The current progress level. This will be in the range
- * 0..max where max was set by
- * {@link ProgressArc#setMax(int)}. (The default value for
- * max is 100.)
- * @param fromUser True if the progress change was initiated by the user.
- */
- void onProgressChanged(SeekArc seekArc, int progress, boolean fromUser);
-
- /**
- * Notification that the user has started a touch gesture. Clients may
- * want to use this to disable advancing the seekbar.
- *
- * @param seekArc The SeekArc in which the touch gesture began
- */
- void onStartTrackingTouch(SeekArc seekArc);
-
- /**
- * Notification that the user has finished a touch gesture. Clients may
- * want to use this to re-enable advancing the seekarc.
- *
- * @param seekArc The SeekArc in which the touch gesture began
- */
- void onStopTrackingTouch(SeekArc seekArc);
- }
-
private static final String TAG = SeekArc.class.getSimpleName();
-
private static int INVALID_PROGRESS_VALUE = -1;
-
// The initial rotational offset -90 means we start at 12 o'clock
private final int mAngleOffset = -90;
-
private Paint mArcPaint;
-
// Internal variables
private int mArcRadius = 0;
-
private RectF mArcRect = new RectF();
-
/**
* The Width of the background arc for the SeekArc
*/
private int mArcWidth = 2;
-
/**
* Will the progress increase clockwise or anti-clockwise
*/
private boolean mClockwise = true;
-
/**
* is the control enabled/touchable
*/
private boolean mEnabled = true;
-
/**
* The Maximum value that this SeekArc can be set to
*/
private int mMax = 100;
-
private OnSeekArcChangeListener mOnSeekArcChangeListener;
-
/**
* The Current value that the SeekArc is set to
*/
private int mProgress = 0;
-
private Paint mProgressPaint;
-
private float mProgressSweep = 0;
-
/**
* The width of the progress line for this SeekArc
*/
private int mProgressWidth = 4;
-
/**
* The rotation of the SeekArc- 0 is twelve o'clock
*/
private int mRotation = 0;
-
/**
* Give the SeekArc rounded edges
*/
private boolean mRoundedEdges = false;
-
/**
* The Angle to start drawing this Arc from
*/
private int mStartAngle = 0;
-
/**
* The Angle through which to draw the arc (Max is 360)
*/
private int mSweepAngle = 360;
-
/**
* The Drawable for the seek arc thumbnail
*/
private Drawable mThumb;
-
private int mThumbXPos;
-
private int mThumbYPos;
-
private double mTouchAngle;
-
private float mTouchIgnoreRadius;
-
/**
* Enable touch inside the SeekArc
*/
private boolean mTouchInside = true;
-
private int mTranslateX;
-
private int mTranslateY;
public SeekArc(Context context) {
@@ -574,4 +516,37 @@ public class SeekArc extends View {
private float valuePerDegree() {
return (float) mMax / mSweepAngle;
}
+
+ public interface OnSeekArcChangeListener {
+
+ /**
+ * Notification that the progress level has changed. Clients can use the
+ * fromUser parameter to distinguish user-initiated changes from those
+ * that occurred programmatically.
+ *
+ * @param seekArc The SeekArc whose progress has changed
+ * @param progress The current progress level. This will be in the range
+ * 0..max where max was set by
+ * {@link ProgressArc#setMax(int)}. (The default value for
+ * max is 100.)
+ * @param fromUser True if the progress change was initiated by the user.
+ */
+ void onProgressChanged(SeekArc seekArc, int progress, boolean fromUser);
+
+ /**
+ * Notification that the user has started a touch gesture. Clients may
+ * want to use this to disable advancing the seekbar.
+ *
+ * @param seekArc The SeekArc in which the touch gesture began
+ */
+ void onStartTrackingTouch(SeekArc seekArc);
+
+ /**
+ * Notification that the user has finished a touch gesture. Clients may
+ * want to use this to re-enable advancing the seekarc.
+ *
+ * @param seekArc The SeekArc in which the touch gesture began
+ */
+ void onStopTrackingTouch(SeekArc seekArc);
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeContentObserver.java b/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeContentObserver.java
index f11c4bd3b..2378cc36f 100644
--- a/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeContentObserver.java
+++ b/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeContentObserver.java
@@ -18,6 +18,7 @@ import android.database.ContentObserver;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Handler;
+
import androidx.annotation.NonNull;
public class AudioVolumeContentObserver extends ContentObserver {
@@ -31,8 +32,8 @@ public class AudioVolumeContentObserver extends ContentObserver {
private float mLastVolume;
AudioVolumeContentObserver(@NonNull Handler handler, @NonNull AudioManager audioManager,
- int audioStreamType,
- @NonNull OnAudioVolumeChangedListener listener) {
+ int audioStreamType,
+ @NonNull OnAudioVolumeChangedListener listener) {
super(handler);
mAudioManager = audioManager;
diff --git a/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeObserver.java b/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeObserver.java
index 7e97571c0..e5b002a51 100644
--- a/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeObserver.java
+++ b/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeObserver.java
@@ -17,6 +17,7 @@ package code.name.monkey.retromusic.volume;
import android.content.Context;
import android.media.AudioManager;
import android.os.Handler;
+
import androidx.annotation.NonNull;
public class AudioVolumeObserver {
diff --git a/app/src/main/res/drawable-hdpi/default_album_art.webp b/app/src/main/res/drawable-hdpi/default_album_art.webp
index 11a82d86d..744489568 100644
Binary files a/app/src/main/res/drawable-hdpi/default_album_art.webp and b/app/src/main/res/drawable-hdpi/default_album_art.webp differ
diff --git a/app/src/main/res/drawable-hdpi/default_artist_art.webp b/app/src/main/res/drawable-hdpi/default_artist_art.webp
index 1576defdc..bb551b29e 100644
Binary files a/app/src/main/res/drawable-hdpi/default_artist_art.webp and b/app/src/main/res/drawable-hdpi/default_artist_art.webp differ
diff --git a/app/src/main/res/drawable-hdpi/default_audio_art.webp b/app/src/main/res/drawable-hdpi/default_audio_art.webp
index 10cb9228c..b5dc131ab 100644
Binary files a/app/src/main/res/drawable-hdpi/default_audio_art.webp and b/app/src/main/res/drawable-hdpi/default_audio_art.webp differ
diff --git a/app/src/main/res/drawable-mdpi/default_album_art.webp b/app/src/main/res/drawable-mdpi/default_album_art.webp
index 2ead5c5f9..6ffd34f02 100644
Binary files a/app/src/main/res/drawable-mdpi/default_album_art.webp and b/app/src/main/res/drawable-mdpi/default_album_art.webp differ
diff --git a/app/src/main/res/drawable-mdpi/default_artist_art.webp b/app/src/main/res/drawable-mdpi/default_artist_art.webp
index 6b9f55676..c5e115d22 100644
Binary files a/app/src/main/res/drawable-mdpi/default_artist_art.webp and b/app/src/main/res/drawable-mdpi/default_artist_art.webp differ
diff --git a/app/src/main/res/drawable-mdpi/default_audio_art.webp b/app/src/main/res/drawable-mdpi/default_audio_art.webp
index 8cb889210..ad86e0e0c 100644
Binary files a/app/src/main/res/drawable-mdpi/default_audio_art.webp and b/app/src/main/res/drawable-mdpi/default_audio_art.webp differ
diff --git a/app/src/main/res/drawable-v21/widget_selector_light.xml b/app/src/main/res/drawable-v21/widget_selector_light.xml
index 86c53d73d..83aed83c3 100644
--- a/app/src/main/res/drawable-v21/widget_selector_light.xml
+++ b/app/src/main/res/drawable-v21/widget_selector_light.xml
@@ -1,3 +1,3 @@