gitextract_yu3lvodp/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ └── ci.yml ├── .gitignore ├── README.md ├── app/ │ ├── build.gradle │ ├── libs/ │ │ ├── materialiconlib-1.1.5.aar │ │ └── videocache-2.7.1.aar │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── kunminx/ │ │ └── puremusic/ │ │ └── ExampleInstrumentedTest.java │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── assets/ │ │ │ └── summary.html │ │ ├── java/ │ │ │ └── com/ │ │ │ └── kunminx/ │ │ │ └── puremusic/ │ │ │ ├── MainActivity.java │ │ │ ├── data/ │ │ │ │ ├── api/ │ │ │ │ │ ├── APIs.java │ │ │ │ │ └── AccountService.java │ │ │ │ ├── bean/ │ │ │ │ │ ├── DownloadState.java │ │ │ │ │ ├── LibraryInfo.java │ │ │ │ │ ├── TestAlbum.java │ │ │ │ │ └── User.java │ │ │ │ ├── config/ │ │ │ │ │ ├── Configs.java │ │ │ │ │ └── Const.java │ │ │ │ └── repository/ │ │ │ │ └── DataRepository.java │ │ │ ├── domain/ │ │ │ │ ├── event/ │ │ │ │ │ ├── DownloadEvent.java │ │ │ │ │ └── Messages.java │ │ │ │ ├── message/ │ │ │ │ │ ├── DrawerCoordinateManager.java │ │ │ │ │ ├── PageMessenger.java │ │ │ │ │ ├── PlayerReceiver.java │ │ │ │ │ └── SharedViewModel.java │ │ │ │ ├── proxy/ │ │ │ │ │ └── PlayerManager.java │ │ │ │ ├── request/ │ │ │ │ │ ├── AccountRequester.java │ │ │ │ │ ├── DownloadRequester.java │ │ │ │ │ ├── InfoRequester.java │ │ │ │ │ └── MusicRequester.java │ │ │ │ └── usecase/ │ │ │ │ ├── CanBeStoppedUseCase.java │ │ │ │ └── DownloadUseCase.java │ │ │ └── ui/ │ │ │ ├── bind/ │ │ │ │ ├── CommonBindingAdapter.java │ │ │ │ ├── DrawerBindingAdapter.java │ │ │ │ ├── IconBindingAdapter.java │ │ │ │ ├── TabPageBindingAdapter.java │ │ │ │ └── WebViewBindingAdapter.java │ │ │ ├── page/ │ │ │ │ ├── DrawerFragment.java │ │ │ │ ├── LoginFragment.java │ │ │ │ ├── MainFragment.java │ │ │ │ ├── PlayerFragment.java │ │ │ │ ├── SearchFragment.java │ │ │ │ ├── adapter/ │ │ │ │ │ ├── DiffUtils.java │ │ │ │ │ ├── DrawerAdapter.java │ │ │ │ │ └── PlaylistAdapter.java │ │ │ │ └── helper/ │ │ │ │ └── DefaultInterface.java │ │ │ ├── view/ │ │ │ │ ├── PlayPauseDrawable.java │ │ │ │ ├── PlayPauseView.java │ │ │ │ └── PlayerSlideListener.java │ │ │ └── widget/ │ │ │ └── PlayerService.java │ │ └── res/ │ │ ├── anim/ │ │ │ ├── h_fragment_enter.xml │ │ │ ├── h_fragment_exit.xml │ │ │ ├── h_fragment_pop_enter.xml │ │ │ └── h_fragment_pop_exit.xml │ │ ├── drawable/ │ │ │ ├── bar_selector_white.xml │ │ │ ├── ic_menu_black_48dp.xml │ │ │ ├── ic_music_note_black_48dp.xml │ │ │ ├── ic_search_black_48dp.xml │ │ │ ├── loading_animation.xml │ │ │ └── progressbar_color.xml │ │ ├── layout/ │ │ │ ├── activity_main.xml │ │ │ ├── adapter_library.xml │ │ │ ├── adapter_play_item.xml │ │ │ ├── fragment_drawer.xml │ │ │ ├── fragment_login.xml │ │ │ ├── fragment_main.xml │ │ │ ├── fragment_player.xml │ │ │ ├── fragment_search.xml │ │ │ ├── notify_player_big.xml │ │ │ └── notify_player_small.xml │ │ ├── layout-land/ │ │ │ ├── activity_main.xml │ │ │ ├── fragment_main.xml │ │ │ └── fragment_player.xml │ │ ├── navigation/ │ │ │ ├── nav_drawer.xml │ │ │ ├── nav_main.xml │ │ │ └── nav_slide.xml │ │ ├── values/ │ │ │ ├── attrs.xml │ │ │ ├── colors.xml │ │ │ ├── dimen.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── xml/ │ │ └── network_security_config.xml │ └── test/ │ └── java/ │ └── com/ │ └── kunminx/ │ └── puremusic/ │ └── ExampleUnitTest.java ├── architecture/ │ ├── build.gradle │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── kunminx/ │ │ └── architecture/ │ │ └── ExampleInstrumentedTest.java │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── kunminx/ │ │ │ └── architecture/ │ │ │ ├── data/ │ │ │ │ └── response/ │ │ │ │ ├── DataResult.java │ │ │ │ ├── ResponseStatus.java │ │ │ │ ├── ResultSource.java │ │ │ │ └── manager/ │ │ │ │ ├── NetworkStateManager.java │ │ │ │ └── NetworkStateReceive.java │ │ │ ├── domain/ │ │ │ │ ├── request/ │ │ │ │ │ ├── AsyncTask.java │ │ │ │ │ └── Requester.java │ │ │ │ └── usecase/ │ │ │ │ ├── UseCase.java │ │ │ │ ├── UseCaseHandler.java │ │ │ │ ├── UseCaseScheduler.java │ │ │ │ └── UseCaseThreadPoolScheduler.java │ │ │ ├── ui/ │ │ │ │ ├── adapter/ │ │ │ │ │ └── CommonViewPagerAdapter.java │ │ │ │ ├── bind/ │ │ │ │ │ └── DrawablesBindingAdapter.java │ │ │ │ └── page/ │ │ │ │ ├── BaseActivity.java │ │ │ │ ├── BaseFragment.java │ │ │ │ └── StateHolder.java │ │ │ └── utils/ │ │ │ ├── AdaptScreenUtils.java │ │ │ ├── BarUtils.java │ │ │ ├── ClickUtils.java │ │ │ ├── DisplayUtils.java │ │ │ ├── ImageUtils.java │ │ │ ├── NetworkUtils.java │ │ │ ├── Res.java │ │ │ ├── ScreenUtils.java │ │ │ ├── ToastUtils.java │ │ │ └── Utils.java │ │ └── res/ │ │ ├── values/ │ │ │ └── strings.xml │ │ └── xml/ │ │ └── file_paths.xml │ └── test/ │ └── java/ │ └── com/ │ └── kunminx/ │ └── architecture/ │ └── ExampleUnitTest.java ├── build.gradle ├── gradle/ │ └── wrapper/ │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat └── settings.gradle