实例介绍
【实例简介】
gMusic是一个跨平台的音乐播放器项目,旨在为iOS上的Google Play音乐提供最佳体验。随着时间的推移,该项目开始支持更多的流媒体服务和平台。
【实例截图】
【核心代码】
文件清单
└── gMusic-65feb9f3b23abad3ed8d486faf499ff5176883df
├── Api
│ ├── AmazonApi
│ │ ├── AmazonApi.projitems
│ │ ├── AmazonApi.shproj
│ │ ├── AmazonAuthenticator.cs
│ │ ├── AmazonMusicProvider.cs
│ │ ├── CloudDrive
│ │ │ ├── Account
│ │ │ │ ├── CloudAccountInfoResponse.cs
│ │ │ │ ├── CloudDataTotals.cs
│ │ │ │ ├── CloudDataUsage.cs
│ │ │ │ ├── CloudEndpointResponse.cs
│ │ │ │ ├── CloudQuotaResponse.cs
│ │ │ │ └── CloudUsageResponse.cs
│ │ │ ├── Changes
│ │ │ │ └── CloudChangesResult.cs
│ │ │ ├── CloudDriveApi.cs
│ │ │ └── Nodes
│ │ │ ├── Enums.cs
│ │ │ ├── Filters
│ │ │ │ ├── ContentExtensionFilter.cs
│ │ │ │ ├── ContentNameFilter.cs
│ │ │ │ ├── ContentTypeFilter.cs
│ │ │ │ ├── DateTimeBetweenNodeFilter.cs
│ │ │ │ ├── DateTimeNodeFilter.cs
│ │ │ │ ├── NodeFilter.cs
│ │ │ │ ├── NodeFilterGroup.cs
│ │ │ │ ├── NodeOrderBy.cs
│ │ │ │ ├── NodeProperties.cs
│ │ │ │ └── NodeTypeFilter.cs
│ │ │ ├── Models
│ │ │ │ ├── CloudDriveStorage.cs
│ │ │ │ ├── CloudNode.cs
│ │ │ │ ├── ContentNodeImageProperties.cs
│ │ │ │ ├── ContentNodeProperties.cs
│ │ │ │ ├── ContentNodeVideoProperties.cs
│ │ │ │ └── ParentMap.cs
│ │ │ └── Requests
│ │ │ ├── CloudChangesRequest.cs
│ │ │ ├── CloudNodeRequest.cs
│ │ │ ├── CloudNodeRequests.cs
│ │ │ └── FileUploadData.cs
│ │ └── MimeTypes.cs
│ ├── FileSytemApi
│ │ ├── FileSystemProvider.cs
│ │ ├── FileSytemApi.projitems
│ │ └── FileSytemApi.shproj
│ ├── gMusicApi
│ │ ├── gMusicApi.projitems
│ │ ├── gMusicApi.shproj
│ │ ├── GoogleMusicApi.cs
│ │ ├── GoogleMusicApiRequest.cs
│ │ ├── GoogleMusicAuthenticator.cs
│ │ ├── GoogleMusicProvider.cs
│ │ └── GoogleMusicResponses.cs
│ ├── iPodApi
│ │ ├── iPodApi.projitems
│ │ ├── iPodApi.shproj
│ │ └── iPodProvider.cs
│ ├── OneDrive
│ │ ├── Models
│ │ │ ├── OneDriveAudio.cs
│ │ │ ├── OneDriveError.cs
│ │ │ ├── OneDriveFile.cs
│ │ │ ├── OneDriveFolder.cs
│ │ │ ├── OneDriveIdentity.cs
│ │ │ ├── OneDriveIdentitySet.cs
│ │ │ ├── OneDriveImage.cs
│ │ │ ├── OneDriveItem.cs
│ │ │ ├── OneDriveLink.cs
│ │ │ ├── OneDriveResponse.cs
│ │ │ ├── OneDriveSpecialFolder.cs
│ │ │ └── OneDriveVideo.cs
│ │ ├── OneDriveApi.cs
│ │ ├── OneDriveAuthenticator.cs
│ │ ├── OneDrive.projitems
│ │ ├── OneDriveProvider.cs
│ │ ├── OneDrive.shproj
│ │ └── Responses
│ │ ├── OneDriveDeltaResponse.cs
│ │ └── OneDriveShareResponse.cs
│ ├── SoundCloud
│ │ ├── Models
│ │ │ ├── SApiResponse.cs
│ │ │ ├── STrack.cs
│ │ │ ├── SUser.cs
│ │ │ └── UserInfo.cs
│ │ ├── SoundCloudAccount.cs
│ │ ├── SoundCloudApi.cs
│ │ ├── SoundCloudAuthenticator.cs
│ │ ├── SoundCloud.projitems
│ │ ├── SoundCloudProvider.cs
│ │ └── SoundCloud.shproj
│ └── YoutubeApi
│ ├── Google.Apis.Youtube.v3.cs
│ ├── IDirectResponseSchema.cs
│ ├── YoutubeApi.projitems
│ ├── YoutubeApi.shproj
│ ├── YoutubeOauthApi.cs
│ └── YoutubeProvider.cs
├── ApiConstants.targets
├── build.fsx
├── build-helpers.fsx
├── build.sh
├── LICENSE
├── Localizations
│ ├── Localizations.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Strings.de.Designer.cs
│ ├── Strings.de.resx
│ ├── Strings.Designer.cs
│ ├── Strings.es.Designer.cs
│ ├── Strings.es.resx
│ ├── Strings.fr.Designer.cs
│ ├── Strings.fr.resx
│ ├── Strings.it.Designer.cs
│ ├── Strings.it.resx
│ ├── Strings.ja.Designer.cs
│ ├── Strings.ja.resx
│ ├── Strings.ko.Designer.cs
│ ├── Strings.ko.resx
│ ├── Strings.resx
│ ├── Strings.ru.Designer.cs
│ ├── Strings.ru.resx
│ ├── Strings.zh-Hant.Designer.cs
│ └── Strings.zh-Hant.resx
├── mobile-center-post-clone.sh
├── MusicPlayer.Apple
│ ├── Helpers
│ │ ├── CGRectHelpers.cs
│ │ └── Utility.cs
│ ├── MusicPlayer.Apple.projitems
│ ├── MusicPlayer.Apple.shproj
│ └── Playback
│ ├── AVMediaPlayer.cs
│ ├── AVPlayerEqualizer.cs
│ ├── AVPlayerExtension.cs
│ ├── CustomVideoLayer.cs
│ ├── NativeAudioPlayer.cs
│ ├── NativeTrackHandler.cs
│ └── RemoteControlHandler.cs
├── MusicPlayer.Droid
│ ├── AkavacheSqliteLinkerOverride.cs
│ ├── ApiConstants.Droid.cs
│ ├── App.Droid.cs
│ ├── Assets
│ │ └── AboutAssets.txt
│ ├── Cells
│ │ ├── AlbumCell.cs
│ │ ├── ArtistCell.cs
│ │ ├── GenreCell.cs
│ │ ├── MediaItemCell.cs
│ │ ├── PlaylistCell.cs
│ │ ├── PlaylistSongCell.cs
│ │ ├── RadioStationCell.cs
│ │ ├── SongCell.cs
│ │ ├── SpinnerCell.cs
│ │ └── VideoCell.cs
│ ├── Data
│ │ ├── BackgroundDownloadManager.cs
│ │ ├── Settings.cs
│ │ └── VideoConvertor.cs
│ ├── Helpers
│ │ ├── ActivityHelper.cs
│ │ ├── AkavacheAuthStorage.cs
│ │ ├── DateTimeUtils.cs
│ │ ├── Device.cs
│ │ ├── FileUtil.cs
│ │ ├── Images.cs
│ │ ├── NGraphicsExtensions.cs
│ │ ├── ResourceHelper.cs
│ │ ├── ShellCommand.cs
│ │ ├── SimpleAlertDialog.cs
│ │ ├── SongExtentions.cs
│ │ └── Utility.cs
│ ├── Models
│ │ └── MenuItem.cs
│ ├── MusicPlayer.Droid.csproj
│ ├── packages.config
│ ├── Playback
│ │ ├── IPlayer.cs
│ │ ├── MediaPlayerPlayer.cs
│ │ ├── MoviePlayer.cs
│ │ ├── MoviePlayerEqualizer.cs
│ │ ├── NativeAudioPlayer.cs
│ │ ├── Playback.cs
│ │ └── RemoteControlReceiver.cs
│ ├── Properties
│ │ ├── AndroidManifest.xml
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── AboutResources.txt
│ │ ├── anim
│ │ │ ├── fade_in.xml
│ │ │ └── fade_out.xml
│ │ ├── animator
│ │ │ ├── slide_in_from_bottom.xml
│ │ │ ├── slide_in_from_left.xml
│ │ │ ├── slide_in_from_right.xml
│ │ │ ├── slide_out_to_bottom.xml
│ │ │ ├── slide_out_to_left.xml
│ │ │ └── slide_out_to_right.xml
│ │ ├── animator-v21
│ │ │ ├── slide_in_from_bottom.xml
│ │ │ ├── slide_in_from_left.xml
│ │ │ ├── slide_in_from_right.xml
│ │ │ ├── slide_out_to_bottom.xml
│ │ │ └── slide_out_to_left.xml
│ │ ├── drawable
│ │ │ ├── bg.png
│ │ │ ├── default_background.xml
│ │ │ ├── fullscreen_bg_gradient.xml
│ │ │ ├── fullscreen_toolbar_bg_gradient.xml
│ │ │ ├── ic_equalizer_white_36dp.xml
│ │ │ └── Icon.png
│ │ ├── drawable-hdpi
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── drawable-mdpi
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── drawable-xhdpi
│ │ │ ├── banner_tv.png
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── drawable-xxhdpi
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── layout
│ │ │ ├── activity_full_player.xml
│ │ │ ├── activity_placeholder.xml
│ │ │ ├── activity_player.xml
│ │ │ ├── fragment_list.xml
│ │ │ ├── fragment_playback_controls.xml
│ │ │ ├── include_toolbar.xml
│ │ │ ├── media_list_item.xml
│ │ │ ├── nav_header.xml
│ │ │ ├── tv_activity_player.xml
│ │ │ ├── tv_playback_controls.xml
│ │ │ └── tv_vertical_grid.xml
│ │ ├── menu
│ │ │ ├── drawer.xml
│ │ │ └── main.axml
│ │ ├── Resource.Designer.cs
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── ids.xml
│ │ │ ├── strings_notifications.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── values-h800dp
│ │ │ └── dimens.xml
│ │ ├── values-v21
│ │ │ └── styles.xml
│ │ └── xml
│ │ ├── allowed_media_browser_callers.xml
│ │ └── automotive_app_desc.xml
│ ├── Services
│ │ ├── MediaNotificationManager.cs
│ │ └── MusicService.cs
│ ├── UI
│ │ ├── ActionBarCastActivity.cs
│ │ ├── BaseActivity.cs
│ │ ├── Callbacks.cs
│ │ ├── Fragments
│ │ │ ├── AlbumsFragment.cs
│ │ │ ├── ArtistDetailsFragment.cs
│ │ │ ├── ArtistFragment.cs
│ │ │ ├── BaseFragment.cs
│ │ │ ├── BaseModelViewFragment.cs
│ │ │ ├── GenresFragment.cs
│ │ │ ├── INavFragment.cs
│ │ │ ├── PlaybackControlsFragment.cs
│ │ │ ├── PlaylistFragment.cs
│ │ │ ├── SearchFragment.cs
│ │ │ ├── SettingsFragment.cs
│ │ │ └── SongFragment.cs
│ │ ├── FullScreenPlayerActivity.cs
│ │ ├── MusicPlayerActivity.cs
│ │ ├── NowPlayingActivity.cs
│ │ └── PopupManager.cs
│ └── ViewModels
│ ├── ListViewModel.cs
│ └── NavigationViewModel.cs
├── MusicPlayer.iOS
│ ├── ApiConstants.iOS.cs
│ ├── AppDelegate.cs
│ ├── App.iOS.cs
│ ├── build.sh
│ ├── Cells
│ │ ├── AccountCell.cs
│ │ ├── AlbumCell.cs
│ │ ├── AlbumSongCell.cs
│ │ ├── ArtistCell.cs
│ │ ├── BaseCell.cs
│ │ ├── GenreCell.cs
│ │ ├── MediaItemCell.cs
│ │ ├── MenuElement.cs
│ │ ├── MenuHeaderElement.cs
│ │ ├── MenuHelpTextElement.cs
│ │ ├── MenuSection.cs
│ │ ├── MenuSubtextSwitch.cs
│ │ ├── MenuSwitch.cs
│ │ ├── MultiImageMediaItemCell.cs
│ │ ├── PlaylistCell.cs
│ │ ├── PlaylistSongCell.cs
│ │ ├── RadioStationCell.cs
│ │ ├── SettingsBooleanElement.cs
│ │ ├── SettingsElement.cs
│ │ ├── SettingsSwitch.cs
│ │ ├── SongCell.cs
│ │ ├── SongDownloadCell.cs
│ │ └── SpinnerCell.cs
│ ├── Controls
│ │ ├── ActionSheet.cs
│ │ ├── AlertView.cs
│ │ ├── BlurredImageView.cs
│ │ ├── LoginEntryAlert.cs
│ │ ├── OBSlider.cs
│ │ ├── ProgressView.cs
│ │ ├── SimpleButton.cs
│ │ ├── TextInputAlert.cs
│ │ ├── TopTabBarController.cs
│ │ ├── TwoLabelView.cs
│ │ └── UIComboBox.cs
│ ├── Entitlements.plist
│ ├── Helpers
│ │ ├── AppStore.cs
│ │ ├── Device.cs
│ │ ├── Fonts.cs
│ │ ├── ImageExtensions.cs
│ │ ├── Images.cs
│ │ ├── MediaItemImageExtensions.cs
│ │ ├── NGraphicsExtensions.cs
│ │ ├── Style.cs
│ │ ├── TableViewExtensions.cs
│ │ └── UIViewExtensions.cs
│ ├── Info.plist
│ ├── iTunesArtwork
│ ├── iTunesArtwork@2x
│ ├── libbass.a
│ ├── libbass_fx.a
│ ├── Main.cs
│ ├── MusicPlayer.iOS.csproj
│ ├── Native
│ │ ├── AutolockPowerWatcher.cs
│ │ ├── BackgroundDownloadManager.cs
│ │ ├── NativeIndexer.cs
│ │ ├── PopupManager.cs
│ │ ├── ScreenManager.cs
│ │ └── SongSharingActivityProvider.cs
│ ├── Playback
│ │ ├── NativeTrackHandler.cs
│ │ └── PictureInPictureManager.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── accentColor@2x.png
│ │ ├── accentColorHorizontal@2x.png
│ │ ├── accentColorHorizontal.png
│ │ ├── accentColor.png
│ │ ├── empty.mp3
│ │ ├── Fonts
│ │ │ ├── icomoon.ttf
│ │ │ ├── SF-UI-Display-Black.otf
│ │ │ ├── SF-UI-Display-Bold.otf
│ │ │ ├── SF-UI-Display-Heavy.otf
│ │ │ ├── SF-UI-Display-Light.otf
│ │ │ ├── SF-UI-Display-Medium.otf
│ │ │ ├── SF-UI-Display-Regular.otf
│ │ │ ├── SF-UI-Display-Semibold.otf
│ │ │ ├── SF-UI-Display-Thin.otf
│ │ │ ├── SF-UI-Display-Ultralight.otf
│ │ │ ├── SF-UI-Text-BoldItalic.otf
│ │ │ ├── SF-UI-Text-Bold.otf
│ │ │ ├── SF-UI-Text-HeavyItalic.otf
│ │ │ ├── SF-UI-Text-Heavy.otf
│ │ │ ├── SF-UI-Text-Italic.otf
│ │ │ ├── SF-UI-Text-LightItalic.otf
│ │ │ ├── SF-UI-Text-Light.otf
│ │ │ ├── SF-UI-Text-MediumItalic.otf
│ │ │ ├── SF-UI-Text-Medium.otf
│ │ │ ├── SF-UI-Text-Regular.otf
│ │ │ ├── SF-UI-Text-SemiboldItalic.otf
│ │ │ └── SF-UI-Text-Semibold.otf
│ │ ├── headphones@2x.png
│ │ ├── headphones.png
│ │ ├── launchBg@2x.png
│ │ ├── launchBg.png
│ │ ├── LaunchScreen.xib
│ │ ├── Media.xcassets
│ │ │ ├── AppIcons.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-120.png
│ │ │ │ ├── Icon-167.png
│ │ │ │ ├── Icon@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-72@2x.png
│ │ │ │ ├── Icon-72.png
│ │ │ │ ├── Icon-76@2x.png
│ │ │ │ ├── Icon-76.png
│ │ │ │ ├── Icon-iPad-Spotlight-iOS7@2x.png
│ │ │ │ ├── Icon.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Small-50.png
│ │ │ │ ├── Icon-Small.png
│ │ │ │ ├── Icon-Spotlight-iOS7@2x.png
│ │ │ │ ├── Icon-Spotlight-iOS7.png
│ │ │ │ └── iTunesArtwork@2x.png
│ │ │ └── LaunchImages.launchimage
│ │ │ ├── Contents.json
│ │ │ ├── Default@2x.png
│ │ │ ├── Default-568h@2x.png
│ │ │ ├── Default-Landscape~ipad@2x.png
│ │ │ ├── Default-Landscape~ipad.png
│ │ │ ├── Default-Portrait~ipad@2x.png
│ │ │ └── Default-Portrait~ipad.png
│ │ └── SVG
│ │ ├── airplay.svg
│ │ ├── album.svg
│ │ ├── amazon.svg
│ │ ├── artist.svg
│ │ ├── close.svg
│ │ ├── copy.svg
│ │ ├── dice.svg
│ │ ├── dropbox-outline.svg
│ │ ├── edit.svg
│ │ ├── equalizer.svg
│ │ ├── genres.svg
│ │ ├── google-drive.svg
│ │ ├── googleMusic.svg
│ │ ├── icon.svg
│ │ ├── isOffline.svg
│ │ ├── menu.svg
│ │ ├── more.svg
│ │ ├── moreTall.svg
│ │ ├── musicalNotes.svg
│ │ ├── next.svg
│ │ ├── offline.svg
│ │ ├── onedrive.svg
│ │ ├── pauseButtonBordered.svg
│ │ ├── pauseButton.svg
│ │ ├── playbackSliderThumb.svg
│ │ ├── playButtonBordered.svg
│ │ ├── playButton.svg
│ │ ├── playlists.svg
│ │ ├── previous.svg
│ │ ├── radio.svg
│ │ ├── repeatOne.svg
│ │ ├── repeat.svg
│ │ ├── search.svg
│ │ ├── settings.svg
│ │ ├── share.svg
│ │ ├── shuffle.svg
│ │ ├── sliderTrack.svg
│ │ ├── songsDefault.svg
│ │ ├── songs.svg
│ │ ├── soundCloudColor.svg
│ │ ├── thumbsDown.svg
│ │ ├── thumbsUp.svg
│ │ ├── trash.svg
│ │ ├── trending.svg
│ │ ├── undo.svg
│ │ ├── videoIcon.svg
│ │ └── youtubeLogo.svg
│ ├── SetupAppStore.sh
│ ├── SetupDev.sh
│ ├── UI
│ │ ├── AlbumHeaderView.cs
│ │ ├── DarkBlurView.cs
│ │ ├── DragDismissAnimator.cs
│ │ ├── LevelMeter.cs
│ │ ├── TabBar.cs
│ │ ├── TabButton.cs
│ │ └── VideoView.cs
│ ├── ViewControllers
│ │ ├── AlbumDetailsViewController.cs
│ │ ├── AlbumViewController.cs
│ │ ├── ArtistAlbumsViewController.cs
│ │ ├── ArtistDetailViewController.cs
│ │ ├── ArtistSongsViewController.cs
│ │ ├── ArtistViewController.cs
│ │ ├── AutoPlaylistSongsViewController.cs
│ │ ├── BaseEditTableViewController.cs
│ │ ├── BaseModelViewController.cs
│ │ ├── BaseTableViewController.cs
│ │ ├── BaseViewController.cs
│ │ ├── Car
│ │ │ ├── CarArtistViewController.cs
│ │ │ ├── CarGenreViewController.cs
│ │ │ ├── CarHeadViewController.cs
│ │ │ ├── CarNavigation.cs
│ │ │ ├── CarPlaylistViewController.cs
│ │ │ ├── CarRadioViewController.cs
│ │ │ ├── CarSongsViewController.cs
│ │ │ └── CarStyle.cs
│ │ ├── ConsoleViewController.cs
│ │ ├── CurrentPlaylistViewController.cs
│ │ ├── DownloadViewController.cs
│ │ ├── EqualizerPickerViewController.cs
│ │ ├── EqualizerViewController.cs
│ │ ├── FullScreenMoviewController.cs
│ │ ├── GenreViewController.cs
│ │ ├── IntroViewController.cs
│ │ ├── NowPlayingCollectionView.cs
│ │ ├── NowPlayingViewController.cs
│ │ ├── OnlineArtistDetailsViewController.cs
│ │ ├── OnlinePlaylistViewController.cs
│ │ ├── PlaylistPickerViewController.cs
│ │ ├── PlaylistSongsViewController.cs
│ │ ├── PlaylistViewController.cs
│ │ ├── RadioStationViewController.cs
│ │ ├── RootViewController.cs
│ │ ├── SearchListViewController.cs
│ │ ├── SearchViewController.cs
│ │ ├── ServicePickerViewController.cs
│ │ ├── SettingViewController.cs
│ │ ├── SongTagEditor.cs
│ │ └── SongViewController.cs
│ └── ViewModels
│ ├── BaseViewModel.cs
│ ├── CurrentPlaylistViewModel.cs
│ ├── PlaylistSongViewModel.cs
│ ├── PlaylistViewModel.cs
│ └── RadioStationViewModel.cs
├── MusicPlayer.iOS.sln
├── MusicPlayer.Mac.sln
├── MusicPlayer.OSX
│ ├── AkavacheSqliteLinkerOverride.cs
│ ├── ApiConstants.Mac.cs
│ ├── AppDelegate.cs
│ ├── AppDelegate.designer.cs
│ ├── App.OSX.cs
│ ├── BottomView.cs
│ ├── BottomView.designer.cs
│ ├── CollectionView.cs
│ ├── CollectionView.designer.cs
│ ├── Controls
│ │ ├── INavigationItem.cs
│ │ ├── NSAnimatedSlider.cs
│ │ ├── NSColorView.cs
│ │ ├── NSNavigationController.cs
│ │ ├── PanaramaView.cs
│ │ └── TwoLabelView.cs
│ ├── Entitlements.plist
│ ├── Helpers
│ │ ├── AudioOutputHelper.cs
│ │ ├── DetatchableNSPopoover.cs
│ │ ├── Device.cs
│ │ ├── Fonts.cs
│ │ ├── HttpUtility.cs
│ │ ├── Images.cs
│ │ ├── ImageViewExtensions.cs
│ │ ├── MediaItemImageExtensions.cs
│ │ ├── NGraphicsExtensions.cs
│ │ └── Style.cs
│ ├── Info.plist
│ ├── libbass.dylib
│ ├── libbass_fx.dylib
│ ├── Main.cs
│ ├── MainWindow.cs
│ ├── MainWindow.designer.cs
│ ├── MainWindowView.cs
│ ├── MainWindowView.designer.cs
│ ├── Managers
│ │ └── LogManager.Mac.cs
│ ├── Menu
│ │ ├── Element.cs
│ │ ├── EqualizerMenuElement.cs
│ │ ├── MenuElement.cs
│ │ ├── MenuImageElement.cs
│ │ ├── MenuSection.cs
│ │ └── MenuSwitchElement.cs
│ ├── MusicPlayer.OSX.csproj
│ ├── Native
│ │ ├── BackgroundDownloadManager.cs
│ │ ├── ITunesLibrary.cs
│ │ ├── ITunesProvider.cs
│ │ ├── KeyboardControlHandler.cs
│ │ ├── NativeTrackHandler.cs
│ │ └── PopupManager.cs
│ ├── Plugins
│ │ ├── Connectivity
│ │ │ ├── BaseConnectivity.cs
│ │ │ ├── ConnectionType.cs
│ │ │ ├── ConnectivityImplementation.cs
│ │ │ ├── CrossConnectivity.cs
│ │ │ ├── IConnectivity.cs
│ │ │ └── Reachability.cs
│ │ ├── CrossSettings.cs
│ │ ├── ISettings.cs
│ │ └── Settings.cs
│ ├── Resources
│ │ ├── CollectionView.xib
│ │ ├── icon.icns
│ │ ├── MainMenu.xib
│ │ └── MediaCollectionView.xib
│ ├── SidebarTableCellView.cs
│ ├── SidebarTableCellView.designer.cs
│ ├── VideoPlaybackWindowController.cs
│ ├── VideoPlaybackWindowController.designer.cs
│ ├── VideoPlaybackWindow.cs
│ ├── VideoPlaybackWindow.designer.cs
│ ├── VideoPlaybackWindow.xib
│ ├── ViewController.cs
│ ├── ViewController.designer.cs
│ ├── ViewModels
│ │ └── ArtistAlbumsViewModel.cs
│ └── Views
│ ├── AlbumDetailsViewControllerController.cs
│ ├── AlbumDetailsViewControllerController.designer.cs
│ ├── AlbumDetailViewController.cs
│ ├── AlbumDetailViewController.designer.cs
│ ├── AlbumDetailView.cs
│ ├── AlbumDetailView.designer.cs
│ ├── AlbumDetailView.xib
│ ├── AlbumListView.cs
│ ├── AlbumView.cs
│ ├── ArtistAlbumsListView.cs
│ ├── ArtistListView.cs
│ ├── ArtistView.cs
│ ├── AutoPlaylistSongsListView.cs
│ ├── BaseCollectionSource.cs
│ ├── BaseCollectionView.cs
│ ├── BaseSplitView.cs
│ ├── BaseTableView.cs
│ ├── Cells
│ │ ├── AlbumCell.cs
│ │ ├── AlbumDetailsCell.cs
│ │ ├── AlbumDetailsSongCell.cs
│ │ ├── ArtistCell.cs
│ │ ├── BaseCell.cs
│ │ ├── BaseCollectionView.cs
│ │ ├── GenreCell.cs
│ │ ├── HeaderCell.cs
│ │ ├── ImageCellView.cs
│ │ ├── MediaCellView.cs
│ │ ├── MediaCollectionView.cs
│ │ ├── MutliImageMediaCellView.cs
│ │ ├── PlaylistCell.cs
│ │ ├── PlaylistSongCell.cs
│ │ ├── RadioStationCell.cs
│ │ ├── SongCell.cs
│ │ ├── SongSearchCell.cs
│ │ └── SpinnerCell.cs
│ ├── ConsoleViewController.cs
│ ├── EqualizerView.cs
│ ├── GenreDetailsListView.cs
│ ├── GenreListView.cs
│ ├── GenreView.cs
│ ├── ILifeCycleView.cs
│ ├── PlaybackBar.cs
│ ├── PlaylistListView.cs
│ ├── PlaylistSongsListView.cs
│ ├── PlaylistView.cs
│ ├── ProgressView.cs
│ ├── RadioStationListView.cs
│ ├── RadioStationView.cs
│ ├── SearchListResultView.cs
│ ├── SearchView.cs
│ ├── SimpleButton.cs
│ ├── SongView.cs
│ └── VideoView.cs
├── MusicPlayer.Shared
│ ├── ApiConstants.cs
│ ├── App.cs
│ ├── Data
│ │ ├── CryptoRandom.cs
│ │ ├── Database.cs
│ │ ├── Locations.cs
│ │ ├── QueueStream.cs
│ │ ├── RequestCache.cs
│ │ ├── ScrobbleDatabase.cs
│ │ ├── Settings.cs
│ │ └── SlideQueue.cs
│ ├── Helpers
│ │ ├── AppSettingsExtensions.cs
│ │ ├── ArrayExtensions.cs
│ │ ├── BaseNotify.cs
│ │ ├── DateExtensions.cs
│ │ ├── EnumerationExtensions.cs
│ │ ├── EventHandlerExtensions.cs
│ │ ├── FixedSizeDictionary.cs
│ │ ├── FixedSizedQueue.cs
│ │ ├── IEnumberableExtension.cs
│ │ ├── InMemoryConsole.cs
│ │ ├── JsonContent.cs
│ │ ├── MathExtensions.cs
│ │ ├── SimpleQueue.cs
│ │ ├── Spinner.cs
│ │ ├── StringExtensions.cs
│ │ ├── TrackListExtensions.cs
│ │ └── YouTubeHelper.cs
│ ├── Managers
│ │ ├── ApiManager.cs
│ │ ├── ArtworkManager.cs
│ │ ├── DownloadManager.cs
│ │ ├── EqualizerManager.cs
│ │ ├── LogManager.cs
│ │ ├── ManagerBase.cs
│ │ ├── MusicManager.cs
│ │ ├── NotificationManager.cs
│ │ ├── OfflineManager.cs
│ │ ├── PlaybackManager.cs
│ │ ├── ScrobbleManager.cs
│ │ ├── SearchManager.cs
│ │ ├── ShareManager.cs
│ │ ├── StateManager.cs
│ │ └── TempFileManager.cs
│ ├── Models
│ │ ├── AlbumArtwork.cs
│ │ ├── Album.cs
│ │ ├── AlbumIds.cs
│ │ ├── ApiModel.cs
│ │ ├── ArtistArtwork.cs
│ │ ├── Artist.cs
│ │ ├── ArtistIds.cs
│ │ ├── Artwork.cs
│ │ ├── AutoPlaylist.cs
│ │ ├── BackgroundDownloadFile.cs
│ │ ├── BaseModel.cs
│ │ ├── DownloadUrlData.cs
│ │ ├── EqualizerPreset.cs
│ │ ├── EqualizerPresetValue.cs
│ │ ├── FullTrackData.cs
│ │ ├── Genre.cs
│ │ ├── iDirty.cs
│ │ ├── MediaItemBase.cs
│ │ ├── MediaType.cs
│ │ ├── OfflineClass.cs
│ │ ├── PlaybackState.cs
│ │ ├── Playlist.cs
│ │ ├── PlaylistSong.cs
│ │ ├── PlaylistType.cs
│ │ ├── RadioStationArtwork.cs
│ │ ├── RadioStation.cs
│ │ ├── RadioStationSeed.cs
│ │ ├── RadioStationSong.cs
│ │ ├── RepeatMode.cs
│ │ ├── Scrobbling
│ │ │ ├── NowPlayingEvent.cs
│ │ │ ├── PlaybackEndedEvent.cs
│ │ │ └── SongPlaybackEvent.cs
│ │ ├── SearchResults.cs
│ │ ├── ServiceType.cs
│ │ ├── Song.cs
│ │ ├── SongPlaybackData.cs
│ │ ├── StreamQuality.cs
│ │ ├── Track.cs
│ │ ├── TrackPosition.cs
│ │ └── UserDetails.cs
│ ├── MusicPlayer.Shared.projitems
│ ├── MusicPlayer.Shared.shproj
│ ├── MusicProvider.cs
│ ├── Playback
│ │ ├── AudioFadePlayer.cs
│ │ ├── BassFileProceduresManager.cs
│ │ ├── BassPlayer.cs
│ │ ├── Equalizer.cs
│ │ ├── IEqualizer.cs
│ │ ├── NativeAudioPlayer.cs
│ │ ├── PlaybackContext.cs
│ │ ├── PlaybackData.cs
│ │ └── Player.cs
│ ├── ViewModels
│ │ ├── AlbumDetailsViewModel.cs
│ │ ├── AlbumViewModel.cs
│ │ ├── ArtistAlbumsViewModel.cs
│ │ ├── ArtistSongsViewModel.cs
│ │ ├── ArtistViewModel.cs
│ │ ├── AutoPlaylistSongViewModel.cs
│ │ ├── BaseViewModel.cs
│ │ ├── CurrentPlaylistViewModel.cs
│ │ ├── DownloadViewModel.cs
│ │ ├── GenreAlbumsViewModel.cs
│ │ ├── GenreViewModel.cs
│ │ ├── LocalSearchListViewModel.cs
│ │ ├── OnlineAlbumDetailsViewModel.cs
│ │ ├── OnlineArtistDetailsViewModel.cs
│ │ ├── OnlinePlaylistViewModel.cs
│ │ ├── PlaylistSongViewModel.cs
│ │ ├── PlaylistViewModel.cs
│ │ ├── RadioStationViewModel.cs
│ │ ├── SearchListViewModel.cs
│ │ ├── SearchViewModel.cs
│ │ └── SongViewModel.cs
│ └── WebServer
│ ├── LocalWebServer.cs
│ ├── PathAttribute.cs
│ ├── RequestExtensions.cs
│ ├── Router.cs
│ ├── Routes
│ │ ├── MediaStreamingRoute.cs
│ │ ├── Route.cs
│ │ └── RouteT.cs
│ ├── StringExtensions.cs
│ └── WebServer.cs
├── MusicPlayer.sln
├── nuget.config
├── README.md
├── Setup.sh
├── Test
│ ├── ScreenShotTaker
│ │ ├── packages.config
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── ScreenShotTaker.csproj
│ └── TestCloud.iOS
│ ├── AppInitializer.cs
│ ├── BaseTestFixture.cs
│ ├── Constants.cs
│ ├── IAppExtensions.cs
│ ├── LoginTest.cs
│ ├── MenuTests.cs
│ ├── packages.config
│ ├── PlayMusicTest.cs
│ ├── PopupMenuTest.cs
│ ├── SearchTest.cs
│ └── TestCloud.iOS.csproj
└── tools
├── NuGet
│ └── NuGet.exe
└── xpkg
├── xamarin-component
└── xamarin-component.exe
98 directories, 850 files
gMusic是一个跨平台的音乐播放器项目,旨在为iOS上的Google Play音乐提供最佳体验。随着时间的推移,该项目开始支持更多的流媒体服务和平台。
【实例截图】
【核心代码】
文件清单
└── gMusic-65feb9f3b23abad3ed8d486faf499ff5176883df
├── Api
│ ├── AmazonApi
│ │ ├── AmazonApi.projitems
│ │ ├── AmazonApi.shproj
│ │ ├── AmazonAuthenticator.cs
│ │ ├── AmazonMusicProvider.cs
│ │ ├── CloudDrive
│ │ │ ├── Account
│ │ │ │ ├── CloudAccountInfoResponse.cs
│ │ │ │ ├── CloudDataTotals.cs
│ │ │ │ ├── CloudDataUsage.cs
│ │ │ │ ├── CloudEndpointResponse.cs
│ │ │ │ ├── CloudQuotaResponse.cs
│ │ │ │ └── CloudUsageResponse.cs
│ │ │ ├── Changes
│ │ │ │ └── CloudChangesResult.cs
│ │ │ ├── CloudDriveApi.cs
│ │ │ └── Nodes
│ │ │ ├── Enums.cs
│ │ │ ├── Filters
│ │ │ │ ├── ContentExtensionFilter.cs
│ │ │ │ ├── ContentNameFilter.cs
│ │ │ │ ├── ContentTypeFilter.cs
│ │ │ │ ├── DateTimeBetweenNodeFilter.cs
│ │ │ │ ├── DateTimeNodeFilter.cs
│ │ │ │ ├── NodeFilter.cs
│ │ │ │ ├── NodeFilterGroup.cs
│ │ │ │ ├── NodeOrderBy.cs
│ │ │ │ ├── NodeProperties.cs
│ │ │ │ └── NodeTypeFilter.cs
│ │ │ ├── Models
│ │ │ │ ├── CloudDriveStorage.cs
│ │ │ │ ├── CloudNode.cs
│ │ │ │ ├── ContentNodeImageProperties.cs
│ │ │ │ ├── ContentNodeProperties.cs
│ │ │ │ ├── ContentNodeVideoProperties.cs
│ │ │ │ └── ParentMap.cs
│ │ │ └── Requests
│ │ │ ├── CloudChangesRequest.cs
│ │ │ ├── CloudNodeRequest.cs
│ │ │ ├── CloudNodeRequests.cs
│ │ │ └── FileUploadData.cs
│ │ └── MimeTypes.cs
│ ├── FileSytemApi
│ │ ├── FileSystemProvider.cs
│ │ ├── FileSytemApi.projitems
│ │ └── FileSytemApi.shproj
│ ├── gMusicApi
│ │ ├── gMusicApi.projitems
│ │ ├── gMusicApi.shproj
│ │ ├── GoogleMusicApi.cs
│ │ ├── GoogleMusicApiRequest.cs
│ │ ├── GoogleMusicAuthenticator.cs
│ │ ├── GoogleMusicProvider.cs
│ │ └── GoogleMusicResponses.cs
│ ├── iPodApi
│ │ ├── iPodApi.projitems
│ │ ├── iPodApi.shproj
│ │ └── iPodProvider.cs
│ ├── OneDrive
│ │ ├── Models
│ │ │ ├── OneDriveAudio.cs
│ │ │ ├── OneDriveError.cs
│ │ │ ├── OneDriveFile.cs
│ │ │ ├── OneDriveFolder.cs
│ │ │ ├── OneDriveIdentity.cs
│ │ │ ├── OneDriveIdentitySet.cs
│ │ │ ├── OneDriveImage.cs
│ │ │ ├── OneDriveItem.cs
│ │ │ ├── OneDriveLink.cs
│ │ │ ├── OneDriveResponse.cs
│ │ │ ├── OneDriveSpecialFolder.cs
│ │ │ └── OneDriveVideo.cs
│ │ ├── OneDriveApi.cs
│ │ ├── OneDriveAuthenticator.cs
│ │ ├── OneDrive.projitems
│ │ ├── OneDriveProvider.cs
│ │ ├── OneDrive.shproj
│ │ └── Responses
│ │ ├── OneDriveDeltaResponse.cs
│ │ └── OneDriveShareResponse.cs
│ ├── SoundCloud
│ │ ├── Models
│ │ │ ├── SApiResponse.cs
│ │ │ ├── STrack.cs
│ │ │ ├── SUser.cs
│ │ │ └── UserInfo.cs
│ │ ├── SoundCloudAccount.cs
│ │ ├── SoundCloudApi.cs
│ │ ├── SoundCloudAuthenticator.cs
│ │ ├── SoundCloud.projitems
│ │ ├── SoundCloudProvider.cs
│ │ └── SoundCloud.shproj
│ └── YoutubeApi
│ ├── Google.Apis.Youtube.v3.cs
│ ├── IDirectResponseSchema.cs
│ ├── YoutubeApi.projitems
│ ├── YoutubeApi.shproj
│ ├── YoutubeOauthApi.cs
│ └── YoutubeProvider.cs
├── ApiConstants.targets
├── build.fsx
├── build-helpers.fsx
├── build.sh
├── LICENSE
├── Localizations
│ ├── Localizations.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Strings.de.Designer.cs
│ ├── Strings.de.resx
│ ├── Strings.Designer.cs
│ ├── Strings.es.Designer.cs
│ ├── Strings.es.resx
│ ├── Strings.fr.Designer.cs
│ ├── Strings.fr.resx
│ ├── Strings.it.Designer.cs
│ ├── Strings.it.resx
│ ├── Strings.ja.Designer.cs
│ ├── Strings.ja.resx
│ ├── Strings.ko.Designer.cs
│ ├── Strings.ko.resx
│ ├── Strings.resx
│ ├── Strings.ru.Designer.cs
│ ├── Strings.ru.resx
│ ├── Strings.zh-Hant.Designer.cs
│ └── Strings.zh-Hant.resx
├── mobile-center-post-clone.sh
├── MusicPlayer.Apple
│ ├── Helpers
│ │ ├── CGRectHelpers.cs
│ │ └── Utility.cs
│ ├── MusicPlayer.Apple.projitems
│ ├── MusicPlayer.Apple.shproj
│ └── Playback
│ ├── AVMediaPlayer.cs
│ ├── AVPlayerEqualizer.cs
│ ├── AVPlayerExtension.cs
│ ├── CustomVideoLayer.cs
│ ├── NativeAudioPlayer.cs
│ ├── NativeTrackHandler.cs
│ └── RemoteControlHandler.cs
├── MusicPlayer.Droid
│ ├── AkavacheSqliteLinkerOverride.cs
│ ├── ApiConstants.Droid.cs
│ ├── App.Droid.cs
│ ├── Assets
│ │ └── AboutAssets.txt
│ ├── Cells
│ │ ├── AlbumCell.cs
│ │ ├── ArtistCell.cs
│ │ ├── GenreCell.cs
│ │ ├── MediaItemCell.cs
│ │ ├── PlaylistCell.cs
│ │ ├── PlaylistSongCell.cs
│ │ ├── RadioStationCell.cs
│ │ ├── SongCell.cs
│ │ ├── SpinnerCell.cs
│ │ └── VideoCell.cs
│ ├── Data
│ │ ├── BackgroundDownloadManager.cs
│ │ ├── Settings.cs
│ │ └── VideoConvertor.cs
│ ├── Helpers
│ │ ├── ActivityHelper.cs
│ │ ├── AkavacheAuthStorage.cs
│ │ ├── DateTimeUtils.cs
│ │ ├── Device.cs
│ │ ├── FileUtil.cs
│ │ ├── Images.cs
│ │ ├── NGraphicsExtensions.cs
│ │ ├── ResourceHelper.cs
│ │ ├── ShellCommand.cs
│ │ ├── SimpleAlertDialog.cs
│ │ ├── SongExtentions.cs
│ │ └── Utility.cs
│ ├── Models
│ │ └── MenuItem.cs
│ ├── MusicPlayer.Droid.csproj
│ ├── packages.config
│ ├── Playback
│ │ ├── IPlayer.cs
│ │ ├── MediaPlayerPlayer.cs
│ │ ├── MoviePlayer.cs
│ │ ├── MoviePlayerEqualizer.cs
│ │ ├── NativeAudioPlayer.cs
│ │ ├── Playback.cs
│ │ └── RemoteControlReceiver.cs
│ ├── Properties
│ │ ├── AndroidManifest.xml
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── AboutResources.txt
│ │ ├── anim
│ │ │ ├── fade_in.xml
│ │ │ └── fade_out.xml
│ │ ├── animator
│ │ │ ├── slide_in_from_bottom.xml
│ │ │ ├── slide_in_from_left.xml
│ │ │ ├── slide_in_from_right.xml
│ │ │ ├── slide_out_to_bottom.xml
│ │ │ ├── slide_out_to_left.xml
│ │ │ └── slide_out_to_right.xml
│ │ ├── animator-v21
│ │ │ ├── slide_in_from_bottom.xml
│ │ │ ├── slide_in_from_left.xml
│ │ │ ├── slide_in_from_right.xml
│ │ │ ├── slide_out_to_bottom.xml
│ │ │ └── slide_out_to_left.xml
│ │ ├── drawable
│ │ │ ├── bg.png
│ │ │ ├── default_background.xml
│ │ │ ├── fullscreen_bg_gradient.xml
│ │ │ ├── fullscreen_toolbar_bg_gradient.xml
│ │ │ ├── ic_equalizer_white_36dp.xml
│ │ │ └── Icon.png
│ │ ├── drawable-hdpi
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── drawable-mdpi
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── drawable-xhdpi
│ │ │ ├── banner_tv.png
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── drawable-xxhdpi
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── ic_allmusic_black_24dp.png
│ │ │ ├── ic_by_genre.png
│ │ │ ├── ic_close_black_24dp.png
│ │ │ ├── ic_default_art.png
│ │ │ ├── ic_equalizer1_white_36dp.png
│ │ │ ├── ic_equalizer2_white_36dp.png
│ │ │ ├── ic_equalizer3_white_36dp.png
│ │ │ ├── ic_info_outline_grey600_48dp.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── ic_menu.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_pause_black_36dp.png
│ │ │ ├── ic_play_arrow_black_36dp.png
│ │ │ ├── ic_playlist_music_black_24dp.png
│ │ │ ├── ic_skip_next_white_24dp.png
│ │ │ ├── ic_skip_next_white_48dp.png
│ │ │ ├── ic_skip_previous_white_24dp.png
│ │ │ ├── ic_skip_previous_white_48dp.png
│ │ │ ├── ic_star_off.png
│ │ │ ├── ic_star_on.png
│ │ │ ├── uamp_ic_pause_white_24dp.png
│ │ │ ├── uamp_ic_pause_white_48dp.png
│ │ │ ├── uamp_ic_play_arrow_white_24dp.png
│ │ │ └── uamp_ic_play_arrow_white_48dp.png
│ │ ├── layout
│ │ │ ├── activity_full_player.xml
│ │ │ ├── activity_placeholder.xml
│ │ │ ├── activity_player.xml
│ │ │ ├── fragment_list.xml
│ │ │ ├── fragment_playback_controls.xml
│ │ │ ├── include_toolbar.xml
│ │ │ ├── media_list_item.xml
│ │ │ ├── nav_header.xml
│ │ │ ├── tv_activity_player.xml
│ │ │ ├── tv_playback_controls.xml
│ │ │ └── tv_vertical_grid.xml
│ │ ├── menu
│ │ │ ├── drawer.xml
│ │ │ └── main.axml
│ │ ├── Resource.Designer.cs
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── ids.xml
│ │ │ ├── strings_notifications.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── values-h800dp
│ │ │ └── dimens.xml
│ │ ├── values-v21
│ │ │ └── styles.xml
│ │ └── xml
│ │ ├── allowed_media_browser_callers.xml
│ │ └── automotive_app_desc.xml
│ ├── Services
│ │ ├── MediaNotificationManager.cs
│ │ └── MusicService.cs
│ ├── UI
│ │ ├── ActionBarCastActivity.cs
│ │ ├── BaseActivity.cs
│ │ ├── Callbacks.cs
│ │ ├── Fragments
│ │ │ ├── AlbumsFragment.cs
│ │ │ ├── ArtistDetailsFragment.cs
│ │ │ ├── ArtistFragment.cs
│ │ │ ├── BaseFragment.cs
│ │ │ ├── BaseModelViewFragment.cs
│ │ │ ├── GenresFragment.cs
│ │ │ ├── INavFragment.cs
│ │ │ ├── PlaybackControlsFragment.cs
│ │ │ ├── PlaylistFragment.cs
│ │ │ ├── SearchFragment.cs
│ │ │ ├── SettingsFragment.cs
│ │ │ └── SongFragment.cs
│ │ ├── FullScreenPlayerActivity.cs
│ │ ├── MusicPlayerActivity.cs
│ │ ├── NowPlayingActivity.cs
│ │ └── PopupManager.cs
│ └── ViewModels
│ ├── ListViewModel.cs
│ └── NavigationViewModel.cs
├── MusicPlayer.iOS
│ ├── ApiConstants.iOS.cs
│ ├── AppDelegate.cs
│ ├── App.iOS.cs
│ ├── build.sh
│ ├── Cells
│ │ ├── AccountCell.cs
│ │ ├── AlbumCell.cs
│ │ ├── AlbumSongCell.cs
│ │ ├── ArtistCell.cs
│ │ ├── BaseCell.cs
│ │ ├── GenreCell.cs
│ │ ├── MediaItemCell.cs
│ │ ├── MenuElement.cs
│ │ ├── MenuHeaderElement.cs
│ │ ├── MenuHelpTextElement.cs
│ │ ├── MenuSection.cs
│ │ ├── MenuSubtextSwitch.cs
│ │ ├── MenuSwitch.cs
│ │ ├── MultiImageMediaItemCell.cs
│ │ ├── PlaylistCell.cs
│ │ ├── PlaylistSongCell.cs
│ │ ├── RadioStationCell.cs
│ │ ├── SettingsBooleanElement.cs
│ │ ├── SettingsElement.cs
│ │ ├── SettingsSwitch.cs
│ │ ├── SongCell.cs
│ │ ├── SongDownloadCell.cs
│ │ └── SpinnerCell.cs
│ ├── Controls
│ │ ├── ActionSheet.cs
│ │ ├── AlertView.cs
│ │ ├── BlurredImageView.cs
│ │ ├── LoginEntryAlert.cs
│ │ ├── OBSlider.cs
│ │ ├── ProgressView.cs
│ │ ├── SimpleButton.cs
│ │ ├── TextInputAlert.cs
│ │ ├── TopTabBarController.cs
│ │ ├── TwoLabelView.cs
│ │ └── UIComboBox.cs
│ ├── Entitlements.plist
│ ├── Helpers
│ │ ├── AppStore.cs
│ │ ├── Device.cs
│ │ ├── Fonts.cs
│ │ ├── ImageExtensions.cs
│ │ ├── Images.cs
│ │ ├── MediaItemImageExtensions.cs
│ │ ├── NGraphicsExtensions.cs
│ │ ├── Style.cs
│ │ ├── TableViewExtensions.cs
│ │ └── UIViewExtensions.cs
│ ├── Info.plist
│ ├── iTunesArtwork
│ ├── iTunesArtwork@2x
│ ├── libbass.a
│ ├── libbass_fx.a
│ ├── Main.cs
│ ├── MusicPlayer.iOS.csproj
│ ├── Native
│ │ ├── AutolockPowerWatcher.cs
│ │ ├── BackgroundDownloadManager.cs
│ │ ├── NativeIndexer.cs
│ │ ├── PopupManager.cs
│ │ ├── ScreenManager.cs
│ │ └── SongSharingActivityProvider.cs
│ ├── Playback
│ │ ├── NativeTrackHandler.cs
│ │ └── PictureInPictureManager.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── accentColor@2x.png
│ │ ├── accentColorHorizontal@2x.png
│ │ ├── accentColorHorizontal.png
│ │ ├── accentColor.png
│ │ ├── empty.mp3
│ │ ├── Fonts
│ │ │ ├── icomoon.ttf
│ │ │ ├── SF-UI-Display-Black.otf
│ │ │ ├── SF-UI-Display-Bold.otf
│ │ │ ├── SF-UI-Display-Heavy.otf
│ │ │ ├── SF-UI-Display-Light.otf
│ │ │ ├── SF-UI-Display-Medium.otf
│ │ │ ├── SF-UI-Display-Regular.otf
│ │ │ ├── SF-UI-Display-Semibold.otf
│ │ │ ├── SF-UI-Display-Thin.otf
│ │ │ ├── SF-UI-Display-Ultralight.otf
│ │ │ ├── SF-UI-Text-BoldItalic.otf
│ │ │ ├── SF-UI-Text-Bold.otf
│ │ │ ├── SF-UI-Text-HeavyItalic.otf
│ │ │ ├── SF-UI-Text-Heavy.otf
│ │ │ ├── SF-UI-Text-Italic.otf
│ │ │ ├── SF-UI-Text-LightItalic.otf
│ │ │ ├── SF-UI-Text-Light.otf
│ │ │ ├── SF-UI-Text-MediumItalic.otf
│ │ │ ├── SF-UI-Text-Medium.otf
│ │ │ ├── SF-UI-Text-Regular.otf
│ │ │ ├── SF-UI-Text-SemiboldItalic.otf
│ │ │ └── SF-UI-Text-Semibold.otf
│ │ ├── headphones@2x.png
│ │ ├── headphones.png
│ │ ├── launchBg@2x.png
│ │ ├── launchBg.png
│ │ ├── LaunchScreen.xib
│ │ ├── Media.xcassets
│ │ │ ├── AppIcons.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-120.png
│ │ │ │ ├── Icon-167.png
│ │ │ │ ├── Icon@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-72@2x.png
│ │ │ │ ├── Icon-72.png
│ │ │ │ ├── Icon-76@2x.png
│ │ │ │ ├── Icon-76.png
│ │ │ │ ├── Icon-iPad-Spotlight-iOS7@2x.png
│ │ │ │ ├── Icon.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Small-50.png
│ │ │ │ ├── Icon-Small.png
│ │ │ │ ├── Icon-Spotlight-iOS7@2x.png
│ │ │ │ ├── Icon-Spotlight-iOS7.png
│ │ │ │ └── iTunesArtwork@2x.png
│ │ │ └── LaunchImages.launchimage
│ │ │ ├── Contents.json
│ │ │ ├── Default@2x.png
│ │ │ ├── Default-568h@2x.png
│ │ │ ├── Default-Landscape~ipad@2x.png
│ │ │ ├── Default-Landscape~ipad.png
│ │ │ ├── Default-Portrait~ipad@2x.png
│ │ │ └── Default-Portrait~ipad.png
│ │ └── SVG
│ │ ├── airplay.svg
│ │ ├── album.svg
│ │ ├── amazon.svg
│ │ ├── artist.svg
│ │ ├── close.svg
│ │ ├── copy.svg
│ │ ├── dice.svg
│ │ ├── dropbox-outline.svg
│ │ ├── edit.svg
│ │ ├── equalizer.svg
│ │ ├── genres.svg
│ │ ├── google-drive.svg
│ │ ├── googleMusic.svg
│ │ ├── icon.svg
│ │ ├── isOffline.svg
│ │ ├── menu.svg
│ │ ├── more.svg
│ │ ├── moreTall.svg
│ │ ├── musicalNotes.svg
│ │ ├── next.svg
│ │ ├── offline.svg
│ │ ├── onedrive.svg
│ │ ├── pauseButtonBordered.svg
│ │ ├── pauseButton.svg
│ │ ├── playbackSliderThumb.svg
│ │ ├── playButtonBordered.svg
│ │ ├── playButton.svg
│ │ ├── playlists.svg
│ │ ├── previous.svg
│ │ ├── radio.svg
│ │ ├── repeatOne.svg
│ │ ├── repeat.svg
│ │ ├── search.svg
│ │ ├── settings.svg
│ │ ├── share.svg
│ │ ├── shuffle.svg
│ │ ├── sliderTrack.svg
│ │ ├── songsDefault.svg
│ │ ├── songs.svg
│ │ ├── soundCloudColor.svg
│ │ ├── thumbsDown.svg
│ │ ├── thumbsUp.svg
│ │ ├── trash.svg
│ │ ├── trending.svg
│ │ ├── undo.svg
│ │ ├── videoIcon.svg
│ │ └── youtubeLogo.svg
│ ├── SetupAppStore.sh
│ ├── SetupDev.sh
│ ├── UI
│ │ ├── AlbumHeaderView.cs
│ │ ├── DarkBlurView.cs
│ │ ├── DragDismissAnimator.cs
│ │ ├── LevelMeter.cs
│ │ ├── TabBar.cs
│ │ ├── TabButton.cs
│ │ └── VideoView.cs
│ ├── ViewControllers
│ │ ├── AlbumDetailsViewController.cs
│ │ ├── AlbumViewController.cs
│ │ ├── ArtistAlbumsViewController.cs
│ │ ├── ArtistDetailViewController.cs
│ │ ├── ArtistSongsViewController.cs
│ │ ├── ArtistViewController.cs
│ │ ├── AutoPlaylistSongsViewController.cs
│ │ ├── BaseEditTableViewController.cs
│ │ ├── BaseModelViewController.cs
│ │ ├── BaseTableViewController.cs
│ │ ├── BaseViewController.cs
│ │ ├── Car
│ │ │ ├── CarArtistViewController.cs
│ │ │ ├── CarGenreViewController.cs
│ │ │ ├── CarHeadViewController.cs
│ │ │ ├── CarNavigation.cs
│ │ │ ├── CarPlaylistViewController.cs
│ │ │ ├── CarRadioViewController.cs
│ │ │ ├── CarSongsViewController.cs
│ │ │ └── CarStyle.cs
│ │ ├── ConsoleViewController.cs
│ │ ├── CurrentPlaylistViewController.cs
│ │ ├── DownloadViewController.cs
│ │ ├── EqualizerPickerViewController.cs
│ │ ├── EqualizerViewController.cs
│ │ ├── FullScreenMoviewController.cs
│ │ ├── GenreViewController.cs
│ │ ├── IntroViewController.cs
│ │ ├── NowPlayingCollectionView.cs
│ │ ├── NowPlayingViewController.cs
│ │ ├── OnlineArtistDetailsViewController.cs
│ │ ├── OnlinePlaylistViewController.cs
│ │ ├── PlaylistPickerViewController.cs
│ │ ├── PlaylistSongsViewController.cs
│ │ ├── PlaylistViewController.cs
│ │ ├── RadioStationViewController.cs
│ │ ├── RootViewController.cs
│ │ ├── SearchListViewController.cs
│ │ ├── SearchViewController.cs
│ │ ├── ServicePickerViewController.cs
│ │ ├── SettingViewController.cs
│ │ ├── SongTagEditor.cs
│ │ └── SongViewController.cs
│ └── ViewModels
│ ├── BaseViewModel.cs
│ ├── CurrentPlaylistViewModel.cs
│ ├── PlaylistSongViewModel.cs
│ ├── PlaylistViewModel.cs
│ └── RadioStationViewModel.cs
├── MusicPlayer.iOS.sln
├── MusicPlayer.Mac.sln
├── MusicPlayer.OSX
│ ├── AkavacheSqliteLinkerOverride.cs
│ ├── ApiConstants.Mac.cs
│ ├── AppDelegate.cs
│ ├── AppDelegate.designer.cs
│ ├── App.OSX.cs
│ ├── BottomView.cs
│ ├── BottomView.designer.cs
│ ├── CollectionView.cs
│ ├── CollectionView.designer.cs
│ ├── Controls
│ │ ├── INavigationItem.cs
│ │ ├── NSAnimatedSlider.cs
│ │ ├── NSColorView.cs
│ │ ├── NSNavigationController.cs
│ │ ├── PanaramaView.cs
│ │ └── TwoLabelView.cs
│ ├── Entitlements.plist
│ ├── Helpers
│ │ ├── AudioOutputHelper.cs
│ │ ├── DetatchableNSPopoover.cs
│ │ ├── Device.cs
│ │ ├── Fonts.cs
│ │ ├── HttpUtility.cs
│ │ ├── Images.cs
│ │ ├── ImageViewExtensions.cs
│ │ ├── MediaItemImageExtensions.cs
│ │ ├── NGraphicsExtensions.cs
│ │ └── Style.cs
│ ├── Info.plist
│ ├── libbass.dylib
│ ├── libbass_fx.dylib
│ ├── Main.cs
│ ├── MainWindow.cs
│ ├── MainWindow.designer.cs
│ ├── MainWindowView.cs
│ ├── MainWindowView.designer.cs
│ ├── Managers
│ │ └── LogManager.Mac.cs
│ ├── Menu
│ │ ├── Element.cs
│ │ ├── EqualizerMenuElement.cs
│ │ ├── MenuElement.cs
│ │ ├── MenuImageElement.cs
│ │ ├── MenuSection.cs
│ │ └── MenuSwitchElement.cs
│ ├── MusicPlayer.OSX.csproj
│ ├── Native
│ │ ├── BackgroundDownloadManager.cs
│ │ ├── ITunesLibrary.cs
│ │ ├── ITunesProvider.cs
│ │ ├── KeyboardControlHandler.cs
│ │ ├── NativeTrackHandler.cs
│ │ └── PopupManager.cs
│ ├── Plugins
│ │ ├── Connectivity
│ │ │ ├── BaseConnectivity.cs
│ │ │ ├── ConnectionType.cs
│ │ │ ├── ConnectivityImplementation.cs
│ │ │ ├── CrossConnectivity.cs
│ │ │ ├── IConnectivity.cs
│ │ │ └── Reachability.cs
│ │ ├── CrossSettings.cs
│ │ ├── ISettings.cs
│ │ └── Settings.cs
│ ├── Resources
│ │ ├── CollectionView.xib
│ │ ├── icon.icns
│ │ ├── MainMenu.xib
│ │ └── MediaCollectionView.xib
│ ├── SidebarTableCellView.cs
│ ├── SidebarTableCellView.designer.cs
│ ├── VideoPlaybackWindowController.cs
│ ├── VideoPlaybackWindowController.designer.cs
│ ├── VideoPlaybackWindow.cs
│ ├── VideoPlaybackWindow.designer.cs
│ ├── VideoPlaybackWindow.xib
│ ├── ViewController.cs
│ ├── ViewController.designer.cs
│ ├── ViewModels
│ │ └── ArtistAlbumsViewModel.cs
│ └── Views
│ ├── AlbumDetailsViewControllerController.cs
│ ├── AlbumDetailsViewControllerController.designer.cs
│ ├── AlbumDetailViewController.cs
│ ├── AlbumDetailViewController.designer.cs
│ ├── AlbumDetailView.cs
│ ├── AlbumDetailView.designer.cs
│ ├── AlbumDetailView.xib
│ ├── AlbumListView.cs
│ ├── AlbumView.cs
│ ├── ArtistAlbumsListView.cs
│ ├── ArtistListView.cs
│ ├── ArtistView.cs
│ ├── AutoPlaylistSongsListView.cs
│ ├── BaseCollectionSource.cs
│ ├── BaseCollectionView.cs
│ ├── BaseSplitView.cs
│ ├── BaseTableView.cs
│ ├── Cells
│ │ ├── AlbumCell.cs
│ │ ├── AlbumDetailsCell.cs
│ │ ├── AlbumDetailsSongCell.cs
│ │ ├── ArtistCell.cs
│ │ ├── BaseCell.cs
│ │ ├── BaseCollectionView.cs
│ │ ├── GenreCell.cs
│ │ ├── HeaderCell.cs
│ │ ├── ImageCellView.cs
│ │ ├── MediaCellView.cs
│ │ ├── MediaCollectionView.cs
│ │ ├── MutliImageMediaCellView.cs
│ │ ├── PlaylistCell.cs
│ │ ├── PlaylistSongCell.cs
│ │ ├── RadioStationCell.cs
│ │ ├── SongCell.cs
│ │ ├── SongSearchCell.cs
│ │ └── SpinnerCell.cs
│ ├── ConsoleViewController.cs
│ ├── EqualizerView.cs
│ ├── GenreDetailsListView.cs
│ ├── GenreListView.cs
│ ├── GenreView.cs
│ ├── ILifeCycleView.cs
│ ├── PlaybackBar.cs
│ ├── PlaylistListView.cs
│ ├── PlaylistSongsListView.cs
│ ├── PlaylistView.cs
│ ├── ProgressView.cs
│ ├── RadioStationListView.cs
│ ├── RadioStationView.cs
│ ├── SearchListResultView.cs
│ ├── SearchView.cs
│ ├── SimpleButton.cs
│ ├── SongView.cs
│ └── VideoView.cs
├── MusicPlayer.Shared
│ ├── ApiConstants.cs
│ ├── App.cs
│ ├── Data
│ │ ├── CryptoRandom.cs
│ │ ├── Database.cs
│ │ ├── Locations.cs
│ │ ├── QueueStream.cs
│ │ ├── RequestCache.cs
│ │ ├── ScrobbleDatabase.cs
│ │ ├── Settings.cs
│ │ └── SlideQueue.cs
│ ├── Helpers
│ │ ├── AppSettingsExtensions.cs
│ │ ├── ArrayExtensions.cs
│ │ ├── BaseNotify.cs
│ │ ├── DateExtensions.cs
│ │ ├── EnumerationExtensions.cs
│ │ ├── EventHandlerExtensions.cs
│ │ ├── FixedSizeDictionary.cs
│ │ ├── FixedSizedQueue.cs
│ │ ├── IEnumberableExtension.cs
│ │ ├── InMemoryConsole.cs
│ │ ├── JsonContent.cs
│ │ ├── MathExtensions.cs
│ │ ├── SimpleQueue.cs
│ │ ├── Spinner.cs
│ │ ├── StringExtensions.cs
│ │ ├── TrackListExtensions.cs
│ │ └── YouTubeHelper.cs
│ ├── Managers
│ │ ├── ApiManager.cs
│ │ ├── ArtworkManager.cs
│ │ ├── DownloadManager.cs
│ │ ├── EqualizerManager.cs
│ │ ├── LogManager.cs
│ │ ├── ManagerBase.cs
│ │ ├── MusicManager.cs
│ │ ├── NotificationManager.cs
│ │ ├── OfflineManager.cs
│ │ ├── PlaybackManager.cs
│ │ ├── ScrobbleManager.cs
│ │ ├── SearchManager.cs
│ │ ├── ShareManager.cs
│ │ ├── StateManager.cs
│ │ └── TempFileManager.cs
│ ├── Models
│ │ ├── AlbumArtwork.cs
│ │ ├── Album.cs
│ │ ├── AlbumIds.cs
│ │ ├── ApiModel.cs
│ │ ├── ArtistArtwork.cs
│ │ ├── Artist.cs
│ │ ├── ArtistIds.cs
│ │ ├── Artwork.cs
│ │ ├── AutoPlaylist.cs
│ │ ├── BackgroundDownloadFile.cs
│ │ ├── BaseModel.cs
│ │ ├── DownloadUrlData.cs
│ │ ├── EqualizerPreset.cs
│ │ ├── EqualizerPresetValue.cs
│ │ ├── FullTrackData.cs
│ │ ├── Genre.cs
│ │ ├── iDirty.cs
│ │ ├── MediaItemBase.cs
│ │ ├── MediaType.cs
│ │ ├── OfflineClass.cs
│ │ ├── PlaybackState.cs
│ │ ├── Playlist.cs
│ │ ├── PlaylistSong.cs
│ │ ├── PlaylistType.cs
│ │ ├── RadioStationArtwork.cs
│ │ ├── RadioStation.cs
│ │ ├── RadioStationSeed.cs
│ │ ├── RadioStationSong.cs
│ │ ├── RepeatMode.cs
│ │ ├── Scrobbling
│ │ │ ├── NowPlayingEvent.cs
│ │ │ ├── PlaybackEndedEvent.cs
│ │ │ └── SongPlaybackEvent.cs
│ │ ├── SearchResults.cs
│ │ ├── ServiceType.cs
│ │ ├── Song.cs
│ │ ├── SongPlaybackData.cs
│ │ ├── StreamQuality.cs
│ │ ├── Track.cs
│ │ ├── TrackPosition.cs
│ │ └── UserDetails.cs
│ ├── MusicPlayer.Shared.projitems
│ ├── MusicPlayer.Shared.shproj
│ ├── MusicProvider.cs
│ ├── Playback
│ │ ├── AudioFadePlayer.cs
│ │ ├── BassFileProceduresManager.cs
│ │ ├── BassPlayer.cs
│ │ ├── Equalizer.cs
│ │ ├── IEqualizer.cs
│ │ ├── NativeAudioPlayer.cs
│ │ ├── PlaybackContext.cs
│ │ ├── PlaybackData.cs
│ │ └── Player.cs
│ ├── ViewModels
│ │ ├── AlbumDetailsViewModel.cs
│ │ ├── AlbumViewModel.cs
│ │ ├── ArtistAlbumsViewModel.cs
│ │ ├── ArtistSongsViewModel.cs
│ │ ├── ArtistViewModel.cs
│ │ ├── AutoPlaylistSongViewModel.cs
│ │ ├── BaseViewModel.cs
│ │ ├── CurrentPlaylistViewModel.cs
│ │ ├── DownloadViewModel.cs
│ │ ├── GenreAlbumsViewModel.cs
│ │ ├── GenreViewModel.cs
│ │ ├── LocalSearchListViewModel.cs
│ │ ├── OnlineAlbumDetailsViewModel.cs
│ │ ├── OnlineArtistDetailsViewModel.cs
│ │ ├── OnlinePlaylistViewModel.cs
│ │ ├── PlaylistSongViewModel.cs
│ │ ├── PlaylistViewModel.cs
│ │ ├── RadioStationViewModel.cs
│ │ ├── SearchListViewModel.cs
│ │ ├── SearchViewModel.cs
│ │ └── SongViewModel.cs
│ └── WebServer
│ ├── LocalWebServer.cs
│ ├── PathAttribute.cs
│ ├── RequestExtensions.cs
│ ├── Router.cs
│ ├── Routes
│ │ ├── MediaStreamingRoute.cs
│ │ ├── Route.cs
│ │ └── RouteT.cs
│ ├── StringExtensions.cs
│ └── WebServer.cs
├── MusicPlayer.sln
├── nuget.config
├── README.md
├── Setup.sh
├── Test
│ ├── ScreenShotTaker
│ │ ├── packages.config
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── ScreenShotTaker.csproj
│ └── TestCloud.iOS
│ ├── AppInitializer.cs
│ ├── BaseTestFixture.cs
│ ├── Constants.cs
│ ├── IAppExtensions.cs
│ ├── LoginTest.cs
│ ├── MenuTests.cs
│ ├── packages.config
│ ├── PlayMusicTest.cs
│ ├── PopupMenuTest.cs
│ ├── SearchTest.cs
│ └── TestCloud.iOS.csproj
└── tools
├── NuGet
│ └── NuGet.exe
└── xpkg
├── xamarin-component
└── xamarin-component.exe
98 directories, 850 files
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论