├── .gitattributes
├── LICENSE
├── MusicPlayer
├── .gitignore
├── .idea
│ ├── caches
│ │ └── build_file_checksums.ser
│ ├── codeStyles
│ │ └── Project.xml
│ ├── gradle.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── runConfigurations.xml
│ └── vcs.xml
├── .vs
│ ├── MusicPlayer
│ │ └── v15
│ │ │ └── .suo
│ ├── VSWorkspaceState.json
│ └── slnx.sqlite
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── objectbox-models
│ │ ├── default.json
│ │ └── default.json.bak
│ ├── proguard-rules.pro
│ ├── release
│ │ ├── app-release.apk
│ │ └── output.json
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── lixiangsoft
│ │ │ └── lixiang
│ │ │ └── music_player
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-web.png
│ │ ├── java
│ │ │ ├── MediaSessionManager.java
│ │ │ └── com
│ │ │ │ └── lixiangsoft
│ │ │ │ └── lixiang
│ │ │ │ └── music_player
│ │ │ │ ├── AboutActivity.java
│ │ │ │ ├── ColorShades.java
│ │ │ │ ├── ColorUtil.java
│ │ │ │ ├── DownloadActivity.java
│ │ │ │ ├── DownloadFragment.java
│ │ │ │ ├── EqualizerActivity.java
│ │ │ │ ├── EventBusUtil
│ │ │ │ ├── ServiceEvent.java
│ │ │ │ ├── UIChangeEvent.java
│ │ │ │ ├── dismissEvent.java
│ │ │ │ ├── mediaChangeEvent.java
│ │ │ │ └── showListEvent.java
│ │ │ │ ├── FastScrollListAdapter.java
│ │ │ │ ├── FavouriteListAdapter.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── MathUtil.java
│ │ │ │ ├── MessageEvent.java
│ │ │ │ ├── Music.java
│ │ │ │ ├── MusiclistActivity.java
│ │ │ │ ├── MusiclistFragment.java
│ │ │ │ ├── MyApplication.java
│ │ │ │ ├── MyConstant.java
│ │ │ │ ├── PlayService.java
│ │ │ │ ├── Playlist.java
│ │ │ │ ├── RecentListAdapter.java
│ │ │ │ ├── RecommendActivity.java
│ │ │ │ ├── RecommendFragment.java
│ │ │ │ ├── ReloadMusicInfoDialog.java
│ │ │ │ ├── ScrimUtil.java
│ │ │ │ ├── SettingsActivity.java
│ │ │ │ ├── SettingsFragment.java
│ │ │ │ ├── SimpleFragmentPagerAdapter.java
│ │ │ │ ├── customActivity.java
│ │ │ │ ├── customFragment.java
│ │ │ │ ├── lyricObject.java
│ │ │ │ ├── musicInfo.java
│ │ │ │ ├── netListAdapter.java
│ │ │ │ ├── netMusicActivity.java
│ │ │ │ ├── playListAdapter.java
│ │ │ │ ├── playNowCoverPagerAdapter.java
│ │ │ │ ├── playlistdetailAdapter.java
│ │ │ │ ├── sc_randomPlay.java
│ │ │ │ ├── searchActivity.java
│ │ │ │ └── searchAdapter.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ ├── ic_notification.png
│ │ │ │ ├── ic_search_white_24dp.png
│ │ │ │ ├── repeat.png
│ │ │ │ ├── repeat_grey.png
│ │ │ │ ├── repeat_one.png
│ │ │ │ ├── seekbar_thumb.png
│ │ │ │ ├── shuffle.png
│ │ │ │ └── shuffle_grey.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── default_album.png
│ │ │ │ ├── ic_notification.png
│ │ │ │ ├── ic_search_white_24dp.png
│ │ │ │ ├── repeat.png
│ │ │ │ ├── repeat_grey.png
│ │ │ │ ├── repeat_one.png
│ │ │ │ ├── shuffle.png
│ │ │ │ └── shuffle_grey.png
│ │ │ ├── drawable-xhdpi
│ │ │ │ ├── default_album.png
│ │ │ │ ├── ic_notification.png
│ │ │ │ ├── ic_search_white_24dp.png
│ │ │ │ ├── repeat.png
│ │ │ │ ├── repeat_grey.png
│ │ │ │ ├── repeat_one.png
│ │ │ │ ├── shuffle.png
│ │ │ │ └── shuffle_grey.png
│ │ │ ├── drawable-xxhdpi
│ │ │ │ ├── default_album.png
│ │ │ │ ├── ic_notification.png
│ │ │ │ ├── ic_search_white_24dp.png
│ │ │ │ ├── nav.jpg
│ │ │ │ ├── nav_black.jpg
│ │ │ │ ├── repeat.png
│ │ │ │ ├── repeat_grey.png
│ │ │ │ ├── repeat_one.png
│ │ │ │ ├── shuffle.png
│ │ │ │ └── shuffle_grey.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ │ ├── default_album.png
│ │ │ │ ├── ic_search_white_24dp.png
│ │ │ │ ├── repeat.png
│ │ │ │ ├── repeat_grey.png
│ │ │ │ ├── repeat_one.png
│ │ │ │ ├── shuffle.png
│ │ │ │ └── shuffle_grey.png
│ │ │ ├── drawable
│ │ │ │ ├── ic_album_black_24dp.xml
│ │ │ │ ├── ic_arrow_back_black_24dp.xml
│ │ │ │ ├── ic_bug_report_black_24dp.xml
│ │ │ │ ├── ic_cloud_black_24dp.xml
│ │ │ │ ├── ic_expand_less_black_24dp.xml
│ │ │ │ ├── ic_info_outline_black_24dp.xml
│ │ │ │ ├── ic_insert_drive_file_black_24dp.xml
│ │ │ │ ├── ic_library_music_black_24dp.xml
│ │ │ │ ├── ic_list_black_24dp.xml
│ │ │ │ ├── ic_mail_outline_black_24dp.xml
│ │ │ │ ├── ic_more_vert_black_24dp.xml
│ │ │ │ ├── ic_navigate_before_black_24dp.xml
│ │ │ │ ├── ic_navigate_next_black_24dp.xml
│ │ │ │ ├── ic_pause_black_24dp.xml
│ │ │ │ ├── ic_people_outline_black_24dp.xml
│ │ │ │ ├── ic_perm_device_information_black_24dp.xml
│ │ │ │ ├── ic_person_black_24dp.xml
│ │ │ │ ├── ic_play_arrow_black_24dp.xml
│ │ │ │ ├── ic_playlist_play_black_24dp.xml
│ │ │ │ ├── ic_public_black_24dp.xml
│ │ │ │ ├── ic_queue_black_24dp.xml
│ │ │ │ ├── ic_queue_music_black_24dp.xml
│ │ │ │ ├── ic_settings_black_24dp.xml
│ │ │ │ ├── ic_skip_next_black_24dp.xml
│ │ │ │ ├── ic_skip_previous_black_24dp.xml
│ │ │ │ ├── ic_star_black_24dp.xml
│ │ │ │ ├── ic_update_black_24dp.xml
│ │ │ │ ├── ic_volume_up_black_24dp.xml
│ │ │ │ ├── seekbar_back.xml
│ │ │ │ └── toolbar_back.xml
│ │ │ ├── layout
│ │ │ │ ├── activity_category.xml
│ │ │ │ ├── activity_custom.xml
│ │ │ │ ├── activity_download.xml
│ │ │ │ ├── activity_equalizer.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── activity_net_music.xml
│ │ │ │ ├── activity_search.xml
│ │ │ │ ├── addtolist.xml
│ │ │ │ ├── content_main.xml
│ │ │ │ ├── createlist.xml
│ │ │ │ ├── custom_tab.xml
│ │ │ │ ├── favourite_musiclist.xml
│ │ │ │ ├── fragment_custom.xml
│ │ │ │ ├── fragment_download.xml
│ │ │ │ ├── fragment_musiclist.xml
│ │ │ │ ├── fragment_recommend.xml
│ │ │ │ ├── match_dialog.xml
│ │ │ │ ├── musicinfo_dialog.xml
│ │ │ │ ├── musiclist.xml
│ │ │ │ ├── nav_header.xml
│ │ │ │ ├── playlist.xml
│ │ │ │ ├── pre_search_for_album.xml
│ │ │ │ ├── pref_with_toolbar.xml
│ │ │ │ ├── random_play_title.xml
│ │ │ │ ├── recent_musiclist.xml
│ │ │ │ ├── scrolling_up_fragment.xml
│ │ │ │ ├── search.xml
│ │ │ │ ├── search_for_album.xml
│ │ │ │ ├── sleeper_dialog.xml
│ │ │ │ └── upgrade_dialog.xml
│ │ │ ├── menu
│ │ │ │ ├── inlist_menu.xml
│ │ │ │ ├── list_popup_menu.xml
│ │ │ │ ├── main_menu.xml
│ │ │ │ ├── nav_menu.xml
│ │ │ │ ├── net_menu.xml
│ │ │ │ ├── playlist_menu.xml
│ │ │ │ └── search_menu.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ ├── lrc_play.png
│ │ │ │ ├── sc_cloud3.png
│ │ │ │ ├── sc_library2.png
│ │ │ │ ├── sc_list2.png
│ │ │ │ └── sc_randomplay.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ ├── lrc_play.png
│ │ │ │ ├── sc_cloud3.png
│ │ │ │ ├── sc_library2.png
│ │ │ │ ├── sc_list2.png
│ │ │ │ └── sc_randomplay.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ ├── lrc_play.png
│ │ │ │ ├── sc_cloud3.png
│ │ │ │ ├── sc_library2.png
│ │ │ │ ├── sc_list2.png
│ │ │ │ └── sc_randomplay.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ ├── lrc_play.png
│ │ │ │ ├── sc_cloud3.png
│ │ │ │ ├── sc_library2.png
│ │ │ │ ├── sc_list2.png
│ │ │ │ └── sc_randomplay.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ ├── lrc_play.png
│ │ │ │ ├── new_launcher.png
│ │ │ │ ├── sc_cloud3.png
│ │ │ │ ├── sc_library2.png
│ │ │ │ ├── sc_list2.png
│ │ │ │ └── sc_randomplay.png
│ │ │ ├── values-w820dp
│ │ │ │ └── dimens.xml
│ │ │ ├── values
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ │ ├── preference.xml
│ │ │ │ └── shortcuts.xml
│ │ ├── sc_cloud-web.png
│ │ ├── sc_cloud2-web.png
│ │ ├── sc_cloud3-web.png
│ │ ├── sc_library-web.png
│ │ ├── sc_library2-web.png
│ │ ├── sc_list-web.png
│ │ ├── sc_list2-web.png
│ │ └── sc_randomPlay-web.png
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── lixiangsoft
│ │ └── lixiang
│ │ └── music_player
│ │ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
└── README.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
--------------------------------------------------------------------------------
/MusicPlayer/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 |
--------------------------------------------------------------------------------
/MusicPlayer/.idea/caches/build_file_checksums.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/.idea/caches/build_file_checksums.ser
--------------------------------------------------------------------------------
/MusicPlayer/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/MusicPlayer/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
--------------------------------------------------------------------------------
/MusicPlayer/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/MusicPlayer/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/MusicPlayer/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/MusicPlayer/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/MusicPlayer/.vs/MusicPlayer/v15/.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/.vs/MusicPlayer/v15/.suo
--------------------------------------------------------------------------------
/MusicPlayer/.vs/VSWorkspaceState.json:
--------------------------------------------------------------------------------
1 | {
2 | "ExpandedNodes": [
3 | ""
4 | ],
5 | "SelectedNode": "\\gradlew.bat",
6 | "PreviewInSolutionExplorer": false
7 | }
--------------------------------------------------------------------------------
/MusicPlayer/.vs/slnx.sqlite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/.vs/slnx.sqlite
--------------------------------------------------------------------------------
/MusicPlayer/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/MusicPlayer/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'io.objectbox' // after applying Android plugin
3 |
4 | android {
5 | compileSdkVersion 26
6 | buildToolsVersion '27.0.1'
7 | defaultConfig {
8 | applicationId "com.lixiangsoft.lixiang.music_player"
9 | minSdkVersion 21
10 | targetSdkVersion 26
11 | versionCode 61
12 | versionName "0.6.1"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | }
22 |
23 | dependencies {
24 | implementation 'com.android.support.constraint:constraint-layout:1.0.2'
25 | compile fileTree(dir: 'libs', include: ['*.jar'])
26 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
27 | exclude group: 'com.android.support', module: 'support-annotations'
28 | })
29 | compile("com.github.hotchemi:permissionsdispatcher:2.4.0") {
30 | // if you don't use android.app.Fragment you can exclude support for them
31 | exclude module: "support-v13"
32 | }
33 | implementation 'org.greenrobot:eventbus:3.1.1'
34 | compile 'com.android.support:appcompat-v7:26.1.0'
35 | compile 'com.android.support:support-v4:26.1.0'
36 | compile 'com.android.support:design:26.1.0'
37 | compile 'com.android.support:cardview-v7:26.1.0'
38 | compile 'com.android.support:palette-v7:26.1.0'
39 | compile 'com.github.bumptech.glide:glide:3.7.0'
40 | compile 'com.sothree.slidinguppanel:library:3.3.1'
41 | compile 'com.andkulikov:transitionseverywhere:1.7.6'
42 | compile 'com.jaredrummler:colorpicker:1.0.0'
43 | compile 'com.github.daniel-stoneuk:material-about-library:2.2.3-support26.1.0'
44 | compile 'com.simplecityapps:recyclerview-fastscroll:1.0.16'
45 | compile 'com.afollestad:aesthetic:0.4.6'
46 | compile 'com.squareup.okhttp3:okhttp:3.8.1'
47 | compile 'com.google.code.gson:gson:2.2.4'
48 | compile 'io.objectbox:objectbox-android:1.0.1'
49 | implementation 'com.gyf.immersionbar:immersionbar:2.3.3-beta15'
50 | compile 'me.wcy:lrcview:2.0.1'
51 | compile 'com.tencent.bugly:crashreport_upgrade:latest.release'
52 | compile 'com.tencent.bugly:nativecrashreport:latest.release'
53 | compile 'com.github.didikee:AndroidDonate:0.1.0'
54 | testCompile 'junit:junit:4.12'
55 | annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:2.4.0'
56 | }
57 |
--------------------------------------------------------------------------------
/MusicPlayer/app/objectbox-models/default.json:
--------------------------------------------------------------------------------
1 | {
2 | "_note1": "KEEP THIS FILE! Check it into a version control system (VCS) like git.",
3 | "_note2": "ObjectBox manages crucial IDs for your object model. See docs for details.",
4 | "_note3": "If you have VCS merge conflicts, you must resolve them according to ObjectBox docs.",
5 | "entities": [
6 | {
7 | "id": "3:7091941750748593683",
8 | "lastPropertyId": "14:1226318190614383691",
9 | "name": "musicInfo",
10 | "properties": [
11 | {
12 | "id": "1:8268234283878410365",
13 | "indexId": "3:409048820498679832",
14 | "name": "mId"
15 | },
16 | {
17 | "id": "2:2985375156994281904",
18 | "name": "mAlbumId"
19 | },
20 | {
21 | "id": "3:915054648694158668",
22 | "name": "mDuration"
23 | },
24 | {
25 | "id": "4:1924208888514078567",
26 | "name": "mTitle"
27 | },
28 | {
29 | "id": "5:168373061132148673",
30 | "name": "mArtist"
31 | },
32 | {
33 | "id": "6:2710237827426351290",
34 | "name": "mData"
35 | },
36 | {
37 | "id": "7:2184248756326627095",
38 | "name": "mAlbum"
39 | },
40 | {
41 | "id": "8:6212030171604405273",
42 | "name": "mTimes"
43 | },
44 | {
45 | "id": "9:1000128580393415274",
46 | "name": "mLink"
47 | },
48 | {
49 | "id": "11:350295176608302108",
50 | "name": "storeId"
51 | },
52 | {
53 | "id": "13:3062592765596425170",
54 | "indexId": "6:6004955152275991627",
55 | "name": "hide"
56 | },
57 | {
58 | "id": "14:1226318190614383691",
59 | "name": "AlbumLink"
60 | }
61 | ],
62 | "relations": []
63 | },
64 | {
65 | "id": "4:6101326128670023527",
66 | "lastPropertyId": "2:6208003327898091584",
67 | "name": "Playlist",
68 | "properties": [
69 | {
70 | "id": "1:1271913927779985540",
71 | "name": "Id"
72 | },
73 | {
74 | "id": "2:6208003327898091584",
75 | "indexId": "5:3557362581643997269",
76 | "name": "name"
77 | }
78 | ],
79 | "relations": [
80 | {
81 | "id": "1:1635808164375064554",
82 | "name": "musicInfos"
83 | }
84 | ]
85 | }
86 | ],
87 | "lastEntityId": "4:6101326128670023527",
88 | "lastIndexId": "6:6004955152275991627",
89 | "lastRelationId": "1:1635808164375064554",
90 | "lastSequenceId": "0:0",
91 | "modelVersion": 4,
92 | "modelVersionParserMinimum": 4,
93 | "retiredEntityUids": [
94 | 7680297848475436690,
95 | 337001512335506525
96 | ],
97 | "retiredIndexUids": [
98 | 8636594924175891653,
99 | 6422960155855344872,
100 | 2341793933318303954
101 | ],
102 | "retiredPropertyUids": [
103 | 1872515276738187765,
104 | 7653776058020986371,
105 | 2699474409226716684,
106 | 2278970508233130967,
107 | 4117673637898023785,
108 | 2742099217786992343,
109 | 3921146914459236035,
110 | 6424977877807870287,
111 | 406086291731563768,
112 | 5018106909097841635,
113 | 7116026837947755337,
114 | 7207826430660930437,
115 | 3479819938450629345,
116 | 3462036838781810650,
117 | 1259279207423780562,
118 | 4043563546312590503,
119 | 3307801922030912652,
120 | 8782435299885394926,
121 | 8297860391822184442,
122 | 6544299975163802664,
123 | 6690785799966256351,
124 | 6207878771990713905,
125 | 4894943104716939221,
126 | 8846472170000962281,
127 | 2859391865233380917,
128 | 5266937868602451493,
129 | 8927858961667485846,
130 | 6876771531421998677,
131 | 4582277729490957059,
132 | 1527165377595446219,
133 | 7580682461754070919,
134 | 2514843218159686173,
135 | 3204564063398825999
136 | ],
137 | "retiredRelationUids": [],
138 | "version": 1
139 | }
--------------------------------------------------------------------------------
/MusicPlayer/app/objectbox-models/default.json.bak:
--------------------------------------------------------------------------------
1 | {
2 | "_note1": "KEEP THIS FILE! Check it into a version control system (VCS) like git.",
3 | "_note2": "ObjectBox manages crucial IDs for your object model. See docs for details.",
4 | "_note3": "If you have VCS merge conflicts, you must resolve them according to ObjectBox docs.",
5 | "entities": [
6 | {
7 | "id": "3:7091941750748593683",
8 | "lastPropertyId": "13:3062592765596425170",
9 | "name": "musicInfo",
10 | "properties": [
11 | {
12 | "id": "1:8268234283878410365",
13 | "indexId": "3:409048820498679832",
14 | "name": "mId"
15 | },
16 | {
17 | "id": "2:2985375156994281904",
18 | "name": "mAlbumId"
19 | },
20 | {
21 | "id": "3:915054648694158668",
22 | "name": "mDuration"
23 | },
24 | {
25 | "id": "4:1924208888514078567",
26 | "name": "mTitle"
27 | },
28 | {
29 | "id": "5:168373061132148673",
30 | "name": "mArtist"
31 | },
32 | {
33 | "id": "6:2710237827426351290",
34 | "name": "mData"
35 | },
36 | {
37 | "id": "7:2184248756326627095",
38 | "name": "mAlbum"
39 | },
40 | {
41 | "id": "8:6212030171604405273",
42 | "name": "mTimes"
43 | },
44 | {
45 | "id": "9:1000128580393415274",
46 | "name": "mLink"
47 | },
48 | {
49 | "id": "11:350295176608302108",
50 | "name": "storeId"
51 | },
52 | {
53 | "id": "13:3062592765596425170",
54 | "indexId": "6:6004955152275991627",
55 | "name": "hide"
56 | }
57 | ],
58 | "relations": []
59 | },
60 | {
61 | "id": "4:6101326128670023527",
62 | "lastPropertyId": "2:6208003327898091584",
63 | "name": "Playlist",
64 | "properties": [
65 | {
66 | "id": "1:1271913927779985540",
67 | "name": "Id"
68 | },
69 | {
70 | "id": "2:6208003327898091584",
71 | "indexId": "5:3557362581643997269",
72 | "name": "name"
73 | }
74 | ],
75 | "relations": [
76 | {
77 | "id": "1:1635808164375064554",
78 | "name": "musicInfos"
79 | }
80 | ]
81 | }
82 | ],
83 | "lastEntityId": "4:6101326128670023527",
84 | "lastIndexId": "6:6004955152275991627",
85 | "lastRelationId": "1:1635808164375064554",
86 | "lastSequenceId": "0:0",
87 | "modelVersion": 4,
88 | "modelVersionParserMinimum": 4,
89 | "retiredEntityUids": [
90 | 7680297848475436690,
91 | 337001512335506525
92 | ],
93 | "retiredIndexUids": [
94 | 8636594924175891653,
95 | 6422960155855344872,
96 | 2341793933318303954
97 | ],
98 | "retiredPropertyUids": [
99 | 1872515276738187765,
100 | 7653776058020986371,
101 | 2699474409226716684,
102 | 2278970508233130967,
103 | 4117673637898023785,
104 | 2742099217786992343,
105 | 3921146914459236035,
106 | 6424977877807870287,
107 | 406086291731563768,
108 | 5018106909097841635,
109 | 7116026837947755337,
110 | 7207826430660930437,
111 | 3479819938450629345,
112 | 3462036838781810650,
113 | 1259279207423780562,
114 | 4043563546312590503,
115 | 3307801922030912652,
116 | 8782435299885394926,
117 | 8297860391822184442,
118 | 6544299975163802664,
119 | 6690785799966256351,
120 | 6207878771990713905,
121 | 4894943104716939221,
122 | 8846472170000962281,
123 | 2859391865233380917,
124 | 5266937868602451493,
125 | 8927858961667485846,
126 | 6876771531421998677,
127 | 4582277729490957059,
128 | 1527165377595446219,
129 | 7580682461754070919,
130 | 2514843218159686173,
131 | 3204564063398825999
132 | ],
133 | "retiredRelationUids": [],
134 | "version": 1
135 | }
--------------------------------------------------------------------------------
/MusicPlayer/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in C:\Users\lixiang\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 | -dontwarn com.tencent.bugly.**
19 | -keep public class com.tencent.bugly.**{*;}
20 | -keep class android.support.**{*;}
--------------------------------------------------------------------------------
/MusicPlayer/app/release/app-release.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/release/app-release.apk
--------------------------------------------------------------------------------
/MusicPlayer/app/release/output.json:
--------------------------------------------------------------------------------
1 | [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":61},"path":"app-release.apk","properties":{"packageId":"com.lixiangsoft.lixiang.music_player","split":"","minSdkVersion":"21"}}]
--------------------------------------------------------------------------------
/MusicPlayer/app/src/androidTest/java/com/lixiangsoft/lixiang/music_player/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.example.lixiang.musicplayer", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
24 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
48 |
49 |
50 |
55 |
58 |
59 |
60 |
64 |
65 |
66 |
67 |
68 |
71 |
75 |
79 |
82 |
86 |
90 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/MediaSessionManager.java:
--------------------------------------------------------------------------------
1 | import android.os.Build;
2 | import android.support.v4.media.MediaMetadataCompat;
3 | import android.support.v4.media.session.MediaSessionCompat;
4 | import android.support.v4.media.session.PlaybackStateCompat;
5 |
6 | import com.lixiangsoft.lixiang.music_player.MyApplication;
7 | import com.lixiangsoft.lixiang.music_player.PlayService;
8 |
9 | public class MediaSessionManager {
10 | // private static final String TAG = "MediaSessionManager";
11 | // private static final long MEDIA_SESSION_ACTIONS = PlaybackStateCompat.ACTION_PLAY
12 | // | PlaybackStateCompat.ACTION_PAUSE
13 | // | PlaybackStateCompat.ACTION_PLAY_PAUSE
14 | // | PlaybackStateCompat.ACTION_SKIP_TO_NEXT
15 | // | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS
16 | // | PlaybackStateCompat.ACTION_STOP
17 | // | PlaybackStateCompat.ACTION_SEEK_TO;
18 | //
19 | // private PlayService mPlayService;
20 | // private MediaSessionCompat mMediaSession;
21 | //
22 | // public MediaSessionManager(PlayService playService) {
23 | // mPlayService = playService;
24 | // setupMediaSession();
25 | // }
26 |
27 | /**
28 | * 初始化并激活MediaSession
29 | */
30 | // private void setupMediaSession() {
31 | // mMediaSession = new MediaSessionCompat(mPlayService, TAG);
32 | // mMediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS
33 | // | MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS);
34 | // mMediaSession.setCallback(callback);
35 | // mMediaSession.setActive(true);
36 | // }
37 |
38 | /**
39 | * 更新播放状态,播放/暂停/拖动进度条时调用
40 | */
41 | // public void updatePlaybackState() {
42 | // int state = (mPlayService.isPlaying() || mPlayService.isPreparing())
43 | // ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED;
44 | // mMediaSession.setPlaybackState(
45 | // new PlaybackStateCompat.Builder()
46 | // .setActions(MEDIA_SESSION_ACTIONS)
47 | // .setState(state, mPlayService.getCurrentPosition(), 1)
48 | // .build());
49 | // }
50 |
51 | /**
52 | * 更新正在播放的音乐信息,切换歌曲时调用
53 | */
54 | // public void updateMetaData(Music music) {
55 | // if (music == null) {
56 | // mMediaSession.setMetadata(null);
57 | // return;
58 | // }
59 | //
60 | // MediaMetadataCompat.Builder metaData = new MediaMetadataCompat.Builder()
61 | // .putString(MediaMetadataCompat.METADATA_KEY_TITLE, music.getTitle())
62 | // .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, music.getArtist())
63 | // .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, music.getAlbum())
64 | // .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST, music.getArtist())
65 | // .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, music.getDuration())
66 | // .putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, CoverLoader.getInstance().loadThumbnail(music));
67 | //
68 | // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
69 | // metaData.putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, MyApplication.getMusicListNow().size());
70 | // }
71 | //
72 | // mMediaSession.setMetadata(metaData.build());
73 | // }
74 |
75 | /**
76 | * 释放MediaSession,退出播放器时调用
77 | */
78 | // public void release() {
79 | // mMediaSession.setCallback(null);
80 | // mMediaSession.setActive(false);
81 | // mMediaSession.release();
82 | // }
83 |
84 | // private MediaSessionCompat.Callback callback = new MediaSessionCompat.Callback() {
85 | // @Override
86 | // public void onPlay() {
87 | // mPlayService.playPause();
88 | // }
89 | //
90 | // @Override
91 | // public void onPause() {
92 | // mPlayService.playPause();
93 | // }
94 | //
95 | // @Override
96 | // public void onSkipToNext() {
97 | // mPlayService.next();
98 | // }
99 | //
100 | // @Override
101 | // public void onSkipToPrevious() {
102 | // mPlayService.prev();
103 | // }
104 | //
105 | // @Override
106 | // public void onStop() {
107 | // mPlayService.stop();
108 | // }
109 | //
110 | // @Override
111 | // public void onSeekTo(long pos) {
112 | // mPlayService.seekTo((int) pos);
113 | // }
114 | // };
115 | }
116 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/AboutActivity.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.content.Context;
4 | import android.content.DialogInterface;
5 | import android.content.Intent;
6 | import android.didikee.donate.AlipayDonate;
7 | import android.didikee.donate.WeiXinDonate;
8 | import android.graphics.BitmapFactory;
9 | import android.net.Uri;
10 | import android.os.Bundle;
11 | import android.os.Environment;
12 | import android.support.annotation.NonNull;
13 | import android.support.v7.app.AlertDialog;
14 | import android.widget.Toast;
15 | import com.danielstone.materialaboutlibrary.ConvenienceBuilder;
16 | import com.danielstone.materialaboutlibrary.MaterialAboutActivity;
17 | import com.danielstone.materialaboutlibrary.items.MaterialAboutActionItem;
18 | import com.danielstone.materialaboutlibrary.items.MaterialAboutItemOnClickAction;
19 | import com.danielstone.materialaboutlibrary.items.MaterialAboutTitleItem;
20 | import com.danielstone.materialaboutlibrary.model.MaterialAboutCard;
21 | import com.danielstone.materialaboutlibrary.model.MaterialAboutList;
22 | import com.tencent.bugly.beta.Beta;
23 |
24 | import java.io.File;
25 | import java.io.InputStream;
26 |
27 |
28 | public class AboutActivity extends MaterialAboutActivity {
29 |
30 | @Override
31 | protected void onCreate(Bundle savedInstanceState) {
32 | super.onCreate(savedInstanceState);
33 |
34 | }
35 |
36 | @NonNull
37 | @Override
38 | protected MaterialAboutList getMaterialAboutList(@NonNull final Context c) {
39 | MaterialAboutCard.Builder appCardBuilder = new MaterialAboutCard.Builder();
40 |
41 | appCardBuilder.addItem(new MaterialAboutTitleItem.Builder()
42 | .text("音乐播放器")
43 | .desc("已停止维护,请删除该应用。")
44 | .icon(R.mipmap.new_launcher)
45 | .build());
46 |
47 |
48 | return new MaterialAboutList(appCardBuilder.build(), authorCardBuilder.build());
49 |
50 | }
51 |
52 | @Override
53 | protected CharSequence getActivityTitle() {
54 | // return getString(R.string.mal_title_about);
55 | return "关于";
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/ColorShades.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.graphics.Color;
4 |
5 | /**
6 | * Source from :
7 | https://gist.github.com/cooltechworks/4f37021b1216f773daf8
8 | * Color shades will provide all the intermediate colors between two colors. It just requires a decimal value between
9 | * 0.0 to 1.0
10 | * and it provides the exact shade combination of the two color with this shade value.
11 | * Textual explanation :
12 | *
13 | * White LtGray Gray DkGray Black
14 | * 0 0.25 0.5 0.75 1
15 | * Given two colors as White and Black,and shade
16 | * as 0 gives White
17 | * as 0.25 gives Light gray
18 | * as 0.5 gives Gray
19 | * as 0.75 gives Dark gray
20 | * as 1 gives Black.
21 | */
22 | public class ColorShades
23 | {
24 |
25 | private int mFromColor;
26 | private int mToColor;
27 | private float mShade;
28 | public ColorShades setFromColor(int fromColor)
29 | {
30 | this.mFromColor = fromColor;
31 | return this;
32 | }
33 |
34 | public ColorShades setToColor(int toColor)
35 | {
36 | this.mToColor = toColor;
37 | return this;
38 | }
39 |
40 | public ColorShades setFromColor(String fromColor)
41 | {
42 |
43 | this.mFromColor = Color.parseColor(fromColor);
44 | return this;
45 | }
46 |
47 | public ColorShades setToColor(String toColor)
48 | {
49 | this.mToColor = Color.parseColor(toColor);
50 | return this;
51 | }
52 |
53 | public ColorShades forLightShade(int color)
54 | {
55 | setFromColor(Color.WHITE);
56 | setToColor(color);
57 | return this;
58 | }
59 |
60 | public ColorShades forDarkShare(int color)
61 | {
62 | setFromColor(color);
63 | setToColor(Color.BLACK);
64 | return this;
65 | }
66 |
67 | public ColorShades setShade(float shade)
68 | {
69 | this.mShade = shade;
70 | return this;
71 | }
72 |
73 | /**
74 | * Generates the shade for the given color.
75 | *
76 | * @return the int value of the shade.
77 | */
78 | public int generate()
79 | {
80 | int fromR = Color.red(mFromColor);
81 | int fromG = Color.green(mFromColor);
82 | int fromB = Color.blue(mFromColor);
83 |
84 | int toR = Color.red(mToColor);
85 | int toG = Color.green(mToColor);
86 | int toB = Color.blue(mToColor);
87 |
88 | int diffR = toR - fromR;
89 | int diffG = toG - fromG;
90 | int diffB = toB - fromB;
91 |
92 | int red = fromR + (int)((diffR * mShade));
93 | int green = fromG + (int)((diffG * mShade));
94 | int blue = fromB + (int)((diffB * mShade));
95 |
96 | return Color.rgb(red, green, blue);
97 | }
98 |
99 | /**
100 | * Assumes the from and to color are inverted before generating the shade.
101 | * @return the int value of the inverted shade.
102 | */
103 | public int generateInverted()
104 | {
105 | int fromR = Color.red(mFromColor);
106 | int fromG = Color.green(mFromColor);
107 | int fromB = Color.blue(mFromColor);
108 |
109 | int toR = Color.red(mToColor);
110 | int toG = Color.green(mToColor);
111 | int toB = Color.blue(mToColor);
112 |
113 | int diffR = toR - fromR;
114 | int diffG = toG - fromG;
115 | int diffB = toB - fromB;
116 |
117 | int red = toR - (int)((diffR * mShade));
118 | int green = toG - (int)((diffG * mShade));
119 | int blue = toB - (int)((diffB * mShade));
120 | return Color.rgb(red, green, blue);
121 | }
122 |
123 | /**
124 | * Gets the String equivalent of the generated shade
125 | * @return String value of the shade
126 | */
127 | public String generateInvertedString()
128 | {
129 | return String.format("#%06X", 0xFFFFFF & generateInverted());
130 | }
131 |
132 | /**
133 | * Gets the inverted String equivalent of the generated shade
134 | * @return String value of the shade
135 | */
136 | public String generateString()
137 | {
138 | return String.format("#%06X", 0xFFFFFF & generate());
139 | }
140 | }
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/DownloadActivity.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.support.v7.app.AppCompatActivity;
4 | import android.os.Bundle;
5 |
6 | public class DownloadActivity extends AppCompatActivity {
7 |
8 | @Override
9 | protected void onCreate(Bundle savedInstanceState) {
10 | super.onCreate(savedInstanceState);
11 | setContentView(R.layout.activity_category);
12 | getSupportFragmentManager().beginTransaction()
13 | .replace(R.id.container, new DownloadFragment())
14 | .commit();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/EventBusUtil/ServiceEvent.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player.EventBusUtil;
2 |
3 | public class ServiceEvent {
4 | public int action;
5 | public int delay = 0;
6 | public ServiceEvent(int action){
7 | this.action = action;
8 | }
9 | public ServiceEvent(int action,int delay){
10 | this.action = action;
11 | this.delay = delay;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/EventBusUtil/UIChangeEvent.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player.EventBusUtil;
2 |
3 | public class UIChangeEvent {
4 | public int event;
5 | public UIChangeEvent(int event){
6 | this.event = event;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/EventBusUtil/dismissEvent.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player.EventBusUtil;
2 |
3 | public class dismissEvent {
4 | public dismissEvent(){
5 |
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/EventBusUtil/mediaChangeEvent.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player.EventBusUtil;
2 |
3 | public class mediaChangeEvent {
4 | public String title;
5 | public String author;
6 | public int duration;
7 | public int color;
8 | public mediaChangeEvent(String title,String author,int duration,int color){
9 | this.title = title;
10 | this.author = author;
11 | this.duration = duration;
12 | this.color = color;
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/EventBusUtil/showListEvent.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player.EventBusUtil;
2 |
3 | public class showListEvent {
4 | //0:Datelist
5 | //1:Timeslist
6 | //2:Datelist+TimesList
7 | //3:musicList
8 | //4:customList
9 | //5:customListDetail
10 | //6:customList+customListDetail
11 | public int arg1 =-1,arg2=-1,arg3 =-1;
12 | public showListEvent(int list1){
13 | arg1 = list1;
14 | }
15 | public showListEvent(int list1,int list2){
16 | arg1 = list1;
17 | arg2 = list2;
18 | }
19 | public showListEvent(int list1,int list2,int list3){
20 | arg1 = list1;
21 | arg2 = list2;
22 | arg3 = list3;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/MathUtil.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2014 Google Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.lixiangsoft.lixiang.music_player;
18 |
19 | public class MathUtil {
20 | public static float constrain(float min, float max, float v) {
21 | return Math.max(min, Math.min(max, v));
22 | }
23 |
24 | public static float interpolate(float x1, float x2, float f) {
25 | return x1 + (x2 - x1) * f;
26 | }
27 |
28 | public static float uninterpolate(float x1, float x2, float v) {
29 | if (x2 - x1 == 0) {
30 | throw new IllegalArgumentException("Can't reverse interpolate with domain size of 0");
31 | }
32 | return (v - x1) / (x2 - x1);
33 | }
34 |
35 | public static int floorEven(int num) {
36 | return num & ~0x01;
37 | }
38 |
39 | public static int roundMult4(int num) {
40 | return (num + 2) & ~0x03;
41 | }
42 |
43 | // divide two integers but round up
44 | // see http://stackoverflow.com/a/7446742/102703
45 | public static int intDivideRoundUp(int num, int divisor) {
46 | int sign = (num > 0 ? 1 : -1) * (divisor > 0 ? 1 : -1);
47 | return sign * (Math.abs(num) + Math.abs(divisor) - 1) / Math.abs(divisor);
48 | }
49 |
50 | private MathUtil() {
51 | }
52 | }
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/MessageEvent.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | public class MessageEvent {
4 | public final String message;
5 |
6 | public MessageEvent(String message) {
7 | this.message = message;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/Music.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | /**
4 | * Created by lixiang on 2017/9/23.
5 | */
6 |
7 | public class Music {
8 | public String author;
9 | public String link;
10 | public String lrc;
11 | public String pic;
12 | //原来
13 | public String name;
14 |
15 | public String songid;
16 | public String title;
17 | public String type;
18 | public String url;
19 | public String getAuthor() {
20 | if (author!=null)
21 | return author;
22 | else return "";
23 | }
24 | public String getLink() {
25 | if (link!=null)
26 | return link;
27 | else return "";
28 | }
29 | public String getMusic() {
30 | if (url !=null) {
31 | if (type.equals("xiami")){
32 | return "http://"+url;
33 | }
34 | return url;
35 | }
36 | else return "";
37 | }
38 | public String getName() {
39 | if (name !=null)return name;
40 | else return title;
41 | }
42 | public String getPic() {
43 | if (pic!=null){
44 | if (type.equals("xiami")){
45 | return "http://"+pic;
46 | }
47 | return pic;
48 | } else return "";
49 | }
50 | // public int getSongid() {
51 | // if (songid !=null)return Integer.valueOf(songid);
52 | // else return 0;
53 | // }
54 | // public String getType() {
55 | // switch (type) {
56 | // case "netease":
57 | // return "网易云音乐";
58 | // case "qq":
59 | // return "QQ音乐";
60 | // case "kugou":
61 | // return "酷狗音乐";
62 | // case "kuwo":
63 | // return "酷我音乐";
64 | // case "xiami":
65 | // return "虾米音乐";
66 | // case "baidu":
67 | // return "百度音乐";
68 | // case "1ting":
69 | // return "1听音乐";
70 | // case "migu":
71 | // return "咪咕音乐";
72 | // case "lizhi":
73 | // return "荔枝音乐";
74 | // case "qingting":
75 | // return "蜻蜓音乐";
76 | // case "ximalaya":
77 | // return "喜马拉雅";
78 | // case "5singyc":
79 | // return "5Sing音乐";
80 | // default:
81 | // }
82 | // return type;
83 | // }
84 |
85 | public String getMusicLargeAlbum() {
86 | //网易、QQ、虾米、百度、咪咕、蜻蜓支持
87 | if (pic!=null) {
88 | if (pic.contains("?param=100x100")) {//?param=100x100网易
89 | return pic.substring(0, pic.length() - 14) + "?param=800x800";
90 | } else if (pic.contains("T002R300x300")) {//QQ音乐pic=http://y.gtimg.cn/music/photo_new/T002R300x300M000003Djf8120GknA.jpg
91 | return pic.replace("T002R300x300", "T002R800x800");
92 | } else if (pic.contains("/100/")) {//酷狗音乐pic=http://singerimg.kugou.com/uploadpic/pass/softhead/100/20160908/20160908121727482.jpg
93 | return pic.replace("/100/", "/200/");
94 | } else if (pic.contains("w_150,h_150")) {//百度音乐2:pic=http://musicdata.baidu.com/data2/pic/ec271e041469a6af9ef8cff93658be98/67308/67308.jpg@s_1,w_150,h_150
95 | return pic.replace("w_150,h_150", "w_800,h_800");
96 | } else if (pic.contains("@s_0,w_240")) {//百度音乐2:pic=http://musicdata.baidu.com/data2/pic/7dce01e6a400a986580b20f848c580a9/271877645/271877645.jpg@s_0,w_240
97 | return pic.replace("@s_0,w_240", "@s_0,w_800");
98 | } else if (pic.contains("RsT_200x200")) {//咪咕音乐pic=http://img01.12530.com/music/picture/20170518/27/16/sqMP3645.jpg_RsT_200x200.jpg
99 | return pic.replace("_RsT_200x200", "_RsT_800x800");
100 | } else if (pic.contains("!200")) {//蜻蜓音乐pic=http://pic.qingting.fm/2015/1225/2015122512113624.jpg!200
101 | return pic.replace("!200", "!800");
102 | }
103 | }
104 | return pic;
105 | }
106 |
107 | public String getLrc() {
108 | if (lrc !=null)
109 | return lrc;
110 | else return "";
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/MusiclistActivity.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 |
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.os.Bundle;
6 |
7 |
8 | public class MusiclistActivity extends AppCompatActivity {
9 |
10 |
11 | @Override
12 | protected void onCreate(Bundle savedInstanceState) {
13 | super.onCreate(savedInstanceState);
14 | setContentView(R.layout.activity_category);
15 | getSupportFragmentManager().beginTransaction()
16 | .replace(R.id.container, new MusiclistFragment())
17 | .commit();
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/MusiclistFragment.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 |
4 | import android.Manifest;
5 | import android.content.BroadcastReceiver;
6 | import android.content.Context;
7 | import android.content.Intent;
8 | import android.content.IntentFilter;
9 | import android.content.SharedPreferences;
10 | import android.content.pm.PackageManager;
11 | import android.os.AsyncTask;
12 | import android.os.Bundle;
13 | import android.preference.PreferenceManager;
14 | import android.support.v4.app.Fragment;
15 | import android.support.v4.content.ContextCompat;
16 | import android.support.v7.widget.LinearLayoutManager;
17 | import android.view.LayoutInflater;
18 | import android.view.View;
19 | import android.view.ViewGroup;
20 |
21 | import com.lixiangsoft.lixiang.music_player.EventBusUtil.showListEvent;
22 | import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
23 |
24 | import org.greenrobot.eventbus.EventBus;
25 | import org.greenrobot.eventbus.Subscribe;
26 | import org.greenrobot.eventbus.ThreadMode;
27 |
28 |
29 | /**
30 | * A simple {@link Fragment} subclass.
31 | */
32 | public class MusiclistFragment extends Fragment {
33 | private FastScrollRecyclerView fastScrollRecyclerView;
34 | // private list_PermissionReceiver list_permissionReceiver;
35 | private FastScrollListAdapter adapter;
36 |
37 |
38 | public MusiclistFragment() {
39 | }
40 |
41 | @Subscribe(threadMode = ThreadMode.MAIN)
42 | public void onMessageEvent(showListEvent list) {
43 | if(list.arg2 == 3){
44 | showMusicList();
45 | }
46 | };
47 |
48 | @Override
49 | public void onStart() {
50 | super.onStart();
51 | int color_accent = MyApplication.getColor_accent();
52 | fastScrollRecyclerView.setThumbColor(color_accent);
53 | fastScrollRecyclerView.setPopupBgColor(color_accent);
54 | }
55 |
56 | @Override
57 | public void onDestroy() {
58 | EventBus.getDefault().unregister(this);
59 | super.onDestroy();
60 | // getActivity().unregisterReceiver(list_permissionReceiver);
61 | }
62 |
63 | @Override
64 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
65 | Bundle savedInstanceState) {
66 | EventBus.getDefault().register(this);
67 |
68 |
69 | View rootView = inflater.inflate(R.layout.fragment_musiclist, container, false);
70 | fastScrollRecyclerView = (FastScrollRecyclerView) rootView.findViewById(R.id.fastScrollRecyclerView);
71 |
72 | if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
73 | showMusicList();
74 | }
75 |
76 | return rootView;
77 |
78 | }
79 |
80 |
81 | private void showMusicList() {
82 | LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
83 | layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
84 | fastScrollRecyclerView.setLayoutManager(layoutManager);
85 | adapter = new FastScrollListAdapter();
86 | fastScrollRecyclerView.setAdapter(adapter);
87 | }
88 |
89 | }
90 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/MyConstant.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | /**
4 | * Created by lixiang on 2018/1/26.
5 | */
6 |
7 | public class MyConstant {
8 | public static final String pausing = "PAUSING";
9 | public static final String playing = "PLAYING";
10 | public static final int initialize = -1;
11 | public static final int previousAction = 11;
12 | public static final int nextAction = 12;
13 | public static final int pauseAction = 14;
14 | public static final int playAction = 15;
15 | public static final int resumeAction = 20;
16 | public static final int mediaChangeAction=16;
17 | public static final int DestoryAction=1;
18 | public static final int deleteAction = 18;
19 | public static final int sc_playAction = 19;
20 | public static final int resetAction = 21;
21 | public static final int random_playAction = 23;
22 | //playMode 0:列表重复 1:随机 2:单曲重复 3:顺序
23 | public static final int list_repeat = 0;
24 | public static final int random = 1;
25 | public static final int one_repeat = 2;
26 | public static final int list = 3;
27 | public static final int reload = 22;
28 | public static final String Rec_one = "REC_ONE";
29 | public static final String Rec_two = "REC_TWO";
30 | public static final String Rec_all = "REC_ALL";
31 | public static final String list_all = "LIST_ALL";
32 | public static final String Playlist_all = "PLAYLIST_ALL";
33 | public static final String Detaillist_only = "DETAILLIST_ONLY";
34 | }
35 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/Playlist.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import java.util.List;
4 |
5 | import io.objectbox.annotation.Entity;
6 | import io.objectbox.annotation.Id;
7 | import io.objectbox.annotation.Index;
8 |
9 | /**
10 | * Created by lixiang on 2018/1/29.
11 | */
12 | @Entity
13 | public class Playlist {
14 | @Id
15 | private long Id;
16 |
17 | private List musicInfos;
18 |
19 | public List getMusicInfos() {
20 | return musicInfos;
21 | }
22 |
23 | public void setMusicInfos(List musicInfos) {
24 | this.musicInfos = musicInfos;
25 | }
26 |
27 | public void add(musicInfo musicInfo){
28 | musicInfos.add(musicInfo);
29 | }
30 |
31 | public void remove(musicInfo musicInfo){
32 | musicInfos.remove(musicInfo);
33 | }
34 |
35 | public long getId() {
36 | return Id;
37 | }
38 |
39 | public void setId(long id) {
40 | Id = id;
41 | }
42 |
43 | public String getName() {
44 | return name;
45 | }
46 |
47 | public void setName(String name) {
48 | this.name = name;
49 | }
50 | @Index
51 | private String name;
52 | public Playlist(String name){
53 | this.name = name;
54 | }
55 |
56 | public Playlist(){
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/RecommendActivity.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.support.v7.app.AppCompatActivity;
4 | import android.os.Bundle;
5 |
6 | public class RecommendActivity extends AppCompatActivity {
7 |
8 | @Override
9 | protected void onCreate(Bundle savedInstanceState) {
10 | super.onCreate(savedInstanceState);
11 | setContentView(R.layout.activity_category);
12 | getSupportFragmentManager().beginTransaction()
13 | .replace(R.id.container, new RecommendFragment())
14 | .commit();
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/RecommendFragment.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 |
4 | import android.Manifest;
5 | import android.app.Activity;
6 | import android.content.BroadcastReceiver;
7 | import android.content.Context;
8 | import android.content.Intent;
9 | import android.content.IntentFilter;
10 | import android.content.pm.PackageManager;
11 | import android.os.Bundle;
12 | import android.support.v4.app.Fragment;
13 | import android.support.v4.content.ContextCompat;
14 | import android.support.v7.widget.GridLayoutManager;
15 | import android.support.v7.widget.LinearLayoutManager;
16 | import android.support.v7.widget.RecyclerView;
17 | import android.util.Log;
18 | import android.view.LayoutInflater;
19 | import android.view.View;
20 | import android.view.ViewGroup;
21 | import android.widget.Toast;
22 |
23 | import com.lixiangsoft.lixiang.music_player.EventBusUtil.showListEvent;
24 |
25 | import org.greenrobot.eventbus.EventBus;
26 | import org.greenrobot.eventbus.Subscribe;
27 | import org.greenrobot.eventbus.ThreadMode;
28 |
29 | /**
30 | * A simple {@link Fragment} subclass.
31 | */
32 | public class RecommendFragment extends Fragment {
33 |
34 | // private PermissionReceiver permissionReceiver;
35 | private View rootView;
36 | private boolean permissionGranted = false;
37 |
38 |
39 | public RecommendFragment() {
40 | // Required empty public constructor
41 | }
42 |
43 | @Subscribe(threadMode = ThreadMode.MAIN)
44 | public void onMessageEvent(showListEvent list) {
45 | Log.e("测试","Recommend收到消息");
46 | if (list.arg1 == 0){
47 | showRecentList();
48 | }else if (list.arg1 == 1){
49 | showFavouriteList();
50 | }else if (list.arg1 == 2){
51 | showRecentList();
52 | showFavouriteList();
53 | }
54 | };
55 |
56 |
57 | @Override
58 | public void onDestroy() {
59 | EventBus.getDefault().unregister(this);
60 | super.onDestroy();
61 | }
62 |
63 | @Override
64 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
65 | Bundle savedInstanceState) {
66 | EventBus.getDefault().register(this);
67 | rootView = inflater.inflate(R.layout.fragment_recommend, container, false);
68 |
69 | //动态注册广播
70 | // permissionReceiver = new PermissionReceiver();
71 | // IntentFilter intentFilter = new IntentFilter();
72 | // intentFilter.addAction("permission_granted");
73 | // getActivity().registerReceiver(permissionReceiver, intentFilter);
74 |
75 | if(ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
76 | permissionGranted = true;
77 | showRecentList();
78 | showFavouriteList();
79 | }
80 | return rootView;
81 | }
82 |
83 | // private class PermissionReceiver extends BroadcastReceiver{
84 | // @Override
85 | // public void onReceive(Context context, Intent intent) {
86 | // if (intent.getIntExtra("Action",0) == 1) {
87 | // showRecentList();
88 | // }else if (intent.getIntExtra("Action",0) == 2){
89 | // showFavouriteList();
90 | // }else {
91 | // showRecentList();
92 | // showFavouriteList();
93 | // }
94 | // }
95 | // }
96 | private void showRecentList(){
97 | RecyclerView recent = (RecyclerView) rootView.findViewById(R.id.recent_recycler_view);
98 | LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
99 | layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
100 | recent.setLayoutManager(layoutManager);
101 | RecentListAdapter adapter = new RecentListAdapter();
102 | recent.setAdapter(adapter);
103 | }
104 | private void showFavouriteList(){
105 | RecyclerView favourite = (RecyclerView) rootView.findViewById(R.id.favourite_recycler_view);
106 | GridLayoutManager layoutManager = new GridLayoutManager(getActivity(),3);
107 | favourite.setLayoutManager(layoutManager);
108 | FavouriteListAdapter adapter = new FavouriteListAdapter();
109 | favourite.setAdapter(adapter);
110 | //与Scrollview滑动冲突
111 | favourite.setNestedScrollingEnabled(false);
112 | favourite.setHasFixedSize(true);
113 | }
114 |
115 | public static void openSAF(Activity context) {
116 |
117 | Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
118 | intent.addCategory(Intent.CATEGORY_OPENABLE);
119 | context.startActivityForResult(intent, 42);
120 |
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/ReloadMusicInfoDialog.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.content.Context;
4 | import android.preference.DialogPreference;
5 | import android.util.AttributeSet;
6 |
7 | /**
8 | * Created by lixiang on 2018/1/29.
9 | */
10 |
11 | public class ReloadMusicInfoDialog extends DialogPreference {
12 | public ReloadMusicInfoDialog(Context context, AttributeSet attrs) {
13 | super(context, attrs);
14 | // TODO Auto-generated constructor stub
15 | }
16 |
17 | @Override
18 | protected void onDialogClosed(boolean positiveResult) {
19 | if (positiveResult)
20 | MyApplication.ReloadMusicInfo(getContext());
21 | super.onDialogClosed(positiveResult);
22 | }
23 |
24 | @Override
25 | public void setDialogTitle(CharSequence dialogTitle) {
26 | dialogTitle = "本地歌曲全盘扫描";
27 | super.setDialogTitle(dialogTitle);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/ScrimUtil.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2014 Google Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.lixiangsoft.lixiang.music_player;
18 |
19 | import android.graphics.Color;
20 | import android.graphics.LinearGradient;
21 | import android.graphics.Shader;
22 | import android.graphics.drawable.Drawable;
23 | import android.graphics.drawable.PaintDrawable;
24 | import android.graphics.drawable.ShapeDrawable;
25 | import android.graphics.drawable.shapes.RectShape;
26 | import android.util.LruCache;
27 | import android.view.Gravity;
28 |
29 | /**
30 | * Utility methods for creating prettier gradient scrims.
31 | */
32 | public class ScrimUtil {
33 |
34 | private static final LruCache cubicGradientScrimCache = new LruCache<>(10);
35 |
36 | private ScrimUtil() {
37 | }
38 |
39 | /**
40 | * Creates an approximated cubic gradient using a multi-stop linear gradient. See
41 | * this post for more
42 | * details.
43 | */
44 | public static Drawable makeCubicGradientScrimDrawable(int baseColor, int numStops, int gravity) {
45 |
46 | // Generate a cache key by hashing together the inputs, based on the method described in the Effective Java book
47 | int cacheKeyHash = baseColor;
48 | cacheKeyHash = 31 * cacheKeyHash + numStops;
49 | cacheKeyHash = 31 * cacheKeyHash + gravity;
50 |
51 | Drawable cachedGradient = cubicGradientScrimCache.get(cacheKeyHash);
52 | if (cachedGradient != null) {
53 | return cachedGradient;
54 | }
55 |
56 | numStops = Math.max(numStops, 2);
57 |
58 | PaintDrawable paintDrawable = new PaintDrawable();
59 | paintDrawable.setShape(new RectShape());
60 |
61 | final int[] stopColors = new int[numStops];
62 |
63 | int red = Color.red(baseColor);
64 | int green = Color.green(baseColor);
65 | int blue = Color.blue(baseColor);
66 | int alpha = Color.alpha(baseColor);
67 |
68 | for (int i = 0; i < numStops; i++) {
69 | float x = i * 1f / (numStops - 1);
70 | float opacity = MathUtil.constrain(0, 1, (float) Math.pow(x, 3));
71 | stopColors[i] = Color.argb((int) (alpha * opacity), red, green, blue);
72 | }
73 |
74 | final float x0, x1, y0, y1;
75 | switch (gravity & Gravity.HORIZONTAL_GRAVITY_MASK) {
76 | case Gravity.LEFT: x0 = 1; x1 = 0; break;
77 | case Gravity.RIGHT: x0 = 0; x1 = 1; break;
78 | default: x0 = 0; x1 = 0; break;
79 | }
80 | switch (gravity & Gravity.VERTICAL_GRAVITY_MASK) {
81 | case Gravity.TOP: y0 = 1; y1 = 0; break;
82 | case Gravity.BOTTOM: y0 = 0; y1 = 1; break;
83 | default: y0 = 0; y1 = 0; break;
84 | }
85 |
86 | paintDrawable.setShaderFactory(new ShapeDrawable.ShaderFactory() {
87 | @Override
88 | public Shader resize(int width, int height) {
89 | return new LinearGradient(
90 | width * x0,
91 | height * y0,
92 | width * x1,
93 | height * y1,
94 | stopColors, null,
95 | Shader.TileMode.CLAMP);
96 | }
97 | });
98 |
99 | cubicGradientScrimCache.put(cacheKeyHash, paintDrawable);
100 | return paintDrawable;
101 | }
102 | }
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/SettingsActivity.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 | import android.os.Bundle;
3 |
4 | import com.afollestad.aesthetic.AestheticActivity;
5 |
6 |
7 | public class SettingsActivity extends AestheticActivity {
8 |
9 | @Override
10 | protected void onCreate(Bundle savedInstanceState) {
11 | super.onCreate(savedInstanceState);
12 | setContentView(R.layout.pref_with_toolbar);
13 |
14 | // // Display the fragment as the main content.
15 | // getFragmentManager().beginTransaction()
16 | // .replace(android.R.id.content, new SettingsFragment())
17 | // .commit();
18 | android.support.v7.widget.Toolbar settings_toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.settings_toolbar);
19 | settings_toolbar.setTitleTextColor(getResources().getColor(R.color.colorCustomAccent));
20 | settings_toolbar.setTitle("设置");
21 | setSupportActionBar(settings_toolbar);//设置返回键可用
22 | getSupportActionBar().setDisplayHomeAsUpEnabled(true);
23 |
24 | // Display the fragment as the main content.
25 | getFragmentManager().beginTransaction()
26 | .replace(R.id.content_frame, new SettingsFragment())
27 | .commit();
28 | }
29 |
30 |
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/SettingsFragment.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.content.SharedPreferences;
4 | import android.os.Bundle;
5 | import android.preference.PreferenceFragment;
6 | import android.preference.PreferenceManager;
7 | import android.support.v4.app.Fragment;
8 | import android.util.Log;
9 | import android.view.LayoutInflater;
10 | import android.view.View;
11 | import android.view.ViewGroup;
12 | import android.widget.ImageView;
13 |
14 | import com.afollestad.aesthetic.Aesthetic;
15 | import com.bumptech.glide.Glide;
16 |
17 |
18 | /**
19 | * A simple {@link Fragment} subclass.
20 | */
21 | public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
22 | @Override
23 | public void onCreate(Bundle savedInstanceState) {
24 | super.onCreate(savedInstanceState);
25 | // Load the preferences from an XML resource
26 | addPreferencesFromResource(R.xml.preference);
27 | getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(SettingsFragment.this);
28 | }
29 |
30 |
31 | @Override
32 | public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
33 | SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
34 | if (key.equals("local_net_mode")) {
35 | MyApplication.setLocal_net_mode(sharedPref.getBoolean("local_net_mode", false));
36 | }
37 | if (key.equals("default_color")) {
38 | Log.e("测试", "设置ColorPrimary前" + MyApplication.getColor_primary());
39 | int color_primary = sharedPref.getInt("default_color", 0);
40 | Aesthetic.get().colorPrimary(color_primary).colorStatusBarAuto().colorNavigationBar(color_primary).apply();
41 | MyApplication.setColor_primary(color_primary);
42 | Log.e("测试", "设置ColorPrimary后" + MyApplication.getColor_primary());
43 | }
44 | if (key.equals("accent_color")) {
45 | int color_accent = sharedPref.getInt("accent_color", 0);
46 | Aesthetic.get().colorAccent(color_accent).colorStatusBarAuto().apply();
47 | MyApplication.setColor_accent(color_accent);
48 | }
49 | if (key.equals("main_theme")) {
50 | Aesthetic.get().isDark(true).activityTheme(R.style.AppDarkTheme).colorCardViewBackgroundRes(R.color.night_cardview).apply();
51 | MyApplication.setMain_theme(sharedPref.getString("main_theme", "day"));
52 | if (sharedPref.getString("main_theme", null).equals("night")) {
53 | Aesthetic.get().isDark(true).activityTheme(R.style.AppDarkTheme).colorCardViewBackgroundRes(R.color.night_cardview).apply();
54 | } else if (sharedPref.getString("main_theme", null).equals("day")) {
55 | Aesthetic.get().isDark(false).activityTheme(R.style.AppTheme).colorCardViewBackgroundRes(R.color.day_cardview).apply();
56 | } else {
57 | Aesthetic.get().isDark(true).activityTheme(R.style.AppAmoledTheme).colorCardViewBackgroundRes(R.color.night_cardview).apply();
58 | }
59 | }
60 | }
61 |
62 |
63 | @Override
64 | public void onDestroy() {
65 | getPreferenceScreen().getSharedPreferences()
66 | .unregisterOnSharedPreferenceChangeListener(this);
67 | super.onDestroy();
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/SimpleFragmentPagerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.support.v4.app.Fragment;
4 | import android.support.v4.app.FragmentManager;
5 | import android.support.v4.app.FragmentPagerAdapter;
6 |
7 |
8 | public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
9 | public SimpleFragmentPagerAdapter(FragmentManager fm) {
10 | super(fm);
11 | }
12 |
13 | @Override
14 | public Fragment getItem(int position) {
15 | if (position == 0) {
16 | return new RecommendFragment();
17 | } else if (position == 1) {
18 | return new MusiclistFragment();
19 | } else if (position == 2){
20 | return new DownloadFragment();
21 | }else {
22 | return new customFragment();
23 | }
24 | }
25 |
26 | @Override
27 | public int getCount() {
28 | return 4;
29 | }
30 |
31 | @Override
32 | public CharSequence getPageTitle(int position) {
33 | if (position == 0) {
34 | return "建议";
35 | } else if (position == 1) {
36 | return "歌曲";
37 | } else if (position == 2){
38 | return "搜索";
39 | }else {
40 | return "列表";
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/customActivity.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.support.v7.app.AppCompatActivity;
4 | import android.os.Bundle;
5 |
6 | public class customActivity extends AppCompatActivity {
7 |
8 | @Override
9 | protected void onCreate(Bundle savedInstanceState) {
10 | super.onCreate(savedInstanceState);
11 | setContentView(R.layout.activity_category);
12 | getSupportFragmentManager().beginTransaction()
13 | .replace(R.id.container, new customFragment())
14 | .commit();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/customFragment.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 |
4 | import android.content.BroadcastReceiver;
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.content.IntentFilter;
8 | import android.os.Bundle;
9 | import android.support.v4.app.Fragment;
10 | import android.support.v7.widget.LinearLayoutManager;
11 | import android.support.v7.widget.RecyclerView;
12 | import android.view.LayoutInflater;
13 | import android.view.View;
14 | import android.view.ViewGroup;
15 | import android.widget.Toast;
16 |
17 | import com.lixiangsoft.lixiang.music_player.EventBusUtil.showListEvent;
18 |
19 | import org.greenrobot.eventbus.EventBus;
20 | import org.greenrobot.eventbus.Subscribe;
21 | import org.greenrobot.eventbus.ThreadMode;
22 |
23 | import static com.lixiangsoft.lixiang.music_player.R.id.delete;
24 |
25 |
26 | /**
27 | * A simple {@link Fragment} subclass.
28 | */
29 | public class customFragment extends Fragment {
30 | private View rootView;
31 | // private listChangeReceiver listChangeReceiver;
32 | private RecyclerView playListDetail;
33 | private RecyclerView playList;
34 |
35 | public customFragment() {
36 | // Required empty public constructor
37 | }
38 |
39 |
40 | @Override
41 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
42 | Bundle savedInstanceState) {
43 | EventBus.getDefault().register(this);
44 | rootView = inflater.inflate(R.layout.fragment_custom, container, false);
45 | playListDetail = (RecyclerView) rootView.findViewById(R.id.playList_detail);
46 | playList = (RecyclerView) rootView.findViewById(R.id.playListRecyclerView);
47 | //动态注册广播
48 | // listChangeReceiver = new listChangeReceiver();
49 | // IntentFilter intentFilter = new IntentFilter();
50 | // intentFilter.addAction("list_changed");
51 | // getActivity().registerReceiver(listChangeReceiver, intentFilter);
52 | if (MyApplication.getBoxStore().boxFor(Playlist.class).getAll().size() > 0) {
53 | MyApplication.setCustomListNow(MyApplication.getBoxStore().boxFor(Playlist.class).getAll().get(0).getName());
54 | showPlayList();
55 | showPlayListDetail();
56 | }
57 | return rootView;
58 | }
59 |
60 | @Subscribe(threadMode = ThreadMode.MAIN)
61 | public void onMessageEvent(showListEvent list) {
62 | // if (list.arg1 == 4 || list.arg2 == 4 || list.arg3 == 4){
63 | // showPlayList();
64 | // }
65 | if (list.arg1 == 5){
66 | showPlayListDetail();
67 | }
68 | if (list.arg1 == 6 || list.arg2 == 6 || list.arg3 == 6){
69 | showPlayList();
70 | showPlayListDetail();
71 | }
72 | };
73 |
74 |
75 |
76 | @Override
77 | public void onDestroy() {
78 | // getActivity().unregisterReceiver(listChangeReceiver);
79 | EventBus.getDefault().unregister(this);
80 | super.onDestroy();
81 | }
82 |
83 | public void showPlayListDetail() {
84 | LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
85 | layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
86 | playListDetail.setLayoutManager(layoutManager);
87 | playlistdetailAdapter adapter = new playlistdetailAdapter();
88 | playListDetail.setAdapter(adapter);
89 | }
90 |
91 | public void showPlayList() {
92 | LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
93 | layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
94 | playList.setLayoutManager(layoutManager);
95 | playListAdapter adapter = new playListAdapter();
96 | playList.setAdapter(adapter);
97 | }
98 |
99 | // private class listChangeReceiver extends BroadcastReceiver {
100 | // @Override
101 | // public void onReceive(Context context, Intent intent) {
102 | // if (intent.getIntExtra("Action", 0) == 0) {
103 | // showPlayList();
104 | // }
105 | // showPlayListDetail();
106 | // }
107 | // }
108 |
109 | }
110 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/lyricObject.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | /**
4 | * Created by lixiang on 2017/9/24.
5 | */
6 |
7 | public class lyricObject{
8 | public long getTime() {
9 | return time;
10 | }
11 |
12 | public void setTime(long time) {
13 | this.time = time;
14 | }
15 |
16 | public String getText() {
17 | return text;
18 | }
19 |
20 | public void setText(String text) {
21 | this.text = text;
22 | }
23 |
24 | public lyricObject(String s){
25 | String[] all=s.split("]");
26 | if (all.length ==1){
27 | text = "";
28 | }else {
29 | text = all[1];
30 | }
31 | all[0] = all[0].replace(":", ".");
32 | all[0] = all[0].replace(".", "@");
33 | String timeStr[] = all[0].substring(1).split("@");
34 | if (timeStr[0].substring(0,1).equals("0")) {
35 | time = (Integer.valueOf(timeStr[0]) * 60 + Integer.valueOf(timeStr[1])) * 1000 + Integer.valueOf(timeStr[2]);
36 | }else {
37 | time = 0;
38 | }
39 | }
40 |
41 | public lyricObject(String t,String s){
42 | if (t.equals("")){
43 | time = 0;
44 | text = "";
45 | }else {
46 | t = t.replace(":", ".");
47 | t=t.replace(".", "@");
48 | String timeStr[] = t.split("@");
49 | if (timeStr[0].substring(0,1).equals("0")) {
50 | time = (Integer.valueOf(timeStr[0]) * 60 + Integer.valueOf(timeStr[1])) * 1000 + Integer.valueOf(timeStr[2]);
51 | }else {
52 | time = 0;
53 | }
54 | text = s;
55 | }
56 | }
57 |
58 | private long time;
59 | private String text;
60 | }
61 |
62 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/playNowCoverPagerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.content.ContentUris;
4 | import android.graphics.Bitmap;
5 | import android.graphics.drawable.BitmapDrawable;
6 | import android.graphics.drawable.Drawable;
7 | import android.media.Image;
8 | import android.net.Uri;
9 | import android.support.v4.view.PagerAdapter;
10 | import android.support.v4.view.ViewPager;
11 | import android.support.v7.app.AppCompatActivity;
12 | import android.support.v7.graphics.Palette;
13 | import android.view.View;
14 | import android.view.ViewGroup;
15 | import android.widget.ImageView;
16 |
17 | import com.bumptech.glide.Glide;
18 | import com.bumptech.glide.load.engine.DiskCacheStrategy;
19 | import com.bumptech.glide.load.resource.drawable.GlideDrawable;
20 | import com.bumptech.glide.request.RequestListener;
21 | import com.bumptech.glide.request.target.Target;
22 |
23 | import java.util.ArrayList;
24 | import java.util.List;
25 |
26 | /**
27 | * Created by lixiang on 2018/2/18.
28 | */
29 |
30 | public class playNowCoverPagerAdapter extends PagerAdapter {
31 | private AppCompatActivity activity;
32 | private List musicListNow = MyApplication.getMusicListNow();
33 | private Bitmap resource;
34 | public playNowCoverPagerAdapter(AppCompatActivity activity) {
35 | this.activity = activity;
36 | }
37 |
38 | @Override
39 | public boolean isViewFromObject(View view, Object object) {
40 | return view == object;
41 | }
42 |
43 | @Override
44 | public int getCount() {
45 | if (musicListNow!=null) {
46 | return musicListNow.size();
47 | }else return 0;
48 | }
49 |
50 | @Override
51 | public Object instantiateItem(ViewGroup container, final int position) {
52 | ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewPager.LayoutParams.MATCH_PARENT,ViewPager.LayoutParams.MATCH_PARENT);
53 | ImageView view = new ImageView(activity);
54 | view.setLayoutParams(params);
55 | view.setScaleType(ImageView.ScaleType.CENTER_CROP);
56 | container.addView(view);
57 | musicInfo nowMusic = musicListNow.get(position);
58 | if (!nowMusic.getMusicLink().equals("")) {//网络
59 | Glide.with(activity).load(nowMusic.getMusicLargeAlbum()).centerCrop().diskCacheStrategy(DiskCacheStrategy.SOURCE).placeholder(R.drawable.default_album).into(view);
60 | } else {//本地
61 | if (nowMusic.getAlbumLink() != null) {//本地下载
62 | Glide.with(activity).load(nowMusic.getAlbumLink()).placeholder(R.drawable.default_album).centerCrop().into(view);
63 | } else {//本地原有
64 | Glide.with(activity).load(ContentUris.withAppendedId(Uri.parse("content://media/external/audio/albumart"), nowMusic.getMusicAlbumId())).centerCrop().placeholder(R.drawable.default_album).into(view);
65 | }
66 | }
67 | view.setOnClickListener(MyApplication.getlyric_onClickListener());
68 | return view;
69 | }
70 |
71 | @Override
72 | public void destroyItem(ViewGroup container, int position, Object object) {
73 | ImageView imageView = (ImageView) object;
74 | if (imageView == null)
75 | return;
76 | Glide.clear(imageView); //核心,解决OOM
77 | container.removeView(imageView);
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/sc_randomPlay.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import android.app.Activity;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 |
7 | public class sc_randomPlay extends Activity {
8 |
9 | @Override
10 | protected void onCreate(Bundle savedInstanceState) {
11 | super.onCreate(savedInstanceState);
12 | //打开服务播放
13 | Intent intent = new Intent(this, PlayService.class);
14 | intent.putExtra("ACTION", MyConstant.sc_playAction);
15 | startService(intent);
16 | finish();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/java/com/lixiangsoft/lixiang/music_player/searchActivity.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 | import android.content.BroadcastReceiver;
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.content.IntentFilter;
6 | import android.os.Bundle;
7 | import android.support.v4.view.MenuItemCompat;
8 | import android.support.v7.widget.DefaultItemAnimator;
9 | import android.support.v7.widget.LinearLayoutManager;
10 | import android.support.v7.widget.RecyclerView;
11 | import android.support.v7.widget.SearchView;
12 | import android.support.v7.widget.Toolbar;
13 | import android.view.Menu;
14 | import android.view.MenuItem;
15 |
16 | import com.afollestad.aesthetic.AestheticActivity;
17 |
18 |
19 | public class searchActivity extends AestheticActivity implements SearchView.OnQueryTextListener{
20 | private SearchView searchView;
21 | private searchAdapter mSearchAdapter;
22 | // private DismissReceiver dismissReceiver;
23 |
24 | @Override
25 | protected void onCreate(Bundle savedInstanceState) {
26 | super.onCreate(savedInstanceState);
27 | setContentView(R.layout.activity_search);
28 |
29 | //动态注册广播
30 | // dismissReceiver = new DismissReceiver();
31 | // IntentFilter intentFilter = new IntentFilter();
32 | // intentFilter.addAction("dismiss_dialog");
33 | // registerReceiver(dismissReceiver, intentFilter);
34 |
35 | Toolbar search_toolbar = (Toolbar) findViewById(R.id.search_toolbar);
36 | search_toolbar.inflateMenu(R.menu.search_menu);
37 | search_toolbar.setTitle("搜索");
38 | setSupportActionBar(search_toolbar);//设置返回键可用
39 | getSupportActionBar().setDisplayHomeAsUpEnabled(true);
40 |
41 | RecyclerView search_recycler_view = (RecyclerView) findViewById(R.id.search_RecyclerView);
42 | LinearLayoutManager layoutManager = new LinearLayoutManager(this);
43 | layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
44 | search_recycler_view.setLayoutManager(layoutManager);
45 | search_recycler_view.setItemAnimator(new DefaultItemAnimator());
46 | mSearchAdapter = new searchAdapter();
47 | search_recycler_view.setAdapter(mSearchAdapter);
48 | }
49 |
50 | @Override
51 | protected void onDestroy() {
52 | // unregisterReceiver(dismissReceiver);
53 | super.onDestroy();
54 | }
55 |
56 |
57 | @Override
58 | public boolean onCreateOptionsMenu(Menu menu) {
59 | getMenuInflater().inflate(R.menu.search_menu, menu);
60 | MenuItem search = menu.findItem(R.id.search_menu);
61 | searchView = (SearchView) MenuItemCompat.getActionView(search);
62 | searchView.onActionViewExpanded();
63 | searchView.setOnQueryTextListener(this);
64 | return super.onCreateOptionsMenu(menu);
65 | }
66 |
67 | @Override
68 | public boolean onQueryTextChange(String newText) {
69 | mSearchAdapter.setFilter(newText.toLowerCase());
70 | return false;
71 | }
72 |
73 | @Override
74 | public boolean onQueryTextSubmit(String query) {
75 | return false;
76 | }
77 |
78 | // private class DismissReceiver extends BroadcastReceiver {
79 | // @Override
80 | // public void onReceive(Context context, Intent intent) {
81 | // mSearchAdapter.dismissDialog();
82 | // }
83 | // }
84 | }
85 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-hdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-hdpi/ic_notification.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-hdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-hdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-hdpi/repeat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-hdpi/repeat.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-hdpi/repeat_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-hdpi/repeat_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-hdpi/repeat_one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-hdpi/repeat_one.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-hdpi/seekbar_thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-hdpi/seekbar_thumb.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-hdpi/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-hdpi/shuffle.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-hdpi/shuffle_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-hdpi/shuffle_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-mdpi/default_album.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-mdpi/default_album.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-mdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-mdpi/ic_notification.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-mdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-mdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-mdpi/repeat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-mdpi/repeat.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-mdpi/repeat_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-mdpi/repeat_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-mdpi/repeat_one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-mdpi/repeat_one.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-mdpi/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-mdpi/shuffle.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-mdpi/shuffle_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-mdpi/shuffle_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xhdpi/default_album.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xhdpi/default_album.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xhdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xhdpi/ic_notification.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xhdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xhdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xhdpi/repeat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xhdpi/repeat.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xhdpi/repeat_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xhdpi/repeat_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xhdpi/repeat_one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xhdpi/repeat_one.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xhdpi/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xhdpi/shuffle.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xhdpi/shuffle_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xhdpi/shuffle_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/default_album.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/default_album.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/ic_notification.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/nav.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/nav.jpg
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/nav_black.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/nav_black.jpg
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/repeat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/repeat.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/repeat_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/repeat_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/repeat_one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/repeat_one.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/shuffle.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxhdpi/shuffle_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxhdpi/shuffle_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxxhdpi/default_album.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxxhdpi/default_album.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxxhdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxxhdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxxhdpi/repeat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxxhdpi/repeat.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxxhdpi/repeat_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxxhdpi/repeat_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxxhdpi/repeat_one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxxhdpi/repeat_one.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxxhdpi/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxxhdpi/shuffle.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable-xxxhdpi/shuffle_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/drawable-xxxhdpi/shuffle_grey.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_album_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_arrow_back_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_bug_report_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_cloud_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_expand_less_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_info_outline_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_insert_drive_file_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_library_music_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_list_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_mail_outline_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_more_vert_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_navigate_before_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_navigate_next_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_pause_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_people_outline_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_perm_device_information_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_person_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_play_arrow_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_playlist_play_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_public_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_queue_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_queue_music_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_settings_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_skip_next_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_skip_previous_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_star_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_update_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/ic_volume_up_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/seekbar_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/drawable/toolbar_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/activity_category.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/activity_custom.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/activity_download.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
12 |
13 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/activity_net_music.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
13 |
18 |
19 |
20 |
29 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/activity_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
13 |
18 |
19 |
28 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/addtolist.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
13 |
22 |
23 |
28 |
29 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/content_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
19 |
20 |
25 |
26 |
30 |
31 |
35 |
36 |
41 |
42 |
47 |
48 |
49 |
50 |
55 |
56 |
57 |
63 |
64 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/createlist.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
16 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/custom_tab.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
14 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/favourite_musiclist.xml:
--------------------------------------------------------------------------------
1 |
13 |
14 |
17 |
18 |
23 |
24 |
38 |
39 |
51 |
52 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/fragment_custom.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
11 |
12 |
16 |
17 |
18 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/fragment_download.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
12 |
17 |
25 |
32 |
33 |
43 |
44 |
45 |
49 |
56 |
62 |
68 |
69 |
70 |
78 |
79 |
80 |
81 |
90 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/fragment_musiclist.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
16 |
17 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/fragment_recommend.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
13 |
14 |
24 |
25 |
32 |
33 |
42 |
43 |
52 |
53 |
60 |
69 |
70 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/match_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
15 |
26 |
36 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/musicinfo_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
14 |
21 |
28 |
29 |
36 |
43 |
50 |
51 |
58 |
65 |
72 |
73 |
80 |
87 |
92 |
93 |
100 |
107 |
112 |
113 |
118 |
125 |
130 |
131 |
132 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/musiclist.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
15 |
20 |
33 |
45 |
46 |
58 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/nav_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
12 |
23 |
32 |
33 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/playlist.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
17 |
18 |
30 |
31 |
43 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/pre_search_for_album.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
14 |
23 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/pref_with_toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
17 |
18 |
23 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/random_play_title.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/recent_musiclist.xml:
--------------------------------------------------------------------------------
1 |
13 |
14 |
17 |
18 |
23 |
24 |
38 |
39 |
51 |
52 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/search.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
14 |
19 |
32 |
44 |
45 |
58 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/search_for_album.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
11 |
22 |
33 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/sleeper_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/layout/upgrade_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
15 |
20 |
25 |
30 |
35 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/menu/inlist_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/menu/list_popup_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/menu/main_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/menu/nav_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/menu/net_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/menu/playlist_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/menu/search_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
12 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-hdpi/lrc_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-hdpi/lrc_play.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-hdpi/sc_cloud3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-hdpi/sc_cloud3.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-hdpi/sc_library2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-hdpi/sc_library2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-hdpi/sc_list2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-hdpi/sc_list2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-hdpi/sc_randomplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-hdpi/sc_randomplay.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-mdpi/lrc_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-mdpi/lrc_play.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-mdpi/sc_cloud3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-mdpi/sc_cloud3.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-mdpi/sc_library2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-mdpi/sc_library2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-mdpi/sc_list2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-mdpi/sc_list2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-mdpi/sc_randomplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-mdpi/sc_randomplay.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xhdpi/lrc_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xhdpi/lrc_play.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xhdpi/sc_cloud3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xhdpi/sc_cloud3.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xhdpi/sc_library2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xhdpi/sc_library2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xhdpi/sc_list2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xhdpi/sc_list2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xhdpi/sc_randomplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xhdpi/sc_randomplay.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxhdpi/lrc_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxhdpi/lrc_play.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxhdpi/sc_cloud3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxhdpi/sc_cloud3.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxhdpi/sc_library2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxhdpi/sc_library2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxhdpi/sc_list2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxhdpi/sc_list2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxhdpi/sc_randomplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxhdpi/sc_randomplay.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/lrc_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/lrc_play.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/new_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/new_launcher.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/sc_cloud3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/sc_cloud3.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/sc_library2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/sc_library2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/sc_list2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/sc_list2.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/sc_randomplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/sc_randomplay.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #009688
4 | #00796B
5 | #E91E63
6 | #FFFFFF
7 | #212121
8 | #424242
9 | #FFFFFF
10 | #FFFFFF
11 | #ffffff
12 | #424242
13 | #000000
14 | #00000000
15 |
16 |
17 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | MPlayer
3 |
4 |
5 | Hello blank fragment
6 | Settings
7 | "主题色"
8 | "强调色"
9 | 聚合搜索
10 | 建议曲目
11 | 本地歌曲
12 | "随机播放所有曲目"
13 | "随机播放所有曲目"
14 |
15 | "暂停"
16 |
17 |
18 | - 建议曲目
19 | - 本地歌曲
20 | - 聚合搜索
21 |
22 |
23 |
24 | - 歌曲名称
25 | - 歌曲编号
26 | - 网页链接
27 |
28 |
29 | - suggestion
30 | - list
31 | - cloud
32 |
33 | suggestion
34 |
35 |
36 | - 不显示小于30s的歌曲
37 | - 不显示小于45s的歌曲
38 | - 不显示小于60s的歌曲
39 |
40 |
41 | - thirty
42 | - forty_five
43 | - sixty
44 |
45 | thirty
46 |
47 |
48 | - 原音音效
49 | - 古典音乐
50 | - 舞曲音乐
51 | - 平淡音乐
52 | - 民谣音乐
53 | - 重金属
54 | - 嘻哈音乐
55 | - 爵士音乐
56 | - 流行音乐
57 | - 摇滚音乐
58 | - 电子音乐
59 | - 小型喇叭
60 | - 自定义
61 |
62 |
63 | - 显示3首
64 | - 显示6首
65 | - 显示12首
66 | - 显示18首
67 |
68 |
69 | - three
70 | - six
71 | - twelve
72 | - eighteen
73 |
74 | eighteen
75 |
76 |
77 | - 白天模式
78 | - 夜间模式
79 | - 纯黑模式
80 |
81 |
82 | - day
83 | - night
84 | - amoled
85 |
86 | day
87 |
88 |
89 |
90 | General
91 |
92 | Enable social recommendations
93 | Recommendations for people to contact
94 | based on your message history
95 |
96 |
97 | Display name
98 | John Smith
99 |
100 | Add friends to messages
101 |
102 | - Always
103 | - When possible
104 | - Never
105 |
106 |
107 | - 1
108 | - 0
109 | - -1
110 |
111 |
112 |
113 | Data & sync
114 |
115 | Sync frequency
116 |
117 | - 15 minutes
118 | - 30 minutes
119 | - 1 hour
120 | - 3 hours
121 | - 6 hours
122 | - Never
123 |
124 |
125 | - 15
126 | - 30
127 | - 60
128 | - 180
129 | - 360
130 | - -1
131 |
132 |
133 |
134 | - Entry 1
135 | - Entry 2
136 | - Entry 3
137 |
138 |
139 |
140 | - 1
141 | - 2
142 | - 3
143 |
144 |
145 |
146 |
147 | System sync settings
148 |
149 |
150 | Notifications
151 |
152 | New message notifications
153 |
154 | Ringtone
155 | Silent
156 |
157 | Vibrate
158 |
159 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
18 |
19 |
27 |
28 |
29 |
35 |
36 |
37 |
41 |
42 |
47 |
48 |
49 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/xml/preference.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
9 |
17 |
25 |
33 |
37 |
42 |
43 |
47 |
55 |
60 |
65 |
66 |
70 |
75 |
80 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/res/xml/shortcuts.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
13 |
14 |
21 |
25 |
28 |
29 |
30 |
31 |
38 |
42 |
45 |
46 |
47 |
54 |
58 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/sc_cloud-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/sc_cloud-web.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/sc_cloud2-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/sc_cloud2-web.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/sc_cloud3-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/sc_cloud3-web.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/sc_library-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/sc_library-web.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/sc_library2-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/sc_library2-web.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/sc_list-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/sc_list-web.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/sc_list2-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/sc_list2-web.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/main/sc_randomPlay-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/app/src/main/sc_randomPlay-web.png
--------------------------------------------------------------------------------
/MusicPlayer/app/src/test/java/com/lixiangsoft/lixiang/music_player/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.lixiangsoft.lixiang.music_player;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/MusicPlayer/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext.objectboxVersion = '1.4.1'
5 | repositories {
6 | maven { url "http://objectbox.net/beta-repo/" }
7 | jcenter()
8 | google()
9 | }
10 | dependencies {
11 | classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
12 | classpath 'com.android.tools.build:gradle:3.0.1'
13 |
14 | // NOTE: Do not place your application dependencies here; they belong
15 | // in the individual module build.gradle files
16 | }
17 | }
18 |
19 | allprojects {
20 | repositories {
21 | google()
22 | jcenter()
23 | maven { url "http://objectbox.net/beta-repo/" }
24 | maven { url "https://jitpack.io" }
25 | maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }
26 | }
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/MusicPlayer/gradle.properties:
--------------------------------------------------------------------------------
1 | ## Project-wide Gradle settings.
2 | #
3 | # For more details on how to configure your build environment visit
4 | # http://www.gradle.org/docs/current/userguide/build_environment.html
5 | #
6 | # Specifies the JVM arguments used for the daemon process.
7 | # The setting is particularly useful for tweaking memory settings.
8 | # Default value: -Xmx1024m -XX:MaxPermSize=256m
9 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
10 | #
11 | # When configured, Gradle will run in incubating parallel mode.
12 | # This option should only be used with decoupled projects. More details, visit
13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
14 | # org.gradle.parallel=true
15 | #Mon Feb 12 16:44:45 CST 2018
16 | systemProp.https.proxyPort=1080
17 | systemProp.http.proxyHost=127.0.0.1
18 | org.gradle.jvmargs=-Xmx1536m
19 | systemProp.https.proxyHost=127.0.0.1
20 | systemProp.http.proxyPort=1080
21 |
--------------------------------------------------------------------------------
/MusicPlayer/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/htqqdd/music_player/2893ea07c936c5360d50a9647ad3a58c425bd365/MusicPlayer/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/MusicPlayer/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jan 26 13:21:13 CST 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
7 |
--------------------------------------------------------------------------------
/MusicPlayer/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # Attempt to set APP_HOME
46 | # Resolve links: $0 may be a link
47 | PRG="$0"
48 | # Need this for relative symlinks.
49 | while [ -h "$PRG" ] ; do
50 | ls=`ls -ld "$PRG"`
51 | link=`expr "$ls" : '.*-> \(.*\)$'`
52 | if expr "$link" : '/.*' > /dev/null; then
53 | PRG="$link"
54 | else
55 | PRG=`dirname "$PRG"`"/$link"
56 | fi
57 | done
58 | SAVED="`pwd`"
59 | cd "`dirname \"$PRG\"`/" >/dev/null
60 | APP_HOME="`pwd -P`"
61 | cd "$SAVED" >/dev/null
62 |
63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
64 |
65 | # Determine the Java command to use to start the JVM.
66 | if [ -n "$JAVA_HOME" ] ; then
67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
68 | # IBM's JDK on AIX uses strange locations for the executables
69 | JAVACMD="$JAVA_HOME/jre/sh/java"
70 | else
71 | JAVACMD="$JAVA_HOME/bin/java"
72 | fi
73 | if [ ! -x "$JAVACMD" ] ; then
74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
75 |
76 | Please set the JAVA_HOME variable in your environment to match the
77 | location of your Java installation."
78 | fi
79 | else
80 | JAVACMD="java"
81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
82 |
83 | Please set the JAVA_HOME variable in your environment to match the
84 | location of your Java installation."
85 | fi
86 |
87 | # Increase the maximum file descriptors if we can.
88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
89 | MAX_FD_LIMIT=`ulimit -H -n`
90 | if [ $? -eq 0 ] ; then
91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
92 | MAX_FD="$MAX_FD_LIMIT"
93 | fi
94 | ulimit -n $MAX_FD
95 | if [ $? -ne 0 ] ; then
96 | warn "Could not set maximum file descriptor limit: $MAX_FD"
97 | fi
98 | else
99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
100 | fi
101 | fi
102 |
103 | # For Darwin, add options to specify how the application appears in the dock
104 | if $darwin; then
105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
106 | fi
107 |
108 | # For Cygwin, switch paths to Windows format before running java
109 | if $cygwin ; then
110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
112 | JAVACMD=`cygpath --unix "$JAVACMD"`
113 |
114 | # We build the pattern for arguments to be converted via cygpath
115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
116 | SEP=""
117 | for dir in $ROOTDIRSRAW ; do
118 | ROOTDIRS="$ROOTDIRS$SEP$dir"
119 | SEP="|"
120 | done
121 | OURCYGPATTERN="(^($ROOTDIRS))"
122 | # Add a user-defined pattern to the cygpath arguments
123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
125 | fi
126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
127 | i=0
128 | for arg in "$@" ; do
129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
131 |
132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
134 | else
135 | eval `echo args$i`="\"$arg\""
136 | fi
137 | i=$((i+1))
138 | done
139 | case $i in
140 | (0) set -- ;;
141 | (1) set -- "$args0" ;;
142 | (2) set -- "$args0" "$args1" ;;
143 | (3) set -- "$args0" "$args1" "$args2" ;;
144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
150 | esac
151 | fi
152 |
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
154 | function splitJvmOpts() {
155 | JVM_OPTS=("$@")
156 | }
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159 |
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161 |
--------------------------------------------------------------------------------
/MusicPlayer/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/MusicPlayer/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## music_player
2 |
3 | 本项目已暂停维护,存档代码仅供学习交流。
4 |
5 | My first android application
6 | 项目的建立离不开以下开源项目的支持:
7 | 音乐搜索器
8 | https://github.com/maicong/music
9 | Glide
10 | https://github.com/bumptech/glide
11 | Okhttp
12 | https://github.com/square/okhttp
13 | Gson
14 | https://github.com/google/gson
15 | FastScrollRecyclerview
16 | https://github.com/timusus/RecyclerView-FastScroll
17 | Aestheic
18 | https://github.com/afollestad/aesthetic
19 | Slidinginguppannel
20 | https://github.com/umano/AndroidSlidingUpPanel
21 | Palette
22 |
23 | ## MIT License
24 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
25 |
26 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
27 |
28 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 |
--------------------------------------------------------------------------------