From c62e38eb7ea1d2239776705b0a066ffd5c79be52 Mon Sep 17 00:00:00 2001 From: lihongwei Date: Mon, 18 Nov 2024 16:52:58 +0800 Subject: [PATCH] =?UTF-8?q?A=E9=9D=A2=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/OfflineMusicPlayer.jks | Bin 0 -> 2600 bytes app/build.gradle.kts | 10 +- app/google-services.json | 2 +- app/keystore.properties | 12 +- app/proguard-rules.pro | 2 +- .../playermp3}/ExampleInstrumentedTest.java | 2 +- app/src/main/AndroidManifest.xml | 4 +- app/src/main/ic_launcher-playstore.png | Bin 0 -> 41881 bytes .../hi/music/player/api/onCheckDownload.java | 7 - .../music/playermp3}/MusicApplication.java | 18 +- .../adapter/A_HomeViewPagerAdapter.java | 6 +- .../adapter/A_ImportFragmentAdapter.java | 54 ++-- .../adapter/A_InstrumentAdapter.java | 10 +- .../playermp3}/adapter/A_NatureAdapter.java | 10 +- .../playermp3}/adapter/A_WhiteAdapter.java | 10 +- .../playermp3}/adapter/AdapterCategory.java | 21 +- .../adapter/AdapterCategoryList.java | 21 +- .../adapter/AdapterDownloadSong.java | 13 +- .../music/playermp3}/adapter/AdapterHome.java | 16 +- .../playermp3}/adapter/AdapterLikeSong.java | 36 ++- .../playermp3}/adapter/AdapterPlayList.java | 20 +- .../playermp3}/adapter/AdapterResult.java | 14 +- .../adapter/AdapterResultListAlbum.java | 12 +- .../adapter/AdapterResultListSong.java | 12 +- .../playermp3}/adapter/AdapterSearch.java | 14 +- .../adapter/AdapterSearchChild.java | 15 +- .../playermp3}/adapter/AdapterSinger.java | 12 +- .../playermp3}/adapter/AdapterSuggestion.java | 4 +- .../music/playermp3}/adapter/BaseAdapter.java | 8 +- .../adapter/HomeViewPagerAdapter.java | 8 +- .../playermp3}/api/HomeItemClickListener.java | 16 +- .../playermp3}/api/LikeSongListener.java | 4 +- .../api/MediaControllerListener.java | 2 +- .../api/MediaControllerStatusListener.java | 2 +- .../music/playermp3}/api/OnHasUrlAction.java | 2 +- .../music/playermp3}/api/RequestListener.java | 4 +- .../music/playermp3/api/onCheckDownload.java | 7 + .../playermp3}/api/onImageColorListener.java | 2 +- .../playermp3}/api/onPlayNextListener.java | 2 +- .../customerview/AnimaPlayingView.java | 4 +- .../music/playermp3}/dialog/BaseDialog.java | 6 +- .../playermp3}/dialog/DialogPlayList.java | 20 +- .../music/playermp3}/firebase/RemoteConfig.kt | 8 +- .../playermp3}/firebase/RemoteConfigJava.java | 4 +- .../music/playermp3}/firebase/Sp.java | 4 +- .../helper/AudioItemDiffCallback.java | 4 +- .../helper/BaseViewModelStoreOwner.java | 2 +- .../helper/CircularProgressBar.java | 2 +- .../music/playermp3}/helper/CommonUtils.java | 20 +- .../playermp3}/helper/ItemDecoration.java | 4 +- .../music/playermp3}/helper/JsonUtils.java | 6 +- .../music/playermp3}/helper/MyValue.java | 2 +- .../music/playermp3}/helper/SettingUtil.java | 2 +- .../playermp3}/helper/ViewModelScope.java | 4 +- .../playermp3}/javabean/A_data/AudioItem.java | 2 +- .../playermp3}/javabean/A_data/Category.java | 2 +- .../playermp3}/javabean/BoxDownloadSong.java | 2 +- .../playermp3}/javabean/BoxLikeSong.java | 2 +- .../playermp3}/javabean/CustomerDownload.java | 2 +- .../playermp3}/javabean/CustomerUrlInfo.java | 4 +- .../javabean/requestbody/BodyHome.java | 4 +- .../javabean/requestbody/BodyPlay.java | 4 +- .../javabean/requestbody/BodyPlayUrl.java | 4 +- .../javabean/requestbody/BodySearch.java | 5 +- .../requestbody/BodySearchSuggestion.java | 5 +- .../javabean/requestbody/child/Client.java | 2 +- .../requestbody/child/ContextBody.java | 5 +- .../response/ResponseCategoryList.java | 4 +- .../javabean/response/ResponseHome.java | 4 +- .../response/ResponsePlayListInfo.java | 4 +- .../javabean/response/ResponsePlayUrl.java | 2 +- .../javabean/response/ResponseResult.java | 2 +- .../javabean/response/ResponseResultList.java | 4 +- .../javabean/response/ResponseSearch.java | 4 +- .../response/child/ResponseCategory.java | 2 +- .../child/ResponseCategoryListChild.java | 2 +- .../response/child/ResponseHomeChild.java | 2 +- .../child/ResponseResultListChild.java | 2 +- .../response/child/ResponseSearchChild.java | 2 +- .../response/child/ResponseSingle.java | 2 +- .../media3/DynamicMediaSourceFactory.java | 26 +- .../playermp3}/media3/MyControllerView.java | 2 +- .../media3/MyDownloadCacheManager.java | 4 +- .../playermp3}/media3/MyDownloadService.java | 12 +- .../media3/MyMediaControllerManager.java | 29 ++- .../playermp3}/media3/MyPlayCacheManager.java | 2 +- .../playermp3}/media3/PlaybackService.java | 8 +- .../playermp3}/media3/testSourceFactory.java | 8 +- .../music/playermp3}/network/JsonHelper.java | 31 ++- .../music/playermp3}/network/MusicApi.java | 3 +- .../playermp3}/network/ObserverWrapper.java | 6 +- .../playermp3}/network/RetrofitManager.java | 19 +- .../objectbox/ObjectBoxManager.java | 12 +- .../service/MusicPlayerForegroundService.java | 22 +- .../ui/activity/A_HomeActivity.java | 16 +- .../ui/activity/A_PlayActivity.java | 39 +-- .../ui/activity/A_SettingActivity.java | 10 +- .../ui/activity/A_SplashActivity.java | 10 +- .../playermp3}/ui/activity/BaseActivity.java | 22 +- .../ui/activity/CategoryListActivity.java | 38 +-- .../playermp3}/ui/activity/HomeActivity.java | 15 +- .../ui/activity/LikeSongActivity.java | 25 +- .../playermp3}/ui/activity/PlayActivity.java | 54 ++-- .../ui/activity/ResultListActivity.java | 24 +- .../ui/activity/viewmodel/A_VMHome.java | 2 +- .../ui/activity/viewmodel/A_VMPlay.java | 2 +- .../ui/activity/viewmodel/VMApplication.java | 20 +- .../ui/activity/viewmodel/VMPlay.java | 19 +- .../playermp3}/ui/fragmnt/A_HomeFragment.java | 16 +- .../ui/fragmnt/A_ImportFragment.java | 74 +++++- .../playermp3}/ui/fragmnt/BaseFragment.java | 6 +- .../playermp3}/ui/fragmnt/HomeFragment.java | 42 ++-- .../ui/fragmnt/ProfileFragment.java | 24 +- .../playermp3}/ui/fragmnt/SearchFragment.java | 28 +-- .../ui/fragmnt/viewmodel/A_VMHome.java | 10 +- .../ui/fragmnt/viewmodel/A_VMImport.java | 18 +- .../ui/fragmnt/viewmodel/VMCategoryList.java | 13 +- .../ui/fragmnt/viewmodel/VMHome.java | 14 +- .../ui/fragmnt/viewmodel/VMResultList.java | 11 +- .../ui/fragmnt/viewmodel/VMSearch.java | 13 +- .../res/drawable-v24/music_player_launch.png | Bin 0 -> 16766 bytes .../res/drawable/ic_launcher_background.xml | 236 ++++++------------ app/src/main/res/layout/activity_ahome.xml | 4 +- app/src/main/res/layout/activity_aplay.xml | 6 +- app/src/main/res/layout/activity_asetting.xml | 5 +- app/src/main/res/layout/activity_asplash.xml | 17 +- app/src/main/res/layout/activity_base.xml | 2 +- app/src/main/res/layout/fragment_a_home.xml | 2 + app/src/main/res/layout/fragment_a_import.xml | 3 +- app/src/main/res/layout/item_a_home_1.xml | 7 +- app/src/main/res/layout/item_a_home_2.xml | 6 +- app/src/main/res/layout/item_a_home_3.xml | 2 +- app/src/main/res/layout/item_a_import.xml | 3 +- app/src/main/res/layout/item_play_list.xml | 2 +- app/src/main/res/layout/layout_panel.xml | 2 +- app/src/main/res/layout/rename_dialog.xml | 2 - .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 +- app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 1404 -> 2134 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 3014 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 2898 -> 3644 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 982 -> 1456 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 1912 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 1772 -> 2284 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 1900 -> 2696 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 4230 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 3918 -> 5098 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 2884 -> 4010 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 7332 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 5914 -> 6970 bytes app/src/main/res/mipmap-xxxhdpi/bygone.png | Bin 0 -> 27653 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 3844 -> 5460 bytes .../ic_launcher_foreground.webp | Bin 0 -> 9568 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 7778 -> 9626 bytes .../main/res/mipmap-xxxhdpi/music_logo.png | Bin 0 -> 16766 bytes app/src/main/res/values/strings.xml | 6 +- .../music/playermp3}/ExampleUnitTest.java | 2 +- 157 files changed, 741 insertions(+), 910 deletions(-) create mode 100644 app/OfflineMusicPlayer.jks rename app/src/androidTest/java/com/{hi/music/player => offline/music/playermp3}/ExampleInstrumentedTest.java (95%) create mode 100644 app/src/main/ic_launcher-playstore.png delete mode 100644 app/src/main/java/com/hi/music/player/api/onCheckDownload.java rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/MusicApplication.java (70%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/A_HomeViewPagerAdapter.java (82%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/A_ImportFragmentAdapter.java (61%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/A_InstrumentAdapter.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/A_NatureAdapter.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/A_WhiteAdapter.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterCategory.java (79%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterCategoryList.java (83%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterDownloadSong.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterHome.java (86%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterLikeSong.java (88%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterPlayList.java (86%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterResult.java (85%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterResultListAlbum.java (91%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterResultListSong.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterSearch.java (88%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterSearchChild.java (86%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterSinger.java (89%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/AdapterSuggestion.java (92%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/BaseAdapter.java (91%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/adapter/HomeViewPagerAdapter.java (78%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/api/HomeItemClickListener.java (75%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/api/LikeSongListener.java (54%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/api/MediaControllerListener.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/api/MediaControllerStatusListener.java (72%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/api/OnHasUrlAction.java (58%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/api/RequestListener.java (69%) create mode 100644 app/src/main/java/com/offline/music/playermp3/api/onCheckDownload.java rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/api/onImageColorListener.java (65%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/api/onPlayNextListener.java (65%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/customerview/AnimaPlayingView.java (97%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/dialog/BaseDialog.java (95%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/dialog/DialogPlayList.java (89%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/firebase/RemoteConfig.kt (96%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/firebase/RemoteConfigJava.java (98%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/firebase/Sp.java (93%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/helper/AudioItemDiffCallback.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/helper/BaseViewModelStoreOwner.java (93%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/helper/CircularProgressBar.java (98%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/helper/CommonUtils.java (95%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/helper/ItemDecoration.java (96%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/helper/JsonUtils.java (93%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/helper/MyValue.java (98%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/helper/SettingUtil.java (98%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/helper/ViewModelScope.java (93%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/A_data/AudioItem.java (94%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/A_data/Category.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/BoxDownloadSong.java (97%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/BoxLikeSong.java (97%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/CustomerDownload.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/CustomerUrlInfo.java (87%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/requestbody/BodyHome.java (80%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/requestbody/BodyPlay.java (92%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/requestbody/BodyPlayUrl.java (82%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/requestbody/BodySearch.java (73%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/requestbody/BodySearchSuggestion.java (73%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/requestbody/child/Client.java (94%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/requestbody/child/ContextBody.java (84%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/ResponseCategoryList.java (91%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/ResponseHome.java (91%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/ResponsePlayListInfo.java (97%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/ResponsePlayUrl.java (96%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/ResponseResult.java (92%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/ResponseResultList.java (79%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/ResponseSearch.java (93%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/child/ResponseCategory.java (97%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/child/ResponseCategoryListChild.java (93%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/child/ResponseHomeChild.java (92%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/child/ResponseResultListChild.java (96%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/child/ResponseSearchChild.java (95%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/javabean/response/child/ResponseSingle.java (96%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/media3/DynamicMediaSourceFactory.java (85%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/media3/MyControllerView.java (86%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/media3/MyDownloadCacheManager.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/media3/MyDownloadService.java (95%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/media3/MyMediaControllerManager.java (94%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/media3/MyPlayCacheManager.java (96%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/media3/PlaybackService.java (96%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/media3/testSourceFactory.java (88%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/network/JsonHelper.java (97%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/network/MusicApi.java (98%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/network/ObserverWrapper.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/network/RetrofitManager.java (93%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/objectbox/ObjectBoxManager.java (91%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/service/MusicPlayerForegroundService.java (95%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/A_HomeActivity.java (95%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/A_PlayActivity.java (94%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/A_SettingActivity.java (82%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/A_SplashActivity.java (87%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/BaseActivity.java (93%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/CategoryListActivity.java (86%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/HomeActivity.java (91%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/LikeSongActivity.java (89%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/PlayActivity.java (95%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/ResultListActivity.java (89%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/viewmodel/A_VMHome.java (81%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/viewmodel/A_VMPlay.java (81%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/viewmodel/VMApplication.java (66%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/activity/viewmodel/VMPlay.java (84%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/A_HomeFragment.java (78%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/A_ImportFragment.java (71%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/BaseFragment.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/HomeFragment.java (80%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/ProfileFragment.java (88%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/SearchFragment.java (90%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/viewmodel/A_VMHome.java (92%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/viewmodel/A_VMImport.java (87%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/viewmodel/VMCategoryList.java (69%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/viewmodel/VMHome.java (85%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/viewmodel/VMResultList.java (74%) rename app/src/main/java/com/{hi/music/player => offline/music/playermp3}/ui/fragmnt/viewmodel/VMSearch.java (84%) create mode 100644 app/src/main/res/drawable-v24/music_player_launch.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/bygone.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/music_logo.png rename app/src/test/java/com/{hi/music/player => offline/music/playermp3}/ExampleUnitTest.java (90%) diff --git a/app/OfflineMusicPlayer.jks b/app/OfflineMusicPlayer.jks new file mode 100644 index 0000000000000000000000000000000000000000..dc46e9f8f0d120d403e9a65262c57119fe3c657f GIT binary patch literal 2600 zcma);c{CL49>-_K7zSe<+gRcyGPW6#B@r2G_OZRhL}Z!9zRNN+%5G38`w}k_g|hcj z_Ao?>#-KzfWErwt@45HXxqsbzo^zh%^Lc*1|DNx8P(&6<5Rd^ygbqWXNRlCG7Y1Yk z77?MHU?Q~j1V2X+8UI@`o+!o>#rThU24VeA6&ni>R77OFcmg$19>1C~!cYzKrs{>g!$hcK~P2jN(2JMkqm+E3}7G< z%$Y$IuM{z0_kWgd8OQ!YnE)n&NAa!;hYan*`hS#kh}fEh7QF~t8Hq1ZLsVtRdvy`)-%(`^v7+` zyo2Gx_%oWr631l(2~g?Ti9o7AKo`s8Ltd@xo+WCde>()FAcMnrMj+=Z@6JuE%qp|+ zWT3t0H>>%PnBu%wo{8f;OD9X|S3w~y*2K$>Q^+Toryhzx%fH>!Uf}75 zU?Ah0Vcs~8LmY&025hZsAEuLk>RbgA=+__(QeTr8Mb5aE}0rrO}sYM=-|qyUSI zUWh?qrku<88inQaWNC!@_S-|))zn+JOZqdMW6pw{o=0(f4>MY>797s%R^@|St5M}NI7^iJSJKfE6ZMsQ5ez&^*tZ-svuATu9 zen;h0PtCqlww4)L>)s?N&(EuwS)|Y2|ES7%YLoYKsT5>TlP>KFyOU0yWNtJqFSqkI zPPePKw10LcKK7>DG>W8p-+wnai^{ zL_4{5i0#ep>)XbS6*KLjAH6ujYfitqSytHm(A2Y+fXIm<)XdP56S>=1syQ4=3m zCNn~h=x>J$jTYmxGTnIH=Jdl_k_(!fNIK`+Ny}HfRGMD}(zl~Sn%Ll9nW5SI2^-jq zjfm#np(k_=1@9J(P?GGQ2#&$N;Hj)S`_1$>O?HA^Rmmi`M2j*$v?fpAdNi<>%f-n| z$sOq@wCk61U)NP5O`XS@>Xg~I!7&%r6gv>R*R}~eTKhq%_oMKKu) z7HnKI(`8vqfsA0`8w zOqh12KA!z{Nr8e|*?&MX8yy=8irV(=q!fmDz2lt0RHsYb8H<55CHCg8-QRy;K|+%;CI5V0>V#N0Kn&D4hNu6 z;=hY|(Qq&~*6W757+O^st&B#gsH0KpC=`)l?$;$IND+}?>;w&ifPj;w_qPH5uNd#> zO<(FEG+evekeji+h^$w@X5UF}UY6 zW<15BPet}~6o&~Lnx}<0lD*j^O1B%Zv9~{E=-Q&_8rl~$Eut9WWU2dCbE9;n8ThuU z&XH!8{#yf!x3_xq@5UyCyH@`;7vm z;eFBt2m2)nr`JIY_WfVHX))<>ewob7p27*CmOM$-Uul$|vEveQJ!Dt;o^URy$(X{x z{51A&MNHsqL6W^j33>d-{bY{uN@`w-+*V?sPwzJOm(K>@QEY0-SGT1-Gn-VF3CUCP z10w#+*KyS#ue1v|i89tLj_~|?=G*+pSB}E)0~ieuEvdvaGiY_BD|Z}ct$B`u4OOEK z`5jA!)s-uqQt{GQjF9YU7i~Q&Eq_ZTonuvcIG@e(h}6oDss+!I@E0zd#d97l zR{~Po@)xaVo#TOL3{MkFOD+&5+qi zis81hP5m8){w1B`VA?=I>R{;DY+_>g!eGA4PTt!qQa4LfB+kF$#AYcRg;H_XVa@L`LT_@C8Gh}NT;FGFMYUPQ|bH-2fY{_|irxch5*n>&C@*skpj7e80 zo>fjMSMW!YDL8of&xO}Pf%rDl3!(>F`tl9_B^xB6#h^~R^JgE}s6Oqfb-#Px+tw~X4iPi<3o?!# zG!X}iljNV@B!#4(T2hqQc%S}aZnzbJ`*SwTWMy-d*CFKP(KPLgv!$*jlUv5)f_2AP zn*TV(=m=$sLZe{6eor7EBLFOBg7a~xh%-@Ip|1E1G#n48D4v6}n9F=5Gev5d=JxG^ d;f9wQwg6Sa?$2M$wS)}jZf5YE1OD@*{{>DSnzaA` literal 0 HcmV?d00001 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c7489f2..3c404d3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -13,19 +13,21 @@ plugins { val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) android { - namespace = "com.hi.music.player" + namespace = "com.offline.music.playermp3" compileSdk = 34 defaultConfig { //com.hi.music.player - applicationId = "com.hi.music.player.test1" + applicationId = "com.offline.music.playermp3" minSdk = 23 targetSdk = 34 versionCode = 1 versionName = "1.0.0" - setProperty("archivesBaseName", "MusicApp_V" + versionName + "(${versionCode})_$timestamp") - + setProperty( + "archivesBaseName", + "Offline Music Player" + versionName + "(${versionCode})_$timestamp" + ) testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/google-services.json b/app/google-services.json index c2190eb..c0472f0 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -9,7 +9,7 @@ "client_info": { "mobilesdk_app_id": "1:550960818622:android:96fd4141e43410fb24f1ef", "android_client_info": { - "package_name": "com.hi.music.player.test1" + "package_name": "com.offline.music.playermp3" } }, "oauth_client": [], diff --git a/app/keystore.properties b/app/keystore.properties index e447842..6acd881 100644 --- a/app/keystore.properties +++ b/app/keystore.properties @@ -1,6 +1,6 @@ -app_name=Music Player -package_name=com.hi.music.player.test -keystoreFile=app/MusicPlayer.jks -key_alias=MusicPlayerkey0 -key_store_password=MusicPlayer -key_password=MusicPlayer \ No newline at end of file +app_name=Offline Music Player +package_name=com.offline.music.player +keystoreFile=app/OfflineMusicPlayer.jks +key_alias=OfflineMusicPlayerkey0 +key_store_password=OfflineMusicPlayer +key_password=OfflineMusicPlayer \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 8993d1b..22fa2d7 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -29,7 +29,7 @@ -dontwarn retrofit2.** -dontwarn javax.annotation.Nullable --keep class com.hi.music.player.javabean.A_data.AudioItem { *; } +-keep class com.offline.music.playermp3.javabean.A_data.AudioItem { *; } # 保持 Context、Intent 和权限相关的公共方法 -keep class android.content.Context { *; } diff --git a/app/src/androidTest/java/com/hi/music/player/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/offline/music/playermp3/ExampleInstrumentedTest.java similarity index 95% rename from app/src/androidTest/java/com/hi/music/player/ExampleInstrumentedTest.java rename to app/src/androidTest/java/com/offline/music/playermp3/ExampleInstrumentedTest.java index 506e548..fa5d710 100644 --- a/app/src/androidTest/java/com/hi/music/player/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/offline/music/playermp3/ExampleInstrumentedTest.java @@ -1,4 +1,4 @@ -package com.hi.music.player; +package com.offline.music.playermp3; import android.content.Context; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index de2b1d0..f282fca 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,9 +17,9 @@ android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" - android:icon="@mipmap/im_logo" + android:icon="@drawable/music_player_launch" android:label="@string/app_name" - android:roundIcon="@mipmap/im_logo" + android:roundIcon="@drawable/music_player_launch" android:supportsRtl="true" android:theme="@style/Theme.MusicApp" tools:targetApi="31"> diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e5da2203367624fbec8171a8abfd7cc1915dfe GIT binary patch literal 41881 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/hi/music/player/api/onCheckDownload.java b/app/src/main/java/com/hi/music/player/api/onCheckDownload.java deleted file mode 100644 index a1aeed3..0000000 --- a/app/src/main/java/com/hi/music/player/api/onCheckDownload.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.hi.music.player.api; - -import com.hi.music.player.javabean.CustomerDownload; - -public interface onCheckDownload { - void onHasDownload(CustomerDownload customerDownload); -} diff --git a/app/src/main/java/com/hi/music/player/MusicApplication.java b/app/src/main/java/com/offline/music/playermp3/MusicApplication.java similarity index 70% rename from app/src/main/java/com/hi/music/player/MusicApplication.java rename to app/src/main/java/com/offline/music/playermp3/MusicApplication.java index c855d88..70a4a8f 100644 --- a/app/src/main/java/com/hi/music/player/MusicApplication.java +++ b/app/src/main/java/com/offline/music/playermp3/MusicApplication.java @@ -1,4 +1,4 @@ -package com.hi.music.player; +package com.offline.music.playermp3; import android.app.Application; import android.content.Context; @@ -6,16 +6,14 @@ import android.content.Context; import androidx.annotation.OptIn; import androidx.media3.common.util.UnstableApi; import androidx.media3.database.StandaloneDatabaseProvider; -import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor; -import androidx.media3.datasource.cache.SimpleCache; -import com.hi.music.player.api.MediaControllerStatusListener; -import com.hi.music.player.firebase.RemoteConfigJava; -import com.hi.music.player.firebase.Sp; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.media3.MyDownloadService; -import com.hi.music.player.media3.MyMediaControllerManager; -import com.hi.music.player.objectbox.ObjectBoxManager; +import com.offline.music.playermp3.api.MediaControllerStatusListener; +import com.offline.music.playermp3.firebase.RemoteConfigJava; +import com.offline.music.playermp3.firebase.Sp; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.media3.MyDownloadService; +import com.offline.music.playermp3.media3.MyMediaControllerManager; +import com.offline.music.playermp3.objectbox.ObjectBoxManager; public class MusicApplication extends Application { diff --git a/app/src/main/java/com/hi/music/player/adapter/A_HomeViewPagerAdapter.java b/app/src/main/java/com/offline/music/playermp3/adapter/A_HomeViewPagerAdapter.java similarity index 82% rename from app/src/main/java/com/hi/music/player/adapter/A_HomeViewPagerAdapter.java rename to app/src/main/java/com/offline/music/playermp3/adapter/A_HomeViewPagerAdapter.java index ed7371b..d3fa31d 100644 --- a/app/src/main/java/com/hi/music/player/adapter/A_HomeViewPagerAdapter.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/A_HomeViewPagerAdapter.java @@ -1,12 +1,12 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; -import com.hi.music.player.ui.fragmnt.A_HomeFragment; -import com.hi.music.player.ui.fragmnt.A_ImportFragment; +import com.offline.music.playermp3.ui.fragmnt.A_HomeFragment; +import com.offline.music.playermp3.ui.fragmnt.A_ImportFragment; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/adapter/A_ImportFragmentAdapter.java b/app/src/main/java/com/offline/music/playermp3/adapter/A_ImportFragmentAdapter.java similarity index 61% rename from app/src/main/java/com/hi/music/player/adapter/A_ImportFragmentAdapter.java rename to app/src/main/java/com/offline/music/playermp3/adapter/A_ImportFragmentAdapter.java index b00ff73..ed9b5c9 100644 --- a/app/src/main/java/com/hi/music/player/adapter/A_ImportFragmentAdapter.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/A_ImportFragmentAdapter.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.content.Context; import android.content.Intent; @@ -12,23 +12,24 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.hi.music.player.R; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.ui.activity.A_PlayActivity; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.ui.activity.A_PlayActivity; import java.util.ArrayList; import java.util.List; - public class A_ImportFragmentAdapter extends RecyclerView.Adapter { private Context context; private List audioFiles = new ArrayList<>(); private AudioItem audioItem; - private OnOptionClickListener onOptionClickListener;; + private OnOptionClickListener onOptionClickListener; + private String newName; - public A_ImportFragmentAdapter(Context context) { + public A_ImportFragmentAdapter(Context context, String newName) { this.context = context; + this.newName = newName; } @NonNull @@ -39,21 +40,31 @@ public class A_ImportFragmentAdapter extends RecyclerView.Adapter= 0 && position < audioFiles.size()) { audioFiles.get(position).setName(newTitle); // 假设 AudioItem 有一个 setName 方法 @@ -86,12 +102,12 @@ public class A_ImportFragmentAdapter extends RecyclerView.Adapter { - int position = getBindingAdapterPosition(); - if (position != RecyclerView.NO_POSITION && onOptionClickListener != null) { + int position = getAdapterPosition(); + if (position != RecyclerView.NO_POSITION && onOptionClickListener != null && audioItem != null) { onOptionClickListener.onOptionClick(position, audioItem.getFile(), option); } }); } + + // 添加 bind 方法,将 audioItem 传递给 ViewHolder + public void bind(AudioItem audioItem) { + this.audioItem = audioItem; + } } - } - - diff --git a/app/src/main/java/com/hi/music/player/adapter/A_InstrumentAdapter.java b/app/src/main/java/com/offline/music/playermp3/adapter/A_InstrumentAdapter.java similarity index 90% rename from app/src/main/java/com/hi/music/player/adapter/A_InstrumentAdapter.java rename to app/src/main/java/com/offline/music/playermp3/adapter/A_InstrumentAdapter.java index 0e043fd..33aa325 100644 --- a/app/src/main/java/com/hi/music/player/adapter/A_InstrumentAdapter.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/A_InstrumentAdapter.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.content.Context; import android.content.Intent; @@ -14,10 +14,10 @@ import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; -import com.hi.music.player.R; -import com.hi.music.player.helper.AudioItemDiffCallback; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.ui.activity.A_PlayActivity; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.helper.AudioItemDiffCallback; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.ui.activity.A_PlayActivity; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/adapter/A_NatureAdapter.java b/app/src/main/java/com/offline/music/playermp3/adapter/A_NatureAdapter.java similarity index 90% rename from app/src/main/java/com/hi/music/player/adapter/A_NatureAdapter.java rename to app/src/main/java/com/offline/music/playermp3/adapter/A_NatureAdapter.java index 8e67b8d..f574150 100644 --- a/app/src/main/java/com/hi/music/player/adapter/A_NatureAdapter.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/A_NatureAdapter.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.content.Context; import android.content.Intent; @@ -13,10 +13,10 @@ import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; -import com.hi.music.player.R; -import com.hi.music.player.helper.AudioItemDiffCallback; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.ui.activity.A_PlayActivity; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.helper.AudioItemDiffCallback; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.ui.activity.A_PlayActivity; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/adapter/A_WhiteAdapter.java b/app/src/main/java/com/offline/music/playermp3/adapter/A_WhiteAdapter.java similarity index 90% rename from app/src/main/java/com/hi/music/player/adapter/A_WhiteAdapter.java rename to app/src/main/java/com/offline/music/playermp3/adapter/A_WhiteAdapter.java index 3067dae..8608d6e 100644 --- a/app/src/main/java/com/hi/music/player/adapter/A_WhiteAdapter.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/A_WhiteAdapter.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.content.Context; import android.content.Intent; @@ -14,10 +14,10 @@ import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; -import com.hi.music.player.R; -import com.hi.music.player.helper.AudioItemDiffCallback; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.ui.activity.A_PlayActivity; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.helper.AudioItemDiffCallback; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.ui.activity.A_PlayActivity; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterCategory.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterCategory.java similarity index 79% rename from app/src/main/java/com/hi/music/player/adapter/AdapterCategory.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterCategory.java index ba7912d..40fa653 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterCategory.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterCategory.java @@ -1,27 +1,18 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; -import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.DataSource; -import com.bumptech.glide.load.engine.GlideException; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.RequestOptions; -import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.databinding.ItemCategoryBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.child.ResponseCategory; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ItemCategoryBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.child.ResponseCategory; public class AdapterCategory extends BaseAdapter{ diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterCategoryList.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterCategoryList.java similarity index 83% rename from app/src/main/java/com/hi/music/player/adapter/AdapterCategoryList.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterCategoryList.java index 3d8d62f..1926b1f 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterCategoryList.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterCategoryList.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; @@ -14,20 +14,15 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.api.onImageColorListener; -import com.hi.music.player.databinding.ItemCategoryListBinding; -import com.hi.music.player.databinding.ItemSingerBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.javabean.response.child.ResponseCategoryListChild; -import com.hi.music.player.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ItemCategoryListBinding; +import com.offline.music.playermp3.databinding.ItemSingerBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; public class AdapterCategoryList extends BaseAdapter { diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterDownloadSong.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterDownloadSong.java similarity index 90% rename from app/src/main/java/com/hi/music/player/adapter/AdapterDownloadSong.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterDownloadSong.java index bcbedb4..b363ddb 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterDownloadSong.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterDownloadSong.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; @@ -17,12 +17,11 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.databinding.ItemLikeSongBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.BoxDownloadSong; -import com.hi.music.player.javabean.BoxLikeSong; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ItemLikeSongBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.BoxDownloadSong; public class AdapterDownloadSong extends BaseAdapter { diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterHome.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterHome.java similarity index 86% rename from app/src/main/java/com/hi/music/player/adapter/AdapterHome.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterHome.java index d395737..2a40683 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterHome.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterHome.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.view.LayoutInflater; import android.view.View; @@ -10,13 +10,13 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.databinding.ItemFooterLoadingBinding; -import com.hi.music.player.databinding.ItemHomeBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.child.ResponseCategory; -import com.hi.music.player.javabean.response.child.ResponseHomeChild; -import com.hi.music.player.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.databinding.ItemFooterLoadingBinding; +import com.offline.music.playermp3.databinding.ItemHomeBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.child.ResponseCategory; +import com.offline.music.playermp3.javabean.response.child.ResponseHomeChild; +import com.offline.music.playermp3.javabean.response.child.ResponseSingle; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterLikeSong.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterLikeSong.java similarity index 88% rename from app/src/main/java/com/hi/music/player/adapter/AdapterLikeSong.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterLikeSong.java index 0ef3cde..0412a8c 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterLikeSong.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterLikeSong.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.content.Context; import android.graphics.drawable.Drawable; @@ -12,9 +12,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.OptIn; -import androidx.lifecycle.Observer; import androidx.media3.common.util.UnstableApi; -import androidx.media3.exoplayer.offline.Download; import androidx.media3.exoplayer.offline.DownloadRequest; import androidx.media3.exoplayer.offline.DownloadService; import androidx.recyclerview.widget.RecyclerView; @@ -27,22 +25,20 @@ import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; import com.google.gson.Gson; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.api.onCheckDownload; -import com.hi.music.player.databinding.ItemLikeSongBinding; -import com.hi.music.player.databinding.ItemSingerBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.BoxDownloadSong; -import com.hi.music.player.javabean.BoxLikeSong; -import com.hi.music.player.javabean.CustomerDownload; -import com.hi.music.player.javabean.response.ResponsePlayUrl; -import com.hi.music.player.javabean.response.child.ResponseSingle; -import com.hi.music.player.media3.MyDownloadService; -import com.hi.music.player.media3.MyMediaControllerManager; -import com.hi.music.player.network.JsonHelper; -import com.hi.music.player.network.RetrofitManager; -import com.hi.music.player.ui.activity.viewmodel.VMApplication; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.api.onCheckDownload; +import com.offline.music.playermp3.databinding.ItemLikeSongBinding; +import com.offline.music.playermp3.databinding.ItemSingerBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.BoxDownloadSong; +import com.offline.music.playermp3.javabean.BoxLikeSong; +import com.offline.music.playermp3.javabean.CustomerDownload; +import com.offline.music.playermp3.javabean.response.ResponsePlayUrl; +import com.offline.music.playermp3.media3.MyDownloadService; +import com.offline.music.playermp3.network.JsonHelper; +import com.offline.music.playermp3.network.RetrofitManager; +import com.offline.music.playermp3.ui.activity.viewmodel.VMApplication; import org.json.JSONObject; @@ -122,7 +118,7 @@ public class AdapterLikeSong extends BaseAdapter() { + RetrofitManager.getInstance().getPlayUrl(videoId, new com.offline.music.playermp3.api.RequestListener() { @Override public void onFail(String errorMsg) { diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterPlayList.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterPlayList.java similarity index 86% rename from app/src/main/java/com/hi/music/player/adapter/AdapterPlayList.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterPlayList.java index 28df28d..20177f4 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterPlayList.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterPlayList.java @@ -1,6 +1,4 @@ -package com.hi.music.player.adapter; - -import static androidx.media3.session.legacy.MediaControllerCompat.getMediaController; +package com.offline.music.playermp3.adapter; import android.view.LayoutInflater; import android.view.View; @@ -11,16 +9,12 @@ import androidx.media3.common.MediaItem; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.bumptech.glide.request.RequestOptions; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.api.MediaControllerListener; -import com.hi.music.player.databinding.ItemPlayListBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.media3.MyMediaControllerManager; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ItemPlayListBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; +import com.offline.music.playermp3.media3.MyMediaControllerManager; public class AdapterPlayList extends BaseAdapter { diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterResult.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterResult.java similarity index 85% rename from app/src/main/java/com/hi/music/player/adapter/AdapterResult.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterResult.java index dd47a52..c3325a0 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterResult.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterResult.java @@ -1,7 +1,6 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.content.Context; -import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,10 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.databinding.ItemResultBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.ItemDecoration; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.ResponseResultList; -import com.hi.music.player.ui.activity.PlayActivity; +import com.offline.music.playermp3.databinding.ItemResultBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.ItemDecoration; +import com.offline.music.playermp3.javabean.response.ResponseResultList; public class AdapterResult extends BaseAdapter{ public AdapterResult(Context mContext) { diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterResultListAlbum.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterResultListAlbum.java similarity index 91% rename from app/src/main/java/com/hi/music/player/adapter/AdapterResultListAlbum.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterResultListAlbum.java index 50139f7..1b4d2f2 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterResultListAlbum.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterResultListAlbum.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; @@ -16,11 +16,11 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.databinding.ItemResultListAlbumBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.child.ResponseResultListChild; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ItemResultListAlbumBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild; public class AdapterResultListAlbum extends BaseAdapter{ @Override diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterResultListSong.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterResultListSong.java similarity index 90% rename from app/src/main/java/com/hi/music/player/adapter/AdapterResultListSong.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterResultListSong.java index b005fc8..999df55 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterResultListSong.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterResultListSong.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; @@ -16,11 +16,11 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.databinding.ItemResultListSongBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.child.ResponseResultListChild; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ItemResultListSongBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild; public class AdapterResultListSong extends BaseAdapter { @Override diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterSearch.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterSearch.java similarity index 88% rename from app/src/main/java/com/hi/music/player/adapter/AdapterSearch.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterSearch.java index 381a982..668e3cc 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterSearch.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterSearch.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.view.LayoutInflater; import android.view.View; @@ -11,12 +11,12 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.CircleCrop; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.databinding.ItemSearchBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.ResponseSearch; -import com.hi.music.player.javabean.response.child.ResponseSearchChild; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ItemSearchBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.ResponseSearch; +import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterSearchChild.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterSearchChild.java similarity index 86% rename from app/src/main/java/com/hi/music/player/adapter/AdapterSearchChild.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterSearchChild.java index 4b8d745..d13e715 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterSearchChild.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterSearchChild.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; @@ -16,13 +16,12 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.databinding.ItemSearchBinding; -import com.hi.music.player.databinding.ItemSearchChildBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.ResponseSearch; -import com.hi.music.player.javabean.response.child.ResponseSearchChild; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ItemSearchBinding; +import com.offline.music.playermp3.databinding.ItemSearchChildBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild; public class AdapterSearchChild extends BaseAdapter { @Override diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterSinger.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterSinger.java similarity index 89% rename from app/src/main/java/com/hi/music/player/adapter/AdapterSinger.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterSinger.java index 99517ae..42bc759 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterSinger.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterSinger.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; @@ -16,11 +16,11 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.databinding.ItemSingerBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ItemSingerBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.child.ResponseSingle; public class AdapterSinger extends BaseAdapter { diff --git a/app/src/main/java/com/hi/music/player/adapter/AdapterSuggestion.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterSuggestion.java similarity index 92% rename from app/src/main/java/com/hi/music/player/adapter/AdapterSuggestion.java rename to app/src/main/java/com/offline/music/playermp3/adapter/AdapterSuggestion.java index 64db4cb..b11f1b2 100644 --- a/app/src/main/java/com/hi/music/player/adapter/AdapterSuggestion.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterSuggestion.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.view.LayoutInflater; import android.view.View; @@ -7,7 +7,7 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.hi.music.player.databinding.ItemSuggestionBinding; +import com.offline.music.playermp3.databinding.ItemSuggestionBinding; public class AdapterSuggestion extends BaseAdapter { diff --git a/app/src/main/java/com/hi/music/player/adapter/BaseAdapter.java b/app/src/main/java/com/offline/music/playermp3/adapter/BaseAdapter.java similarity index 91% rename from app/src/main/java/com/hi/music/player/adapter/BaseAdapter.java rename to app/src/main/java/com/offline/music/playermp3/adapter/BaseAdapter.java index 7483605..7873eb5 100644 --- a/app/src/main/java/com/hi/music/player/adapter/BaseAdapter.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/BaseAdapter.java @@ -1,4 +1,4 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import android.content.Context; import android.view.LayoutInflater; @@ -8,10 +8,8 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; -import com.hi.music.player.api.HomeItemClickListener; -import com.hi.music.player.databinding.ItemFooterLoadingBinding; -import com.hi.music.player.javabean.response.child.ResponseCategory; -import com.hi.music.player.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.api.HomeItemClickListener; +import com.offline.music.playermp3.databinding.ItemFooterLoadingBinding; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/adapter/HomeViewPagerAdapter.java b/app/src/main/java/com/offline/music/playermp3/adapter/HomeViewPagerAdapter.java similarity index 78% rename from app/src/main/java/com/hi/music/player/adapter/HomeViewPagerAdapter.java rename to app/src/main/java/com/offline/music/playermp3/adapter/HomeViewPagerAdapter.java index acab625..9992d04 100644 --- a/app/src/main/java/com/hi/music/player/adapter/HomeViewPagerAdapter.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/HomeViewPagerAdapter.java @@ -1,13 +1,13 @@ -package com.hi.music.player.adapter; +package com.offline.music.playermp3.adapter; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; -import com.hi.music.player.ui.fragmnt.HomeFragment; -import com.hi.music.player.ui.fragmnt.ProfileFragment; -import com.hi.music.player.ui.fragmnt.SearchFragment; +import com.offline.music.playermp3.ui.fragmnt.HomeFragment; +import com.offline.music.playermp3.ui.fragmnt.ProfileFragment; +import com.offline.music.playermp3.ui.fragmnt.SearchFragment; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/api/HomeItemClickListener.java b/app/src/main/java/com/offline/music/playermp3/api/HomeItemClickListener.java similarity index 75% rename from app/src/main/java/com/hi/music/player/api/HomeItemClickListener.java rename to app/src/main/java/com/offline/music/playermp3/api/HomeItemClickListener.java index d04d97a..e74dc62 100644 --- a/app/src/main/java/com/hi/music/player/api/HomeItemClickListener.java +++ b/app/src/main/java/com/offline/music/playermp3/api/HomeItemClickListener.java @@ -1,14 +1,14 @@ -package com.hi.music.player.api; +package com.offline.music.playermp3.api; import androidx.media3.exoplayer.offline.Download; -import com.hi.music.player.javabean.BoxLikeSong; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.javabean.response.ResponseSearch; -import com.hi.music.player.javabean.response.child.ResponseCategory; -import com.hi.music.player.javabean.response.child.ResponseResultListChild; -import com.hi.music.player.javabean.response.child.ResponseSearchChild; -import com.hi.music.player.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.javabean.BoxLikeSong; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; +import com.offline.music.playermp3.javabean.response.ResponseSearch; +import com.offline.music.playermp3.javabean.response.child.ResponseCategory; +import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild; +import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild; +import com.offline.music.playermp3.javabean.response.child.ResponseSingle; public interface HomeItemClickListener { diff --git a/app/src/main/java/com/hi/music/player/api/LikeSongListener.java b/app/src/main/java/com/offline/music/playermp3/api/LikeSongListener.java similarity index 54% rename from app/src/main/java/com/hi/music/player/api/LikeSongListener.java rename to app/src/main/java/com/offline/music/playermp3/api/LikeSongListener.java index ef28c33..0894b9e 100644 --- a/app/src/main/java/com/hi/music/player/api/LikeSongListener.java +++ b/app/src/main/java/com/offline/music/playermp3/api/LikeSongListener.java @@ -1,6 +1,6 @@ -package com.hi.music.player.api; +package com.offline.music.playermp3.api; -import com.hi.music.player.javabean.BoxLikeSong; +import com.offline.music.playermp3.javabean.BoxLikeSong; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/api/MediaControllerListener.java b/app/src/main/java/com/offline/music/playermp3/api/MediaControllerListener.java similarity index 90% rename from app/src/main/java/com/hi/music/player/api/MediaControllerListener.java rename to app/src/main/java/com/offline/music/playermp3/api/MediaControllerListener.java index 393f5ed..83ffb9a 100644 --- a/app/src/main/java/com/hi/music/player/api/MediaControllerListener.java +++ b/app/src/main/java/com/offline/music/playermp3/api/MediaControllerListener.java @@ -1,4 +1,4 @@ -package com.hi.music.player.api; +package com.offline.music.playermp3.api; import androidx.media3.common.MediaItem; diff --git a/app/src/main/java/com/hi/music/player/api/MediaControllerStatusListener.java b/app/src/main/java/com/offline/music/playermp3/api/MediaControllerStatusListener.java similarity index 72% rename from app/src/main/java/com/hi/music/player/api/MediaControllerStatusListener.java rename to app/src/main/java/com/offline/music/playermp3/api/MediaControllerStatusListener.java index 3202399..219aca1 100644 --- a/app/src/main/java/com/hi/music/player/api/MediaControllerStatusListener.java +++ b/app/src/main/java/com/offline/music/playermp3/api/MediaControllerStatusListener.java @@ -1,4 +1,4 @@ -package com.hi.music.player.api; +package com.offline.music.playermp3.api; public interface MediaControllerStatusListener { diff --git a/app/src/main/java/com/hi/music/player/api/OnHasUrlAction.java b/app/src/main/java/com/offline/music/playermp3/api/OnHasUrlAction.java similarity index 58% rename from app/src/main/java/com/hi/music/player/api/OnHasUrlAction.java rename to app/src/main/java/com/offline/music/playermp3/api/OnHasUrlAction.java index 6afc635..37c3a26 100644 --- a/app/src/main/java/com/hi/music/player/api/OnHasUrlAction.java +++ b/app/src/main/java/com/offline/music/playermp3/api/OnHasUrlAction.java @@ -1,4 +1,4 @@ -package com.hi.music.player.api; +package com.offline.music.playermp3.api; public interface OnHasUrlAction { void onHasUrl(); diff --git a/app/src/main/java/com/hi/music/player/api/RequestListener.java b/app/src/main/java/com/offline/music/playermp3/api/RequestListener.java similarity index 69% rename from app/src/main/java/com/hi/music/player/api/RequestListener.java rename to app/src/main/java/com/offline/music/playermp3/api/RequestListener.java index 14b687c..7fc4280 100644 --- a/app/src/main/java/com/hi/music/player/api/RequestListener.java +++ b/app/src/main/java/com/offline/music/playermp3/api/RequestListener.java @@ -1,9 +1,7 @@ -package com.hi.music.player.api; +package com.offline.music.playermp3.api; import org.json.JSONObject; -import okhttp3.ResponseBody; - public interface RequestListener { void onFail(String errorMsg); diff --git a/app/src/main/java/com/offline/music/playermp3/api/onCheckDownload.java b/app/src/main/java/com/offline/music/playermp3/api/onCheckDownload.java new file mode 100644 index 0000000..0e3af35 --- /dev/null +++ b/app/src/main/java/com/offline/music/playermp3/api/onCheckDownload.java @@ -0,0 +1,7 @@ +package com.offline.music.playermp3.api; + +import com.offline.music.playermp3.javabean.CustomerDownload; + +public interface onCheckDownload { + void onHasDownload(CustomerDownload customerDownload); +} diff --git a/app/src/main/java/com/hi/music/player/api/onImageColorListener.java b/app/src/main/java/com/offline/music/playermp3/api/onImageColorListener.java similarity index 65% rename from app/src/main/java/com/hi/music/player/api/onImageColorListener.java rename to app/src/main/java/com/offline/music/playermp3/api/onImageColorListener.java index 30194d4..c536b76 100644 --- a/app/src/main/java/com/hi/music/player/api/onImageColorListener.java +++ b/app/src/main/java/com/offline/music/playermp3/api/onImageColorListener.java @@ -1,4 +1,4 @@ -package com.hi.music.player.api; +package com.offline.music.playermp3.api; public interface onImageColorListener { void onImageColor(int color); diff --git a/app/src/main/java/com/hi/music/player/api/onPlayNextListener.java b/app/src/main/java/com/offline/music/playermp3/api/onPlayNextListener.java similarity index 65% rename from app/src/main/java/com/hi/music/player/api/onPlayNextListener.java rename to app/src/main/java/com/offline/music/playermp3/api/onPlayNextListener.java index 6c9b642..ca18346 100644 --- a/app/src/main/java/com/hi/music/player/api/onPlayNextListener.java +++ b/app/src/main/java/com/offline/music/playermp3/api/onPlayNextListener.java @@ -1,4 +1,4 @@ -package com.hi.music.player.api; +package com.offline.music.playermp3.api; public interface onPlayNextListener { void onPlayNext(boolean hasNext); diff --git a/app/src/main/java/com/hi/music/player/customerview/AnimaPlayingView.java b/app/src/main/java/com/offline/music/playermp3/customerview/AnimaPlayingView.java similarity index 97% rename from app/src/main/java/com/hi/music/player/customerview/AnimaPlayingView.java rename to app/src/main/java/com/offline/music/playermp3/customerview/AnimaPlayingView.java index f3cdc2a..cfac043 100644 --- a/app/src/main/java/com/hi/music/player/customerview/AnimaPlayingView.java +++ b/app/src/main/java/com/offline/music/playermp3/customerview/AnimaPlayingView.java @@ -1,4 +1,4 @@ -package com.hi.music.player.customerview; +package com.offline.music.playermp3.customerview; import android.animation.ValueAnimator; import android.content.Context; @@ -9,7 +9,7 @@ import android.util.AttributeSet; import android.view.View; import android.view.animation.LinearInterpolator; -import com.hi.music.player.helper.CommonUtils; +import com.offline.music.playermp3.helper.CommonUtils; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/dialog/BaseDialog.java b/app/src/main/java/com/offline/music/playermp3/dialog/BaseDialog.java similarity index 95% rename from app/src/main/java/com/hi/music/player/dialog/BaseDialog.java rename to app/src/main/java/com/offline/music/playermp3/dialog/BaseDialog.java index fd87297..88a4a14 100644 --- a/app/src/main/java/com/hi/music/player/dialog/BaseDialog.java +++ b/app/src/main/java/com/offline/music/playermp3/dialog/BaseDialog.java @@ -1,4 +1,4 @@ -package com.hi.music.player.dialog; +package com.offline.music.playermp3.dialog; import android.annotation.SuppressLint; @@ -14,12 +14,10 @@ import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; import androidx.fragment.app.DialogFragment; import androidx.viewbinding.ViewBinding; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; +import com.offline.music.playermp3.R; public abstract class BaseDialog extends DialogFragment { diff --git a/app/src/main/java/com/hi/music/player/dialog/DialogPlayList.java b/app/src/main/java/com/offline/music/playermp3/dialog/DialogPlayList.java similarity index 89% rename from app/src/main/java/com/hi/music/player/dialog/DialogPlayList.java rename to app/src/main/java/com/offline/music/playermp3/dialog/DialogPlayList.java index 322e5fe..5f118d9 100644 --- a/app/src/main/java/com/hi/music/player/dialog/DialogPlayList.java +++ b/app/src/main/java/com/offline/music/playermp3/dialog/DialogPlayList.java @@ -1,7 +1,6 @@ -package com.hi.music.player.dialog; +package com.offline.music.playermp3.dialog; import android.graphics.drawable.Drawable; -import android.graphics.drawable.GradientDrawable; import android.net.Uri; import android.view.LayoutInflater; import android.view.View; @@ -21,15 +20,14 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.adapter.AdapterPlayList; -import com.hi.music.player.api.onImageColorListener; -import com.hi.music.player.databinding.DialogPlayListBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.media3.MyControllerView; -import com.hi.music.player.media3.MyMediaControllerManager; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.adapter.AdapterPlayList; +import com.offline.music.playermp3.api.onImageColorListener; +import com.offline.music.playermp3.databinding.DialogPlayListBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; +import com.offline.music.playermp3.media3.MyMediaControllerManager; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/firebase/RemoteConfig.kt b/app/src/main/java/com/offline/music/playermp3/firebase/RemoteConfig.kt similarity index 96% rename from app/src/main/java/com/hi/music/player/firebase/RemoteConfig.kt rename to app/src/main/java/com/offline/music/playermp3/firebase/RemoteConfig.kt index 08a6aba..3ca0f77 100644 --- a/app/src/main/java/com/hi/music/player/firebase/RemoteConfig.kt +++ b/app/src/main/java/com/offline/music/playermp3/firebase/RemoteConfig.kt @@ -1,21 +1,19 @@ -package com.hi.music.player.firebase +package com.offline.music.playermp3.firebase -import android.annotation.SuppressLint import android.app.Application import android.content.Context import android.os.Handler import android.os.Looper import android.os.Message import android.text.TextUtils -import android.util.Log import com.google.firebase.remoteconfig.ConfigUpdate import com.google.firebase.remoteconfig.ConfigUpdateListener import com.google.firebase.remoteconfig.FirebaseRemoteConfig import com.google.firebase.remoteconfig.FirebaseRemoteConfigException import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue -import com.hi.music.player.BuildConfig -import com.hi.music.player.helper.CommonUtils +import com.offline.music.playermp3.BuildConfig +import com.offline.music.playermp3.helper.CommonUtils import java.lang.ref.WeakReference diff --git a/app/src/main/java/com/hi/music/player/firebase/RemoteConfigJava.java b/app/src/main/java/com/offline/music/playermp3/firebase/RemoteConfigJava.java similarity index 98% rename from app/src/main/java/com/hi/music/player/firebase/RemoteConfigJava.java rename to app/src/main/java/com/offline/music/playermp3/firebase/RemoteConfigJava.java index c2ea2ac..8ec9e1c 100644 --- a/app/src/main/java/com/hi/music/player/firebase/RemoteConfigJava.java +++ b/app/src/main/java/com/offline/music/playermp3/firebase/RemoteConfigJava.java @@ -1,4 +1,4 @@ -package com.hi.music.player.firebase; +package com.offline.music.playermp3.firebase; import android.content.Context; import android.os.Handler; @@ -17,7 +17,7 @@ import com.google.firebase.remoteconfig.FirebaseRemoteConfig; import com.google.firebase.remoteconfig.FirebaseRemoteConfigException; import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings; import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue; -import com.hi.music.player.helper.CommonUtils; +import com.offline.music.playermp3.helper.CommonUtils; import java.lang.ref.WeakReference; import java.util.Map; diff --git a/app/src/main/java/com/hi/music/player/firebase/Sp.java b/app/src/main/java/com/offline/music/playermp3/firebase/Sp.java similarity index 93% rename from app/src/main/java/com/hi/music/player/firebase/Sp.java rename to app/src/main/java/com/offline/music/playermp3/firebase/Sp.java index c0662eb..b74d1d3 100644 --- a/app/src/main/java/com/hi/music/player/firebase/Sp.java +++ b/app/src/main/java/com/offline/music/playermp3/firebase/Sp.java @@ -1,4 +1,4 @@ -package com.hi.music.player.firebase; +package com.offline.music.playermp3.firebase; import android.content.Context; import android.content.SharedPreferences; @@ -39,6 +39,6 @@ public class Sp { } public String getStringValue(String key) { - return preferences.getString(key, RemoteConfigJava.value_open_type_1); + return preferences.getString(key, RemoteConfigJava.value_open_type_0); } } diff --git a/app/src/main/java/com/hi/music/player/helper/AudioItemDiffCallback.java b/app/src/main/java/com/offline/music/playermp3/helper/AudioItemDiffCallback.java similarity index 90% rename from app/src/main/java/com/hi/music/player/helper/AudioItemDiffCallback.java rename to app/src/main/java/com/offline/music/playermp3/helper/AudioItemDiffCallback.java index cc38d3c..d9f9287 100644 --- a/app/src/main/java/com/hi/music/player/helper/AudioItemDiffCallback.java +++ b/app/src/main/java/com/offline/music/playermp3/helper/AudioItemDiffCallback.java @@ -1,8 +1,8 @@ -package com.hi.music.player.helper; +package com.offline.music.playermp3.helper; import androidx.recyclerview.widget.DiffUtil; -import com.hi.music.player.javabean.A_data.AudioItem; +import com.offline.music.playermp3.javabean.A_data.AudioItem; import java.util.List; import java.util.Objects; diff --git a/app/src/main/java/com/hi/music/player/helper/BaseViewModelStoreOwner.java b/app/src/main/java/com/offline/music/playermp3/helper/BaseViewModelStoreOwner.java similarity index 93% rename from app/src/main/java/com/hi/music/player/helper/BaseViewModelStoreOwner.java rename to app/src/main/java/com/offline/music/playermp3/helper/BaseViewModelStoreOwner.java index e11b0f3..6109ea8 100644 --- a/app/src/main/java/com/hi/music/player/helper/BaseViewModelStoreOwner.java +++ b/app/src/main/java/com/offline/music/playermp3/helper/BaseViewModelStoreOwner.java @@ -1,4 +1,4 @@ -package com.hi.music.player.helper; +package com.offline.music.playermp3.helper; import androidx.annotation.NonNull; import androidx.lifecycle.ViewModelStore; diff --git a/app/src/main/java/com/hi/music/player/helper/CircularProgressBar.java b/app/src/main/java/com/offline/music/playermp3/helper/CircularProgressBar.java similarity index 98% rename from app/src/main/java/com/hi/music/player/helper/CircularProgressBar.java rename to app/src/main/java/com/offline/music/playermp3/helper/CircularProgressBar.java index 152f042..42c113c 100644 --- a/app/src/main/java/com/hi/music/player/helper/CircularProgressBar.java +++ b/app/src/main/java/com/offline/music/playermp3/helper/CircularProgressBar.java @@ -1,4 +1,4 @@ -package com.hi.music.player.helper; +package com.offline.music.playermp3.helper; import android.content.Context; import android.graphics.Canvas; diff --git a/app/src/main/java/com/hi/music/player/helper/CommonUtils.java b/app/src/main/java/com/offline/music/playermp3/helper/CommonUtils.java similarity index 95% rename from app/src/main/java/com/hi/music/player/helper/CommonUtils.java rename to app/src/main/java/com/offline/music/playermp3/helper/CommonUtils.java index a741e6a..1c3eba5 100644 --- a/app/src/main/java/com/hi/music/player/helper/CommonUtils.java +++ b/app/src/main/java/com/offline/music/playermp3/helper/CommonUtils.java @@ -1,4 +1,4 @@ -package com.hi.music.player.helper; +package com.offline.music.playermp3.helper; import android.content.Context; import android.graphics.Bitmap; @@ -10,36 +10,26 @@ import android.net.Uri; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; -import android.widget.ImageView; -import android.widget.LinearLayout; import androidx.annotation.OptIn; import androidx.media3.common.MediaItem; import androidx.media3.common.MediaMetadata; import androidx.media3.common.util.UnstableApi; -import androidx.media3.datasource.cache.Cache; -import androidx.media3.datasource.cache.CacheEvictor; -import androidx.media3.datasource.cache.CacheSpan; -import androidx.media3.datasource.cache.SimpleCache; import androidx.media3.exoplayer.offline.Download; import androidx.palette.graphics.Palette; import com.google.gson.Gson; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.api.onImageColorListener; -import com.hi.music.player.javabean.BoxDownloadSong; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.api.onImageColorListener; +import com.offline.music.playermp3.javabean.BoxDownloadSong; import org.json.JSONException; import org.json.JSONObject; -import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.NavigableSet; -import java.util.TreeSet; - import okhttp3.ResponseBody; public class CommonUtils { diff --git a/app/src/main/java/com/hi/music/player/helper/ItemDecoration.java b/app/src/main/java/com/offline/music/playermp3/helper/ItemDecoration.java similarity index 96% rename from app/src/main/java/com/hi/music/player/helper/ItemDecoration.java rename to app/src/main/java/com/offline/music/playermp3/helper/ItemDecoration.java index 735d63a..9577526 100644 --- a/app/src/main/java/com/hi/music/player/helper/ItemDecoration.java +++ b/app/src/main/java/com/offline/music/playermp3/helper/ItemDecoration.java @@ -1,4 +1,4 @@ -package com.hi.music.player.helper; +package com.offline.music.playermp3.helper; import android.graphics.Rect; import android.view.View; @@ -9,7 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; -import com.hi.music.player.MusicApplication; +import com.offline.music.playermp3.MusicApplication; public class ItemDecoration extends RecyclerView.ItemDecoration { diff --git a/app/src/main/java/com/hi/music/player/helper/JsonUtils.java b/app/src/main/java/com/offline/music/playermp3/helper/JsonUtils.java similarity index 93% rename from app/src/main/java/com/hi/music/player/helper/JsonUtils.java rename to app/src/main/java/com/offline/music/playermp3/helper/JsonUtils.java index 54e9094..66a2051 100644 --- a/app/src/main/java/com/hi/music/player/helper/JsonUtils.java +++ b/app/src/main/java/com/offline/music/playermp3/helper/JsonUtils.java @@ -1,9 +1,9 @@ -package com.hi.music.player.helper; +package com.offline.music.playermp3.helper; import android.content.Context; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.javabean.A_data.Category; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.javabean.A_data.Category; import org.json.JSONArray; import org.json.JSONObject; diff --git a/app/src/main/java/com/hi/music/player/helper/MyValue.java b/app/src/main/java/com/offline/music/playermp3/helper/MyValue.java similarity index 98% rename from app/src/main/java/com/hi/music/player/helper/MyValue.java rename to app/src/main/java/com/offline/music/playermp3/helper/MyValue.java index f216f66..0349ef5 100644 --- a/app/src/main/java/com/hi/music/player/helper/MyValue.java +++ b/app/src/main/java/com/offline/music/playermp3/helper/MyValue.java @@ -1,4 +1,4 @@ -package com.hi.music.player.helper; +package com.offline.music.playermp3.helper; public class MyValue { diff --git a/app/src/main/java/com/hi/music/player/helper/SettingUtil.java b/app/src/main/java/com/offline/music/playermp3/helper/SettingUtil.java similarity index 98% rename from app/src/main/java/com/hi/music/player/helper/SettingUtil.java rename to app/src/main/java/com/offline/music/playermp3/helper/SettingUtil.java index dee09e7..3537b3d 100644 --- a/app/src/main/java/com/hi/music/player/helper/SettingUtil.java +++ b/app/src/main/java/com/offline/music/playermp3/helper/SettingUtil.java @@ -1,4 +1,4 @@ -package com.hi.music.player.helper; +package com.offline.music.playermp3.helper; import android.content.ActivityNotFoundException; import android.content.Context; diff --git a/app/src/main/java/com/hi/music/player/helper/ViewModelScope.java b/app/src/main/java/com/offline/music/playermp3/helper/ViewModelScope.java similarity index 93% rename from app/src/main/java/com/hi/music/player/helper/ViewModelScope.java rename to app/src/main/java/com/offline/music/playermp3/helper/ViewModelScope.java index ab25ec8..d39af46 100644 --- a/app/src/main/java/com/hi/music/player/helper/ViewModelScope.java +++ b/app/src/main/java/com/offline/music/playermp3/helper/ViewModelScope.java @@ -1,4 +1,4 @@ -package com.hi.music.player.helper; +package com.offline.music.playermp3.helper; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; @@ -6,8 +6,6 @@ import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; -import com.hi.music.player.MusicApplication; - public class ViewModelScope { private ViewModelProvider mFragmentProvider; private ViewModelProvider mActivityProvider; diff --git a/app/src/main/java/com/hi/music/player/javabean/A_data/AudioItem.java b/app/src/main/java/com/offline/music/playermp3/javabean/A_data/AudioItem.java similarity index 94% rename from app/src/main/java/com/hi/music/player/javabean/A_data/AudioItem.java rename to app/src/main/java/com/offline/music/playermp3/javabean/A_data/AudioItem.java index 52068db..30ffdbe 100644 --- a/app/src/main/java/com/hi/music/player/javabean/A_data/AudioItem.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/A_data/AudioItem.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.A_data; +package com.offline.music.playermp3.javabean.A_data; import java.io.Serializable; diff --git a/app/src/main/java/com/hi/music/player/javabean/A_data/Category.java b/app/src/main/java/com/offline/music/playermp3/javabean/A_data/Category.java similarity index 90% rename from app/src/main/java/com/hi/music/player/javabean/A_data/Category.java rename to app/src/main/java/com/offline/music/playermp3/javabean/A_data/Category.java index 4fd9d64..eb44db6 100644 --- a/app/src/main/java/com/hi/music/player/javabean/A_data/Category.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/A_data/Category.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.A_data; +package com.offline.music.playermp3.javabean.A_data; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/javabean/BoxDownloadSong.java b/app/src/main/java/com/offline/music/playermp3/javabean/BoxDownloadSong.java similarity index 97% rename from app/src/main/java/com/hi/music/player/javabean/BoxDownloadSong.java rename to app/src/main/java/com/offline/music/playermp3/javabean/BoxDownloadSong.java index 720849c..3a8cbab 100644 --- a/app/src/main/java/com/hi/music/player/javabean/BoxDownloadSong.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/BoxDownloadSong.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean; +package com.offline.music.playermp3.javabean; import io.objectbox.annotation.Entity; import io.objectbox.annotation.Id; diff --git a/app/src/main/java/com/hi/music/player/javabean/BoxLikeSong.java b/app/src/main/java/com/offline/music/playermp3/javabean/BoxLikeSong.java similarity index 97% rename from app/src/main/java/com/hi/music/player/javabean/BoxLikeSong.java rename to app/src/main/java/com/offline/music/playermp3/javabean/BoxLikeSong.java index 4a6612d..44d8a35 100644 --- a/app/src/main/java/com/hi/music/player/javabean/BoxLikeSong.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/BoxLikeSong.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean; +package com.offline.music.playermp3.javabean; import io.objectbox.annotation.Entity; import io.objectbox.annotation.Id; diff --git a/app/src/main/java/com/hi/music/player/javabean/CustomerDownload.java b/app/src/main/java/com/offline/music/playermp3/javabean/CustomerDownload.java similarity index 90% rename from app/src/main/java/com/hi/music/player/javabean/CustomerDownload.java rename to app/src/main/java/com/offline/music/playermp3/javabean/CustomerDownload.java index 1cd40a8..c474be3 100644 --- a/app/src/main/java/com/hi/music/player/javabean/CustomerDownload.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/CustomerDownload.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean; +package com.offline.music.playermp3.javabean; import androidx.media3.exoplayer.offline.Download; diff --git a/app/src/main/java/com/hi/music/player/javabean/CustomerUrlInfo.java b/app/src/main/java/com/offline/music/playermp3/javabean/CustomerUrlInfo.java similarity index 87% rename from app/src/main/java/com/hi/music/player/javabean/CustomerUrlInfo.java rename to app/src/main/java/com/offline/music/playermp3/javabean/CustomerUrlInfo.java index 2cf56fe..c25e538 100644 --- a/app/src/main/java/com/hi/music/player/javabean/CustomerUrlInfo.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/CustomerUrlInfo.java @@ -1,6 +1,6 @@ -package com.hi.music.player.javabean; +package com.offline.music.playermp3.javabean; -import com.hi.music.player.javabean.response.ResponsePlayUrl; +import com.offline.music.playermp3.javabean.response.ResponsePlayUrl; public class CustomerUrlInfo { diff --git a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodyHome.java b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodyHome.java similarity index 80% rename from app/src/main/java/com/hi/music/player/javabean/requestbody/BodyHome.java rename to app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodyHome.java index c565ebf..385c167 100644 --- a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodyHome.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodyHome.java @@ -1,6 +1,6 @@ -package com.hi.music.player.javabean.requestbody; +package com.offline.music.playermp3.javabean.requestbody; -import com.hi.music.player.javabean.requestbody.child.ContextBody; +import com.offline.music.playermp3.javabean.requestbody.child.ContextBody; import java.io.Serializable; diff --git a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodyPlay.java b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodyPlay.java similarity index 92% rename from app/src/main/java/com/hi/music/player/javabean/requestbody/BodyPlay.java rename to app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodyPlay.java index 69881ed..b87fb8a 100644 --- a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodyPlay.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodyPlay.java @@ -1,6 +1,6 @@ -package com.hi.music.player.javabean.requestbody; +package com.offline.music.playermp3.javabean.requestbody; -import com.hi.music.player.javabean.requestbody.child.ContextBody; +import com.offline.music.playermp3.javabean.requestbody.child.ContextBody; import java.io.Serializable; diff --git a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodyPlayUrl.java b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodyPlayUrl.java similarity index 82% rename from app/src/main/java/com/hi/music/player/javabean/requestbody/BodyPlayUrl.java rename to app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodyPlayUrl.java index 1185799..d3ce64b 100644 --- a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodyPlayUrl.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodyPlayUrl.java @@ -1,6 +1,6 @@ -package com.hi.music.player.javabean.requestbody; +package com.offline.music.playermp3.javabean.requestbody; -import com.hi.music.player.javabean.requestbody.child.ContextBody; +import com.offline.music.playermp3.javabean.requestbody.child.ContextBody; import java.io.Serializable; diff --git a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodySearch.java b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodySearch.java similarity index 73% rename from app/src/main/java/com/hi/music/player/javabean/requestbody/BodySearch.java rename to app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodySearch.java index e9f6e8b..84d7ad4 100644 --- a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodySearch.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodySearch.java @@ -1,7 +1,6 @@ -package com.hi.music.player.javabean.requestbody; +package com.offline.music.playermp3.javabean.requestbody; -import com.hi.music.player.javabean.requestbody.child.Client; -import com.hi.music.player.javabean.requestbody.child.ContextBody; +import com.offline.music.playermp3.javabean.requestbody.child.ContextBody; import java.io.Serializable; diff --git a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodySearchSuggestion.java b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodySearchSuggestion.java similarity index 73% rename from app/src/main/java/com/hi/music/player/javabean/requestbody/BodySearchSuggestion.java rename to app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodySearchSuggestion.java index f55b0f2..9d1ae25 100644 --- a/app/src/main/java/com/hi/music/player/javabean/requestbody/BodySearchSuggestion.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/BodySearchSuggestion.java @@ -1,7 +1,6 @@ -package com.hi.music.player.javabean.requestbody; +package com.offline.music.playermp3.javabean.requestbody; -import com.hi.music.player.javabean.requestbody.child.Client; -import com.hi.music.player.javabean.requestbody.child.ContextBody; +import com.offline.music.playermp3.javabean.requestbody.child.ContextBody; import java.io.Serializable; diff --git a/app/src/main/java/com/hi/music/player/javabean/requestbody/child/Client.java b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/child/Client.java similarity index 94% rename from app/src/main/java/com/hi/music/player/javabean/requestbody/child/Client.java rename to app/src/main/java/com/offline/music/playermp3/javabean/requestbody/child/Client.java index 0038b66..7583004 100644 --- a/app/src/main/java/com/hi/music/player/javabean/requestbody/child/Client.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/child/Client.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.requestbody.child; +package com.offline.music.playermp3.javabean.requestbody.child; import java.io.Serializable; import java.util.Locale; diff --git a/app/src/main/java/com/hi/music/player/javabean/requestbody/child/ContextBody.java b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/child/ContextBody.java similarity index 84% rename from app/src/main/java/com/hi/music/player/javabean/requestbody/child/ContextBody.java rename to app/src/main/java/com/offline/music/playermp3/javabean/requestbody/child/ContextBody.java index ea476ca..b6bd6b8 100644 --- a/app/src/main/java/com/hi/music/player/javabean/requestbody/child/ContextBody.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/requestbody/child/ContextBody.java @@ -1,7 +1,4 @@ -package com.hi.music.player.javabean.requestbody.child; - -import java.io.Serializable; -import java.util.Locale; +package com.offline.music.playermp3.javabean.requestbody.child; public class ContextBody { diff --git a/app/src/main/java/com/hi/music/player/javabean/response/ResponseCategoryList.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseCategoryList.java similarity index 91% rename from app/src/main/java/com/hi/music/player/javabean/response/ResponseCategoryList.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseCategoryList.java index f9dc48e..8d4eeec 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/ResponseCategoryList.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseCategoryList.java @@ -1,6 +1,4 @@ -package com.hi.music.player.javabean.response; - -import com.hi.music.player.javabean.response.child.ResponseCategoryListChild; +package com.offline.music.playermp3.javabean.response; import java.io.Serializable; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/ResponseHome.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseHome.java similarity index 91% rename from app/src/main/java/com/hi/music/player/javabean/response/ResponseHome.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseHome.java index 03bbd10..77eaa61 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/ResponseHome.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseHome.java @@ -1,8 +1,8 @@ -package com.hi.music.player.javabean.response; +package com.offline.music.playermp3.javabean.response; import androidx.annotation.Nullable; -import com.hi.music.player.javabean.response.child.ResponseHomeChild; +import com.offline.music.playermp3.javabean.response.child.ResponseHomeChild; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/ResponsePlayListInfo.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponsePlayListInfo.java similarity index 97% rename from app/src/main/java/com/hi/music/player/javabean/response/ResponsePlayListInfo.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/ResponsePlayListInfo.java index bf72860..e995f0b 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/ResponsePlayListInfo.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponsePlayListInfo.java @@ -1,6 +1,4 @@ -package com.hi.music.player.javabean.response; - -import com.hi.music.player.helper.MyValue; +package com.offline.music.playermp3.javabean.response; import java.io.Serializable; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/ResponsePlayUrl.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponsePlayUrl.java similarity index 96% rename from app/src/main/java/com/hi/music/player/javabean/response/ResponsePlayUrl.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/ResponsePlayUrl.java index 9e12f31..3ba479d 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/ResponsePlayUrl.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponsePlayUrl.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.response; +package com.offline.music.playermp3.javabean.response; /** diff --git a/app/src/main/java/com/hi/music/player/javabean/response/ResponseResult.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseResult.java similarity index 92% rename from app/src/main/java/com/hi/music/player/javabean/response/ResponseResult.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseResult.java index 321e80d..35838b2 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/ResponseResult.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseResult.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.response; +package com.offline.music.playermp3.javabean.response; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/ResponseResultList.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseResultList.java similarity index 79% rename from app/src/main/java/com/hi/music/player/javabean/response/ResponseResultList.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseResultList.java index 7a911c8..b09dd9f 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/ResponseResultList.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseResultList.java @@ -1,6 +1,6 @@ -package com.hi.music.player.javabean.response; +package com.offline.music.playermp3.javabean.response; -import com.hi.music.player.javabean.response.child.ResponseResultListChild; +import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/ResponseSearch.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseSearch.java similarity index 93% rename from app/src/main/java/com/hi/music/player/javabean/response/ResponseSearch.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseSearch.java index 4bc5471..56cbe19 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/ResponseSearch.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/ResponseSearch.java @@ -1,6 +1,6 @@ -package com.hi.music.player.javabean.response; +package com.offline.music.playermp3.javabean.response; -import com.hi.music.player.javabean.response.child.ResponseSearchChild; +import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseCategory.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseCategory.java similarity index 97% rename from app/src/main/java/com/hi/music/player/javabean/response/child/ResponseCategory.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseCategory.java index 7b6bcef..952ccd5 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseCategory.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseCategory.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.response.child; +package com.offline.music.playermp3.javabean.response.child; import java.io.Serializable; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseCategoryListChild.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseCategoryListChild.java similarity index 93% rename from app/src/main/java/com/hi/music/player/javabean/response/child/ResponseCategoryListChild.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseCategoryListChild.java index f55cd89..23e7d69 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseCategoryListChild.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseCategoryListChild.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.response.child; +package com.offline.music.playermp3.javabean.response.child; public class ResponseCategoryListChild { private String SongTitle; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseHomeChild.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseHomeChild.java similarity index 92% rename from app/src/main/java/com/hi/music/player/javabean/response/child/ResponseHomeChild.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseHomeChild.java index 948cb31..c3991e2 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseHomeChild.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseHomeChild.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.response.child; +package com.offline.music.playermp3.javabean.response.child; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseResultListChild.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseResultListChild.java similarity index 96% rename from app/src/main/java/com/hi/music/player/javabean/response/child/ResponseResultListChild.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseResultListChild.java index f27d3ee..375e46d 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseResultListChild.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseResultListChild.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.response.child; +package com.offline.music.playermp3.javabean.response.child; public class ResponseResultListChild { private String thumbnail; diff --git a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseSearchChild.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseSearchChild.java similarity index 95% rename from app/src/main/java/com/hi/music/player/javabean/response/child/ResponseSearchChild.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseSearchChild.java index 6438aba..aca23e4 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseSearchChild.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseSearchChild.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.response.child; +package com.offline.music.playermp3.javabean.response.child; public class ResponseSearchChild { diff --git a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseSingle.java b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseSingle.java similarity index 96% rename from app/src/main/java/com/hi/music/player/javabean/response/child/ResponseSingle.java rename to app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseSingle.java index 7f02462..95d659d 100644 --- a/app/src/main/java/com/hi/music/player/javabean/response/child/ResponseSingle.java +++ b/app/src/main/java/com/offline/music/playermp3/javabean/response/child/ResponseSingle.java @@ -1,4 +1,4 @@ -package com.hi.music.player.javabean.response.child; +package com.offline.music.playermp3.javabean.response.child; import java.io.Serializable; diff --git a/app/src/main/java/com/hi/music/player/media3/DynamicMediaSourceFactory.java b/app/src/main/java/com/offline/music/playermp3/media3/DynamicMediaSourceFactory.java similarity index 85% rename from app/src/main/java/com/hi/music/player/media3/DynamicMediaSourceFactory.java rename to app/src/main/java/com/offline/music/playermp3/media3/DynamicMediaSourceFactory.java index 2707a15..decd321 100644 --- a/app/src/main/java/com/hi/music/player/media3/DynamicMediaSourceFactory.java +++ b/app/src/main/java/com/offline/music/playermp3/media3/DynamicMediaSourceFactory.java @@ -1,37 +1,15 @@ -package com.hi.music.player.media3; - -import android.net.Uri; +package com.offline.music.playermp3.media3; import androidx.media3.common.MediaItem; import androidx.media3.common.util.UnstableApi; import androidx.media3.datasource.DataSource; -import androidx.media3.datasource.DataSpec; -import androidx.media3.datasource.DefaultDataSource; -import androidx.media3.datasource.DefaultDataSourceFactory; -import androidx.media3.datasource.DefaultHttpDataSource; -import androidx.media3.datasource.ResolvingDataSource; -import androidx.media3.datasource.cache.CacheDataSource; import androidx.media3.datasource.cache.SimpleCache; -import androidx.media3.exoplayer.ExoPlayer; import androidx.media3.exoplayer.drm.DrmSessionManagerProvider; -import androidx.media3.exoplayer.source.DefaultMediaSourceFactory; import androidx.media3.exoplayer.source.MediaSource; -import androidx.media3.exoplayer.source.MediaSourceFactory; import androidx.media3.exoplayer.source.ProgressiveMediaSource; import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.api.RequestListener; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.ResponsePlayUrl; -import com.hi.music.player.network.JsonHelper; -import com.hi.music.player.network.RetrofitManager; - -import org.json.JSONObject; - -import java.io.IOException; - -import okhttp3.ResponseBody; +import com.offline.music.playermp3.helper.CommonUtils; public class DynamicMediaSourceFactory implements MediaSource.Factory { diff --git a/app/src/main/java/com/hi/music/player/media3/MyControllerView.java b/app/src/main/java/com/offline/music/playermp3/media3/MyControllerView.java similarity index 86% rename from app/src/main/java/com/hi/music/player/media3/MyControllerView.java rename to app/src/main/java/com/offline/music/playermp3/media3/MyControllerView.java index 4ed458f..de36a41 100644 --- a/app/src/main/java/com/hi/music/player/media3/MyControllerView.java +++ b/app/src/main/java/com/offline/music/playermp3/media3/MyControllerView.java @@ -1,4 +1,4 @@ -package com.hi.music.player.media3; +package com.offline.music.playermp3.media3; import android.content.Context; diff --git a/app/src/main/java/com/hi/music/player/media3/MyDownloadCacheManager.java b/app/src/main/java/com/offline/music/playermp3/media3/MyDownloadCacheManager.java similarity index 90% rename from app/src/main/java/com/hi/music/player/media3/MyDownloadCacheManager.java rename to app/src/main/java/com/offline/music/playermp3/media3/MyDownloadCacheManager.java index 4f3b0e6..8202ab4 100644 --- a/app/src/main/java/com/hi/music/player/media3/MyDownloadCacheManager.java +++ b/app/src/main/java/com/offline/music/playermp3/media3/MyDownloadCacheManager.java @@ -1,4 +1,4 @@ -package com.hi.music.player.media3; +package com.offline.music.playermp3.media3; import android.content.Context; @@ -8,7 +8,7 @@ import androidx.media3.database.StandaloneDatabaseProvider; import androidx.media3.datasource.cache.NoOpCacheEvictor; import androidx.media3.datasource.cache.SimpleCache; -import com.hi.music.player.MusicApplication; +import com.offline.music.playermp3.MusicApplication; import java.io.File; diff --git a/app/src/main/java/com/hi/music/player/media3/MyDownloadService.java b/app/src/main/java/com/offline/music/playermp3/media3/MyDownloadService.java similarity index 95% rename from app/src/main/java/com/hi/music/player/media3/MyDownloadService.java rename to app/src/main/java/com/offline/music/playermp3/media3/MyDownloadService.java index 68b8e7e..8fee5f2 100644 --- a/app/src/main/java/com/hi/music/player/media3/MyDownloadService.java +++ b/app/src/main/java/com/offline/music/playermp3/media3/MyDownloadService.java @@ -1,4 +1,4 @@ -package com.hi.music.player.media3; +package com.offline.music.playermp3.media3; import android.app.Notification; import android.content.Context; @@ -18,11 +18,11 @@ import androidx.media3.exoplayer.offline.DownloadNotificationHelper; import androidx.media3.exoplayer.offline.DownloadService; import androidx.media3.exoplayer.scheduler.Scheduler; -import com.hi.music.player.R; -import com.hi.music.player.api.onCheckDownload; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.CustomerDownload; -import com.hi.music.player.ui.activity.viewmodel.VMApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.api.onCheckDownload; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.CustomerDownload; +import com.offline.music.playermp3.ui.activity.viewmodel.VMApplication; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/media3/MyMediaControllerManager.java b/app/src/main/java/com/offline/music/playermp3/media3/MyMediaControllerManager.java similarity index 94% rename from app/src/main/java/com/hi/music/player/media3/MyMediaControllerManager.java rename to app/src/main/java/com/offline/music/playermp3/media3/MyMediaControllerManager.java index 1364be9..6d0a7f1 100644 --- a/app/src/main/java/com/hi/music/player/media3/MyMediaControllerManager.java +++ b/app/src/main/java/com/offline/music/playermp3/media3/MyMediaControllerManager.java @@ -1,4 +1,4 @@ -package com.hi.music.player.media3; +package com.offline.music.playermp3.media3; import android.content.ComponentName; import android.net.Uri; @@ -15,21 +15,20 @@ import androidx.media3.session.SessionToken; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.api.MediaControllerListener; -import com.hi.music.player.api.MediaControllerStatusListener; -import com.hi.music.player.api.OnHasUrlAction; -import com.hi.music.player.api.onCheckDownload; -import com.hi.music.player.api.onPlayNextListener; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.CustomerDownload; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.javabean.response.ResponsePlayUrl; -import com.hi.music.player.network.RetrofitManager; -import com.hi.music.player.ui.activity.viewmodel.VMApplication; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.api.MediaControllerListener; +import com.offline.music.playermp3.api.MediaControllerStatusListener; +import com.offline.music.playermp3.api.OnHasUrlAction; +import com.offline.music.playermp3.api.onCheckDownload; +import com.offline.music.playermp3.api.onPlayNextListener; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.CustomerDownload; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; +import com.offline.music.playermp3.javabean.response.ResponsePlayUrl; +import com.offline.music.playermp3.network.RetrofitManager; +import com.offline.music.playermp3.ui.activity.viewmodel.VMApplication; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; diff --git a/app/src/main/java/com/hi/music/player/media3/MyPlayCacheManager.java b/app/src/main/java/com/offline/music/playermp3/media3/MyPlayCacheManager.java similarity index 96% rename from app/src/main/java/com/hi/music/player/media3/MyPlayCacheManager.java rename to app/src/main/java/com/offline/music/playermp3/media3/MyPlayCacheManager.java index ba86e5e..9cdb9f4 100644 --- a/app/src/main/java/com/hi/music/player/media3/MyPlayCacheManager.java +++ b/app/src/main/java/com/offline/music/playermp3/media3/MyPlayCacheManager.java @@ -1,4 +1,4 @@ -package com.hi.music.player.media3; +package com.offline.music.playermp3.media3; import android.content.Context; diff --git a/app/src/main/java/com/hi/music/player/media3/PlaybackService.java b/app/src/main/java/com/offline/music/playermp3/media3/PlaybackService.java similarity index 96% rename from app/src/main/java/com/hi/music/player/media3/PlaybackService.java rename to app/src/main/java/com/offline/music/playermp3/media3/PlaybackService.java index ec2f200..6a1930c 100644 --- a/app/src/main/java/com/hi/music/player/media3/PlaybackService.java +++ b/app/src/main/java/com/offline/music/playermp3/media3/PlaybackService.java @@ -1,4 +1,4 @@ -package com.hi.music.player.media3; +package com.offline.music.playermp3.media3; import android.content.Context; import android.content.Intent; @@ -14,21 +14,17 @@ import androidx.media3.datasource.DataSpec; import androidx.media3.datasource.DefaultDataSource; import androidx.media3.datasource.DefaultHttpDataSource; import androidx.media3.datasource.ResolvingDataSource; -import androidx.media3.datasource.TransferListener; import androidx.media3.datasource.cache.CacheDataSource; import androidx.media3.datasource.cache.SimpleCache; import androidx.media3.exoplayer.DefaultLoadControl; import androidx.media3.exoplayer.ExoPlayer; -import androidx.media3.exoplayer.source.DefaultMediaSourceFactory; import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.source.ProgressiveMediaSource; import androidx.media3.session.MediaSession; import androidx.media3.session.MediaSessionService; -import com.hi.music.player.helper.CommonUtils; - -import java.io.IOException; +import com.offline.music.playermp3.helper.CommonUtils; public class PlaybackService extends MediaSessionService { private MediaSession mediaSession = null; diff --git a/app/src/main/java/com/hi/music/player/media3/testSourceFactory.java b/app/src/main/java/com/offline/music/playermp3/media3/testSourceFactory.java similarity index 88% rename from app/src/main/java/com/hi/music/player/media3/testSourceFactory.java rename to app/src/main/java/com/offline/music/playermp3/media3/testSourceFactory.java index cbea816..0bfd8a4 100644 --- a/app/src/main/java/com/hi/music/player/media3/testSourceFactory.java +++ b/app/src/main/java/com/offline/music/playermp3/media3/testSourceFactory.java @@ -1,14 +1,8 @@ -package com.hi.music.player.media3; +package com.offline.music.playermp3.media3; -import androidx.media3.common.MediaItem; import androidx.media3.common.util.UnstableApi; import androidx.media3.datasource.DataSource; -import androidx.media3.exoplayer.drm.DrmSessionManagerProvider; import androidx.media3.exoplayer.source.DefaultMediaSourceFactory; -import androidx.media3.exoplayer.source.MediaSource; -import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy; - -import com.hi.music.player.helper.CommonUtils; public class testSourceFactory implements DataSource.Factory { diff --git a/app/src/main/java/com/hi/music/player/network/JsonHelper.java b/app/src/main/java/com/offline/music/playermp3/network/JsonHelper.java similarity index 97% rename from app/src/main/java/com/hi/music/player/network/JsonHelper.java rename to app/src/main/java/com/offline/music/playermp3/network/JsonHelper.java index 711504a..0e2e174 100644 --- a/app/src/main/java/com/hi/music/player/network/JsonHelper.java +++ b/app/src/main/java/com/offline/music/playermp3/network/JsonHelper.java @@ -1,26 +1,25 @@ -package com.hi.music.player.network; +package com.offline.music.playermp3.network; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.ResponseCategoryList; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.javabean.response.ResponsePlayUrl; -import com.hi.music.player.javabean.response.ResponseResult; -import com.hi.music.player.javabean.response.ResponseResultList; -import com.hi.music.player.javabean.response.ResponseSearch; -import com.hi.music.player.javabean.response.child.ResponseCategory; -import com.hi.music.player.javabean.response.ResponseHome; -import com.hi.music.player.javabean.response.child.ResponseHomeChild; -import com.hi.music.player.javabean.response.child.ResponseResultListChild; -import com.hi.music.player.javabean.response.child.ResponseSearchChild; -import com.hi.music.player.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.response.ResponseCategoryList; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; +import com.offline.music.playermp3.javabean.response.ResponsePlayUrl; +import com.offline.music.playermp3.javabean.response.ResponseResult; +import com.offline.music.playermp3.javabean.response.ResponseResultList; +import com.offline.music.playermp3.javabean.response.ResponseSearch; +import com.offline.music.playermp3.javabean.response.child.ResponseCategory; +import com.offline.music.playermp3.javabean.response.ResponseHome; +import com.offline.music.playermp3.javabean.response.child.ResponseHomeChild; +import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild; +import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild; +import com.offline.music.playermp3.javabean.response.child.ResponseSingle; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Objects; diff --git a/app/src/main/java/com/hi/music/player/network/MusicApi.java b/app/src/main/java/com/offline/music/playermp3/network/MusicApi.java similarity index 98% rename from app/src/main/java/com/hi/music/player/network/MusicApi.java rename to app/src/main/java/com/offline/music/playermp3/network/MusicApi.java index eb0fc1a..146dbbb 100644 --- a/app/src/main/java/com/hi/music/player/network/MusicApi.java +++ b/app/src/main/java/com/offline/music/playermp3/network/MusicApi.java @@ -1,10 +1,9 @@ -package com.hi.music.player.network; +package com.offline.music.playermp3.network; import io.reactivex.Observable; import okhttp3.RequestBody; import okhttp3.ResponseBody; import retrofit2.http.Body; -import retrofit2.http.GET; import retrofit2.http.Header; import retrofit2.http.Headers; import retrofit2.http.POST; diff --git a/app/src/main/java/com/hi/music/player/network/ObserverWrapper.java b/app/src/main/java/com/offline/music/playermp3/network/ObserverWrapper.java similarity index 90% rename from app/src/main/java/com/hi/music/player/network/ObserverWrapper.java rename to app/src/main/java/com/offline/music/playermp3/network/ObserverWrapper.java index a167e23..c931651 100644 --- a/app/src/main/java/com/hi/music/player/network/ObserverWrapper.java +++ b/app/src/main/java/com/offline/music/playermp3/network/ObserverWrapper.java @@ -1,7 +1,7 @@ -package com.hi.music.player.network; +package com.offline.music.playermp3.network; -import com.hi.music.player.api.RequestListener; -import com.hi.music.player.helper.CommonUtils; +import com.offline.music.playermp3.api.RequestListener; +import com.offline.music.playermp3.helper.CommonUtils; import org.json.JSONException; import org.json.JSONObject; diff --git a/app/src/main/java/com/hi/music/player/network/RetrofitManager.java b/app/src/main/java/com/offline/music/playermp3/network/RetrofitManager.java similarity index 93% rename from app/src/main/java/com/hi/music/player/network/RetrofitManager.java rename to app/src/main/java/com/offline/music/playermp3/network/RetrofitManager.java index e99bde6..d664068 100644 --- a/app/src/main/java/com/hi/music/player/network/RetrofitManager.java +++ b/app/src/main/java/com/offline/music/playermp3/network/RetrofitManager.java @@ -1,15 +1,14 @@ -package com.hi.music.player.network; +package com.offline.music.playermp3.network; import com.google.gson.Gson; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.api.RequestListener; -import com.hi.music.player.javabean.requestbody.BodyHome; -import com.hi.music.player.javabean.requestbody.BodyPlay; -import com.hi.music.player.javabean.requestbody.BodyPlayUrl; -import com.hi.music.player.javabean.requestbody.BodySearch; -import com.hi.music.player.javabean.requestbody.BodySearchSuggestion; -import com.hi.music.player.javabean.requestbody.child.Client; -import com.hi.music.player.javabean.requestbody.child.ContextBody; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.api.RequestListener; +import com.offline.music.playermp3.javabean.requestbody.BodyHome; +import com.offline.music.playermp3.javabean.requestbody.BodyPlay; +import com.offline.music.playermp3.javabean.requestbody.BodyPlayUrl; +import com.offline.music.playermp3.javabean.requestbody.BodySearch; +import com.offline.music.playermp3.javabean.requestbody.BodySearchSuggestion; +import com.offline.music.playermp3.javabean.requestbody.child.Client; import java.util.HashMap; import java.util.concurrent.TimeUnit; diff --git a/app/src/main/java/com/hi/music/player/objectbox/ObjectBoxManager.java b/app/src/main/java/com/offline/music/playermp3/objectbox/ObjectBoxManager.java similarity index 91% rename from app/src/main/java/com/hi/music/player/objectbox/ObjectBoxManager.java rename to app/src/main/java/com/offline/music/playermp3/objectbox/ObjectBoxManager.java index b61d67e..9616e80 100644 --- a/app/src/main/java/com/hi/music/player/objectbox/ObjectBoxManager.java +++ b/app/src/main/java/com/offline/music/playermp3/objectbox/ObjectBoxManager.java @@ -1,14 +1,14 @@ -package com.hi.music.player.objectbox; +package com.offline.music.playermp3.objectbox; import android.content.Context; import androidx.annotation.NonNull; -import com.hi.music.player.api.LikeSongListener; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.BoxLikeSong; -import com.hi.music.player.javabean.BoxLikeSong_; -import com.hi.music.player.javabean.MyObjectBox; +import com.offline.music.playermp3.api.LikeSongListener; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.BoxLikeSong; +import com.offline.music.playermp3.javabean.BoxLikeSong_; +import com.offline.music.playermp3.javabean.MyObjectBox; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/service/MusicPlayerForegroundService.java b/app/src/main/java/com/offline/music/playermp3/service/MusicPlayerForegroundService.java similarity index 95% rename from app/src/main/java/com/hi/music/player/service/MusicPlayerForegroundService.java rename to app/src/main/java/com/offline/music/playermp3/service/MusicPlayerForegroundService.java index bc956c0..69e5788 100644 --- a/app/src/main/java/com/hi/music/player/service/MusicPlayerForegroundService.java +++ b/app/src/main/java/com/offline/music/playermp3/service/MusicPlayerForegroundService.java @@ -1,4 +1,4 @@ -package com.hi.music.player.service; +package com.offline.music.playermp3.service; import android.app.Notification; import android.app.NotificationChannel; @@ -24,9 +24,9 @@ import androidx.core.app.NotificationCompat; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; -import com.hi.music.player.R; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.ui.activity.A_PlayActivity; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.ui.activity.A_PlayActivity; import java.io.File; import java.io.IOException; @@ -101,8 +101,8 @@ public class MusicPlayerForegroundService extends Service { Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? PendingIntent.FLAG_IMMUTABLE : 0); // 适配Android 12 return new NotificationCompat.Builder(this, CHANNEL_ID) - .setContentTitle("正在播放音频") // 通知标题 - .setContentText("您的音频正在播放") // 通知内容 + .setContentTitle("Playing audio") // 通知标题 + .setContentText("Your audio is playing") // 通知内容 .setSmallIcon(R.drawable.home_select) // 小图标 .setContentIntent(pendingIntent) // 点击通知的Intent .setPriority(NotificationCompat.PRIORITY_LOW) // 低优先级 @@ -113,7 +113,7 @@ public class MusicPlayerForegroundService extends Service { private void createNotificationChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel serviceChannel = new NotificationChannel( - CHANNEL_ID, "音乐播放器频道", NotificationManager.IMPORTANCE_LOW); + CHANNEL_ID, "Music player channel", NotificationManager.IMPORTANCE_LOW); NotificationManager manager = getSystemService(NotificationManager.class); if (manager != null) { manager.createNotificationChannel(serviceChannel); // 创建渠道 @@ -190,7 +190,7 @@ public class MusicPlayerForegroundService extends Service { if (afd != null) { mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); // 设置数据源 } else { - throw new IOException("无法打开内容URI: " + path); + throw new IOException("Unable to open the content URI: " + path); } } catch (SecurityException e) { Log.e("MusicPlayerService", "权限被拒绝,无法访问内容URI: " + path, e); @@ -208,7 +208,7 @@ public class MusicPlayerForegroundService extends Service { if (file.exists()) { mediaPlayer.setDataSource(file.getAbsolutePath()); // 从文件加载 } else { - throw new IOException("文件未找到: " + path); + throw new IOException("File not found: " + path); } } } @@ -225,7 +225,7 @@ public class MusicPlayerForegroundService extends Service { return (dotIndex > 0) ? fileName.substring(0, dotIndex) : fileName; } catch (Exception e) { Log.e("MusicPlayerService", "获取文件名失败", e); - return "未知文件"; // 默认文件名 + return "Unknown file"; // 默认文件名 } } @@ -249,7 +249,7 @@ public class MusicPlayerForegroundService extends Service { } else { pauseAudio(); // 时间到,暂停音乐 isPlaying.postValue(false); // 更新播放状态 - Toast.makeText(getApplicationContext(), "定时器结束", Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), "Timer end", Toast.LENGTH_SHORT).show(); stopTimer(); // 时间到,结束计时器 } } diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/A_HomeActivity.java similarity index 95% rename from app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/A_HomeActivity.java index dba4520..b36c8af 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/A_HomeActivity.java @@ -1,24 +1,22 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; -import android.os.Handler; import android.os.IBinder; -import android.os.Looper; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; -import com.hi.music.player.R; -import com.hi.music.player.adapter.A_HomeViewPagerAdapter; -import com.hi.music.player.databinding.ActivityAhomeBinding; -import com.hi.music.player.databinding.HomeTabCustomBinding; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.service.MusicPlayerForegroundService; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.adapter.A_HomeViewPagerAdapter; +import com.offline.music.playermp3.databinding.ActivityAhomeBinding; +import com.offline.music.playermp3.databinding.HomeTabCustomBinding; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.service.MusicPlayerForegroundService; import java.util.Locale; diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/A_PlayActivity.java similarity index 94% rename from app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/A_PlayActivity.java index 0fca300..5fa67aa 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/A_PlayActivity.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; import android.content.ComponentName; import android.content.Context; @@ -11,7 +11,6 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.IBinder; -import android.os.Looper; import android.renderscript.Allocation; import android.renderscript.Element; import android.renderscript.RenderScript; @@ -22,7 +21,6 @@ import android.view.View; import android.widget.RadioGroup; import android.widget.SeekBar; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -32,10 +30,10 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.google.android.material.bottomsheet.BottomSheetDialog; -import com.hi.music.player.R; -import com.hi.music.player.databinding.ActivityAplayBinding; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.service.MusicPlayerForegroundService; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.databinding.ActivityAplayBinding; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.service.MusicPlayerForegroundService; import java.util.ArrayList; import java.util.List; @@ -59,6 +57,7 @@ public class A_PlayActivity extends BaseActivity { // 设置观察者 musicService.getIsPlaying().observe(A_PlayActivity.this, this::updatePlayButton); + musicService.getFileName().observe(A_PlayActivity.this, vb.songTitle::setText); // 更新进度条和时间 @@ -100,6 +99,10 @@ public class A_PlayActivity extends BaseActivity { loadBackgroundPreference(); // 加载之前保存的背景状态 + updateSeekBarAndTime(); + if (musicService != null) { + musicService.startUpdatingProgress(); + } // 从Intent获取音频项 AudioItem audioItem = (AudioItem) getIntent().getSerializableExtra("Path"); @@ -108,6 +111,8 @@ public class A_PlayActivity extends BaseActivity { return; } + Log.d("paly","-----" +audioItem.getName()); + Glide.with(this) .load("file:///android_asset/" + audioItem.getImage()) .placeholder(R.mipmap.playing_background) // 默认图片 @@ -120,7 +125,7 @@ public class A_PlayActivity extends BaseActivity { @Override public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { // 对图片进行高斯模糊处理 - Bitmap blurredBitmap = blurBitmap(A_PlayActivity.this, resource,5); + Bitmap blurredBitmap = blurBitmap(A_PlayActivity.this, resource, 5); // 将模糊后的图片作为背景设置到 vb.topContainer Drawable blurredDrawable = new BitmapDrawable(getResources(), blurredBitmap); @@ -134,7 +139,6 @@ public class A_PlayActivity extends BaseActivity { }); - startMusicService(audioItem); // 启动音乐服务 setupPlayButtonClickListener(); // 设置播放按钮的点击事件 @@ -210,21 +214,21 @@ public class A_PlayActivity extends BaseActivity { // 更新进度条和时间显示 private void updateSeekBarAndTime() { - if (isBound && musicService != null) { + if (isBound && musicService!= null) { // 观察当前播放进度 musicService.getCurrentPositionLiveData().observe(this, position -> { - if (musicService.getDurationLiveData().getValue() != null) { - int duration = musicService.getDurationLiveData().getValue(); - if (duration > 0) { - vb.songSeekbar.setProgress((int) ((position / (float) duration) * 100)); - vb.current.setText(formatTime(position)); - } + Integer duration = musicService.getDurationLiveData().getValue(); + if (duration!= null && duration > 0) { + vb.songSeekbar.setProgress((int) ((position / (float) duration) * 100)); + vb.current.setText(formatTime(position)); } }); // 观察音频总时长 musicService.getDurationLiveData().observe(this, duration -> { - vb.time.setText(formatTime(duration)); + if (duration!= null) { + vb.time.setText(formatTime(duration)); + } }); } } @@ -279,7 +283,6 @@ public class A_PlayActivity extends BaseActivity { } - // 保存背景状态到SharedPreferences private void saveBackgroundPreference() { SharedPreferences sharedPreferences = getSharedPreferences("AppPreferences", MODE_PRIVATE); diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_SettingActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/A_SettingActivity.java similarity index 82% rename from app/src/main/java/com/hi/music/player/ui/activity/A_SettingActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/A_SettingActivity.java index 3d38618..8d8c0c2 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_SettingActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/A_SettingActivity.java @@ -1,9 +1,9 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; import android.view.View; -import com.hi.music.player.databinding.ActivityAsettingBinding; -import com.hi.music.player.helper.SettingUtil; +import com.offline.music.playermp3.databinding.ActivityAsettingBinding; +import com.offline.music.playermp3.helper.SettingUtil; public class A_SettingActivity extends BaseActivity { @@ -40,6 +40,10 @@ public class A_SettingActivity extends BaseActivity { SettingUtil.openTermsOfService(this); }); + vb.back.setOnClickListener(v -> { + finish(); + }); + } diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_SplashActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/A_SplashActivity.java similarity index 87% rename from app/src/main/java/com/hi/music/player/ui/activity/A_SplashActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/A_SplashActivity.java index 8f435f8..f6bc5f4 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_SplashActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/A_SplashActivity.java @@ -1,12 +1,12 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; import android.content.Intent; import android.os.CountDownTimer; import android.view.View; -import com.hi.music.player.databinding.ActivityAsplashBinding; -import com.hi.music.player.firebase.RemoteConfigJava; -import com.hi.music.player.firebase.Sp; +import com.offline.music.playermp3.databinding.ActivityAsplashBinding; +import com.offline.music.playermp3.firebase.RemoteConfigJava; +import com.offline.music.playermp3.firebase.Sp; public class A_SplashActivity extends BaseActivity { @@ -46,7 +46,7 @@ public class A_SplashActivity extends BaseActivity { return false; } - public void intData(){ + public void intData() { countDownTimer = new CountDownTimer(SPLASH_TIME_OUT, 100) { diff --git a/app/src/main/java/com/hi/music/player/ui/activity/BaseActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/BaseActivity.java similarity index 93% rename from app/src/main/java/com/hi/music/player/ui/activity/BaseActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/BaseActivity.java index 35d24e9..f111a12 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/BaseActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/BaseActivity.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; import android.content.Intent; import android.net.Uri; @@ -25,16 +25,16 @@ import androidx.viewbinding.ViewBinding; import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.CircleCrop; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.api.onPlayNextListener; -import com.hi.music.player.databinding.ActivityBaseBinding; -import com.hi.music.player.databinding.LayoutPanelBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.helper.ViewModelScope; -import com.hi.music.player.media3.MyMediaControllerManager; -import com.hi.music.player.ui.activity.viewmodel.VMApplication; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.api.onPlayNextListener; +import com.offline.music.playermp3.databinding.ActivityBaseBinding; +import com.offline.music.playermp3.databinding.LayoutPanelBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.helper.ViewModelScope; +import com.offline.music.playermp3.media3.MyMediaControllerManager; +import com.offline.music.playermp3.ui.activity.viewmodel.VMApplication; public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener { diff --git a/app/src/main/java/com/hi/music/player/ui/activity/CategoryListActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/CategoryListActivity.java similarity index 86% rename from app/src/main/java/com/hi/music/player/ui/activity/CategoryListActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/CategoryListActivity.java index 4644a37..06b2a97 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/CategoryListActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/CategoryListActivity.java @@ -1,48 +1,34 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; import static com.bumptech.glide.request.RequestOptions.bitmapTransform; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.OptIn; -import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import androidx.media3.common.util.UnstableApi; import androidx.recyclerview.widget.LinearLayoutManager; -import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; -import android.graphics.drawable.GradientDrawable; -import android.os.Bundle; import android.view.View; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; -import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.adapter.AdapterCategoryList; -import com.hi.music.player.api.HomeItemClickListener; -import com.hi.music.player.api.onImageColorListener; -import com.hi.music.player.databinding.ActivityCategoryListBinding; -import com.hi.music.player.databinding.ActivityHomeBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.ResponseCategoryList; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.javabean.response.child.ResponseCategory; -import com.hi.music.player.javabean.response.child.ResponseSingle; -import com.hi.music.player.ui.activity.viewmodel.VMApplication; -import com.hi.music.player.ui.fragmnt.viewmodel.VMCategoryList; -import com.hi.music.player.ui.fragmnt.viewmodel.VMHome; - -import java.io.Serializable; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.adapter.AdapterCategoryList; +import com.offline.music.playermp3.api.HomeItemClickListener; +import com.offline.music.playermp3.databinding.ActivityCategoryListBinding; +import com.offline.music.playermp3.databinding.ActivityHomeBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.response.ResponseCategoryList; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; +import com.offline.music.playermp3.ui.fragmnt.viewmodel.VMCategoryList; import jp.wasabeef.glide.transformations.BlurTransformation; diff --git a/app/src/main/java/com/hi/music/player/ui/activity/HomeActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/HomeActivity.java similarity index 91% rename from app/src/main/java/com/hi/music/player/ui/activity/HomeActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/HomeActivity.java index a8822e6..b2937e9 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/HomeActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/HomeActivity.java @@ -1,6 +1,5 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; -import android.content.Context; import android.view.LayoutInflater; import android.view.View; @@ -8,12 +7,12 @@ import androidx.core.content.ContextCompat; import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.adapter.HomeViewPagerAdapter; -import com.hi.music.player.databinding.ActivityHomeBinding; -import com.hi.music.player.databinding.HomeTabCustomBinding; -import com.hi.music.player.helper.CommonUtils; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.adapter.HomeViewPagerAdapter; +import com.offline.music.playermp3.databinding.ActivityHomeBinding; +import com.offline.music.playermp3.databinding.HomeTabCustomBinding; +import com.offline.music.playermp3.helper.CommonUtils; public class HomeActivity extends BaseActivity { diff --git a/app/src/main/java/com/hi/music/player/ui/activity/LikeSongActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/LikeSongActivity.java similarity index 89% rename from app/src/main/java/com/hi/music/player/ui/activity/LikeSongActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/LikeSongActivity.java index 3425e08..034e3fa 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/LikeSongActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/LikeSongActivity.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; import android.content.Intent; import android.util.Pair; @@ -8,20 +8,19 @@ import androidx.annotation.OptIn; import androidx.lifecycle.Observer; import androidx.media3.common.util.UnstableApi; import androidx.media3.exoplayer.offline.Download; -import androidx.media3.exoplayer.offline.DownloadManager; import androidx.recyclerview.widget.LinearLayoutManager; -import com.hi.music.player.R; -import com.hi.music.player.adapter.AdapterDownloadSong; -import com.hi.music.player.adapter.AdapterLikeSong; -import com.hi.music.player.api.HomeItemClickListener; -import com.hi.music.player.databinding.ActivityLikeSongBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.BoxLikeSong; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.media3.MyDownloadService; -import com.hi.music.player.objectbox.ObjectBoxManager; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.adapter.AdapterDownloadSong; +import com.offline.music.playermp3.adapter.AdapterLikeSong; +import com.offline.music.playermp3.api.HomeItemClickListener; +import com.offline.music.playermp3.databinding.ActivityLikeSongBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.BoxLikeSong; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; +import com.offline.music.playermp3.media3.MyDownloadService; +import com.offline.music.playermp3.objectbox.ObjectBoxManager; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/ui/activity/PlayActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/PlayActivity.java similarity index 95% rename from app/src/main/java/com/hi/music/player/ui/activity/PlayActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/PlayActivity.java index bd0caf3..16f52d9 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/PlayActivity.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; import android.content.Intent; import android.graphics.drawable.Drawable; @@ -14,7 +14,6 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.OptIn; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.media3.common.MediaItem; import androidx.media3.common.MediaMetadata; @@ -22,7 +21,6 @@ import androidx.media3.common.Player; import androidx.media3.common.util.UnstableApi; import androidx.media3.datasource.cache.SimpleCache; import androidx.media3.exoplayer.offline.Download; -import androidx.media3.exoplayer.offline.DownloadManager; import androidx.media3.exoplayer.offline.DownloadRequest; import androidx.media3.exoplayer.offline.DownloadService; import androidx.recyclerview.widget.LinearLayoutManager; @@ -30,37 +28,31 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; import com.google.gson.Gson; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.adapter.AdapterDownloadSong; -import com.hi.music.player.adapter.AdapterPlayList; -import com.hi.music.player.api.LikeSongListener; -import com.hi.music.player.api.MediaControllerListener; -import com.hi.music.player.api.onCheckDownload; -import com.hi.music.player.api.onImageColorListener; -import com.hi.music.player.api.onPlayNextListener; -import com.hi.music.player.databinding.ActivityPlayBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.BoxDownloadSong; -import com.hi.music.player.javabean.BoxLikeSong; -import com.hi.music.player.javabean.CustomerDownload; -import com.hi.music.player.javabean.CustomerUrlInfo; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.javabean.response.ResponsePlayUrl; -import com.hi.music.player.javabean.response.child.ResponseCategory; -import com.hi.music.player.javabean.response.child.ResponseSingle; -import com.hi.music.player.media3.MyDownloadService; -import com.hi.music.player.media3.MyMediaControllerManager; -import com.hi.music.player.media3.MyPlayCacheManager; -import com.hi.music.player.objectbox.ObjectBoxManager; -import com.hi.music.player.ui.activity.viewmodel.VMApplication; -import com.hi.music.player.ui.activity.viewmodel.VMPlay; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.adapter.AdapterPlayList; +import com.offline.music.playermp3.api.MediaControllerListener; +import com.offline.music.playermp3.api.onCheckDownload; +import com.offline.music.playermp3.api.onImageColorListener; +import com.offline.music.playermp3.api.onPlayNextListener; +import com.offline.music.playermp3.databinding.ActivityPlayBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.BoxDownloadSong; +import com.offline.music.playermp3.javabean.BoxLikeSong; +import com.offline.music.playermp3.javabean.CustomerDownload; +import com.offline.music.playermp3.javabean.CustomerUrlInfo; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; +import com.offline.music.playermp3.javabean.response.child.ResponseCategory; +import com.offline.music.playermp3.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.media3.MyDownloadService; +import com.offline.music.playermp3.media3.MyMediaControllerManager; +import com.offline.music.playermp3.media3.MyPlayCacheManager; +import com.offline.music.playermp3.objectbox.ObjectBoxManager; +import com.offline.music.playermp3.ui.activity.viewmodel.VMPlay; import java.nio.charset.StandardCharsets; import java.util.ArrayList; diff --git a/app/src/main/java/com/hi/music/player/ui/activity/ResultListActivity.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/ResultListActivity.java similarity index 89% rename from app/src/main/java/com/hi/music/player/ui/activity/ResultListActivity.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/ResultListActivity.java index f5d3a32..2bc7332 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/ResultListActivity.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/ResultListActivity.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.activity; +package com.offline.music.playermp3.ui.activity; import android.content.Intent; import android.graphics.drawable.Drawable; @@ -16,18 +16,16 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.R; -import com.hi.music.player.adapter.AdapterResult; -import com.hi.music.player.api.HomeItemClickListener; -import com.hi.music.player.databinding.ActivityResultListBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.ResponseResult; -import com.hi.music.player.javabean.response.child.ResponseResultListChild; -import com.hi.music.player.javabean.response.child.ResponseSingle; -import com.hi.music.player.ui.fragmnt.viewmodel.VMCategoryList; -import com.hi.music.player.ui.fragmnt.viewmodel.VMResultList; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.adapter.AdapterResult; +import com.offline.music.playermp3.api.HomeItemClickListener; +import com.offline.music.playermp3.databinding.ActivityResultListBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.response.ResponseResult; +import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild; +import com.offline.music.playermp3.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.ui.fragmnt.viewmodel.VMResultList; public class ResultListActivity extends BaseActivity implements HomeItemClickListener { private VMResultList vm; diff --git a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMHome.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/A_VMHome.java similarity index 81% rename from app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMHome.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/A_VMHome.java index 2b53f0e..611b0e6 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMHome.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/A_VMHome.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.activity.viewmodel; +package com.offline.music.playermp3.ui.activity.viewmodel; import android.app.Application; diff --git a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMPlay.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/A_VMPlay.java similarity index 81% rename from app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMPlay.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/A_VMPlay.java index 7eaa3f3..0263ab8 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMPlay.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/A_VMPlay.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.activity.viewmodel; +package com.offline.music.playermp3.ui.activity.viewmodel; import android.app.Application; diff --git a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/VMApplication.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/VMApplication.java similarity index 66% rename from app/src/main/java/com/hi/music/player/ui/activity/viewmodel/VMApplication.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/VMApplication.java index 0fff645..f04a687 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/VMApplication.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/VMApplication.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.activity.viewmodel; +package com.offline.music.playermp3.ui.activity.viewmodel; import android.util.Pair; @@ -8,27 +8,11 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import androidx.media3.common.util.UnstableApi; import androidx.media3.exoplayer.offline.Download; -import androidx.media3.exoplayer.offline.DownloadCursor; -import com.google.gson.Gson; -import com.hi.music.player.api.RequestListener; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.BoxDownloadSong; -import com.hi.music.player.javabean.CustomerUrlInfo; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.javabean.response.ResponsePlayUrl; -import com.hi.music.player.javabean.response.child.ResponseSingle; -import com.hi.music.player.media3.MyMediaControllerManager; -import com.hi.music.player.network.JsonHelper; -import com.hi.music.player.network.RetrofitManager; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; -import org.json.JSONObject; - -import java.nio.charset.StandardCharsets; import java.util.List; -import okhttp3.ResponseBody; - public class VMApplication extends ViewModel { diff --git a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/VMPlay.java b/app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/VMPlay.java similarity index 84% rename from app/src/main/java/com/hi/music/player/ui/activity/viewmodel/VMPlay.java rename to app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/VMPlay.java index abd777b..31dbeb9 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/VMPlay.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/activity/viewmodel/VMPlay.java @@ -1,18 +1,17 @@ -package com.hi.music.player.ui.activity.viewmodel; +package com.offline.music.playermp3.ui.activity.viewmodel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -import com.hi.music.player.api.RequestListener; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.CustomerUrlInfo; -import com.hi.music.player.javabean.response.ResponsePlayListInfo; -import com.hi.music.player.javabean.response.ResponsePlayUrl; -import com.hi.music.player.javabean.response.child.ResponseSingle; -import com.hi.music.player.media3.MyMediaControllerManager; -import com.hi.music.player.network.JsonHelper; -import com.hi.music.player.network.RetrofitManager; +import com.offline.music.playermp3.api.RequestListener; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.CustomerUrlInfo; +import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo; +import com.offline.music.playermp3.javabean.response.ResponsePlayUrl; +import com.offline.music.playermp3.media3.MyMediaControllerManager; +import com.offline.music.playermp3.network.JsonHelper; +import com.offline.music.playermp3.network.RetrofitManager; import org.json.JSONObject; diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/A_HomeFragment.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/A_HomeFragment.java similarity index 78% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/A_HomeFragment.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/A_HomeFragment.java index b92e1ed..0eff884 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/A_HomeFragment.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/A_HomeFragment.java @@ -1,13 +1,14 @@ -package com.hi.music.player.ui.fragmnt; +package com.offline.music.playermp3.ui.fragmnt; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; -import com.hi.music.player.adapter.A_InstrumentAdapter; -import com.hi.music.player.adapter.A_NatureAdapter; -import com.hi.music.player.adapter.A_WhiteAdapter; -import com.hi.music.player.databinding.FragmentAHomeBinding; -import com.hi.music.player.ui.fragmnt.viewmodel.A_VMHome; +import com.offline.music.playermp3.adapter.A_InstrumentAdapter; +import com.offline.music.playermp3.adapter.A_NatureAdapter; +import com.offline.music.playermp3.adapter.A_WhiteAdapter; +import com.offline.music.playermp3.databinding.FragmentAHomeBinding; +import com.offline.music.playermp3.helper.ItemDecoration; +import com.offline.music.playermp3.ui.fragmnt.viewmodel.A_VMHome; public class A_HomeFragment extends BaseFragment { @@ -45,6 +46,9 @@ public class A_HomeFragment extends BaseFragment { Vb.recyclerViewFirst.setAdapter(instrumentAdapter); Vb.recyclerViewSecond.setAdapter(whiteAdapter); Vb.recyclerViewThird.setAdapter(natureAdapter); + + ItemDecoration itemDecoration = new ItemDecoration(12, 10, 9); + Vb.recyclerViewSecond.addItemDecoration(itemDecoration); } public void initEvent() { diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/A_ImportFragment.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/A_ImportFragment.java similarity index 71% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/A_ImportFragment.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/A_ImportFragment.java index 67b8d08..9c012dc 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/A_ImportFragment.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/A_ImportFragment.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.fragmnt; +package com.offline.music.playermp3.ui.fragmnt; import static android.app.Activity.RESULT_OK; @@ -9,6 +9,7 @@ import android.content.UriPermission; import android.content.pm.PackageManager; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; +import android.media.MediaMetadataRetriever; import android.net.Uri; import android.os.Build; import android.os.Environment; @@ -28,12 +29,12 @@ import androidx.core.content.ContextCompat; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; -import com.hi.music.player.R; -import com.hi.music.player.adapter.A_ImportFragmentAdapter; -import com.hi.music.player.databinding.FragmentAImportBinding; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.ui.activity.A_SettingActivity; -import com.hi.music.player.ui.fragmnt.viewmodel.A_VMImport; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.adapter.A_ImportFragmentAdapter; +import com.offline.music.playermp3.databinding.FragmentAImportBinding; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.ui.activity.A_SettingActivity; +import com.offline.music.playermp3.ui.fragmnt.viewmodel.A_VMImport; import java.io.IOException; import java.util.List; @@ -47,6 +48,8 @@ public class A_ImportFragment extends BaseFragment { private A_ImportFragmentAdapter adapter; private A_VMImport viewModel; + private String newName = ""; + @Override protected FragmentAImportBinding getFragmentVb() { return FragmentAImportBinding.inflate(getLayoutInflater()); @@ -55,7 +58,7 @@ public class A_ImportFragment extends BaseFragment { @Override protected void initView() { viewModel = new ViewModelProvider(this).get(A_VMImport.class); - adapter = new A_ImportFragmentAdapter(requireContext()); + adapter = new A_ImportFragmentAdapter(requireContext(),newName); setupRecyclerView(); // observeAudioFiles(); @@ -137,8 +140,12 @@ public class A_ImportFragment extends BaseFragment { confirm.setOnClickListener(view -> { String newName = inputField.getText().toString(); - adapter.updateTitle(position, newName); -// Toast.makeText(requireContext(), "新名称: " + newName + ", 项目: " + position, Toast.LENGTH_SHORT).show(); + adapter.updateTitle(position, newName); // 更新 UI + + // 获取音频文件路径并更新名称 + String filePath = adapter.getAudioFile(position).getFile(); // 获取音频文件路径 + viewModel.updateAudioFileName(filePath, newName); // 更新 ViewModel 中的名称 + subDialog.dismiss(); }); @@ -158,18 +165,36 @@ public class A_ImportFragment extends BaseFragment { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.READ_MEDIA_AUDIO) != PackageManager.PERMISSION_GRANTED) { requestPermissions(Manifest.permission.READ_MEDIA_AUDIO); + Log.d("A_ImportFragment", "123Build.VERSION_CODES.TIRAMISU"); // 添加调试日志 } else { openAudioPicker(); + Log.d("A_ImportFragment", "Build.VERSION_CODES.TIRAMISU"); // 添加调试日志 } } else { if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { requestPermissions(Manifest.permission.READ_EXTERNAL_STORAGE); + Log.d("A_ImportFragment", "156Build.VERSION_CODES.TIRAMISU"); // 添加调试日志 + showPermissionDeniedDialog(); } else { openAudioPicker(); + Log.d("A_ImportFragment", "Not Build.VERSION_CODES.TIRAMISU"); // 添加调试日志 } } } + private void showPermissionDeniedDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(requireContext()); + builder.setTitle("Permission denied"); + builder.setMessage("You have denied permission to read the audio file, and some functions will not work properly. Please go to Application Settings to grant permissions."); + builder.setPositiveButton("Go to Settings", (dialog, which) -> { + Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", requireContext().getPackageName(), null); + intent.setData(uri); + startActivity(intent); + }); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss()); + builder.show(); + } private void requestPermissions(String permission) { ActivityCompat.requestPermissions(requireActivity(), new String[]{permission}, REQUEST_CODE_READ_MEDIA_AUDIO); @@ -188,10 +213,9 @@ public class A_ImportFragment extends BaseFragment { } } - private void openAudioPicker() { if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { - Toast.makeText(getContext(), "外部存储不可用", Toast.LENGTH_LONG).show(); + Toast.makeText(getContext(), "The external storage is unavailable", Toast.LENGTH_LONG).show(); return; } @@ -213,15 +237,39 @@ public class A_ImportFragment extends BaseFragment { requireActivity().getContentResolver().takePersistableUriPermission( selectedAudioUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); + // 检查音频时长 + long duration = 0; try { - viewModel.addAudioFile(selectedAudioUri); + duration = getAudioDuration(selectedAudioUri); } catch (IOException e) { throw new RuntimeException(e); } + + if (duration < 4000) { + Toast.makeText(requireContext(), "The audio duration cannot be less than 4 seconds", Toast.LENGTH_SHORT).show(); + } else { + try { + viewModel.addAudioFile(selectedAudioUri); // 如果时长符合条件,添加音频文件 + } catch (IOException e) { + Log.e("A_ImportFragment", "IOException while adding audio file", e); + Toast.makeText(requireContext(), "An error occurred while adding the audio file", Toast.LENGTH_SHORT).show(); + } + } } } } + private long getAudioDuration(Uri uri) throws IOException { + MediaMetadataRetriever retriever = new MediaMetadataRetriever(); + try { + retriever.setDataSource(requireContext(), uri); + String durationStr = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); + return Long.parseLong(durationStr); // 返回音频时长(毫秒) + } finally { + retriever.release(); // 释放资源 + } + } + @Override public void onResume() { super.onResume(); diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/BaseFragment.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/BaseFragment.java similarity index 90% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/BaseFragment.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/BaseFragment.java index 496ca3f..8aee7af 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/BaseFragment.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/BaseFragment.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.fragmnt; +package com.offline.music.playermp3.ui.fragmnt; import android.content.Context; import android.os.Bundle; @@ -12,8 +12,8 @@ import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModel; import androidx.viewbinding.ViewBinding; -import com.hi.music.player.helper.ViewModelScope; -import com.hi.music.player.ui.activity.viewmodel.VMApplication; +import com.offline.music.playermp3.helper.ViewModelScope; +import com.offline.music.playermp3.ui.activity.viewmodel.VMApplication; public abstract class BaseFragment extends Fragment { diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/HomeFragment.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/HomeFragment.java similarity index 80% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/HomeFragment.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/HomeFragment.java index f51c019..1ed96ff 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/HomeFragment.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/HomeFragment.java @@ -1,45 +1,31 @@ -package com.hi.music.player.ui.fragmnt; +package com.offline.music.playermp3.ui.fragmnt; import android.content.Intent; -import android.content.RestrictionsManager; -import android.graphics.drawable.Drawable; import android.view.View; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.Observer; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.DataSource; -import com.bumptech.glide.load.engine.GlideException; -import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.target.Target; -import com.hi.music.player.R; -import com.hi.music.player.adapter.AdapterHome; -import com.hi.music.player.api.HomeItemClickListener; -import com.hi.music.player.api.OnHasUrlAction; -import com.hi.music.player.databinding.FragmentHomeBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.ResponseHome; -import com.hi.music.player.javabean.response.child.ResponseCategory; -import com.hi.music.player.javabean.response.child.ResponseHomeChild; -import com.hi.music.player.javabean.response.child.ResponseSingle; -import com.hi.music.player.network.RetrofitManager; -import com.hi.music.player.ui.activity.CategoryListActivity; -import com.hi.music.player.ui.activity.PlayActivity; -import com.hi.music.player.ui.fragmnt.viewmodel.VMHome; - -import org.json.JSONObject; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.adapter.AdapterHome; +import com.offline.music.playermp3.api.HomeItemClickListener; +import com.offline.music.playermp3.databinding.FragmentHomeBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.response.ResponseHome; +import com.offline.music.playermp3.javabean.response.child.ResponseCategory; +import com.offline.music.playermp3.javabean.response.child.ResponseHomeChild; +import com.offline.music.playermp3.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.ui.activity.CategoryListActivity; +import com.offline.music.playermp3.ui.activity.PlayActivity; +import com.offline.music.playermp3.ui.fragmnt.viewmodel.VMHome; import java.util.ArrayList; import java.util.List; -import okhttp3.ResponseBody; - public class HomeFragment extends BaseFragment implements HomeItemClickListener { diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/ProfileFragment.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/ProfileFragment.java similarity index 88% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/ProfileFragment.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/ProfileFragment.java index 9d7ea09..b1d63ce 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/ProfileFragment.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/ProfileFragment.java @@ -1,7 +1,6 @@ -package com.hi.music.player.ui.fragmnt; +package com.offline.music.playermp3.ui.fragmnt; import android.content.Intent; -import android.util.Pair; import android.view.View; import androidx.annotation.OptIn; @@ -10,17 +9,16 @@ import androidx.media3.common.util.UnstableApi; import androidx.media3.exoplayer.offline.Download; import com.bumptech.glide.Glide; -import com.hi.music.player.R; -import com.hi.music.player.api.LikeSongListener; -import com.hi.music.player.databinding.FragmentProfileBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.BoxDownloadSong; -import com.hi.music.player.javabean.BoxLikeSong; -import com.hi.music.player.media3.MyDownloadService; -import com.hi.music.player.objectbox.ObjectBoxManager; -import com.hi.music.player.ui.activity.LikeSongActivity; -import com.hi.music.player.ui.activity.viewmodel.VMApplication; +import com.offline.music.playermp3.R; +import com.offline.music.playermp3.api.LikeSongListener; +import com.offline.music.playermp3.databinding.FragmentProfileBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.BoxDownloadSong; +import com.offline.music.playermp3.javabean.BoxLikeSong; +import com.offline.music.playermp3.media3.MyDownloadService; +import com.offline.music.playermp3.objectbox.ObjectBoxManager; +import com.offline.music.playermp3.ui.activity.LikeSongActivity; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/SearchFragment.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/SearchFragment.java similarity index 90% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/SearchFragment.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/SearchFragment.java index 37caf28..a78073e 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/SearchFragment.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/SearchFragment.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.fragmnt; +package com.offline.music.playermp3.ui.fragmnt; import android.content.Intent; import android.text.Editable; @@ -11,19 +11,19 @@ import android.widget.TextView; import androidx.lifecycle.Observer; import androidx.recyclerview.widget.LinearLayoutManager; -import com.hi.music.player.adapter.AdapterSearch; -import com.hi.music.player.adapter.AdapterSuggestion; -import com.hi.music.player.api.HomeItemClickListener; -import com.hi.music.player.databinding.FragmentSearchBinding; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.ResponseSearch; -import com.hi.music.player.javabean.response.child.ResponseSearchChild; -import com.hi.music.player.javabean.response.child.ResponseSingle; -import com.hi.music.player.ui.activity.CategoryListActivity; -import com.hi.music.player.ui.activity.PlayActivity; -import com.hi.music.player.ui.activity.ResultListActivity; -import com.hi.music.player.ui.fragmnt.viewmodel.VMSearch; +import com.offline.music.playermp3.adapter.AdapterSearch; +import com.offline.music.playermp3.adapter.AdapterSuggestion; +import com.offline.music.playermp3.api.HomeItemClickListener; +import com.offline.music.playermp3.databinding.FragmentSearchBinding; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.helper.MyValue; +import com.offline.music.playermp3.javabean.response.ResponseSearch; +import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild; +import com.offline.music.playermp3.javabean.response.child.ResponseSingle; +import com.offline.music.playermp3.ui.activity.CategoryListActivity; +import com.offline.music.playermp3.ui.activity.PlayActivity; +import com.offline.music.playermp3.ui.activity.ResultListActivity; +import com.offline.music.playermp3.ui.fragmnt.viewmodel.VMSearch; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/A_VMHome.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/A_VMHome.java similarity index 92% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/A_VMHome.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/A_VMHome.java index 839a7ce..2695ae6 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/A_VMHome.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/A_VMHome.java @@ -1,13 +1,13 @@ -package com.hi.music.player.ui.fragmnt.viewmodel; +package com.offline.music.playermp3.ui.fragmnt.viewmodel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.helper.JsonUtils; -import com.hi.music.player.javabean.A_data.AudioItem; -import com.hi.music.player.javabean.A_data.Category; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.helper.JsonUtils; +import com.offline.music.playermp3.javabean.A_data.AudioItem; +import com.offline.music.playermp3.javabean.A_data.Category; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/A_VMImport.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/A_VMImport.java similarity index 87% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/A_VMImport.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/A_VMImport.java index 969c998..754e183 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/A_VMImport.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/A_VMImport.java @@ -1,4 +1,4 @@ -package com.hi.music.player.ui.fragmnt.viewmodel; +package com.offline.music.playermp3.ui.fragmnt.viewmodel; import android.app.Application; import android.content.Context; @@ -13,7 +13,7 @@ import androidx.lifecycle.MutableLiveData; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import com.hi.music.player.javabean.A_data.AudioItem; +import com.offline.music.playermp3.javabean.A_data.AudioItem; import java.io.IOException; import java.lang.reflect.Type; @@ -110,6 +110,20 @@ public class A_VMImport extends AndroidViewModel { saveAudioFiles(); // 更新 SharedPreferences } + // 更新音频文件名称并持久化保存 + public void updateAudioFileName(String oldFilePath, String newName) { + for (AudioItem item : audioFiles) { + if (item.getFile().equals(oldFilePath)) { + item.setName(newName); // 更新音频名称 + break; + } + } + + // 更新音频文件列表并保存 + saveAudioFiles(); // 保存更新后的音频文件列表 + audioFilesLiveData.setValue(new ArrayList<>(audioFiles)); // 更新 LiveData + } + // 获取音频文件列表 public MutableLiveData> getAudioFiles() { return audioFilesLiveData; diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMCategoryList.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMCategoryList.java similarity index 69% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMCategoryList.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMCategoryList.java index fc9d4c2..2daa175 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMCategoryList.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMCategoryList.java @@ -1,16 +1,13 @@ -package com.hi.music.player.ui.fragmnt.viewmodel; +package com.offline.music.playermp3.ui.fragmnt.viewmodel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -import com.hi.music.player.api.RequestListener; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.ResponseCategoryList; -import com.hi.music.player.javabean.response.ResponseHome; -import com.hi.music.player.javabean.response.ResponsePlayUrl; -import com.hi.music.player.network.JsonHelper; -import com.hi.music.player.network.RetrofitManager; +import com.offline.music.playermp3.api.RequestListener; +import com.offline.music.playermp3.javabean.response.ResponseCategoryList; +import com.offline.music.playermp3.network.JsonHelper; +import com.offline.music.playermp3.network.RetrofitManager; import org.json.JSONObject; diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMHome.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMHome.java similarity index 85% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMHome.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMHome.java index 4c77133..5bbd626 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMHome.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMHome.java @@ -1,16 +1,14 @@ -package com.hi.music.player.ui.fragmnt.viewmodel; +package com.offline.music.playermp3.ui.fragmnt.viewmodel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -import com.hi.music.player.MusicApplication; -import com.hi.music.player.api.RequestListener; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.helper.MyValue; -import com.hi.music.player.javabean.response.ResponseHome; -import com.hi.music.player.network.JsonHelper; -import com.hi.music.player.network.RetrofitManager; +import com.offline.music.playermp3.MusicApplication; +import com.offline.music.playermp3.api.RequestListener; +import com.offline.music.playermp3.javabean.response.ResponseHome; +import com.offline.music.playermp3.network.JsonHelper; +import com.offline.music.playermp3.network.RetrofitManager; import org.json.JSONObject; diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMResultList.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMResultList.java similarity index 74% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMResultList.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMResultList.java index 707c39b..7bc3fa6 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMResultList.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMResultList.java @@ -1,14 +1,13 @@ -package com.hi.music.player.ui.fragmnt.viewmodel; +package com.offline.music.playermp3.ui.fragmnt.viewmodel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -import com.hi.music.player.api.RequestListener; -import com.hi.music.player.javabean.response.ResponseCategoryList; -import com.hi.music.player.javabean.response.ResponseResult; -import com.hi.music.player.network.JsonHelper; -import com.hi.music.player.network.RetrofitManager; +import com.offline.music.playermp3.api.RequestListener; +import com.offline.music.playermp3.javabean.response.ResponseResult; +import com.offline.music.playermp3.network.JsonHelper; +import com.offline.music.playermp3.network.RetrofitManager; import org.json.JSONObject; diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMSearch.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMSearch.java similarity index 84% rename from app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMSearch.java rename to app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMSearch.java index e8602b6..0210681 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/viewmodel/VMSearch.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/viewmodel/VMSearch.java @@ -1,15 +1,14 @@ -package com.hi.music.player.ui.fragmnt.viewmodel; +package com.offline.music.playermp3.ui.fragmnt.viewmodel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -import com.hi.music.player.api.RequestListener; -import com.hi.music.player.helper.CommonUtils; -import com.hi.music.player.javabean.response.ResponseHome; -import com.hi.music.player.javabean.response.ResponseSearch; -import com.hi.music.player.network.JsonHelper; -import com.hi.music.player.network.RetrofitManager; +import com.offline.music.playermp3.api.RequestListener; +import com.offline.music.playermp3.helper.CommonUtils; +import com.offline.music.playermp3.javabean.response.ResponseSearch; +import com.offline.music.playermp3.network.JsonHelper; +import com.offline.music.playermp3.network.RetrofitManager; import org.json.JSONObject; diff --git a/app/src/main/res/drawable-v24/music_player_launch.png b/app/src/main/res/drawable-v24/music_player_launch.png new file mode 100644 index 0000000000000000000000000000000000000000..38d1beaa110a70988aefbf85a71626fbc927f967 GIT binary patch literal 16766 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 07d5da9..ca3826a 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,170 +1,74 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:android="http://schemas.android.com/apk/res/android"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_ahome.xml b/app/src/main/res/layout/activity_ahome.xml index 6d1efdb..a7840b4 100644 --- a/app/src/main/res/layout/activity_ahome.xml +++ b/app/src/main/res/layout/activity_ahome.xml @@ -49,7 +49,7 @@ app:layout_constraintTop_toTopOf="parent"> - + android:src="@mipmap/default_image" /> diff --git a/app/src/main/res/layout/activity_aplay.xml b/app/src/main/res/layout/activity_aplay.xml index 1efaf39..0e77ce3 100644 --- a/app/src/main/res/layout/activity_aplay.xml +++ b/app/src/main/res/layout/activity_aplay.xml @@ -22,7 +22,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:layout_marginTop="28dp" + android:layout_marginTop="50dp" android:src="@drawable/arrow_left" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -31,7 +31,7 @@ android:id="@+id/now_playing_text" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="28dp" + android:layout_marginTop="50dp" android:text="Now Playing" android:textColor="@android:color/white" android:textSize="16sp" @@ -67,7 +67,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="7dp" - android:text="Wonder Where We Land" + android:text="A journey to rest, guided by gentle sounds" android:textColor="@android:color/white" android:textSize="14sp" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/activity_asetting.xml b/app/src/main/res/layout/activity_asetting.xml index 88a19a2..581ac40 100644 --- a/app/src/main/res/layout/activity_asetting.xml +++ b/app/src/main/res/layout/activity_asetting.xml @@ -11,10 +11,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:layout_marginTop="4dp" + android:layout_marginTop="10dp" android:orientation="horizontal"> @@ -26,7 +27,6 @@ android:gravity="center"> + app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/activity_base.xml b/app/src/main/res/layout/activity_base.xml index f2933bc..5bc94fd 100644 --- a/app/src/main/res/layout/activity_base.xml +++ b/app/src/main/res/layout/activity_base.xml @@ -4,8 +4,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:id="@+id/frame_layout" android:background="@color/color_transparent" + android:id="@+id/frameLayout" android:layout_height="match_parent"> diff --git a/app/src/main/res/layout/fragment_a_home.xml b/app/src/main/res/layout/fragment_a_home.xml index 4efcd76..b0d51b5 100644 --- a/app/src/main/res/layout/fragment_a_home.xml +++ b/app/src/main/res/layout/fragment_a_home.xml @@ -25,12 +25,14 @@ android:text="@string/ready_to_sleep" android:textColor="@color/white" android:textSize="44sp" + android:layout_gravity="center" android:textStyle="italic|bold" /> diff --git a/app/src/main/res/layout/fragment_a_import.xml b/app/src/main/res/layout/fragment_a_import.xml index a64575e..56ddc6e 100644 --- a/app/src/main/res/layout/fragment_a_import.xml +++ b/app/src/main/res/layout/fragment_a_import.xml @@ -12,7 +12,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:layout_marginTop="32sp" + android:layout_marginTop="32dp" android:text="Parents voice" android:textColor="@color/white" android:textSize="28sp" @@ -36,6 +36,7 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginBottom="16dp" + android:layout_marginTop="16dp" app:layout_constraintTop_toBottomOf="@+id/title" app:layout_constraintBottom_toBottomOf="parent"/> diff --git a/app/src/main/res/layout/item_a_home_1.xml b/app/src/main/res/layout/item_a_home_1.xml index 3435217..dc59684 100644 --- a/app/src/main/res/layout/item_a_home_1.xml +++ b/app/src/main/res/layout/item_a_home_1.xml @@ -1,6 +1,8 @@ + android:src="@mipmap/default_image" /> + android:src="@mipmap/default_image" /> diff --git a/app/src/main/res/layout/item_a_home_3.xml b/app/src/main/res/layout/item_a_home_3.xml index 2daa201..fae54f7 100644 --- a/app/src/main/res/layout/item_a_home_3.xml +++ b/app/src/main/res/layout/item_a_home_3.xml @@ -20,7 +20,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" - android:src="@mipmap/im_placeholder" /> + android:src="@mipmap/default_image" /> diff --git a/app/src/main/res/layout/item_a_import.xml b/app/src/main/res/layout/item_a_import.xml index dca649b..9e650cf 100644 --- a/app/src/main/res/layout/item_a_import.xml +++ b/app/src/main/res/layout/item_a_import.xml @@ -22,7 +22,7 @@ android:layout_height="match_parent" android:scaleType="centerCrop" android:background="@color/black" - android:src="@mipmap/im_placeholder" /> + android:src="@mipmap/default_image" /> @@ -57,6 +57,7 @@ android:layout_marginStart="8dp" android:src="@drawable/options" android:padding="5dp" + android:layout_marginEnd="6dp" android:background="@drawable/rounded" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/item_play_list.xml b/app/src/main/res/layout/item_play_list.xml index 9d25a99..54462b6 100644 --- a/app/src/main/res/layout/item_play_list.xml +++ b/app/src/main/res/layout/item_play_list.xml @@ -23,7 +23,7 @@ - - - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 6f3b755..c4a603d 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,5 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp index c209e78ecd372343283f4157dcfd918ec5165bb3..3c3fa10725e9634c22730bfad9b8abe904c03f19 100644 GIT binary patch literal 2134 zcmV-c2&wl{Nk&Fa2mkql3Him zwr$(CefKR)8c7l)?G>(pWye>`8){Gt+%{6=W5$`;H$ZM}+jX*R(*rF~C#9!%pYJCP zuNdc?sldp2Xo*15HYR_AM?9IdZ7%Gbj%k?NTHDqn?(Wv6Qf8pcp`@l~1zIYX%3Z1? zGawtlI`%Pg+r|+!nDcBePpGSRKtT-ByaTWrsK1_dAV(Kt3^9s3u+e&sjm62aI5L*) z8_TwjWt+ybHDlTGv25X3?iB;UD-{bs=>q}g3pxNvCMp4y9Ye~YTg2((0F*xm=ISR9@-f|D(d+G%>vOh zM=!|%Hwp&92F&Jdf0!qE7Z-~smJQeeYujOwgvX`YhjKbl40{j(EVCSpYGGl-aEM@) z#g%+Yh9of@2ZA)$w!AT6L~{yPkxTvj96EqQpvdh;wNcXO&nZynw4-TMcxN~T>#|$i z-X)|{90FZ-?txZ|dv^+-7!H9!Hf)^5t}(+>lm*ZQIRnO9V3z3Ce6^;1vxP5U{B;D( z5@5N&z1d{X%6^smCy7|hFa$XQwwU06k>`xwsiVXCFDj9?BS6SPl7B}?l#VPf_|7(* zHNY)BJk#>L(YXA2*n+dQ+Ahl~-_UT8D&}a7HjT(ONkmDh%j%9i4 zZ?rrS|HhD?VwR?Ts5HS_EG+1@w4%rC`gVgFE7hsXl)fxPP{%3dA6!~8tkhP_UJ$|l z&su-2`Pml%g<4i=d$4=t%e_lW@wf<*7fM`E?}Tm+7--`eBYHW-=*p~FV@B4<+7K#0 zK&ik`DyzkHJL@M1he8XrI~Ue*`EKxS5H~|3=u+9v-OmNib;fWdj=avXnKvGfQ zEHN*4I6Mdc%gOhYOh31Du1Jkvop;11&?c-cF~9AC4~;uNJHM*eXx6M!yAqLce}-`l~HLG z67DCFI=`=HlE;5(0Hc^y~h&;qL{1Qc4*>;S-~AM~;KjN4U0_2#80tC%jD*&+(=lsbm-w z7~CPZi76Eg;JZ!-2$e|L8bXbnT2pvDx(+y=R>Q zKG25dcjx1%#H}hiKvSy{TPzLW$IcKGu8@|jfm3lrf&r_GEjm$W%k5U%@3*)0Zo6Ka z3!XO-;PxE%(O#z|R{FTImMW?Fi|2mQ<^^k2Tj1o7DQvok#In4$%d=b_m{B5 z&-JAtv|E`?ip`u@%01sC zFa%Qj0r{}ojNth{tM;s9Qp{u9Qh3~_jOC#wArooW?0(cPZ+=h9J2adW-LNeA-=6V> zV#p5>bq%{^dAr7d^7z|?7`0MTEa5HB z@Z|HN*ycf<;9Zv;2HJVaGY`LvOWw(nLj!CQ61?J5qIu76-su{DB=HYsEK3q~@AH@p zy#r|glBh@oblV;f^WWhQdkv)Vl~aq?dP1m9ZMxZNe+59dj_;b^y=3&>9uRQqNx$SB ztcO!lzH0(O7%Gc*c8hHn?hVV(BanK?nlM#9r2<0eswpq*B7689onz+*C2L_R0ka5N z%BPevKon7lOJOfNJQwt4t*sX_pQHhZKzj$W1t@U18sJyHZ(SJV^|Fy3hMn=aC-~M7 z*N3z`#DyXGLWw)nyF!;E477)_)-cl&7Kvf)oZP$3?OM}UzOL{L!8AYu-2+|-Zs*nN z7K#S=eCoT-1QAWFcGl)VaC;S3V`&8z7h=hSl{m3_2i9rB23WB%BKHi@joG}p<69JL zjS@8Clu(B^>KhQ%4h%fh#z_ZPR47m$r2{V*t~BVvX6OqL&_g*zC{S&#e{R5re^tQ2L5K)(dh-|9;5+`TfP?}AR(i|L Mtn*LL0M!+$0s%A_tpET3 literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..42ee5af9334a132385d06787f48b0d63c8df1800 GIT binary patch literal 3014 zcmV;%3pw;sNk&G#3jhFDMM6+kP&iDn3jhEwp+G1AB1+n}9h;n#(JHiUyZdX~wr$(C zZQJhHwr#g<{QmCX@2cnjzxR8m8D$j}&SnrUhjZ6OQD4r-h=WCfZ@ zlqA`-t?t1(cOUEG*|u%lwr$(CZQHp1H3Q9*De_d$_ssvjR}67CSb7PYG(3420;Ct8NP7?7QX@k_-Xo7F$W@S|AX`C} zf=q>(3NsX@D@;?EsxU=i^7jgp6ecQ6P#CW;PGPLVm^6%Z1t1SM;1Td2_y_z3zJs42 z@4;7)XOPE`dyw0ZYmiIObI?=JW6(peeXw1yZLm%7b+DCNd_j01@^BsQ0Y4rBz5pM< z*N_+B6UYO|UC0f{Rqz7jEcAq`N1z9wdtp0aTVWevYvHS4OU%AF2F>yVUzU$a@&jMo zQS0RgzHq7aNYEPhdjOIjH7rU@oBXIguZ2{~kLq)ewgCy+<@@Xq)hW+$0U$l-=`am+v}sxrDm@q=T1Pnhx3BXcC_NZ1V!U+xkTyR@ zqz7XKOcidKN|tJxq&WWN{y0( zixjRCxJTd_Vf{#5|FCoF?)u835@VMeJq-LtH?GHh;HL)g6vt}}pHTcjQG?s+h+95( z9dUNpfOTcnMkQtH7!sJ#=t3S;&BKP>_zZm01pcA;k3R7PDpAxDs3)f$Y|zPloH&T; z4dr$`0^e)GE>jQGizhTHjTsqUM$#HsVVhWa=R{?PR7LY_N%d@Y{$xy&k|AMK6;yHj zU~bO-4e|hdCIudV(lM&J)Gf3Ao7}z6XIaBcxDSyB88=GZXr!Q}g7&i7RW|lnAmo;=g@vY~RGg)= zY`z1w4z>oq;$MUX!TB4L1HF`b3ZKPc(qr-NYY=R!u zpJa?Zn;TR;2RrTzI6~tjg$tDN2Gw~=v4?`p%#mR^Tb4l&>P_kIdFW|p!8KC7 zPp;fO$~OixGe?2tN?oTj)j852HzAjt2zLlPCeAuHId;*&%p9A+*Xvq6`KCT6TI3$& znp5Esju-e9H`}6QbzUEGeXyZc@GnhuT zYTht}#W+bk9)K^$Wyovos5N-~De27o%@pm1Erl;l!e9<65e#YBviRyTgX&yKG|kYb z;sfrjJW1O`_4~&#!A#&M_B5~kInU@sg^KQqT}||YNaR|Z208}gz5W( z_mUEPUVQB6Wb?Re%c_dWH?^WnU1jugIN*u1?~eb1nfvJ2%#34);wC^~3W-~8NYdDn zqM0>GV{@D`gMSivLn{lg0r*abFz;4(chK56wAfv(cPE%W9y+pF^Ns-mhD&s6J(;Yj z^)8tio0kb9KPwdu`rGl8Zf}_1U5ENX8&vV)N7m^bN7}|Y$WV#)U0re)e`u34SY)|S zuHp~b8lUrSa7%K-X8Fb`BGnUDJey*-I~3VK_<&zTu+=x&?E8Z+Va3L2=GhXJxt54k zs%K^vSm+rz3H%`1ZL5+oj8ev)ohz|GAX00I0zD%I=LgePyeEQfsxQ?{;VICmV_S(( ziFIF5B)H^AR`HhxzUgfB5trwpjpA*~1)3+89BUR_DGUYv(Wt&XFVmRDL%@rtcM)Cs zbh6-Dpda`{v%yw9O)X`Y?j=}br`i0u+g(Ai4S*l`Ni$C=rpjCzYF*3I?D;zokV3>Z z77Jb`fo*RqL&>5(HjrrEWUAyz~$=)~3=GO?9OIzW~p8)#a~)9n5|5Fw!! zTSIgJe`&6^1@3^TYPZY8TApU@hb~tFVk?BYe`&0~JuyS5R*xBr)f~+^_b0H};vw3K z-!$;eQ?#EbaoW0nDMvJOU!CB>LbnFbiAOAE+n9w3Bq5XfH)ENdc*N3jZjRvi80@1S z^<8DN!b3w*pd!||fPbCFR!?T{7$Uk3pnoR1_juz2pbK7_Z1Bcu%-2K*D^dR>BD%E5 zwBR@O>;t~?9COB`H8|PwQR~LjI1LD77dxIv4VY~SSMm2WRJYm%s*51*0El2Q})>8jaIIC-4>8S^urC%TrLHlX~R&3 z<>?v0`oV#)T*i~&LoMJx-e`Iz>j@`D>^ff80Dj=(chtBrKwmgLGPcPrr^82l*4`#h z16gNSVfGfe>SXFGa^c>g9tN`RaB3vqCMO}6oyqou9J#XQBi12~jnFe?GkDQ?4ELzc zQ;S>)ur6_U=!cOr>p3UEMe4S51KHbzGwT$GmSWW!-3LA9j3<$7XW9A7het{4SihLV zK{rSS4SLjJIKW-DwL4#%=r35;nBy~Sfw=bCPS`d_s9WsUt?h5pC(lbEX1!yML)#GP zT4O6!+em~3ym2{y+Vs{6?NU7zVwM5saL`ti(#1;N;l%*#ZQHhO z+qUi31;20G_Wxb5@oerjcRG+Hscm{WB!P1_PhhtJC>Q_~G9?JO6cYdx1}KtXO%h=u zC>4I_b1VSG0jktPUN;MA|0P5)GDQ*Uh29a#PCBm1$c`Cvx9cGJ7!S`wY+!;3W}>1LPuNZ)}aqHFoiaJOd_)$V=bG zzV8x1QD%Vk01u@)w&xJ#YBvr+Gvs173gFStnd@8@KzV?-MF27pajqbjnp>X4bi)AN zc_7!hDu6Zsze`0@Tv55qiM>cF6cI^Q$ld^LU9^w^h7XO6x|ArN7OKzU3wL=#1OGu z7{Gghosa?6MawHR%qDk&)v5-CFrv!omZ z(3BH;053$h9-`T!x-QaLe|RLzZiN868t8-!&`+wxQ?%S_zZ%&Gt2^Y50e&^`p!ugZKR|^n*wi# zp~o%kl45(s9r}+%WPq3ROV8!A+>l$7gV?$Mp}&-7D6MNL&gjjq6@vab&nWY#GKqRN zG{%Oek5dcBjdn=J;_l;qAEA;AXMJpx8*|CX{PXS&GUWs!VtnjTuMN#?XQhw90}uThKnU{G+0~ z92>Or#v+T3^^z3~Nr$l{Nv@=g47Kjf){|&p<2hIC}sD%FptA@xOMpbTan;3DJ z%DpJItI?soW^~+WAG$@*`!?QbcjTI~Ye!^KTwG9d3jG2X)c?at^$~aayyXQy5&c1w z0Qk!6aSIUXdcK+A=aHX4afm&-SwQz1(BpcY9_hE~$_SakkSsW-)v#PY&V`bGUgxj7 zz5^&01OWq-0QgCgQJHWyRIzqCM)?)w=QuhybM$cYc9Yub>KrYN1>1{L`cj;a4i zjOh7&_b)RKb1BP#&j8f`E}I-iEpqG{(k;X6EQ?;URi9K%5*Q6mK zQ_97)V%pf69x-nodD%H?^sJdU(f_ypJ4ZQ}(mV#B*+Eh*D=Sww-9h$*JMPbamD0cajI0|9Pn z7m;3bi~b~Xe(kg7x$KLw$c?(koMw^}$$++6Bh*DFG$~qcW$WlC6WhlCGy=FI znQ+los~Glyd(=nV{>yePIx;f3oOFmq-+q{gNPXk1+zobtd9}K4)lkPxvF*#F{1* zsr6=rX|u1yEpF|Q`-%pAq-DCGZr^tO+PIBMQ2{_{fUlP)PY&;sz5L3!ULB(zqXYw| zni&g5*)j%*W1mhWnJ`Y}^(K=8(Iq=rleU%S8Ru&2b&<|^KHFuUsC3=8>fQLG=5(`< zTV4F=@*iFk1e^dU3GmD=tfcst?Btb2mxyj#d4i?F&tk>Ln$0k$A6ux?GA%p*ztIOx z8dN#5n1W3$Ct{yBHm*xj)22lI3j6X063k&$V^n+Y%riEMbEE5p$$au<{^ig-iG#!i;8<12oCxP3a`ZsHBmUA-vE5}{X9l?uOX@r4I5RU0 zIV#XI`iT>qOSZ2#48XK7D)46|u>KH!{`+L5AEBXgpWDTPndDA1X_OLeR+ZEH{{V{le_hdugL!)zS&=48X8hQDh4Gz@m_h-K*4GD)Gz>dl~X6B%7W2#%`^W)0* z$UcPy#bFn6J+aAg7Ns(75oqQ26H^RRa#k+@=uj7MEGK25Sa~}hKJ`6iACd*d5vR9y zcD9)rt>`8Lt-?XxbffJ#JAP?-6`NdyGleV9%EFi;eN|$gkly5$ZfEOdXU92lif%U0 zDj48RJyOMiY7u}bl_8sRB*fwXH9G0RCuAQfy-JqhYx%VI**M**Jn9ya)}Vg|wP?#Y z+W!6kfZ}X%O&%7h-I?jBh4xm7-XMFLoArzBrjZN145QuraJK`s+I`#U?T)qpb8B@! zmbYP`1VF9Z>%tpKuPJ++nHA?Ar?e*j)>>wipW;iRuW4QJr7CZ<2apNCyUzzG!BLj! z+D)nG(_atnl-N^b55oLD8WfvsVrd?yF-zOoO?GzMM@tP5r@odh)hG@w1>g?Az}k>? zIVl4r#$1y12lDN{5_^y=@9WO7#CDdYAyQ^(qRriQccry0jAKT6ga00|(dH0N<^hh6 z`GCz|^2G@+TXq{A{-D_IBHhd^pECuy$_1m_8WyFAWFB`&rWkY8+?{Yjj!x^<)LygS z>b3i(!{o!29E<^c0?@cNV0})?LJ@$9ljGLDlb!nIF`c+2UxubW7 zks3Xxh=$C!C|+e@_j&cPGvAVJq;qN#II6*Ho5y8 z?)!V6B^P+Ip9Q!JFn)X`+h=ns%Z)yj4=n2I$0FkADLf(i$pCHb{|e1AmzB#OhCk$X7T=l4D{PjF;An@lx&C(ZUH z-F*A)FH!EzRBYo^-akW*e=eDA0o=J;S-H>btSwJk<+p9&+2ii$t9~uWT}onmsN5LN z&|k#4A1czgA)$Z0Cgmq-&P;sUo<6hFwldL`0O~hJ(e>JH`*1+47s<^iS7)j$%^gtR z@vinlt!YQw)4mBSL;ybi?)S^x{N)c;Ah|q1?NM!`=V<3xxb@jcS%%7drYg4F)~#P_ zH{&=*HhTcKQjI>b*UugpFuQ5<<5g;ETx#BP*@zf^Rad{AQzjW@R-`hCdgDor9uF(K2V@^>W~gKE)J;y)lt7 zHj!!LK?|%&t+a&NY|hR4Jw=@5c%I36D(3S8L_8^y1o$G&nZ@IV?dioDP4Kj7ajRYi z(C#oLY0edzZ7+5hq5gl+6fXm^<3q1=HQf_J#HOt1$UiBEb^N7;D*P7D)LAymm zfA?Fjm%Cd~e9UObd4ua8Z+E2SNt#rpQUumnfWHCWPc?dPdawh>l^yUJ50{=2i{nyu z4&180i{iAWhB=zBe|}BNDp>cnlmH6 z_5MF(B-iCpqu%}X(c=Ls4);rAWv;5W9H82m14a+~{`ZHCK48oX%WJFrQd}zZ!@A)B OC4M@*F7(|#r3?U6k{1gA literal 2898 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 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..c0dc31384bb574d37ac54ab4e5f74e55e2dbe8d0 100644 GIT binary patch literal 1456 zcmV;h1yA}?Nk&Gf1pok7MM6+kP&iDS1pojqFTe{B2}Et%=#sl%!=Lbxi0FStaXqDO z{ztEptc&#l?H4l-+N2Vwr%;B^Lf4x zcakL<$r^N>!QEj1cb5p2At2G%fdSaS`Q#_x1Glzq)yll`4R_Dz1Df$(+^rf5Da0Yt zrw-gkQY6pak{<5u&OBQ~;)77+RYkz$7#PqGE#~*n@TG z0HsWJ>FO*jkOAhn{2580E{6Q~+k=MWmVNffAsB6%{Y1`y&zO&QTG z#0#MwIor~tP4`3yA!aHaC+CJOEroheW%NpK(UIHYj{riPw(nOsb@!Gg|5u47g_bGg z_{++Bmz{ZZ&48&@^6zfMoWPb3I@kP^H>+uSL@DxP^5Y8*KiKc;i-)#6+@s8qpl1ll zLWWFoXOya&i!z>mjD^QZxBrBPKdIrMvf1WFeG>*vB@^)`$g)ATBjnmuw4b3&TCE#3 z+8|y2i=6-H2FwNK8_YL;PPgv1#i&}v|M@Tx!V)a% zn=_i)#)P&>#Ez*~Un_PnOdO1ESNMi$gOw8hPCZ}K?foS7Okoig0!x9#pp(;X{hSd| zuuwhvC=;)~&c*m0Bo*1T&;s2>}6EOd2}?!S5>T zs~3c@z~^FbA7w}~^)xZ4rAlf1=SXV1qg8Fah(0DbD_M5d+L7u{8-;&wSydhE#we3SxxF2>^&Lcj0Rl>!7`@%+~V4LYZ%kc`fMM$sj@i3#+x! zPkv~*T9`bPB1l>gMUbF^6?lXRDB^1Klzh=5L{5+N(4+OJ4g#Q{paW1){A^)r1>H9b z8pu$?pS%q8;Q*!qh$?l=dV^X@mX4wK7YZN{=mCKi9tdN*Vg#T88NeM3AVMKshE?dn z7bIvQq?OvV)TqrR%zvhiQGp5+VUk~YlCW{GaO2CIb`A(o!y`OFQvAB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!T;TP02(CPw?DAaL8d|L&8h(aw38$L)KAQA|FP9R9YPr&;)0XG3B z0XqRJ0W$$3A^QIb(GsH811w~dA`AQnzra`M9sB}*1mA(L!xxZK$Pr{8x&z&WS%WT{ zmyIEt1exGB_y#_}uiz)}J@^KE89s{~Lk=Lj(XHru%u00eCQ=m>bkT`A5|zhHx;lU{ z!7k`Q^~N*iHfERRM?yk z<~?k>+2?*_cXZqKyq?>GQaaU0_uS5QZ_KeiPr) zL^^ON!Cmg8UVk)z5G&zK}eKQc(f%5^}f?ub{PYb^-d7iJ(rSYOF zfUOBTBg@y6f<3hQ2&d-bJX(+NYuY2Q^1qq9MQt1~)d(m_wEx}Kn`*;t`dlf98+ zlW=$GxlL2=+lAOU*lE}#?r{QQL_|r7kR7Hp{C-{N_L|W>bIZr`V^&IP4D4GkX}61gQ(SmW{y3=)py%_faP)`taXtZG zfKR8vE&G!-%g9iHr`kse?HjW4AXcfgO+ zuoZfpk^GF)by72+U(tE%NU4Smz1+#$AItnzV$YVrz;~sg+h-uHX~9^9Az!9V<=Ju=GN3yrB8h3X za3RZH!}6UP&lX3I0o^tSnM{kutF3JDCWU7+p%nZwPH)d$rd7_U zZqu1H05Xiar+379tak*_v-&{2iVp^-n-=3d!(8D~H|aCH`faSfBgFSu{S`QFl~*t7 zl7y%wwQ@v1++q2}aNVtT`L+cjW;y(%&K`p}CA4$I-c&vOjb+!RJnzPW=2x?RdCSb- zSsL3DekhFvzD8))^HpxMF5{nV;uMB=)d0F1*X?=}JNs=r<#ID}xKq;}ZdHf))}I^E z^Gc?llF;v_yC3&dW1#=Jl~phfK4#YT$k!b*%D;L*K8;72dH&-_V;5Kev$Ili6}PwWS+mQ`n9K=kJ}9|JS&)Y=7CUH*^kR&o*NQyq6 y;k`CkuTaH4noliE3?j9Y+LXJj37s literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index 62b611da081676d42f6c3f78a2c91e7bcedddedb..a4bf27648aa0a8f7b69ced0dc23c11fadcd8901b 100644 GIT binary patch literal 2284 zcmVo=I$dFVR@wHw&sJn3vu)eTY<__47uz;-#6hw?)CgrUELu7Qkz9Q1ZWJH4A|Kw zsW*s!FNt68g8K9&DBBm(<9FmYUk3fc4b4yP)Y87mI~VgCM>gOv19Ac50T%&30HiHa z5q}UrklrD^LVAS!2J&+#j-s^Nk+JkghZb@1RX`526J}>8>;h&1o{I<|281?94vODF z@gpd`4@$3t(u1JD$nAwoqJU297#Dg)t`+;J?JVjuW43NJ z3WYrpxmEy=nsGDzG{8*p?u-QWnMUKR))?6>zSc)mxziKCJoa^cK=xG~&g!JyRXOs>s8!B4Mk6gx)#cEjE6v!g$ACt+89P}J$b&>dbMQrBImqvJ zvYUwH!`U#5*_x~B$i^Do*PvDv`k)BG{|ZNa82+*R<@y#}50J*^i+-KFIOxujjpuci zjXs;^Q9IU8+P2fEwR=g;(YMB6-O|L?d6WFO=-=Axqf2a{j|##6@;L3!q&>?$a~P0T zj{$ph{jzu)#_H|lD$FR-Tp?DC zFbmmy$$o`3^+z7mKe>Zm_8knrY=GM#SrO{QQf;W!Qv3vpLnwBkypbL)F{4dJbV%>; zW8(Nh+LX3~V@IOH;ljV#=7+^6B!6}q?=F#~D<-U4Jr6h^fn$Lki-UDg7vN}FD9 zSF^K+V&-N^*SPG!SZD@swr@!*z0C|$Nnc0b#dhrSyD2lE(T6pNvbSypvbSuZ z4|4QJZlbNZa)!t-Dz{@y`AMWqay3);YWqx`pw^lg#dq;)!3?OK716utSty{7!L9>d z^=Z4WuVT1Z(I?a}KO&MtBC$2zM(m$$^OZ739i5PRS0ya*>&W|Ro!uLp3{VtL?92Um zLg`~LLB&F*d9sQ5PLT8Lf1^Ufv1`t8w2Ce+SwnrPfJ${o;0|$BB?_eW_BoGa70@ zI-^C-RLGS@%m5PdHlVKVL!x3VGhY@7nD+szfA={=V_7l-s*beVPtH)f6TSY)^?Sxr?O6n!>=GGwK!N0qItF!q zj_YeiEc5w*XMmc9Pw^jsjF~VGs-wIAg1SrjrNk%KtJrD3SZGk?sczm%%SG96)plio zIs4T*X@QpUIXV3Opvvvtm`(%y0}Rh_nDqrHTvO{drs^imuf)nvh0t>t$SWLPnC)0U zVfW5*i9?Odp2MXs)iB$|odVeUgU<#U|C9PangXcaO52a6`30Jv2`UZ->*xHKPs2JN z8pNb|0yufO>2I{g|6~VHZ#&<3D%FqE;;=yMOjw%zNGao8kBR`!0O~vDKRg;2QZfJy zHuI&&lVdL}c2jvnq|%Dm6n#+G9ux>n?DK*J25&9f29QZt@eA#1mu6r27& zt)-Q*Di%blX(l$Y`xBXt1_o%VAG%Wjf3rxq?HS9)d}ad4>6ee~4Wsu;vrm%K62W32 zt!XY+J!T>`Y%0)HORTfU%|6`>4J9IXde`150(b%#dpRJz9$V*{Ws#->iU7@)%CdC_ zW&Mk~jaIj6!>4J}tZ1nvsLjTp4(UVPbLz12j@D42$u)SM{-+D@B8!CU0nH!CblFz6 zN12uZs4R|C%LVG1m+jJN?B;QUbzhUG7zLJ?B(BrgbhXp~LlPCLuqV0zzP8LF;W9wW zk24&$8x4|L0I~oTfF^x3#P*%6XX(ljdS;#Mrd{}hf`$D{z#G8F#`nDqcmOz=MZ%SU zzJR9xyy!&u&&2`c|MN@}Kx;sEK##ZXc)7_l|J>sE%{aoierBfgA|MBl_vi&LI+>1d Gy%Ppuy?dPi literal 1772 zcmVQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index 948a3070fe34c611c42c0d3ad3013a0dce358be0..df3155c2696564d562d1685d32b44f9a523450e1 100644 GIT binary patch literal 2696 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 CR~{+= literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..39d5e1b91bc3d3e28f0e66018eb6fcd082d9bce5 GIT binary patch literal 4230 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f..fbd307397f64a81a9644ffe09ed7ed3bd88a6e4a 100644 GIT binary patch literal 5098 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 M1e~GzZpXMj3771UQ2+n{ literal 3918 zcmV-U53%r4Nk&FS4*&pHMM6+kP&il$0000G0001A003VA06|PpNSy@$00HoY|G(*G z+qV7x14$dSO^Re!iqt-AAIE9iwr$(CZQJL$blA4B`>;C3fBY6Q8_YSjb2%a=fc}4E zrSzssacq<^nmW|Rs93PJni30R<8w<(bK_$LO4L?!_OxLl$}K$MUEllnMK|rg=f3;y z*?;3j|Nh>)p0JQ3A~rf(MibH2r+)3cyV1qF&;8m{w-S*y+0mM){KTK^M5}ksc`qX3 zy>rf^b>~l>SSHds8(I@hz3&PD@LmEs4&prkT=BjsBCXTMhN$_)+kvnl0bLKW5rEsj z*d#KXGDB4P&>etx0X+`R19yC=LS)j!mgs5M0L~+o-T~Jl!p!AJxnGAhV%~rhYUL4hlWhgES3Kb5oA&X z{}?3OBSS-{!v$nCIGj->(-TAG)8LR{htr41^gxsT8yqt2@DEG6Yl`Uma3Nd4;YUoW zTbkYl3CMU5ypMF3EIkYmWL|*BknM`0+Kq6CpvO(y$#j94e+q{vI{Zp8cV_6RK!`&C zob$*5Q|$IZ09dW=L!V zw@#2wviu|<#3lgGE8GEhcx+zBt`} zOwP8j9X%^f7i_bth4PiJ$LYtFJSCN$3xwDN;8mr*B;CJwBP2G0TMq0uNt7S^DO_wE zepk!Wrn#Z#03j{`c*Rf~y3o7?J}w?tEELRUR2cgxB*Y{LzA#pxHgf}q?u5idu>077 zd^=p)`nA}6e`|@`p?u}YU66PP_MA}Zqqe!c{nK&z%Jwq1N4e_q<#4g^xaz=ao;u|6 zwpRcW2Lax=ZGbx=Q*HhlJ`Ns#Y*r0*%!T?P*TTiX;rb)$CGLz=rSUum$)3Qyv{BL2 zO*=OI2|%(Yz~`pNEOnLp>+?T@glq-DujlIp?hdJeZ7ctP4_OKx|5@EOps3rr(pWzg zK4d3&oN-X2qN(d_MkfwB4I)_)!I_6nj2iA9u^pQ{;GckGLxBGrJUM2Wdda!k)Y>lq zmjws>dVQ*vW9lvEMkiN3wE-__6OWD0txS&Qn0n22cyj4Q*8(nG4!G{6OOwNvsrPIL zCl-$W9UwkEUVuLwyD%|inbOF*xMODZ4VMEVAq_zUxZ+K#Gdqf!DW$5f)?7UNOFMz! zrB~tuu=6X2FE(p^iqgxr+?ZK;=yz`e;C$#_@D9Lj-+TDVOrva>(#*PVbaHO>A)mhl z07OJWCqYC60518$!&c`eNBcBW%GnfaQ*$eazV^2_AW?j)h;J1nUjN(I9=0+!RVx~% z3@Tf!P0TE+98jA?WceK-}A1% zW!K)lyKcGqy#M~})315-A#2NXQ`?6NR#Apo=S!oF=JfpX>iR*49ec{7AN$xxpK{D$ z2d%Fz&rdfSqourN$~Y^NFIMV1CZ?J*bMx~H3k&meGtH@q9ra2vZxmA$S(#jaaj-g4 ztJmxG+DLV<*q<|sDXPp$X>E)#S}Vm&sRaO5P&goh2><}FEdZSXDqsL$06sAkh(e+v zAsBhKSRexgwg6tIy~GFJzaTxXD(}|+0eOwFDA%rn`X;MVwDHT9=4=g%OaJ9s%3b9>9EUTnnp0t;2Zpa{*>mk~hZqItE_!dQ zOtC>8`$l|mV43Jbudf0N6&&X;{=z}Zi}d1`2qmJ}i|0*GsulD3>GgQXHN)pkR6sf1 z?5ZU%&xtL}oH;YiAA)d*^Ndw2T$+Mjuzyzz@-SM`9df7LqTxLuIwC~S0092~+=qYv z@*ja;?Wt!T!{U?c*Z0YtGe)XbI&y-?B&G2$`JDM)(dIV9G`Sc#6?sI60de6kv+)Qb zUW~2|WjvJq3TA8`0+sWA3zRhY9a~ow)O~&StBkG2{*{TGiY~S8ep{V&Vo2l<6LWsu z^#p0-v*t2?3&aA1)ozu|%efSR=XnpX$lvTeRdKlvM!@|pM5p2w3u-6 zU>}t2xiYLS+{|%C65AzX+23Mtlq?BS&YdYcYsVjoiE&rT>;Necn6l^K)T^lmE`5u{ zm1i+-a-gc;Z&v-{;8r)z6NYfBUv+=_L}ef}qa9FX01)+Aaf+;xj(mL6|JUzGJR1|fnanb%?BPPIp>SCjP|8qE5qJ{=n5ZGw?81z3(k;pzH%1CtlX50{E7h)$h{qGKfzC`e2o`*IqA#tjA z`Fz&^%$b9F*N`)U-#6>a)Z`55`$Dd0cfcs0$d13^ONrdCu9xcv_=n#WQo8stcz3jP9|2EvdI-RhJM3%Q%oM&!OlShM|0 z?gz?wHZSnm45njLtsz8PVT1S&jAlbKg5kVam$p16=EK@Sj4EP0OtH zmJDmdc^v)x>56Qg_wmYHz6h)>kl_h$>0@J!ypv%APmjZTAQVLy6Fu50RGY&JAVNhx zrF_qG6`x9MkT;1SFWo$)l{M$;3qUDn9JwE}z zRl#E_bDRJFii61kPgBybIgp8dNW!Cc1b*^YYk-#oWLJvtM_v^hQx~9?8LD4VFFxBF z3MlrsSC%f9Oupn*ctPL0U1fwfX?`tRhPD{PSLFPQOmIt$mDy0SgpNVvHS+f#Do>h1Gn?LZU9(KaN>Q_=Y*_T zvtD7%_u^^+{g`0VGzg(VZrpVQ6Ub5M=tI_p7T93R8@3Zulu3|#{iNcu!oiHxZ4Rf*( zfmiN$$ru(*_Zqn=`Gq#OuHRTSwp7uH_SokR&|)RuW5yo=Z|_4?qU-JU+tpt>!B&Is z@N(=SG;bpVc;AO@zbmMM zScqq1)b-ZQIrs={oD}|?6y{$HNB1U0^LsBh8JI&3!GBZxOXI<}&5-$lgkAaYqhOTb z?2vEnZ$-kk;*M_17(upJF3%+iH*s0-r{vttXVB2OUwI1s^+G(Ft(U8gYFXC}#P&E^ z>T@C^tS`Z7{6HT4_nF~n>JlZtk5&qDBl6r|^kzQYe`wq!C)n@$c>WOPA61NDFj<<6 zGW71NMMhwAl!U-yqrq2xrSFqRCI8acw7?}3j;ynxo*-b7Co;g5r%^j=H@9({PXXBf z@r>U>>N;E)81wx`B4f%{PB~MHka_);%kBCb(d|Jy5!MqJ%2p`t&@L)4$T2j&-WHvG zv3(uyA_gwqNu(k?jQTtv3dgPKRZoH8prxe7>pQBW5L&dpumS&5Ld2?(sCpJjvc4L5 zEnh&?91WVm)ZdTj=fjJ$pPDdgAttLXuke+?KdKxu$m|fbucqvM{x>qyz0c-8!ClNMNVQOnZ^y0m(U#;`PEf1k4yrdExK8>X zW-eeywyi2^++pL4<{#Ds;PUOyBXAo@k|O2ZGc%+37QFvvFo-Xn0TUC9B1uw|$ILXb zuZ#09>}2$R0?=(^*ij4Er3Nz2Bd>=~ZOqjI06gfE`?MX?wt@>gf@_kZGH;?Ucr<@DRr+}VBAfIJpj{oOxqv+9{~F2*#*oK zN^fr-!6EGu*2eX}hVfm7dw{GZ9I77Z52M2E3kprcR0Zeva&!8b2ViYq3jB9|3xHI@ zT8-j@`qog;whfc;hrK@p5itQAn)aePF>d@P762XsJ-|NYP0fU;LP2hmWl7SuskQPZ zr;4GE+#ROQ3Shyki7mJtOLzTehJ5K1sSegb|GJiosBIfL$DieqxO>%ABuQ43{fim= zi$Mq6v*2dicI>%ceX*_1oWV(F8=Z{}Qe}`Vkd)pam2KPK|GpDI3){BCk@WqAbkb>z z+s4?oZLV$Gwr$(CZQC5%Nh_#>)>rk{)bYE?wKfOYTe#3Qz*A>}zW}6XnU*Q!QyS8o3K?#y=)3#M(t-X)WH(IuBw{6?DZKG-1 zwtBX0+y83sHRp^80HKf5y1RKGJt7AMc9i|#R6u(q6ZjGYL&B7ebI1U%&6=XV{fOpl=a*O*#EDTX))0$PoRkJC`y&=>i2V_Z#TxzymR(%WKQ!Jm2Oi)MmZ4AT zBLMAC0y~QOj+0{!_J!Cd>@)mLh?EjVN=Ydtf8^~w?&aMo@5ek_jRi_UOu>5JliC(6 zxOnu&AB?095cWf(9hG=^VrE1z3XUNbgf~|TWWtTI9Y1gP=ZJ_P3r?Z9^Z^9k4_TVQ zIwV;D_z%G#N^|m(O;N>wh9E1bfKc;ZdYMXmcq2KoM)Bq(w*{SI9fBoX8`RCFHrHW= zux?Gm_>`Pr2@oOd%}*Je_{j!_e5? zlNUER3>0Y(>v)30P{ic9%vj_wkfa>4@pc`Df#S?uaK-7(Cme>LJ}1kbaL-&`LuUa6 zTOVz9#O{zpeP;o+*!yIceeM0Nvw%K0e7En>kI$k6X92ym&)B(X@WNT(4_dq>&md<3 z>WC%MoAnx=RN*XW&&5Jo%HUX0h&TuUiDNi5N8SBa?04?n`F#b2oCE}N$Kofx`Ru)K zOS^291C<;EpcHMbe)c;~xbI!3?jJffc_Rk_D66$Um_G5H$3OO-ldk^IshjMRJ)=j? z0ie~IZrdr_scS!Q+;g8f@v1MLy8Tc`N)Afo6aW&+)^d04CZ;a=#=0+l|I}B0e)4s{ zTyM{r!4tViAp7~uzZGgC2>?WB=k8-~dFUG-v}b;A?T3DN((AuG`GcRGbmQAk9sdA! zv%3ukTKPO*&Viwp0RWZ069aumlLIe0j{Y}ThZ{^X1;74ELBJpbp;8#N!KZ!KZ|8dZ zd>_7(iBJ+T8EU2i(thWnCLs%jAwMNoX)-Bg4p&F%Q8nS8SuW-dZB>H-s)EQHlu!+* zVl(}BlTU8;UiT15{wL(KNQmBf; zNJJtLs)!&Wgg%rqRJ5j%#o>MWju-!Y_@(bof9d;P7b#`YcK{F)yVmyG)$Z?`4%3># ziynzh+vK=RG&d#8P<$Hd+uU3Zy3@y8uV$x8BoTlBySqM}I<~#3 ze(}phYXS|O!vSf>wh6b1wFUz_Rich}X@_59d))0qu9c??0KV||4z6D%JmMi4)AEg*bJzsdTxh+4MH=bQu6p$gYoT*$?z}R$6tXu0h?0ubmJfM&^WFlS$OD zsFF`jWG8~Und6!~R*dfm7NZ_N2bKuUh(LgWTk6;I#_yGKHKMzQwpovTx_ae0HquI5 zo+k>q5U^Yv>cZ+!MFa$J^7!`2nl@wr2;k1)Q?`fizn=I}4T7>=WaGko-Cly#tI^_E zwP?;R2!M|tJ-(Yo)qs_B@ygikaVMShzZz{=vV}w(oHW3{#N~*`S2yx5gaEu=6K9TJ zDr5i#0hn1Feaz_pTzB5VS4#^b`BZ7EY_x4QBnC;TXmj`Iy}xSS-vN-UKRPS91E2@g zsG#jm+nuo4TAEDF|Fjo!byZHx3V|RMZ1u zED8^aeLi;j=ntQgI*X+mZ*L1X5t9rncU<^ol^+XuqvB;*rTPE} zU}kaMQEc((f^g}44bQ4|hmH%0MK}%@9EsPJXby&5g$so^j-zPgZ-u{vlfDr z`Gc~H*AVQ{)w<`bqx*+Y$7#R(Xu>Z(dZxc(w8STNF?rx20#xeXW^7_i9jL3=qF>bD zfOS6=sB2JpvYy-I2VY*)ZVF7WQK`o+GD-l}+C!3IKU;%4`d;-<9SESF3;lZ7cm2%W z<)J1nWUaI%ST%wUmTF{PuIN|Q{TcON<=@i|FS}zrMiQ4+YO~dMw$at98n}G8U?7MA z%l&=C*Y%07xWr0_;EHUceU?;+Df(Fbwy2E2`o;R?#Ru0JlbEO|+Tn#==xAwC5==|g z=M91R%PHD{2`v&K#1fv=*)=bi->md%!BrNeB@ALp-Jwiap{pAkGa2$TMFqH^hJavl z50WOV_*>Ius*qkS8DI-y^?*qUNx_P56p3jy&1GN@M!u88BpPm5L23b}O6gZV5`i5| z->GB;X@6tVpn}guN`uJ=Ay^SWm@_5uro`6-?hcbts%WypF9Mv&O{J;$azaWIQz)z+ zVa4Aoh)HMtl2l^rI#nJpRW$r7R*-f!F_GvM(gT+gO@s=jRUrf`0_sn|gqCc4vH(;2 zXh4WCEvi^+1>Qp#Ogi7IQJjiL4|}9aTn)SwJ}(l;jMviy!4xUc9N(@?1c#upRd2e5 z3MOOLy9WU?-z}Eq2POzUzH#DoRWj-)Fkqy!UpqQs6fg(FC&TTd4A0dqTu9(MwK#ja zylHZMR2sTg=e}}u&b9^jY~dT&2Of~B)Ld|}%^P>m7fozkH|msE+P<`1Sz0S3xF~uV z9e78@`8tNJ?rd-q+|I(}$HRdJhud4tL#u0&H}q z^sH=1Y>1>NV^gl2PkDGgZDxG_l$TB^*hpHGwnXMe1*gz-M(yZj;QwgS@)33tqU+@{ zH6IZ1u#z;xTA?mlL<{jab>eC{Or%Nouc5(C@C4q{B{HEp@dm2+7ACJ;c=80;>MH4S zsY2Hz3$D9QB#^z}Vd+hM*_Q9?%0pnYi|H)6OiwOqx&|uQ4IbgQq)W0?U;T@Fzn@^c zew@c=R!^o1obss*8-BmyIF(;to^a!qpG)0hM!zmR{ z8W|D^IlkK0+5bzh>G{~J7JA>$L^4E|Y&iEM3D^}rrp@cvnI;U9VEKkqN-AKtAiNg5 z@6##c@UQ)EJ^v{j6aImWAVPpF5DUEmw+LvhzP7#A*@UPWO02cgg43!4p1ATKg7veY z1Cl|M=DcL66WC=akWOo_jjstUjfE)s*nv(7pyEjnjy%!B}o1c zK_Hrw7dU}afxij_<)cHJeaCdtG{jA#;Oq4Ri*7wKH4x-%RdEFe1q9H%I|LUPl-gB* zn@97i&h(5&H8rY6VdnUk>h=BVIz>4$ND96xfGO>{hY)DUsacR9umu)eZ2`Plc6r6( z>Wpvwkx6M5t-5_`{m1QhkTHYZ+EQP$2svOBLQ;lID6E;P zxB}L!z#GMlL!YaAr#msUG;jwE0wh3G6Jbu>EAg!H^xZtU7Y{A1`^X3qS6tW37sv#s zur3IJFwisZKtfOf1tu@6(WNR#-6`Gfsk?+`Leq$tP(*W@gF65HKnp(@9b=E+l6`Z0 z)OfXc{iuAr#aBR95bzIg6;~BoHA^pfAK)dF1VLXQ*k{<9?TXEc4bW=Rixepd?gf3iZHK2x$GCKB0oY2NDYCC`-<1C7x-KM;1gU9ltE2k`sp>i#?JVW{V%Wr3qSDn zr^^Zrq6g{PQtr*$+JgT9ez)Ooh`?QW1pl|oP0PyTRy(v?qr!Wh8#X{5$8l7SK=Pc& QQTAtLWks8{5k61~01!8)%m4rY literal 2884 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 KF$FBeidq0KJ57cF literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index 9287f5083623b375139afb391af71cc533a7dd37..063f15e5fb09d89ed58774dee4ca02634c98c016 100644 GIT binary patch literal 6970 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 M3}7Gt0tk8y0LPUy8~^|S literal 5914 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp 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 B0_^|* literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp index aa7d6427e6fa1074b79ccd52ef67ac15c5637e85..81d7ae911668bde5b1745dbd416f560a9aa1a540 100644 GIT binary patch literal 5460 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 Ke*k^v`x9(Q)neEH literal 3844 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�^-H8j34W7HfE9W2&HnWI3qfcVcuYV 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

OAF}24OB$kEP>QJi{&P`y5 zo-{OhsDiwrhSjO$Og0n86j}*lrzcgq0UUe)Emc5X#IjO6sHT2SN{%)ZwOv>cCx@bi z4@W0A1h)yGqyZecyF9yV$_YWM`OF&pw@e_hl&rYddH_x?$_{sFpvi;iERU|k+Eg+! zc*OD5$We1!P#z|!t@@7?7f#MZC%k4Tc>q`{c*6KXSDc6&$K8czN4L@eo| zyz%AT#H_jeAf8H z;(q83xv-}7=$U(u=scY4Q3=ULQZKB0U*PypqRanqCK&)uyB&A=;4%BMpV!x$dOs90 z7@s^XZ{4uOEvQyGoKz}9!r2@CfU;-h{6LMuh{y(r##5}UYGvDgPj73}J3~sc*M{+R z*u4%nteS=HZo83?cwTVr&kZQRihz!i4iG{h7LlY5XL?(k=}ISrtVB4CR?XU)*f)pM zS7)p2yOfcTcnYv%DHU)|_t!nvh;#r5Itd1uO)i<@tjo1`DG~?*9w0wH?^yzD@ z&p0;b6;6e8nxrZO$>$3HKfU=}72w0p>@kP=0Z;+ZQjwa4nxMOZnmqJZ`cgyq%|?G5 zszrG&H63)?^s?zr^m5;ryN=E}^-`}2N!3(AL*(3@k5x()kmfeKaBZP)sDwQ6kt5irDQijIJ1(E-8|WoP`MsyAFz z1F#xj$YsqFn0Fd8JKH9ihXRT)heu`nog0)LVqg`u_jP}%3SbIfwP0q8IGnBPOp<^}Z3+vvf`V6d^6z$hN>u?fdcT9dqp0SCD{4+2f7yVtjA;a?N$C{TWDvO| z+N{}CG1LWQFdg*=)@FkVXKvfKM^=H#EXKnIicMEjL18|ntg3AlsLf?^CR5s`8*UZHiw7(A0##Z-Q6=*P zL<${3Rr-}@SE>Z4(-`HjJPDBk2dy`pI`;EBfJ*&So~qFCB&xvi(u&6%ybe&Rt%e`> zbLU`r5>>zm1o7IIyDWS?0ma&){ji_ila}-(Mx;;?nCdT^kK)tFr}Au{y#zl$g*85`lA4dp19=I@STG*`y5F37{1qgi9Hj z_ITuqK-DJUF@*_93Jrm4^kUBA^1cAnZCo{>okkigC`4wA=epzU+vS}Bs9Xz{-se6F zj1*J~1(AY1!6#n0YezBy)!P;-b04gMv7j1K7zhlx!grPx_oH{;fchPjZq?<%A}k09 zi(Ghpuzeef0#Lz4%I(l@o3g+fJ^vB7G;!gPm5Ws+0BYD|7wXVqV|YeOeeR^Hp3818tyb%}l;dA}FO)**L)U#M3`Gm+mT({&Y zC)R2GH4ijES;u)T{IGxj-tE`3`r%e)k$N5r6l@R-877|FwdUw)fAk5(1gd*Qba`|^ z#gwVbU6iUh>5Q1dAW&Erg%y}e0FjcViP3_)xx20W;I^t3K!vAhEbNbWWS$EvoKlj7 zo+zr=&qV17)rK4Q+a80f0E#?K%c2>%JL7@MSzDAzFB~Z$AuOAG$jPd%Z-_>yy zK&7|Sig>+SAC;K)f|R3JPGV_%5ND;F_+-!&wSg~pU2OEG1H0b@#44^F&G_t(C^_r1sXJKotC1tthfsD@=U5cSbuqFQ5> z`ni(c(OKf$AT>~7NQnUxCJY#z8Acdg%&s#wDl{uNo39AK(~~bf-LV>BEE$6aFoF2( z1|X&)ilKxyx}D$LS?C`1V+IOlN`u;l+G|1bG}$^T3KU-JKw|NlGXVT2YP Kowy5u#RUMCMvO%O literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index 9126ae37cbc3587421d6889eadd1d91fbf1994d4..fdac81441edd3c1dbbe84afbbc4d5d3b45e0a519 100644 GIT binary patch literal 9626 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 Q!f7|GhP46ATC-|K7nE`eWdHyG literal 7778 zcmV-o9-ZM*Nk&Fm9smGWMM6+kP&il$0000G0002L006%L06|PpNM;KF009|=ZQC}G z?WFVnhub3}`X3k)f7gJdHv?Xy!R81AlJ*B*AtF+%2T777MNUTbu9%sbnHg^^{r@jg z*GbiFHdh@YCSU?QVcWL6ZMJROew>#A4mU}enR_!cGmIYQ;qwfchWtFEXL)AK%*;=j znYne+hS4EMy3S)C*mZ1KI>!+)0V@9!N6H$Y}~MJ{rYuf zz^KljIWvFi-?#?V@LPR&c6Nn{!=XM z>}-h$S76;$H{E{Y%@^zlmOl^efBwa%UU+jJD9UVukQ3ti_kH-?H*RC0?M1W%FCvMB zM_+v6fk$6X2sx)-p~B3&Kl{nscK}pNLM*qjtpaf9>AU{-iPKQZR8yCg!TY}Qg*(;) z)gdvCcB%kppZc$VdvsK@)3l1{&DG!d_6OHOS`y=ITLEVu`unSKA2E%JD*DVX{LJ}K z9l>hMRDqxQh0lnpGHpVYneX}eA3Pt|2v%=q;rt)``R|#bDyB)OXY&vI_@|*}h}G?^ z@aZ4_!7cQPX`!fW_?{oT1NTwHs#l5L-0`E|y@48<3Q^HFf8=Idi zpJYD%1MkII!~|7I^WGo)IF=?{>ACnjJ_WUi39C}!Q{QnheVJqeKKqq5^o5CBde(g9 zvw$X6^jz_^E2$wSw4!q5*RG(C2_^XO$HBn_55vbl44OnTTRwRaePP0vo{K)U1#99& z<>rq7V&V(<&@I%MFoN5zrY}sz=(*-L&}1QQ*a%`u25h{cFj===17eB_uGuzG&byQ< zrm8BJZl4r_E$3k|Wo6FW0-6M7>qac5uFQsQcmkLWGfeH74S3Z_rJ!jgN++!@i=HW8 zkyjI(oPH-+-N#Qc^-mpNO`bc6r=2-<%&Wy5K1vfFJB(L_IkpS6fY^NmuL8qsgj>MD zn~BHH9WM~32_3vd=W&B)k7F9q%stJx+b_L_X-4zr^LVUMCmyCTA3sWtkvsmME?Xiy z?xOSfB=_$oY06~J-HcCq&)qcW{j;uP;?Dm}=hkq?zh&n!;m((-G-u_t|6x399Q;>A zgNpxoJNj{u|MFDH7Rhq@FCAl0dE|ddnl!oh9{Lq?@JDoR6L;C941IK`ISfdE$4S zE0AUQ8+2|Ncl_q5QkSp#AODp~(^mfP&%Au@@|TBQwoP`UU+V{6u8|)6ZA{~uKmQ*M zmrMTDU8S~8Eqi{^v0Ug&5Upcm#y7Z1(RbgZAG8jB$eRwCspQ)>5;U)oGZ&E5aeR*K z8Yt`Y0$G))Yd(Y3KH}tA4`-_QmNke5hU_|nq=xtyjwW(_o?itz>B>WM&^63bNdQ)k@-IgDHW*RW$Xo9#RzrTrCn7L2H{9Amq|qNg@#eZY=|P zCoI?2s+L)zsM%WX(NbVEY^`C>lFjIBYmJ6@DKJ0ZT4&F&WHW!dwa%QzOG!?jY_2(S zDcEzZbz*2Q!43|z))9yOP9X1Xt%DXzwY(3tl-TR=Qb_MbZYRrooh;dYYmS!U_as1(=YVB?Q_A|tNu5Ut&_q3jbfDM zoFxT^uEuH`nX3*sB%K?GuHUkweYReBwnHqh3P)~`+s3+Tj!rDA1e)8vuBv5J*IsxC zkd^~b(aGzArj08{>cnzOuy04C+C`}gb|Yz-1avxeWzev3NzcHbz_&4W@QCr$z3~w=8Ua- z`;vfG1~BP8CyLb=F7t1am~ph_#|O%$khSJ9%Vtcn)YmpgQxF?xM^_Vb+5fnpB^W0I`f%X8gb9#X{Q-yJG0{Z56aWeI&zPxnf5pdJA38bM`cYnS#x)% z`n1tFf$i)W-hGm(f9mde^=X@NcV_lFb=P`4&CI&H=IArijGwdCk&X@uQ$5xmj!~^? z#$ROCI)V-~t%L%GS#wo@U27ddR`4`3)WoB{R-4snfNrfee|kI8^bu#yDgYqOwas9# zmcb`3!kRJ`Cr=_tq)8aMt{aGtUZsqwVlj6DgCGre>AEt&x8H_in!x@uwgExIh|-mA zjdaC(29~CTVSaaF7HPbql&*9Uo8P@f)>LqCXclr}peS7_1BQ28u9PO8Eq1@`l3q9o zkfKCaO2?T?ZyA6loW<#9_c^O=m<&h}CA!ineAD@=(gbq`vyT|tiJ6#^B1$P;;qax` z55k&Q?wEh#87niLo*+n4L@65J(Nz~=Ya%7^(miLb(E>A3B@|Jjl;FU&D>o|9#7PJH z?|ago!o;WC^h=|T7PVBg(DAB}72cyUS zb(f>Bwbr!F1eTCO5fpj<{PqhY5>143p?~5ZA5H40);=@M#MYvrB6gqHbU_!GSY??i z%s=>-ciA4*zOOZHds0a(kWewZ4h(k8h(ua7HX)Au&mY~H8KY6(_cb$_&fA@QjIW-*heP3%$d!m5^AdnT}`12qA^c@!g3DOwZ5WwE2?)-yU z!)Vx#Mtxt?FzFTwK!77sy7)sMzUd->w4^bxtpM2j!b1pjgyk zGKwWGeb4)^zjy{9Es&PU1}gwg?|J#L$KJB7ett9@4M%-nGtIQr0>Fl@8-yh`-+1ed zS6r}(MeSvgSoFmH*_WPu@i?}!AB~2?;i&IxrkNg~cQ9Som98tcq)k^|eeER|Zl77t za-TVUc;DNvzVXJ%w52+#weN?+;i#{f#!Oc&z?81*N>^e~ltRS%ZI@lR{rs()HmqG! zx*}ZrI-EZ}ckJMiy>A^oofwDfC~IH)z8{VHKGT@#E5I(Ll&+MnMCl>~AV7+>Gi%mF zkU1QlKASdR0B80!YhP<$Ywi0?W2Ux45oPfxv9QolWzJPD^weBfvo4SONxP35106sAmh(e+vAs0GboFD@PvNs)jNPvarhW}0YliZEg{Gazv z+JDIpoojRVPr<*C|BTq<`6ga{5q^8^!|0cxe=rZ!zxH3%f5ZO0cQ*Z<^$Yt2{|Ek0 zyT|*F+CO@K;(owBKtGg!S^xj-Z~rga2m6nxKl9J=fBSuNKW_dLKWhJKeg^-Xe`^1? z`TyJj)8E!#>_3Y?uKrwqq3LJ#SGU>AzUO|6`nR^u&3FNN_jGOc zw)Nw`wr3yIKhgcee6IaN=ws>M{6677%)hPwx&HzC(f&u~&)6@b2kNRzBDQAP0*H73 zq%McOmRk{B3i47qRe=DA*$&odrbEJZ*pV9XXa&p@wlW~@Yfs>V{yiTtplMhgM*-Bz zsSnlq&pG;z0OUN%$~$3=g1UF+G*>+17eRbBf3=y79J}KR8owon@$1Z7MIrvvWWH)34nK2SD)GsrJ{l z1Cl#oVo3A8qY3e=aF)qzms~FG#2$LzT=gs&aVMOj>(%{y<&O0cG!nCiESl~x=^dF{ zKvj8F1K8Ng171wwM5Fh4KoQw`_c6#y$(5cAm7e}~nJ#A*fx+c9;y#&W!#VukR)ugk zKp3=+;Ut+IYn%m+r4d*<`L2h%aDnX5}^!5R|H;(34AoVWjRx(msBZvk;rCI*|~ zdOijqI@9Z{Vu!~jvHW{lBa$rnl4+!s_5sfK3bCGk-B%iDe&@-}+%fOKU|(9?V1 zHE8&@4z)Kx!RAvAs z!Wic9=o#(bg?kc-G68-m(jZ`^=XGUXb)}t(%&~sjFnV^sEX%hSy6UKC4iOhgV=BHV z2w`4g7Y=s#Vu2B_?#VQ|hP39@eArgfX>-0S+dd&^mx0*wp}>)x;c4RUgxz%;oNe?& z-7-lJ@Y^2^C;=qJsxx5|xF)*pTGhch2B&kxtn;f!7=gznk}I3}Dh}(CoMXgA5-p&kS202!l?!fT3t|HG*rIP~mS* z$Wjo}jq3}z$Qq!9yrtd3fM0N629ZM?LU$nv@Tv9b7I;D|;0H2dsA~g7Z7zp1| zB)XmrkMgF6OQr|R)HHD^TE{Y#j!~SR?b`Xt3Qs`B+x<hxexYeAjMUWdZ-*n9%(1)Wb(n2U<><7&9dwGJmrob)4%H? zlQ%z+L-^$dFhhH|@u$%97Qz?*Ynh2VG@q|?8vY&L74&fs&_b&3$x&Oyjl~LQDRRap zJU4U*R+(2Dd!G+lh8!V{pT_UJn+^1Qg6$` zqkNm(a#hWyc6SP+p5=C4HL8-m`pO`5o~`-LI?_h5CsH?F_%?nDodmz&pWR20WTpJE z?N|wSzLjMUK8E)a2tI}Lf;+;*M|h3Y(U#>)g1>zk9|Hd}oZAa2 zLYBWBoSW!Ts!RwXr^8h+U*@{9{zqS^iH)Op<;r`Uw~nc}<^$V~_i%$GFjaG?X1@E|M`h)nekvFKt`Dh-f>@|0-`Xoq)o` zx;JmzDfOV9qCx|EVpogEe0LK~tGS?5$$L_i6P$P6wIsCQaP_;d{{N=iV@+8LI}o#( zvo*Ejy=IIn{rdIQh1&q-{EuohpVOjJ^Q3lD*YTp37$^RRgn8ihpdu5{Ct%5-KO!VL zcNB6dUajXI9jkm-P|i3~GB-A(X`P1Oqqb$tcku)UJw0w3GeUijb__#QT4j%64z%EeB7S?jlWwx_7&+EEvB|6N=kV}DwnyAlX=?j`) zmU#!$*^@NIu#n_d7;WoJV@*Fbv9|yJO4;n|BNF2xy(54RyB>t~8lUOUW$&2%Nwi1y zx6JxW88>U2$#qhl^6KUbtmg9}D0o5vYDT7kWJthLGkpGnN4T>{St^_EU>4;DmLF9o zr|LqsA8_MoNLQ=}w?8u!ziSZ@PC#Y<#9uJFo-ozVo6D;<8j^1$c|qAE3ZTE5i~zmE z$BU5lw6l=EWsg^y^;8>r9qH{xfL|~PZYK#md$zZ0?o11gV<*WSW~cgy2GYGQir%wf zt4iW8D+;s*;RGrmd(-T<@2&j(Cb9xhV*l-x`TpK`xq|7p?5R%5*s!69?2c!cC*VY* z2DE^9pvOPLU!1e}wA8S8opcTJ3`NB>hY=JQnL~QFXR4K8A$BqJnoEB$wn-%u@E6Mh zCfMF4kusv3N!(aHC}4)Xs^xoOwXd%e^6pi5|DZo=Q25j+6HlJ^7FodH6y1bMROR^q zGu6)fopS`h%Sw<;ZH%TEPf+#81-#_v+@8nlR0jLcIDKQtLleOC)6yLZgC!D9X3GgS zohwU{v$jl=quD#Go^hB{`@Qw*a%`(^jyT~=q^bWgGzRj;|12J55HWdCWV}EB|K=%N z3Nq-qxJJ`>^|1MNN+q}zTB&ooE3j==AgK@^UW<^oSbeALa2peF)Th6{@sj0KyMNHZ zksk1+MXN2tv+22A%cQOGpS9)77(uP9mh+!5T5ERLvF@b}$+WvXM45Z?-kCa)fb~f1 znVbTD$Gx-0Zxc`0D@YgHakge6SL0H`-vN_x?AP0>iGH0_EE&=v83hMJgaKAI0jJXm zVxVz;X<$v6WW7}fxROO7vr#YLP;;lij5VrX{;>7kK6TtOH&6|Ar^xo>00%+u$C4@# z>!jOt6*3><171+WxoZnKDTzJtDRw+T030;yI}~uV@9fCnei^I*j>Bp&mzP2d=FPb_ zCM*l_+$LDR3B*a!A$g#>xsrZvw0lckxmMg>0aQd7tPyN=t{dgXb;Ie+T8{fZH=gdu zM7Rg9c(kg(Jg0?ARRRl=AONFKrvFj)lTY$KfT%6^6s`mk*ABGhsce*LsoD>K{z_M2 ziPpnu+lw22PfF!CoId^6n*G4H(Ix+#+N{C(da7t1BYMGEaE#PdpOLxsVD5riQXHp@OX;`S`8VnpM~)I920w~<3|mo0 zf8~Az`*?2?H&gZ&*K&bRkV@qzvMlRHXys8*Ze2+1c?5o!^+$&MHxB@4Ee5cke52R! zmn7AZtY6ST%ixgU5)%$%QcwHj7Es-Qu^kLAPwy%7pGBw_4Q9#da^W2$}axNHr03)_nw z5?yuNmXrI5HgS46)c5&}B)Tts49oU92>3xBLLy}FMUW=84DQbVq^;7_e7|(Sdz|&J z73N+M`rc2rt*oSWu#7S{*s~nH6HRHJS1SmzeXk|;CA)FI4bat3<%}nkB%;;?=F>B7ms9QSxv#@+69;@>QaR?REYX4&)=itG>rM{<{A79Rmk)`5ON#GL`*KX%}Ihk3w(RtM-WLt z?f&FLF}4N^yE!(pZ&Yj&Bc`~K0@4_}*0Om?wN|}4WJ>WL;G^H2*QpgEkGA~OET-Km zkwz|5{6dnz1U<2Pe9DNL>3g5FEIvp1jzP&2K#z~j%g6!7B;^zF+o95?fV{3mnB8*RMhCDNp>Am-3e@jNfMj?jHV$MWjk!DDKP zkAz$Y?Sr)!GUOX}qTQ5aMh|wq1uq}~joWyKl=b_LboM#wi{CMuz5x6BKlA-qy++cM01D3b7`uD z#l6M4pI;JCypO8JZ6?U&wNxR!{4oB_ zlV!x9+-&Qy6{%MQ{~yoZGkKiTSC`YS_j22~G;xUV855g2&C(zm^V!(wpcm@zn{%!g z4}JGo(sGZ1O~to-}le

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s diff --git a/app/src/main/res/mipmap-xxxhdpi/music_logo.png b/app/src/main/res/mipmap-xxxhdpi/music_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..38d1beaa110a70988aefbf85a71626fbc927f967 GIT binary patch literal 16766 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 56b12ab..8f3e78f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - MusicApp + Offline Music Player Hello blank fragment Song Of The Day @@ -11,8 +11,8 @@ Library Listen Music Anytime Resource Loading... - Ready to sleep - We\'ve carefully prepared sounds for you 🔥 + Sounds of Serenity + Soothing tunes crafted for deep relaxation and sleep 🌙 White noise Voice of Nature Setting diff --git a/app/src/test/java/com/hi/music/player/ExampleUnitTest.java b/app/src/test/java/com/offline/music/playermp3/ExampleUnitTest.java similarity index 90% rename from app/src/test/java/com/hi/music/player/ExampleUnitTest.java rename to app/src/test/java/com/offline/music/playermp3/ExampleUnitTest.java index 9682bb7..f513ae3 100644 --- a/app/src/test/java/com/hi/music/player/ExampleUnitTest.java +++ b/app/src/test/java/com/offline/music/playermp3/ExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.hi.music.player; +package com.offline.music.playermp3; import org.junit.Test;