Date: Thu, 9 Sep 2021 00:00:20 +0530
Subject: [PATCH 0226/1603] V5 Push
Here's a list of changes/features: https://github.com/RetroMusicPlayer/RetroMusicPlayer/releases/tag/v5.0
Internal Changes:
1) Migrated to ViewBinding
2) Migrated to Glide V4
3) Migrated to kotlin version of Material Dialogs
---
app/build.gradle | 87 +-
app/proguard-rules.pro | 18 +-
app/src/debug/res/values/styles.xml | 12 +-
app/src/main/AndroidManifest.xml | 43 +-
app/src/main/assets/contributors.json | 20 +-
app/src/main/assets/retro-changelog.html | 82 +-
.../java/code/name/monkey/retromusic/App.kt | 4 +-
.../code/name/monkey/retromusic/Constants.kt | 16 +-
.../retromusic/LanguageContextWrapper.java | 7 +-
.../code/name/monkey/retromusic/MainModule.kt | 20 +-
.../retromusic/RetroBottomSheetBehavior.java | 3 +
.../activities/DriveModeActivity.kt | 77 +-
.../activities/LicenseActivity.java | 14 +-
.../activities/LockScreenActivity.kt | 19 +-
.../retromusic/activities/LyricsActivity.kt | 316 +++++-
.../retromusic/activities/MainActivity.kt | 87 +-
.../activities/PermissionActivity.kt | 53 +-
.../activities/PlayingQueueActivity.kt | 46 +-
.../retromusic/activities/PurchaseActivity.kt | 26 +-
.../retromusic/activities/SettingsActivity.kt | 38 +-
.../activities/ShareInstagramStory.kt | 45 +-
.../activities/SupportDevelopmentActivity.kt | 33 +-
.../retromusic/activities/UserInfoActivity.kt | 113 +-
.../activities/WhatsNewActivity.java | 111 +-
.../activities/base/AbsCastActivity.kt | 141 +++
.../base/AbsMusicServiceActivity.kt | 20 +-
.../base/AbsSlidingMusicPanelActivity.kt | 105 +-
.../activities/base/AbsThemeActivity.kt | 15 +-
.../activities/bugreport/BugReportActivity.kt | 110 +-
.../bugreport/model/DeviceInfo.java | 5 +-
.../activities/saf/SAFGuideActivity.java | 5 +-
.../tageditor/AbsTagEditorActivity.kt | 26 +-
.../tageditor/AlbumTagEditorActivity.kt | 90 +-
.../tageditor/SongTagEditorActivity.kt | 110 +-
.../tageditor/WriteTagsAsyncTask.java | 16 +-
.../adapter/CategoryInfoAdapter.java | 8 +-
.../monkey/retromusic/adapter/GenreAdapter.kt | 39 +-
.../monkey/retromusic/adapter/HomeAdapter.kt | 35 +-
.../retromusic/adapter/SearchAdapter.kt | 40 +-
.../retromusic/adapter/SongFileAdapter.kt | 13 +-
.../retromusic/adapter/StorageAdapter.kt | 55 +
.../retromusic/adapter/album/AlbumAdapter.kt | 31 +-
.../adapter/album/AlbumCoverPagerAdapter.kt | 11 +-
.../adapter/album/HorizontalAlbumAdapter.kt | 12 +-
.../adapter/artist/ArtistAdapter.kt | 39 +-
.../adapter/base/AbsMultiSelectAdapter.java | 71 +-
.../adapter/base/MediaEntryViewHolder.java | 4 +-
.../adapter/playlist/PlaylistAdapter.kt | 67 +-
.../song/OrderablePlaylistSongAdapter.kt | 193 ++--
.../adapter/song/PlayingQueueAdapter.kt | 9 +-
.../adapter/song/ShuffleButtonSongAdapter.kt | 12 +
.../retromusic/adapter/song/SongAdapter.kt | 16 +-
.../appshortcuts/DynamicShortcutManager.kt | 1 -
.../retromusic/appwidgets/AppWidgetBig.kt | 19 +-
.../retromusic/appwidgets/AppWidgetCard.kt | 18 +-
.../retromusic/appwidgets/AppWidgetClassic.kt | 19 +-
.../retromusic/appwidgets/AppWidgetSmall.kt | 19 +-
.../retromusic/auto/AutoMediaIDHelper.java | 101 ++
.../retromusic/auto/AutoMusicProvider.kt | 285 ++++++
.../retromusic/auto/MediaItemBuilder.kt | 102 ++
.../name/monkey/retromusic/cast/CastHelper.kt | 83 ++
.../retromusic/cast/CastOptionsProvider.kt | 41 +
.../cast/ExpandedControlsActivity.kt | 19 +
.../retromusic/cast/RetroSessionManager.kt | 22 +
.../monkey/retromusic/cast/RetroWebServer.kt | 140 +++
.../name/monkey/retromusic/db/PlaylistDao.kt | 2 +-
.../monkey/retromusic/db/PlaylistEntity.kt | 2 +-
.../monkey/retromusic/db/PlaylistWithSongs.kt | 2 +-
.../name/monkey/retromusic/db/SongEntity.kt | 2 +-
.../dialogs/BlacklistFolderChooserDialog.java | 155 ---
.../dialogs/BlacklistFolderChooserDialog.kt | 152 +++
.../dialogs/CreatePlaylistDialog.kt | 27 +-
.../retromusic/dialogs/DeleteSongsDialog.kt | 83 +-
.../retromusic/dialogs/SleepTimerDialog.kt | 9 +-
.../retromusic/dialogs/SongDetailDialog.kt | 4 +-
.../monkey/retromusic/extensions/ColorExt.kt | 1 -
.../retromusic/extensions/DrawableExt.kt | 4 -
.../fragments/DetailListFragment.kt | 70 +-
.../retromusic/fragments/LibraryViewModel.kt | 14 +-
.../fragments/MiniPlayerFragment.kt | 71 +-
.../retromusic/fragments/VolumeFragment.kt | 57 +-
.../fragments/about/AboutFragment.kt | 49 +-
.../fragments/albums/AlbumDetailsFragment.kt | 224 ++--
.../fragments/albums/AlbumDetailsViewModel.kt | 12 +-
.../fragments/albums/AlbumsFragment.kt | 46 +-
.../artists/AbsArtistDetailsFragment.kt | 342 +++++++
.../artists/AlbumArtistDetailsFragment.kt | 32 +
.../artists/AlbumArtistDetailsViewModel.kt | 66 ++
.../artists/ArtistDetailsFragment.kt | 294 +-----
.../artists/ArtistDetailsViewModel.kt | 16 +-
.../fragments/artists/ArtistsFragment.kt | 78 +-
.../fragments/base/AbsMusicServiceFragment.kt | 10 +-
.../base/AbsPlayerControlsFragment.kt | 2 +-
.../fragments/base/AbsPlayerFragment.kt | 157 ++-
.../AbsRecyclerViewCustomGridSizeFragment.kt | 30 +-
.../fragments/base/AbsRecyclerViewFragment.kt | 96 +-
.../fragments/folder/FoldersFragment.java | 298 ++++--
.../fragments/genres/GenreDetailsFragment.kt | 51 +-
.../fragments/genres/GenreDetailsViewModel.kt | 1 +
.../fragments/genres/GenresFragment.kt | 55 +-
.../fragments/home/HomeBindingAdapter.kt | 31 +
.../retromusic/fragments/home/HomeFragment.kt | 168 +--
.../fragments/library/LibraryFragment.kt | 35 +-
.../player/PlayerAlbumCoverFragment.kt | 222 +++-
.../player/adaptive/AdaptiveFragment.kt | 18 +-
.../AdaptivePlaybackControlsFragment.kt | 84 +-
.../blur/BlurPlaybackControlsFragment.kt | 119 ++-
.../player/blur/BlurPlayerFragment.kt | 30 +-
.../fragments/player/card/CardFragment.kt | 23 +-
.../card/CardPlaybackControlsFragment.kt | 105 +-
.../player/cardblur/CardBlurFragment.kt | 37 +-
.../CardBlurPlaybackControlsFragment.kt | 95 +-
.../player/circle/CirclePlayerFragment.kt | 88 +-
.../player/classic/ClassicPlayerFragment.kt | 177 ++--
.../fragments/player/color/ColorFragment.kt | 22 +-
.../color/ColorPlaybackControlsFragment.kt | 133 ++-
.../fragments/player/fit/FitFragment.kt | 17 +-
.../player/fit/FitPlaybackControlsFragment.kt | 108 +-
.../flat/FlatPlaybackControlsFragment.kt | 97 +-
.../player/flat/FlatPlayerFragment.kt | 30 +-
.../full/FullPlaybackControlsFragment.kt | 156 +--
.../player/full/FullPlayerFragment.kt | 146 +--
.../player/gradient/GradientPlayerFragment.kt | 229 +++--
.../player/home/HomePlayerFragment.kt | 32 +-
.../lockscreen/LockScreenControlsFragment.kt | 88 +-
.../material/MaterialControlsFragment.kt | 102 +-
.../player/material/MaterialFragment.kt | 18 +-
.../fragments/player/normal/PlayerFragment.kt | 27 +-
.../normal/PlayerPlaybackControlsFragment.kt | 96 +-
.../player/peak/PeakPlayerControlFragment.kt | 72 +-
.../player/peak/PeakPlayerFragment.kt | 35 +-
.../plain/PlainPlaybackControlsFragment.kt | 100 +-
.../player/plain/PlainPlayerFragment.kt | 33 +-
.../simple/SimplePlaybackControlsFragment.kt | 99 +-
.../player/simple/SimplePlayerFragment.kt | 23 +-
.../tiny/TinyPlaybackControlsFragment.kt | 36 +-
.../player/tiny/TinyPlayerFragment.kt | 172 +++-
.../playlists/PlaylistDetailsFragment.kt | 134 ++-
.../playlists/PlaylistDetailsViewModel.kt | 1 +
.../fragments/playlists/PlaylistsFragment.kt | 40 +-
.../fragments/queue/PlayingQueueFragment.kt | 11 +-
.../fragments/search/SearchFragment.kt | 134 ++-
.../fragments/settings/AbsSettingsFragment.kt | 4 +
.../settings/MainSettingsFragment.kt | 41 +-
.../settings/OtherSettingsFragment.kt | 19 +
.../settings/ThemeSettingsFragment.kt | 24 +-
.../fragments/songs/SongsFragment.kt | 40 +-
.../retromusic/glide/AlbumGlideRequest.java | 130 ---
.../retromusic/glide/ArtistGlideRequest.java | 171 ----
.../retromusic/glide/BlurTransformation.kt | 98 +-
.../glide/ProfileBannerGlideRequest.java | 76 --
.../retromusic/glide/RetroGlideExtension.kt | 192 ++++
.../glide/RetroMusicColoredTarget.kt | 20 +-
.../retromusic/glide/RetroMusicGlideModule.kt | 33 +-
.../retromusic/glide/SingleColorTarget.kt | 24 +-
.../retromusic/glide/SongGlideRequest.java | 144 ---
.../glide/UserProfileGlideRequest.java | 83 --
.../glide/artistimage/ArtistImage.kt | 16 +
.../glide/artistimage/ArtistImageFetcher.kt | 121 +++
.../glide/artistimage/ArtistImageLoader.kt | 136 +--
.../glide/audiocover/AudioFileCover.java | 15 +
.../audiocover/AudioFileCoverFetcher.java | 33 +-
.../audiocover/AudioFileCoverLoader.java | 31 +-
.../glide/audiocover/AudioFileCoverUtils.java | 16 +-
.../glide/palette/BitmapPaletteResource.java | 18 +-
.../glide/palette/BitmapPaletteTarget.java | 5 +-
.../palette/BitmapPaletteTranscoder.java | 34 +-
.../glide/palette/BitmapPaletteWrapper.java | 1 +
.../glide/playlistPreview/PlaylistPreview.kt | 31 +
.../playlistPreview/PlaylistPreviewFetcher.kt | 51 +
.../playlistPreview/PlaylistPreviewLoader.kt | 36 +
.../retromusic/helper/MusicPlayerRemote.kt | 29 +-
.../retromusic/helper/SearchQueryHelper.kt | 28 +-
.../monkey/retromusic/helper/SortOrder.kt | 6 +-
.../monkey/retromusic/helper/StackBlur.java | 1 +
.../retromusic/helper/menu/SongMenuHelper.kt | 12 +
.../interfaces/IAlbumArtistClickListener.kt | 21 +
.../interfaces/IMusicServiceEventListener.kt | 2 +
.../monkey/retromusic/lyrics/LrcHelper.java | 1 +
.../monkey/retromusic/lyrics/LrcUtils.java | 1 +
.../monkey/retromusic/lyrics/LrcView.java | 7 +-
.../misc/CustomFragmentStatePagerAdapter.java | 2 +
.../retromusic/misc/DialogAsyncTask.java | 2 +
.../monkey/retromusic/misc/LagTracker.java | 7 +-
.../name/monkey/retromusic/model/Album.kt | 4 +-
.../name/monkey/retromusic/model/Artist.kt | 41 +-
.../monkey/retromusic/model/CategoryInfo.kt | 16 +-
.../monkey/retromusic/model/Contributor.kt | 2 +-
.../name/monkey/retromusic/model/Genre.kt | 2 +-
.../name/monkey/retromusic/model/Playlist.kt | 2 +-
.../monkey/retromusic/model/PlaylistSong.kt | 2 +-
.../code/name/monkey/retromusic/model/Song.kt | 4 +-
.../retromusic/model/lyrics/Lyrics.java | 3 +-
.../model/smartplaylist/HistoryPlaylist.kt | 2 +-
.../model/smartplaylist/LastAddedPlaylist.kt | 2 +-
.../model/smartplaylist/NotPlayedPlaylist.kt | 2 +-
.../model/smartplaylist/ShuffleAllPlaylist.kt | 2 +-
.../model/smartplaylist/TopTracksPlaylist.kt | 2 +-
.../retromusic/network/RetrofitClient.kt | 2 +-
.../conversion/LyricsConverterFactory.kt | 7 +-
.../retromusic/network/model/LastFmAlbum.java | 1 +
.../network/model/LastFmArtist.java | 1 +
.../retromusic/network/model/LastFmTrack.java | 1 +
.../AlbumCoverStylePreferenceDialog.kt | 2 +-
.../preferences/DurationPreference.kt | 95 ++
.../preferences/LibraryPreference.kt | 5 +-
.../NowPlayingScreenPreferenceDialog.kt | 2 +-
.../retromusic/providers/BlacklistStore.java | 7 +-
.../retromusic/providers/HistoryStore.java | 1 +
.../providers/MusicPlaybackQueueStore.java | 5 +-
.../providers/SongPlayCountStore.java | 1 +
.../retromusic/repository/AlbumRepository.kt | 18 +-
.../retromusic/repository/ArtistRepository.kt | 59 +-
.../retromusic/repository/GenreRepository.kt | 9 +-
.../retromusic/repository/Repository.kt | 36 +-
.../retromusic/repository/RoomRepository.kt | 13 +-
.../retromusic/repository/SearchRepository.kt | 46 +-
.../retromusic/repository/SongRepository.kt | 27 +-
.../retromusic/repository/SortedCursor.java | 2 +
.../repository/SortedLongCursor.java | 2 +
.../monkey/retromusic/service/AudioFader.kt | 50 +
.../retromusic/service/CrossFadePlayer.kt | 406 ++++++++
.../service/MediaSessionCallback.kt | 79 +-
.../retromusic/service/MultiPlayer.java | 514 +++++-----
.../retromusic/service/MusicService.java | 195 +++-
.../retromusic/service/PlaybackHandler.java | 10 +-
.../notification/PlayingNotificationImpl.kt | 19 +-
.../notification/PlayingNotificationOreo.kt | 18 +-
.../transform/CascadingPageTransformer.kt | 18 +-
.../transform/HingeTransformation.kt | 41 +-
.../name/monkey/retromusic/util/AppRater.kt | 2 +-
.../retromusic/util/ArtistSignatureUtil.java | 12 +-
.../util/AutoGeneratedPlaylistBitmap.java | 44 +-
.../monkey/retromusic/util/ColorUtil.java | 2 +
.../monkey/retromusic/util/Compressor.java | 1 +
.../retromusic/util/CustomArtistImageUtil.kt | 33 +-
.../monkey/retromusic/util/DensityUtil.kt | 8 +-
.../name/monkey/retromusic/util/FileUtil.java | 9 +-
.../monkey/retromusic/util/ImageUtil.java | 5 +-
.../monkey/retromusic/util/LyricUtil.java | 239 +++--
.../retromusic/util/MergedImageUtils.kt | 2 +-
.../name/monkey/retromusic/util/MusicUtil.kt | 49 +-
.../retromusic/util/NavigationUtil.java | 5 +-
.../retromusic/util/PackageValidator.kt | 347 +++++++
.../monkey/retromusic/util/PlaylistsUtil.java | 11 +-
.../monkey/retromusic/util/PreferenceUtil.kt | 59 +-
.../retromusic/util/RetroColorUtil.java | 5 +-
.../monkey/retromusic/util/RetroUtil.java | 50 +-
.../monkey/retromusic/util/RingtoneManager.kt | 1 -
.../monkey/retromusic/util/RippleUtils.java | 1 +
.../name/monkey/retromusic/util/SAFUtil.java | 14 +-
.../retromusic/util/SwipeAndDragHelper.java | 1 +
.../name/monkey/retromusic/util/ViewUtil.kt | 5 +-
.../color/MediaNotificationProcessor.java | 90 +-
.../util/color/NotificationColorUtil.java | 5 +-
.../views/BaselineGridTextView.java | 5 +-
.../retromusic/views/BreadCrumbLayout.java | 7 +-
.../retromusic/views/CircularImageView.java | 2 +
.../retromusic/views/ContributorsView.java | 2 +
.../monkey/retromusic/views/ListItemView.kt | 23 +-
.../retromusic/views/NetworkImageView.java | 5 +-
.../monkey/retromusic/views/PermissionItem.kt | 27 +-
.../retromusic/views/PopupBackground.java | 2 +
...ollingViewOnApplyWindowInsetsListener.java | 2 +
.../name/monkey/retromusic/views/SeekArc.java | 5 +-
.../retromusic/views/SettingListItemView.kt | 20 +-
.../views/StatusBarMarginFrameLayout.java | 1 +
.../retromusic/views/StatusBarView.java | 1 +
.../retromusic/views/VerticalTextView.java | 1 +
.../volume/AudioVolumeContentObserver.java | 1 +
app/src/main/res/drawable/asld_album.xml | 13 +
app/src/main/res/drawable/asld_artist.xml | 15 +
app/src/main/res/drawable/asld_face.xml | 15 +
app/src/main/res/drawable/asld_folder.xml | 13 +
app/src/main/res/drawable/asld_guitar.xml | 13 +
app/src/main/res/drawable/asld_heart.xml | 18 +
app/src/main/res/drawable/asld_music_note.xml | 13 +
app/src/main/res/drawable/asld_playlist.xml | 15 +
app/src/main/res/drawable/avd_album.xml | 38 +
app/src/main/res/drawable/avd_artist.xml | 46 +
app/src/main/res/drawable/avd_face.xml | 49 +
app/src/main/res/drawable/avd_favorite.xml | 81 ++
app/src/main/res/drawable/avd_folder.xml | 110 ++
app/src/main/res/drawable/avd_guitar.xml | 127 +++
app/src/main/res/drawable/avd_music_note.xml | 114 +++
app/src/main/res/drawable/avd_playlist.xml | 132 +++
app/src/main/res/drawable/avd_unfavorite.xml | 129 +++
app/src/main/res/drawable/ic_album_artist.xml | 16 +
app/src/main/res/drawable/ic_baseline.xml | 5 +
.../main/res/drawable/ic_favorite_border.xml | 26 +-
app/src/main/res/drawable/ic_lyrics.xml | 10 +
.../main/res/drawable/ic_lyrics_outline.xml | 20 +
.../main/res/drawable/ic_pause_outline.xml | 16 +
.../res/drawable/ic_play_arrow_outline.xml | 10 +
.../main/res/drawable/ic_playlist_remove.xml | 10 +
.../res/drawable/ic_skip_next_outline.xml | 10 +
.../res/drawable/ic_skip_previous_outline.xml | 10 +
app/src/main/res/drawable/ic_storage.xml | 10 +
app/src/main/res/drawable/lyrics_mask.xml | 9 +
.../main/res/drawable/shadow_blur_theme.xml | 8 +
.../res/drawable/tab_lyrics_indicator.xml | 10 +
.../res/layout-land/activity_drive_mode.xml | 2 +-
.../layout-land/fragment_album_details.xml | 5 +-
.../layout-land/fragment_artist_details.xml | 5 +-
.../res/layout-land/fragment_banner_home.xml | 190 ++--
.../main/res/layout-land/fragment_blur.xml | 4 +-
.../layout-land/fragment_card_blur_player.xml | 4 +-
.../res/layout-land/fragment_card_player.xml | 4 +-
.../res/layout-land/fragment_color_player.xml | 6 +-
.../res/layout-land/fragment_flat_player.xml | 4 +-
.../main/res/layout-land/fragment_home.xml | 6 +-
.../res/layout-land/fragment_material.xml | 4 +-
.../res/layout-land/fragment_plain_player.xml | 9 +-
.../main/res/layout-land/fragment_player.xml | 4 +-
.../layout-land/fragment_simple_player.xml | 4 +-
app/src/main/res/layout-sw600dp/item_list.xml | 2 +-
.../main/res/layout-sw600dp/item_list_big.xml | 123 +++
.../res/layout-xlarge-land/fragment_blur.xml | 4 +-
.../layout-xlarge/fragment_about_content.xml | 16 +-
app/src/main/res/layout/abs_playlists.xml | 3 +
.../main/res/layout/activity_bug_report.xml | 2 +
.../main/res/layout/activity_drive_mode.xml | 2 +-
.../main/res/layout/activity_lock_screen.xml | 2 +-
app/src/main/res/layout/activity_lyrics.xml | 47 +-
app/src/main/res/layout/activity_settings.xml | 25 +-
.../res/layout/activity_song_tag_editor.xml | 6 +-
.../main/res/layout/activity_user_info.xml | 3 +-
.../main/res/layout/activity_whats_new.xml | 12 +-
app/src/main/res/layout/card_other.xml | 1 -
app/src/main/res/layout/card_social.xml | 15 +-
.../res/layout/cast_controller_layout.xml | 6 +
.../main/res/layout/cast_mini_controller.xml | 107 ++
.../main/res/layout/dialog_edit_lyrics.xml | 39 +
app/src/main/res/layout/fragment_about.xml | 4 +-
.../res/layout/fragment_about_content.xml | 16 +-
.../res/layout/fragment_adaptive_player.xml | 4 +-
.../res/layout/fragment_album_content.xml | 12 +-
.../res/layout/fragment_album_details.xml | 1 +
.../res/layout/fragment_artist_content.xml | 12 +-
.../res/layout/fragment_artist_details.xml | 1 +
.../main/res/layout/fragment_banner_home.xml | 8 +-
app/src/main/res/layout/fragment_blur.xml | 6 +-
...fragment_blur_player_playback_controls.xml | 65 +-
.../res/layout/fragment_card_blur_player.xml | 4 +-
...ent_card_blur_player_playback_controls.xml | 4 +-
.../main/res/layout/fragment_card_player.xml | 4 +-
...fragment_card_player_playback_controls.xml | 9 +-
.../res/layout/fragment_classic_player.xml | 7 +-
.../main/res/layout/fragment_color_player.xml | 4 +-
...ragment_color_player_playback_controls.xml | 7 +-
app/src/main/res/layout/fragment_fit.xml | 4 +-
.../layout/fragment_fit_playback_controls.xml | 5 +-
.../main/res/layout/fragment_flat_player.xml | 4 +-
...fragment_flat_player_playback_controls.xml | 5 +-
app/src/main/res/layout/fragment_folder.xml | 4 +-
app/src/main/res/layout/fragment_full.xml | 4 +-
.../layout/fragment_full_player_controls.xml | 5 +
.../res/layout/fragment_gradient_controls.xml | 5 +
.../res/layout/fragment_gradient_player.xml | 7 +-
app/src/main/res/layout/fragment_home.xml | 5 +-
.../main/res/layout/fragment_home_player.xml | 2 +-
.../res/layout/fragment_main_recycler.xml | 4 +-
.../res/layout/fragment_main_settings.xml | 3 +-
app/src/main/res/layout/fragment_material.xml | 4 +-
.../fragment_material_playback_controls.xml | 52 +-
.../main/res/layout/fragment_mini_player.xml | 3 +-
.../res/layout/fragment_normal_lyrics.xml | 28 +
.../main/res/layout/fragment_peak_player.xml | 23 +-
.../main/res/layout/fragment_plain_player.xml | 13 +-
app/src/main/res/layout/fragment_player.xml | 4 +-
.../layout/fragment_player_album_cover.xml | 45 +
.../fragment_player_playback_controls.xml | 21 +-
.../res/layout/fragment_playlist_detail.xml | 4 +-
app/src/main/res/layout/fragment_search.xml | 127 ++-
.../fragment_simple_controls_fragment.xml | 38 +-
.../res/layout/fragment_simple_player.xml | 4 +-
.../res/layout/fragment_synced_lyrics.xml | 18 +
.../main/res/layout/fragment_tiny_player.xml | 4 +-
app/src/main/res/layout/home_content.xml | 4 +-
app/src/main/res/layout/item_album_card.xml | 46 +-
app/src/main/res/layout/item_artist.xml | 8 +-
.../main/res/layout/item_artist_square.xml | 2 +-
.../main/res/layout/item_favourite_card.xml | 47 +
app/src/main/res/layout/item_genre.xml | 75 ++
app/src/main/res/layout/item_grid.xml | 3 +-
app/src/main/res/layout/item_image.xml | 1 +
app/src/main/res/layout/item_list.xml | 2 +-
app/src/main/res/layout/item_list_big.xml | 95 ++
.../res/layout/item_list_quick_actions.xml | 12 +-
app/src/main/res/layout/item_permission.xml | 11 +
app/src/main/res/layout/item_queue.xml | 4 +-
app/src/main/res/layout/item_storage.xml | 53 +
.../layout/preference_dialog_audio_fade.xml | 42 +
.../res/layout/sliding_music_panel_layout.xml | 8 +-
.../main/res/master/values-pt-rPT/strings.xml | 966 +++++++++---------
app/src/main/res/menu/menu_cast.xml | 11 +
app/src/main/res/menu/menu_item_directory.xml | 4 +
app/src/main/res/menu/menu_item_song.xml | 4 +
app/src/main/res/menu/menu_main.xml | 5 +
app/src/main/res/menu/menu_player.xml | 23 +-
.../menu/menu_playlists_songs_selection.xml | 14 +-
app/src/main/res/menu/menu_search.xml | 6 +
app/src/main/res/navigation/main_graph.xml | 10 +
app/src/main/res/values-my/strings.xml | 665 ++++++++++++
app/src/main/res/values/arrays.xml | 16 +-
app/src/main/res/values/dimens.xml | 7 +
app/src/main/res/values/ids.xml | 3 +
app/src/main/res/values/styles.xml | 19 +-
.../res/xml/allowed_media_browser_callers.xml | 251 +++++
app/src/main/res/xml/automotive_app_desc.xml | 4 +
app/src/main/res/xml/pref_advanced.xml | 23 +-
app/src/main/res/xml/pref_audio.xml | 16 +
.../main/res/xml/pref_now_playing_screen.xml | 7 +
app/src/main/res/xml/pref_ui.xml | 35 +-
appthemehelper/build.gradle | 14 +-
.../name/monkey/appthemehelper/ThemeStore.kt | 38 +-
.../util/MaterialDialogsUtil.kt | 25 -
.../util/ToolbarContentTintHelper.java | 20 +-
build.gradle | 12 +-
gradle.properties | 1 -
gradle/wrapper/gradle-wrapper.properties | 2 +-
421 files changed, 13285 insertions(+), 5757 deletions(-)
create mode 100644 app/src/main/java/code/name/monkey/retromusic/activities/base/AbsCastActivity.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/adapter/StorageAdapter.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/auto/AutoMediaIDHelper.java
create mode 100644 app/src/main/java/code/name/monkey/retromusic/auto/AutoMusicProvider.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/auto/MediaItemBuilder.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/cast/CastHelper.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/cast/CastOptionsProvider.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/cast/ExpandedControlsActivity.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/cast/RetroSessionManager.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/cast/RetroWebServer.kt
delete mode 100644 app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.java
create mode 100644 app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/artists/AlbumArtistDetailsFragment.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/artists/AlbumArtistDetailsViewModel.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeBindingAdapter.kt
delete mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/AlbumGlideRequest.java
delete mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/ArtistGlideRequest.java
delete mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/ProfileBannerGlideRequest.java
create mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/RetroGlideExtension.kt
delete mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/SongGlideRequest.java
delete mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/UserProfileGlideRequest.java
create mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImage.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageFetcher.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/playlistPreview/PlaylistPreview.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/playlistPreview/PlaylistPreviewFetcher.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/playlistPreview/PlaylistPreviewLoader.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/interfaces/IAlbumArtistClickListener.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/preferences/DurationPreference.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/service/AudioFader.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt
create mode 100644 app/src/main/java/code/name/monkey/retromusic/util/PackageValidator.kt
create mode 100644 app/src/main/res/drawable/asld_album.xml
create mode 100644 app/src/main/res/drawable/asld_artist.xml
create mode 100644 app/src/main/res/drawable/asld_face.xml
create mode 100644 app/src/main/res/drawable/asld_folder.xml
create mode 100644 app/src/main/res/drawable/asld_guitar.xml
create mode 100644 app/src/main/res/drawable/asld_heart.xml
create mode 100644 app/src/main/res/drawable/asld_music_note.xml
create mode 100644 app/src/main/res/drawable/asld_playlist.xml
create mode 100644 app/src/main/res/drawable/avd_album.xml
create mode 100644 app/src/main/res/drawable/avd_artist.xml
create mode 100644 app/src/main/res/drawable/avd_face.xml
create mode 100644 app/src/main/res/drawable/avd_favorite.xml
create mode 100644 app/src/main/res/drawable/avd_folder.xml
create mode 100644 app/src/main/res/drawable/avd_guitar.xml
create mode 100644 app/src/main/res/drawable/avd_music_note.xml
create mode 100644 app/src/main/res/drawable/avd_playlist.xml
create mode 100644 app/src/main/res/drawable/avd_unfavorite.xml
create mode 100644 app/src/main/res/drawable/ic_album_artist.xml
create mode 100644 app/src/main/res/drawable/ic_baseline.xml
create mode 100644 app/src/main/res/drawable/ic_lyrics.xml
create mode 100644 app/src/main/res/drawable/ic_lyrics_outline.xml
create mode 100644 app/src/main/res/drawable/ic_pause_outline.xml
create mode 100644 app/src/main/res/drawable/ic_play_arrow_outline.xml
create mode 100644 app/src/main/res/drawable/ic_playlist_remove.xml
create mode 100644 app/src/main/res/drawable/ic_skip_next_outline.xml
create mode 100644 app/src/main/res/drawable/ic_skip_previous_outline.xml
create mode 100644 app/src/main/res/drawable/ic_storage.xml
create mode 100644 app/src/main/res/drawable/lyrics_mask.xml
create mode 100644 app/src/main/res/drawable/shadow_blur_theme.xml
create mode 100644 app/src/main/res/drawable/tab_lyrics_indicator.xml
create mode 100644 app/src/main/res/layout-sw600dp/item_list_big.xml
create mode 100644 app/src/main/res/layout/cast_controller_layout.xml
create mode 100644 app/src/main/res/layout/cast_mini_controller.xml
create mode 100644 app/src/main/res/layout/dialog_edit_lyrics.xml
create mode 100644 app/src/main/res/layout/fragment_normal_lyrics.xml
create mode 100644 app/src/main/res/layout/fragment_synced_lyrics.xml
create mode 100644 app/src/main/res/layout/item_favourite_card.xml
create mode 100644 app/src/main/res/layout/item_genre.xml
create mode 100644 app/src/main/res/layout/item_list_big.xml
create mode 100644 app/src/main/res/layout/item_storage.xml
create mode 100644 app/src/main/res/layout/preference_dialog_audio_fade.xml
create mode 100644 app/src/main/res/menu/menu_cast.xml
create mode 100644 app/src/main/res/values-my/strings.xml
create mode 100644 app/src/main/res/xml/allowed_media_browser_callers.xml
create mode 100644 app/src/main/res/xml/automotive_app_desc.xml
delete mode 100644 appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialDialogsUtil.kt
diff --git a/app/build.gradle b/app/build.gradle
index a13a13503..f504eb7fd 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,31 +1,29 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
-apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: "androidx.navigation.safeargs.kotlin"
+apply plugin: 'kotlin-parcelize'
android {
- compileSdkVersion 29
+ compileSdkVersion 31
buildToolsVersion = '29.0.3'
defaultConfig {
minSdkVersion 21
targetSdkVersion 29
- renderscriptTargetApi 29 //must match target sdk and build tools
+ renderscriptTargetApi 29//must match target sdk and build tools
vectorDrawables.useSupportLibrary = true
applicationId "code.name.monkey.retromusic"
- versionCode 10503
- versionName '4.0.010' + "_" + getDate()
-
- multiDexEnabled true
+ versionCode 10519
+ versionName '5.0.0' + "_" + getDate()
buildConfigField("String", "GOOGLE_PLAY_LICENSING_KEY", "\"${getProperty(getProperties('../public.properties'), 'GOOGLE_PLAY_LICENSE_KEY')}\"")
}
signingConfigs {
release {
- Properties properties = getProperties('/Users/apple/Documents/Github/music.jks')
+ Properties properties = getProperties('retro.properties')
storeFile file(getProperty(properties, 'storeFile'))
keyAlias getProperty(properties, 'keyAlias')
storePassword getProperty(properties, 'storePassword')
@@ -36,7 +34,6 @@ android {
release {
//debuggable true
minifyEnabled true
- //shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
@@ -46,6 +43,10 @@ android {
}
}
+ buildFeatures{
+ viewBinding true
+ }
+
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
@@ -67,17 +68,11 @@ android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
- androidExtensions {
- experimental = true
- }
- kapt {
- generateStubs = true
- }
}
def getProperties(String fileName) {
final Properties properties = new Properties()
- def file = file(fileName)
+ def file = rootProject.file(fileName)
if (file.exists()) {
file.withInputStream { stream -> properties.load(stream) }
}
@@ -95,76 +90,76 @@ static def getDate() {
dependencies {
implementation project(':appthemehelper')
- implementation 'androidx.multidex:multidex:2.0.1'
implementation "androidx.gridlayout:gridlayout:1.0.0"
implementation "androidx.cardview:cardview:1.0.0"
- implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'androidx.annotation:annotation:1.1.0'
- implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- implementation 'androidx.recyclerview:recyclerview:1.1.0'
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'androidx.annotation:annotation:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
+ implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.preference:preference-ktx:1.1.1'
- implementation 'androidx.core:core-ktx:1.3.2'
- implementation 'androidx.fragment:fragment-ktx:1.2.5'
+ implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.palette:palette-ktx:1.0.0'
- def nav_version = "2.3.2"
+ //Cast Dependencies
+ implementation 'androidx.mediarouter:mediarouter:1.2.5'
+ implementation 'com.google.android.gms:play-services-cast-framework:20.0.0'
+ //WebServer by NanoHttpd
+ implementation "org.nanohttpd:nanohttpd:2.3.1"
+
+ def nav_version = "2.4.0-alpha07"
implementation "androidx.navigation:navigation-runtime-ktx:$nav_version"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
- def room_version = "2.2.5"
+ def room_version = "2.3.0"
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
- def lifecycle_version = "2.2.0"
+ def lifecycle_version = "2.3.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
implementation 'com.google.android.play:core-ktx:1.8.1'
- implementation 'com.google.android.material:material:1.3.0-alpha04'
+ implementation 'com.google.android.material:material:1.5.0-alpha03'
def retrofit_version = '2.9.0'
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
- implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'
+ implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.2'
- def material_dialog_version = "0.9.6.0"
+ def material_dialog_version = "3.3.0"
implementation "com.afollestad.material-dialogs:core:$material_dialog_version"
- implementation "com.afollestad.material-dialogs:commons:$material_dialog_version"
+ implementation "com.afollestad.material-dialogs:input:$material_dialog_version"
+ implementation "com.afollestad.material-dialogs:color:$material_dialog_version"
+ implementation "com.afollestad.material-dialogs:bottomsheets:$material_dialog_version"
+ //noinspection GradleDependency
implementation 'com.afollestad:material-cab:0.1.12'
- def kotlin_coroutines_version = "1.3.8"
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+
+ def kotlin_coroutines_version = "1.5.1"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version"
def koin_version = "2.1.5"
implementation "org.koin:koin-core:$koin_version"
- implementation "org.koin:koin-core-ext:$koin_version"
- implementation "org.koin:koin-androidx-scope:$koin_version"
implementation "org.koin:koin-androidx-viewmodel:$koin_version"
- implementation "org.koin:koin-androidx-fragment:$koin_version"
- implementation "org.koin:koin-androidx-ext:$koin_version"
- implementation 'com.github.bumptech.glide:glide:3.8.0'
- implementation 'com.github.bumptech.glide:okhttp3-integration:1.5.0'
+ implementation 'com.github.bumptech.glide:glide:4.12.0'
+ kapt 'com.github.bumptech.glide:compiler:4.12.0'
+ implementation 'com.github.bumptech.glide:okhttp3-integration:4.12.0'
implementation 'com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:1.0.0'
implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:3.4.0.201406110918-r'
- implementation 'com.github.ksoichiro:android-observablescrollview:1.6.0'
- implementation 'com.github.kabouzeid:recyclerview-fastscroll:1.9-kmod'
- implementation 'com.github.AdrienPoupa:jaudiotagger:2.2.3'
+ implementation 'org.bitbucket.ijabz:jaudiotagger:2.2.5'
implementation 'com.anjlab.android.iab.v3:library:1.1.0'
implementation 'com.r0adkll:slidableactivity:2.1.0'
- implementation 'com.heinrichreimersoftware:material-intro:1.6'
+ implementation 'com.heinrichreimersoftware:material-intro:2.0.0'
implementation 'com.github.dhaval2404:imagepicker:1.7.1'
- implementation 'org.jsoup:jsoup:1.11.1'
- implementation 'me.zhanghai.android.fastscroll:library:1.1.0'
- implementation 'me.jorgecastillo:androidcolorx:0.2.0'
- implementation 'org.jsoup:jsoup:1.11.1'
+ implementation 'me.zhanghai.android.fastscroll:library:1.1.7'
debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index c48afcd1b..f5edd6ed0 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -23,6 +23,9 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
+-keepnames class **
+-keepnames class ** { *; }
+-keepattributes SourceFile,LineNumberTable
-dontwarn java.lang.invoke.*
-dontwarn **$$Lambda$*
@@ -34,9 +37,10 @@
# Glide
-keep public class * implements com.bumptech.glide.module.GlideModule
--keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
- **[] $VALUES;
- public *;
+-keep public class * extends com.bumptech.glide.module.AppGlideModule
+-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
+ **[] $VALUES;
+ public *;
}
# OkHttp
@@ -47,8 +51,6 @@
#-dontwarn
#-ignorewarnings
--dontshrink
--dontobfuscate
-dontwarn org.jaudiotagger.**
-keep class org.jaudiotagger.** { *; }
@@ -59,4 +61,8 @@
-keepnames class code.name.monkey.retromusic.model.Home
-keep class * extends androidx.fragment.app.Fragment{}
-keepnames class * extends android.os.Parcelable
--keepnames class * extends java.io.Serializable
\ No newline at end of file
+-keepnames class * extends java.io.Serializable
+-keep class code.name.monkey.retromusic.network.model.** { *; }
+-keep class code.name.monkey.retromusic.model.CategoryInfo { *; }
+-keep class com.google.android.material.bottomsheet.** { *; }
+-keep class code.name.monkey.retromusic.Constants { *; }
\ No newline at end of file
diff --git a/app/src/debug/res/values/styles.xml b/app/src/debug/res/values/styles.xml
index dcee15a66..e984e856c 100644
--- a/app/src/debug/res/values/styles.xml
+++ b/app/src/debug/res/values/styles.xml
@@ -6,6 +6,11 @@
- @font/sans
+
+
@@ -91,6 +96,11 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c8b117ede..16fa048d2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,9 +5,10 @@
+
-
+
@@ -29,7 +30,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.RetroMusic.FollowSystem"
- android:usesCleartextTraffic="false"
+ android:usesCleartextTraffic="true"
tools:ignore="AllowBackup,GoogleAppIndexingWarning"
tools:targetApi="m">
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
diff --git a/app/src/main/assets/contributors.json b/app/src/main/assets/contributors.json
index e085d3797..7b97dc026 100644
--- a/app/src/main/assets/contributors.json
+++ b/app/src/main/assets/contributors.json
@@ -6,14 +6,14 @@
"image": "https://i.imgur.com/AoVs9oj.jpg"
},
{
- "name": "Lennart Glamann",
- "summary": "Play Store Banner & Images",
- "link": "https://t.me/FlixbusLennart",
- "image": "https://i.imgur.com/Q5Nsx1R.jpg"
+ "name": "Prathamesh More",
+ "summary": "Developer",
+ "link": "https://prathameshmm02.github.io",
+ "image": "https://i.imgur.com/ZHoOrHx.jpg"
},
{
"name": "Daksh P. Jain",
- "summary": "Support Representative & Moderator",
+ "summary": "Website & GitHub Maintainer",
"link": "https://daksh.eu.org",
"image": "https://i.imgur.com/fnYpg65.jpg"
},
@@ -23,9 +23,15 @@
"link": "https://t.me/MilindGoel15",
"image": "https://i.imgur.com/Bz4De21_d.jpg"
},
-{
+ {
+ "name": "Lennart Glamann",
+ "summary": "Play Store Banner & Images",
+ "link": "https://t.me/FlixbusLennart",
+ "image": "https://i.imgur.com/Q5Nsx1R.jpg"
+ },
+ {
"name": "Haythem Gataa",
- "summary": "App Logo Designer",
+ "summary": "App Logo & Banners",
"link": "https://dribbble.com/haythemgataa",
"image": "https://i.imgur.com/g5RuIZq.jpg"
}
diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html
index aa3c01e7f..6525c677d 100644
--- a/app/src/main/assets/retro-changelog.html
+++ b/app/src/main/assets/retro-changelog.html
@@ -6,9 +6,11 @@
word-wrap: break-word;
}
- body {
- padding-left: 1rem;
- padding-right: 1rem;
+ div{
+ margin: 20px 10px;
+ padding: 10px;
+ border-radius: 10px;
+ box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
}
h2 {
@@ -18,10 +20,7 @@
li {
font-size: 0.85rem;
- padding-top: 0.5rem;
- padding-left: 0;
- padding-right: 0;
- color: rgba(0, 0, 0, 0.8);
+ padding: 0.5rem 0;
}
ul {
@@ -44,39 +43,62 @@
margin-block-end: 0.5rem;
}
- h3 span {
- border-radius: 0.2rem;
- padding-left: 0.5rem;
- padding-right: 0.5rem;
- padding-top: 0.3rem;
- padding-bottom: 0.3rem;
+ h3 {
+ margin: 10px 0px;
font-size: 1rem;
}
{style-placeholder}
+
+
+
+
+
+
-April 30, 2020
-v3.5.110
-Beta version
-
-
- - Changed profile form image to icon
- - New what's new screen
- - Added In-App language changer, where you can select language
-
-
-
- - Improved loading of Songs, Albums, Artists, Genres, Playlists
-
+
+ Clear the app if it crashes after updating
+
+
+
+
September 06, 2021
+
v5.0.0
+
What's New
+
+ - Added Chromecast support
+ - Added animated icons
+ - Added cross-fade (experimental)
+ - Added ability to remember the last tab
+ - Added whitelisting songs
+ - Added support for embedded synced lyrics
+ - Added lyrics editor for normal and synced lyrics
+ - Added playlist ordering
+ - Added search filters
+ - Added audio fade
+ - Added Multi-select in album and artist details
+ - Added SD card from folders tab
+ - Added Synced lyrics in all themes
+ - Added Swipe anywhere to change the song
+ - Added album artist
+ - Albums now show album artists instead of artists of the first song
+
+
Fixed
+
+ - Fixed playlist preview images
+ - Fixed language switching
+
+
Improved
+
+ - Improved playlists tab
+ - Improved genres tab
+
+
-*If you face any UI related issues you clear app data and cache, if itsnot working try to
- uninstall and install
- again.
-
\ No newline at end of file
+