├── .gitattributes
├── .gitignore
├── .idea
├── .name
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── dictionaries
│ └── vwarship.xml
├── encodings.xml
├── gradle.xml
├── misc.xml
├── modules.xml
├── scopes
│ └── scope_settings.xml
└── vcs.xml
├── KindergartenMusic.iml
├── README.md
├── app
├── .gitignore
├── app.iml
├── build.gradle
├── libs
│ └── umeng-analytics-v5.2.4.jar
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── zaoqibu
│ │ └── zaoqibukindergartenmusic
│ │ └── ApplicationTest.java
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── LowerKindergarten45_1
│ │ └── icon
│ │ │ ├── 01.png
│ │ │ ├── 02.png
│ │ │ ├── 03.png
│ │ │ ├── 04.png
│ │ │ ├── 05.png
│ │ │ ├── 06.png
│ │ │ └── 08.png
│ ├── LowerKindergarten45_2
│ │ └── icon
│ │ │ ├── 01.png
│ │ │ ├── 02.png
│ │ │ ├── 03.png
│ │ │ ├── 04.png
│ │ │ ├── 05.png
│ │ │ └── 06.png
│ ├── Nursery34_1
│ │ └── icon
│ │ │ ├── 01.png
│ │ │ ├── 02.png
│ │ │ ├── 03.png
│ │ │ ├── 04.png
│ │ │ ├── 05.png
│ │ │ ├── 06.png
│ │ │ ├── 10.png
│ │ │ ├── 11.png
│ │ │ ├── 12.png
│ │ │ ├── 14.png
│ │ │ ├── 15.png
│ │ │ ├── 28.png
│ │ │ ├── 30.png
│ │ │ ├── 36.png
│ │ │ ├── 38.png
│ │ │ ├── 39.png
│ │ │ ├── 44.png
│ │ │ └── 45.png
│ ├── Nursery34_2
│ │ └── icon
│ │ │ ├── 01.png
│ │ │ ├── 02.png
│ │ │ ├── 03.png
│ │ │ ├── 04.png
│ │ │ ├── 05.png
│ │ │ ├── 06.png
│ │ │ └── 22.png
│ ├── UpperKindergarten56_1
│ │ └── icon
│ │ │ ├── 01.png
│ │ │ ├── 02.png
│ │ │ ├── 03.png
│ │ │ ├── 04.png
│ │ │ ├── 05.png
│ │ │ ├── 06.png
│ │ │ ├── 07.png
│ │ │ ├── 08.png
│ │ │ ├── 09.png
│ │ │ ├── 10.png
│ │ │ ├── 11.png
│ │ │ ├── 12.png
│ │ │ ├── 13.png
│ │ │ ├── 14.png
│ │ │ ├── 15.png
│ │ │ ├── 16.png
│ │ │ ├── 17.png
│ │ │ ├── 18.png
│ │ │ ├── 19.png
│ │ │ ├── 20.png
│ │ │ ├── 21.png
│ │ │ ├── 22.png
│ │ │ ├── 23.png
│ │ │ ├── 24.png
│ │ │ ├── 25.png
│ │ │ ├── 26.png
│ │ │ ├── 27.png
│ │ │ ├── 28.png
│ │ │ └── 29.png
│ └── UpperKindergarten56_2
│ │ └── icon
│ │ ├── 01.png
│ │ ├── 02.png
│ │ ├── 03.png
│ │ ├── 04.png
│ │ ├── 05.png
│ │ └── 06.png
│ ├── ic_launcher-web.png
│ ├── java
│ └── com
│ │ └── zaoqibu
│ │ └── zaoqibukindergartenmusic
│ │ ├── AboutActivity.java
│ │ ├── MainActivity.java
│ │ ├── Player.java
│ │ ├── PlaylistAdapter.java
│ │ ├── SettingsActivity.java
│ │ ├── TermActivity.java
│ │ ├── TermAdapter.java
│ │ ├── domain
│ │ ├── Playlist.java
│ │ ├── Sound.java
│ │ ├── Term.java
│ │ └── Terms.java
│ │ ├── util
│ │ ├── GridViewUtil.java
│ │ ├── TermFactory.java
│ │ └── VibratorUtil.java
│ │ └── xmlparser
│ │ └── TermsXmlParser.java
│ └── res
│ ├── drawable-hdpi
│ ├── ic_action_about.png
│ ├── ic_action_bedtime_play.png
│ ├── ic_action_bedtime_playing.png
│ ├── ic_action_next.png
│ ├── ic_action_overflow.png
│ ├── ic_action_pause.png
│ ├── ic_action_play.png
│ ├── ic_action_previous.png
│ ├── ic_action_repeat.png
│ ├── ic_action_repeat_one.png
│ ├── ic_action_sequence.png
│ ├── ic_chevron_left.png
│ ├── ic_launcher.png
│ └── ic_settings_applications.png
│ ├── drawable-mdpi
│ ├── ic_action_about.png
│ ├── ic_action_bedtime_play.png
│ ├── ic_action_bedtime_playing.png
│ ├── ic_action_next.png
│ ├── ic_action_overflow.png
│ ├── ic_action_pause.png
│ ├── ic_action_play.png
│ ├── ic_action_previous.png
│ ├── ic_action_repeat.png
│ ├── ic_action_repeat_one.png
│ ├── ic_action_sequence.png
│ ├── ic_chevron_left.png
│ ├── ic_launcher.png
│ └── ic_settings_applications.png
│ ├── drawable-xhdpi
│ ├── ic_action_about.png
│ ├── ic_action_bedtime_play.png
│ ├── ic_action_bedtime_playing.png
│ ├── ic_action_next.png
│ ├── ic_action_overflow.png
│ ├── ic_action_pause.png
│ ├── ic_action_play.png
│ ├── ic_action_previous.png
│ ├── ic_action_repeat.png
│ ├── ic_action_repeat_one.png
│ ├── ic_action_sequence.png
│ ├── ic_chevron_left.png
│ ├── ic_launcher.png
│ └── ic_settings_applications.png
│ ├── drawable-xxhdpi
│ ├── ic_action_about.png
│ ├── ic_action_bedtime_play.png
│ ├── ic_action_bedtime_playing.png
│ ├── ic_action_next.png
│ ├── ic_action_overflow.png
│ ├── ic_action_pause.png
│ ├── ic_action_play.png
│ ├── ic_action_previous.png
│ ├── ic_action_repeat.png
│ ├── ic_action_repeat_one.png
│ ├── ic_action_sequence.png
│ ├── ic_chevron_left.png
│ ├── ic_launcher.png
│ └── ic_settings_applications.png
│ ├── drawable
│ ├── lowerkindergarten45_1.png
│ ├── lowerkindergarten45_2.png
│ ├── nursery34_1.png
│ ├── nursery34_2.png
│ ├── sound_control_button_selector.xml
│ ├── sound_default_icon.png
│ ├── term_item_lowerkindergarten45_1_selector.xml
│ ├── term_item_lowerkindergarten45_2_selector.xml
│ ├── term_item_nursery34_1_selector.xml
│ ├── term_item_nursery34_2_selector.xml
│ ├── term_item_upperkindergarten56_1_selector.xml
│ ├── term_item_upperkindergarten56_2_selector.xml
│ ├── upperkindergarten56_1.png
│ └── upperkindergarten56_2.png
│ ├── layout
│ ├── activity_about.xml
│ ├── activity_main.xml
│ ├── activity_playlist_item.xml
│ ├── activity_term.xml
│ └── term_item.xml
│ ├── menu
│ ├── main.xml
│ └── term.xml
│ ├── values-v21
│ └── styles.xml
│ ├── values-w820dp
│ └── dimens.xml
│ ├── values
│ ├── about.xml
│ ├── colors.xml
│ ├── dimens.xml
│ ├── strings.xml
│ ├── strings_activity_settings.xml
│ ├── strings_music_names.xml
│ └── styles.xml
│ └── xml
│ ├── pref_general.xml
│ └── pref_headers.xml
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── ic_launcher-web.png
├── settings.gradle
└── snapshots
├── about.png
├── main.png
├── settings.png
├── term1.png
└── term2.png
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 | *.sln merge=union
7 | *.csproj merge=union
8 | *.vbproj merge=union
9 | *.fsproj merge=union
10 | *.dbproj merge=union
11 |
12 | # Standard to msysgit
13 | *.doc diff=astextplain
14 | *.DOC diff=astextplain
15 | *.docx diff=astextplain
16 | *.DOCX diff=astextplain
17 | *.dot diff=astextplain
18 | *.DOT diff=astextplain
19 | *.pdf diff=astextplain
20 | *.PDF diff=astextplain
21 | *.rtf diff=astextplain
22 | *.RTF diff=astextplain
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | /local.properties
3 | /.idea/workspace.xml
4 | /.idea/libraries
5 | .DS_Store
6 | /build
7 | /datas
8 | assets/
9 | *.apk
10 | manifest-merger-release-report.txt
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | Zaoqibu Kindergarten Music
--------------------------------------------------------------------------------
/.idea/compiler.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 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/dictionaries/vwarship.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/scopes/scope_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/KindergartenMusic.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #
幼儿园音乐
2 |
3 | ## 介绍
4 | 幼儿园音乐--幼儿园音乐的目标是给幼儿园的小朋友提供适合自己操作的音乐播放器。幼儿园的小朋友根据自己上的大、中、小班来选择,默认是所有的歌循环播放,也可以选择单首歌循环播放,还可以睡前播放。幼儿园音乐内容来源于《山东省幼儿园课程指导》的音乐CD。
5 |
6 | ## 功能
7 | * 通过图片选择歌曲。
8 | * 选择了所属班级会自动播放上一次退出时播放的歌。
9 | * 对于喜欢的歌曲,可以选择单首歌循环播放。
10 | * 当前播放的音乐自动显示在可视窗口中。
11 | * 设置睡前播放的时间,时间到了自动暂停播放。
12 | * 设置启动后自动接着上次的播放。
13 |
14 | ## 截图
15 | 
16 | 
17 | 
18 | 
19 | 
20 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/app.iml:
--------------------------------------------------------------------------------
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 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 21
5 | buildToolsVersion "21.1.1"
6 | defaultConfig {
7 | applicationId "com.zaoqibu.zaoqibukindergartenmusic"
8 | minSdkVersion 14
9 | targetSdkVersion 21
10 | versionCode 13
11 | versionName "1.5.5"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | debuggable false
18 | jniDebuggable false
19 | renderscriptDebuggable false
20 | zipAlignEnabled true
21 | }
22 | }
23 | productFlavors {
24 | }
25 | }
26 |
27 | dependencies {
28 | compile fileTree(dir: 'libs', include: ['*.jar'])
29 | compile 'com.android.support:support-v4:21.0.3'
30 | }
31 |
--------------------------------------------------------------------------------
/app/libs/umeng-analytics-v5.2.4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/libs/umeng-analytics-v5.2.4.jar
--------------------------------------------------------------------------------
/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 D:\DevelopmentTools\android-studio\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 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/zaoqibu/zaoqibukindergartenmusic/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
30 |
31 |
35 |
36 |
40 |
41 |
44 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_1/icon/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_1/icon/01.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_1/icon/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_1/icon/02.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_1/icon/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_1/icon/03.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_1/icon/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_1/icon/04.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_1/icon/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_1/icon/05.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_1/icon/06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_1/icon/06.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_1/icon/08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_1/icon/08.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_2/icon/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_2/icon/01.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_2/icon/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_2/icon/02.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_2/icon/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_2/icon/03.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_2/icon/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_2/icon/04.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_2/icon/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_2/icon/05.png
--------------------------------------------------------------------------------
/app/src/main/assets/LowerKindergarten45_2/icon/06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/LowerKindergarten45_2/icon/06.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/01.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/02.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/03.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/04.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/05.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/06.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/10.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/11.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/12.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/14.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/15.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/28.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/30.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/36.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/38.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/39.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/44.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_1/icon/45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_1/icon/45.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_2/icon/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_2/icon/01.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_2/icon/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_2/icon/02.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_2/icon/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_2/icon/03.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_2/icon/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_2/icon/04.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_2/icon/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_2/icon/05.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_2/icon/06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_2/icon/06.png
--------------------------------------------------------------------------------
/app/src/main/assets/Nursery34_2/icon/22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/Nursery34_2/icon/22.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/01.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/02.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/03.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/04.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/05.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/06.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/07.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/08.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/09.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/10.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/11.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/12.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/13.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/14.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/15.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/16.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/17.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/18.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/19.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/20.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/21.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/22.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/23.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/24.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/25.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/26.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/27.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/28.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_1/icon/29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_1/icon/29.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_2/icon/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_2/icon/01.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_2/icon/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_2/icon/02.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_2/icon/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_2/icon/03.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_2/icon/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_2/icon/04.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_2/icon/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_2/icon/05.png
--------------------------------------------------------------------------------
/app/src/main/assets/UpperKindergarten56_2/icon/06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/assets/UpperKindergarten56_2/icon/06.png
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/AboutActivity.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic;
2 |
3 | import android.app.Activity;
4 | import android.os.Bundle;
5 | import android.view.MenuItem;
6 |
7 | import com.umeng.analytics.MobclickAgent;
8 |
9 | /**
10 | * Created by vwarship on 2014/12/17.
11 | */
12 | public class AboutActivity extends Activity {
13 | @Override
14 | protected void onCreate(Bundle savedInstanceState) {
15 | super.onCreate(savedInstanceState);
16 | setContentView(R.layout.activity_about);
17 |
18 | getActionBar().setTitle(R.string.action_about);
19 | getActionBar().setDisplayHomeAsUpEnabled(true);
20 |
21 | MobclickAgent.onEvent(this, "about");
22 | }
23 |
24 | public void onResume() {
25 | super.onResume();
26 | MobclickAgent.onResume(this);
27 | }
28 | public void onPause() {
29 | super.onPause();
30 | MobclickAgent.onPause(this);
31 | }
32 |
33 | @Override
34 | public boolean onOptionsItemSelected(MenuItem item) {
35 | int id = item.getItemId();
36 |
37 | if (id == android.R.id.home) {
38 | onBackPressed();
39 | return true;
40 | }
41 |
42 | return super.onOptionsItemSelected(item);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.SharedPreferences;
7 | import android.graphics.Color;
8 | import android.graphics.drawable.ColorDrawable;
9 | import android.os.Bundle;
10 | import android.os.Vibrator;
11 | import android.preference.PreferenceManager;
12 | import android.util.Log;
13 | import android.view.Menu;
14 | import android.view.MenuItem;
15 | import android.view.View;
16 | import android.widget.AdapterView;
17 | import android.widget.GridView;
18 |
19 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Terms;
20 | import com.zaoqibu.zaoqibukindergartenmusic.util.GridViewUtil;
21 | import com.zaoqibu.zaoqibukindergartenmusic.util.TermFactory;
22 |
23 | import com.umeng.analytics.MobclickAgent;
24 | import com.zaoqibu.zaoqibukindergartenmusic.util.VibratorUtil;
25 |
26 | import java.util.HashMap;
27 | import java.util.Map;
28 |
29 | public class MainActivity extends Activity {
30 | public static final String SHARED_PREFERENCES_NAME = "com.zaoqibu.zaoqibukindergartenmusic_preferences";
31 | private static final String TAG = "MainActivity";
32 |
33 | private Terms terms = new Terms();
34 |
35 | public MainActivity() {
36 | }
37 |
38 | @Override
39 | protected void onCreate(Bundle savedInstanceState) {
40 | super.onCreate(savedInstanceState);
41 |
42 | setContentView(R.layout.activity_main);
43 |
44 | TermFactory termFactory = new TermFactory(this);
45 | terms.addTerm(termFactory.createTermWithNursery1());
46 | terms.addTerm(termFactory.createTermWithNursery2());
47 | terms.addTerm(termFactory.createTermWithLowerKindergarten1());
48 | terms.addTerm(termFactory.createTermWithLowerKindergarten2());
49 | terms.addTerm(termFactory.createTermWithUpperKindergarten1());
50 | terms.addTerm(termFactory.createTermWithUpperKindergarten2());
51 |
52 | GridView gvTerms = (GridView)findViewById(R.id.gv_terms);
53 | gvTerms.setAdapter(new TermAdapter(this, terms,
54 | GridViewUtil.calcItemWidth(this)));
55 | gvTerms.setOnItemClickListener(new AdapterView.OnItemClickListener() {
56 | @Override
57 | public void onItemClick(AdapterView> parent, View view, int position, long id) {
58 | setCurrentPositionWithTerm(position);
59 | onTermItemClick(position);
60 | }
61 | });
62 |
63 | if (isAutoPlayLast()) {
64 | MobclickAgent.onEvent(this, "auto_play_last");
65 | onTermItemClick(getCurrentPositionWithTerm());
66 | }
67 |
68 | MobclickAgent.setDebugMode(false);
69 | MobclickAgent.updateOnlineConfig(this);
70 | }
71 |
72 | private static final String key_auto_play_last_position = "auto_play_last_position";
73 | private void setCurrentPositionWithTerm(int currentPosition) {
74 | SharedPreferences prefs = getSharedPreferences(SHARED_PREFERENCES_NAME, MODE_PRIVATE);
75 | SharedPreferences.Editor prefsEditor = prefs.edit();
76 |
77 | prefsEditor.putInt(key_auto_play_last_position, currentPosition);
78 | prefsEditor.commit();
79 | }
80 |
81 | private int getCurrentPositionWithTerm() {
82 | SharedPreferences prefs = getSharedPreferences(SHARED_PREFERENCES_NAME, MODE_PRIVATE);
83 | return prefs.getInt(key_auto_play_last_position, 0);
84 | }
85 |
86 | private void onTermItemClick(int position) {
87 | Intent intent = new Intent(this, TermActivity.class);
88 | intent.putExtra(TermActivity.ARG_TERMS, terms);
89 | intent.putExtra(TermActivity.ARG_POSITION, position);
90 | startActivity(intent);
91 |
92 | Map map = new HashMap();
93 | map.put("term", terms.getTerm(position).getName());
94 | MobclickAgent.onEvent(this, "term", map);
95 | }
96 |
97 | private boolean isAutoPlayLast() {
98 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
99 | return prefs.getBoolean("auto_play_last", false);
100 | }
101 |
102 | public void onResume() {
103 | super.onResume();
104 | MobclickAgent.onResume(this);
105 | }
106 | public void onPause() {
107 | super.onPause();
108 | MobclickAgent.onPause(this);
109 | }
110 |
111 | @Override
112 | protected void onDestroy() {
113 | super.onDestroy();
114 | }
115 |
116 | @Override
117 | public boolean onCreateOptionsMenu(Menu menu) {
118 | // Inflate the menu; this adds items to the action bar if it is present.
119 | getMenuInflater().inflate(R.menu.main, menu);
120 | return true;
121 | }
122 |
123 | @Override
124 | public boolean onOptionsItemSelected(MenuItem item) {
125 | // Handle action bar item clicks here. The action bar will
126 | // automatically handle clicks on the Home/Up button, so long
127 | // as you specify a parent activity in AndroidManifest.xml.
128 | int id = item.getItemId();
129 | if (id == R.id.action_setting) {
130 | Intent intent = new Intent(this, SettingsActivity.class);
131 | startActivity(intent);
132 | return true;
133 | }
134 |
135 | return super.onOptionsItemSelected(item);
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/Player.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic;
2 |
3 | import android.content.Context;
4 | import android.content.res.AssetFileDescriptor;
5 | import android.media.MediaPlayer;
6 | import android.util.Log;
7 |
8 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Playlist;
9 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Sound;
10 |
11 | import java.io.IOException;
12 |
13 | /**
14 | * Created by vwarship on 2014/10/23.
15 | */
16 | public class Player {
17 | private final static String TAG = "MediaPlayer";
18 |
19 | private MediaPlayer mediaPlayer;
20 |
21 | private Context context;
22 | private Playlist playlist;
23 |
24 | private int currentPosition = 0;
25 |
26 | public Player() {
27 | initMediaPlayer();
28 | }
29 |
30 | private void initMediaPlayer() {
31 | mediaPlayer = new MediaPlayer();
32 | }
33 |
34 | public void setOnCompletionListenerWithMediaPlayer(MediaPlayer.OnCompletionListener listener) {
35 | mediaPlayer.setOnCompletionListener(listener);
36 | }
37 |
38 | public void setContext(Context context) {
39 | this.context = context;
40 | }
41 |
42 | public void setPlaylist(Playlist playlist) {
43 | this.playlist = playlist;
44 | }
45 |
46 | public void play(int position) {
47 | if (position<0 || position>=playlist.count())
48 | return;
49 |
50 | currentPosition = position;
51 | Sound sound = playlist.getSound(currentPosition);
52 |
53 | if (sound != null)
54 | play(sound);
55 | }
56 |
57 | private void play(Sound sound) {
58 | mediaPlayer.reset();
59 |
60 | if (sound == null) {
61 | return;
62 | }
63 |
64 | try {
65 | //AssetFileDescriptor afd = context.getResources().openRawResourceFd(sound.getFilenameResId());
66 | AssetFileDescriptor afd = context.getAssets().openFd(sound.getSoundPath());
67 | mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
68 | afd.close();
69 |
70 | mediaPlayer.prepare();
71 | mediaPlayer.start();
72 | }
73 | catch (IOException ex) {
74 | Log.e(TAG, "play failed:", ex);
75 | }
76 | }
77 |
78 | public void play() {
79 | mediaPlayer.start();
80 | }
81 |
82 | public void pause() {
83 | mediaPlayer.pause();
84 | }
85 |
86 | public void close() {
87 | mediaPlayer.stop();
88 | mediaPlayer.release();
89 |
90 | mediaPlayer = null;
91 | }
92 |
93 | public boolean isPlaying() {
94 | return mediaPlayer.isPlaying();
95 | }
96 |
97 | public int previousPlayIndex() {
98 | int previousIndex = currentPosition - 1;
99 | if (previousIndex < 0)
100 | previousIndex = playlist.count() - 1;
101 |
102 | return previousIndex;
103 | }
104 |
105 | public int nextPlayIndex() {
106 | int nextIndex = currentPosition + 1;
107 | if (nextIndex >= playlist.count())
108 | nextIndex = 0;
109 |
110 | return nextIndex;
111 | }
112 |
113 | public Playlist getPlaylist() {
114 | return playlist;
115 | }
116 |
117 | public int getCurrentPosition() {
118 | return currentPosition;
119 | }
120 |
121 | }
122 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/PlaylistAdapter.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic;
2 |
3 | import android.content.Context;
4 | import android.graphics.drawable.Drawable;
5 | import android.util.Log;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.widget.BaseAdapter;
10 | import android.widget.ImageView;
11 | import android.widget.TextView;
12 |
13 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Sound;
14 |
15 | import java.io.IOException;
16 | import java.io.InputStream;
17 |
18 | /**
19 | * Created by vwarship on 2014/10/23.
20 | */
21 | public class PlaylistAdapter extends BaseAdapter {
22 | private Context context;
23 | private Player player;
24 |
25 | public PlaylistAdapter(Context context, Player player) {
26 | this.context = context;
27 | this.player = player;
28 | }
29 |
30 | @Override
31 | public int getCount() {
32 | return player.getPlaylist().count();
33 | }
34 |
35 | @Override
36 | public Object getItem(int position) {
37 | return null;
38 | }
39 |
40 | @Override
41 | public long getItemId(int position) {
42 | return 0;
43 | }
44 |
45 | @Override
46 | public View getView(int position, View convertView, ViewGroup parent) {
47 | LayoutInflater layoutInflater = LayoutInflater.from(context);
48 |
49 | View view = null;
50 | if (convertView == null) {
51 | view = layoutInflater.inflate(R.layout.activity_playlist_item, parent, false);
52 | }
53 | else {
54 | view = convertView;
55 | }
56 |
57 | Sound sound = player.getPlaylist().getSound(position);
58 |
59 | ImageView icon = (ImageView)view.findViewById(R.id.playlistItemIcon);
60 | TextView tvIconText = (TextView)view.findViewById(R.id.iconText);
61 | tvIconText.setText("");
62 |
63 | try {
64 | InputStream inputStream = context.getAssets().open(sound.getIconPath());
65 | icon.setImageDrawable(Drawable.createFromStream(inputStream, null));
66 | } catch (IOException e) {
67 | e.printStackTrace();
68 | icon.setImageResource(R.drawable.sound_default_icon);
69 |
70 | tvIconText.setText(sound.getName().substring(0,1));
71 | }
72 |
73 | TextView name = (TextView)view.findViewById(R.id.playlistItemName);
74 | name.setText(sound.getName());
75 |
76 | if (position == player.getCurrentPosition()) {
77 | view.setBackgroundColor(context.getResources().getColor(R.color.current_playing_on));
78 | }
79 | else {
80 | view.setBackgroundColor(context.getResources().getColor(R.color.current_playing_off));
81 | }
82 |
83 | return view;
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/SettingsActivity.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic;
2 |
3 | import android.annotation.TargetApi;
4 | import android.content.Context;
5 | import android.content.res.Configuration;
6 | import android.media.Ringtone;
7 | import android.media.RingtoneManager;
8 | import android.net.Uri;
9 | import android.os.Build;
10 | import android.os.Bundle;
11 | import android.preference.ListPreference;
12 | import android.preference.Preference;
13 | import android.preference.PreferenceActivity;
14 | import android.preference.PreferenceCategory;
15 | import android.preference.PreferenceFragment;
16 | import android.preference.PreferenceManager;
17 | import android.preference.RingtonePreference;
18 | import android.text.TextUtils;
19 | import android.util.Log;
20 | import android.view.MenuItem;
21 |
22 |
23 | import com.umeng.analytics.MobclickAgent;
24 |
25 | import java.util.HashMap;
26 | import java.util.List;
27 | import java.util.Map;
28 |
29 | /**
30 | * A {@link PreferenceActivity} that presents a set of application settings. On
31 | * handset devices, settings are presented as a single list. On tablets,
32 | * settings are split by category, with category headers shown to the left of
33 | * the list of settings.
34 | *
35 | * See
36 | * Android Design: Settings for design guidelines and the Settings
38 | * API Guide for more information on developing a Settings UI.
39 | */
40 | public class SettingsActivity extends PreferenceActivity {
41 | /**
42 | * Determines whether to always show the simplified settings UI, where
43 | * settings are presented in a single list. When false, settings are shown
44 | * as a master/detail two-pane view on tablets. When true, a single pane is
45 | * shown on tablets.
46 | */
47 | private static final boolean ALWAYS_SIMPLE_PREFS = false;
48 | private static boolean isUserSettings = false;
49 |
50 | @Override
51 | protected void onCreate(Bundle savedInstanceState) {
52 | super.onCreate(savedInstanceState);
53 | getActionBar().setDisplayHomeAsUpEnabled(true);
54 |
55 | isUserSettings = false;
56 |
57 | MobclickAgent.onEvent(this, "settings");
58 | }
59 |
60 | @Override
61 | public boolean onOptionsItemSelected(MenuItem item) {
62 | int id = item.getItemId();
63 |
64 | if (id == android.R.id.home) {
65 | onBackPressed();
66 | return true;
67 | }
68 |
69 | return super.onOptionsItemSelected(item);
70 | }
71 |
72 | @Override
73 | protected void onPostCreate(Bundle savedInstanceState) {
74 | super.onPostCreate(savedInstanceState);
75 |
76 | setupSimplePreferencesScreen();
77 | }
78 |
79 | /**
80 | * Shows the simplified settings UI if the device configuration if the
81 | * device configuration dictates that a simplified, single-pane UI should be
82 | * shown.
83 | */
84 | private void setupSimplePreferencesScreen() {
85 | if (!isSimplePreferences(this)) {
86 | return;
87 | }
88 |
89 | // In the simplified UI, fragments are not used at all and we instead
90 | // use the older PreferenceActivity APIs.
91 |
92 | // Add 'general' preferences.
93 | addPreferencesFromResource(R.xml.pref_general);
94 |
95 | // Bind the summaries of EditText/List/Dialog/Ringtone preferences to
96 | // their values. When their values change, their summaries are updated
97 | // to reflect the new value, per the Android Design guidelines.
98 | bindPreferenceSummaryToValue(findPreference("bedtime_play_time"));
99 | isUserSettings = true;
100 | }
101 |
102 | /**
103 | * {@inheritDoc}
104 | */
105 | @Override
106 | public boolean onIsMultiPane() {
107 | return isXLargeTablet(this) && !isSimplePreferences(this);
108 | }
109 |
110 | /**
111 | * Helper method to determine if the device has an extra-large screen. For
112 | * example, 10" tablets are extra-large.
113 | */
114 | private static boolean isXLargeTablet(Context context) {
115 | return (context.getResources().getConfiguration().screenLayout
116 | & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
117 | }
118 |
119 | /**
120 | * Determines whether the simplified settings UI should be shown. This is
121 | * true if this is forced via {@link #ALWAYS_SIMPLE_PREFS}, or the device
122 | * doesn't have newer APIs like {@link PreferenceFragment}, or the device
123 | * doesn't have an extra-large screen. In these cases, a single-pane
124 | * "simplified" settings UI should be shown.
125 | */
126 | private static boolean isSimplePreferences(Context context) {
127 | return ALWAYS_SIMPLE_PREFS
128 | || Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB
129 | || !isXLargeTablet(context);
130 | }
131 |
132 | /**
133 | * {@inheritDoc}
134 | */
135 | @Override
136 | @TargetApi(Build.VERSION_CODES.HONEYCOMB)
137 | public void onBuildHeaders(List target) {
138 | if (!isSimplePreferences(this)) {
139 | loadHeadersFromResource(R.xml.pref_headers, target);
140 | }
141 | }
142 |
143 | /**
144 | * A preference value change listener that updates the preference's summary
145 | * to reflect its new value.
146 | */
147 | private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
148 | @Override
149 | public boolean onPreferenceChange(Preference preference, Object value) {
150 | String stringValue = value.toString();
151 |
152 | if (isUserSettings) {
153 | Map map = new HashMap();
154 | map.put("bedtime_play_time_value", stringValue);
155 | MobclickAgent.onEvent(preference.getContext(), preference.getKey(), map);
156 | }
157 |
158 | if (preference instanceof ListPreference) {
159 | // For list preferences, look up the correct display value in
160 | // the preference's 'entries' list.
161 | ListPreference listPreference = (ListPreference) preference;
162 | int index = listPreference.findIndexOfValue(stringValue);
163 |
164 | // Set the summary to reflect the new value.
165 | preference.setSummary(
166 | index >= 0
167 | ? listPreference.getEntries()[index]
168 | : null);
169 |
170 | } else {
171 | // For all other preferences, set the summary to the value's
172 | // simple string representation.
173 | preference.setSummary(stringValue);
174 | }
175 | return true;
176 | }
177 | };
178 |
179 | /**
180 | * Binds a preference's summary to its value. More specifically, when the
181 | * preference's value is changed, its summary (line of text below the
182 | * preference title) is updated to reflect the value. The summary is also
183 | * immediately updated upon calling this method. The exact display format is
184 | * dependent on the type of preference.
185 | *
186 | * @see #sBindPreferenceSummaryToValueListener
187 | */
188 | private static void bindPreferenceSummaryToValue(Preference preference) {
189 | // Set the listener to watch for value changes.
190 | preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
191 |
192 | // Trigger the listener immediately with the preference's
193 | // current value.
194 | sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
195 | PreferenceManager
196 | .getDefaultSharedPreferences(preference.getContext())
197 | .getString(preference.getKey(), ""));
198 | }
199 |
200 | /**
201 | * This fragment shows general preferences only. It is used when the
202 | * activity is showing a two-pane settings UI.
203 | */
204 | @TargetApi(Build.VERSION_CODES.HONEYCOMB)
205 | public static class GeneralPreferenceFragment extends PreferenceFragment {
206 | @Override
207 | public void onCreate(Bundle savedInstanceState) {
208 | super.onCreate(savedInstanceState);
209 | addPreferencesFromResource(R.xml.pref_general);
210 |
211 | // Bind the summaries of EditText/List/Dialog/Ringtone preferences
212 | // to their values. When their values change, their summaries are
213 | // updated to reflect the new value, per the Android Design
214 | // guidelines.
215 | bindPreferenceSummaryToValue(findPreference("bedtime_play_time"));
216 | isUserSettings = true;
217 | }
218 | }
219 |
220 | }
221 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/TermActivity.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.SharedPreferences;
6 | import android.media.MediaPlayer;
7 | import android.os.Bundle;
8 | import android.os.Vibrator;
9 | import android.preference.PreferenceActivity;
10 | import android.preference.PreferenceManager;
11 | import android.util.Log;
12 | import android.view.Menu;
13 | import android.view.MenuItem;
14 | import android.view.View;
15 | import android.widget.AdapterView;
16 | import android.widget.ImageButton;
17 | import android.widget.ListView;
18 | import android.widget.Toast;
19 |
20 | import com.umeng.analytics.MobclickAgent;
21 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Playlist;
22 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Terms;
23 | import com.zaoqibu.zaoqibukindergartenmusic.util.VibratorUtil;
24 |
25 | import java.util.Calendar;
26 | import java.util.HashMap;
27 | import java.util.Map;
28 | import java.util.regex.Pattern;
29 |
30 |
31 | public class TermActivity extends Activity {
32 | public static final String ARG_TERMS = "terms";
33 | public static final String ARG_POSITION = "position";
34 |
35 | private Terms terms;
36 | private int position;
37 | private String termName;
38 |
39 | private Player player;
40 | private Playlist playlist;
41 | private ListView playlistView;
42 |
43 | private ImageButton playButton;
44 | private ImageButton playPreviousButton;
45 | private ImageButton playNextButton;
46 |
47 | private boolean isSequencePlay = true;
48 |
49 | private long bedtimePlayBeginTime = 0;
50 |
51 | private MenuItem menuItemBedtimePlay = null;
52 |
53 | @Override
54 | protected void onCreate(Bundle savedInstanceState) {
55 | super.onCreate(savedInstanceState);
56 | setContentView(R.layout.activity_term);
57 |
58 | terms = (Terms)getIntent().getExtras().get(ARG_TERMS);
59 | position = getIntent().getExtras().getInt(ARG_POSITION);
60 |
61 | termName = terms.getTerm(position).getName();
62 | getActionBar().setTitle(termName);
63 | getActionBar().setDisplayHomeAsUpEnabled(true);
64 |
65 | playlist = terms.getTerm(position).getPlaylist();
66 |
67 | player = new Player();
68 | player.setContext(this);
69 | player.setPlaylist(playlist);
70 |
71 | initPlaylistView();
72 | initPlayButton();
73 | initPlayPrevious();
74 | initPlayNext();
75 |
76 | player.setOnCompletionListenerWithMediaPlayer(new MediaPlayer.OnCompletionListener() {
77 | @Override
78 | public void onCompletion(MediaPlayer mp) {
79 | if (playlist != null) {
80 | if (bedtimePlayBeginTime > 0 && (Calendar.getInstance().getTimeInMillis() - bedtimePlayBeginTime) > getBedtimePlayTimeMillis()) {
81 | playButton.setImageResource(R.drawable.ic_action_play);
82 | player.pause();
83 |
84 | menuItemBedtimePlay.setIcon(R.drawable.ic_action_bedtime_play);
85 | bedtimePlayBeginTime = 0;
86 | return;
87 | }
88 |
89 | Map map = new HashMap();
90 | map.put("term", terms.getTerm(position).getName());
91 | map.put("sound_name", playlist.getSound(player.getCurrentPosition()).getName());
92 | MobclickAgent.onEvent(TermActivity.this, "played", map);
93 |
94 | if (isSequencePlay)
95 | playSoundByPosition(player.nextPlayIndex());
96 | else
97 | playSoundByPosition(player.getCurrentPosition());
98 | }
99 | }
100 | });
101 |
102 | playSoundByPosition(getCurrentPositionWithPlaylist(termName));
103 | }
104 |
105 | private void initPlaylistView() {
106 | playlistView = (ListView)findViewById(R.id.playlistView);
107 | playlistView.setAdapter(new PlaylistAdapter(this, player));
108 |
109 | playlistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
110 | @Override
111 | public void onItemClick(AdapterView> parent, View view, int position, long id) {
112 | playSoundByPosition(position);
113 |
114 | Map map = new HashMap();
115 | map.put("term", termName);
116 | map.put("sound_name", playlist.getSound(position).getName());
117 | MobclickAgent.onEvent(TermActivity.this, "play_list_item_onclick", map);
118 | }
119 | });
120 | }
121 |
122 | private void setCurrentPlaying(View view) {
123 | offAllCurrentPlayingWithPlaylistView();
124 | onCurrentPlayingWithPlaylistView(view);
125 | }
126 |
127 | private void offAllCurrentPlayingWithPlaylistView() {
128 | int count = playlistView.getChildCount();
129 | for (int i=0; i lastListItemPosition ) {
155 | return listView.getAdapter().getView(pos, null, listView);
156 | } else {
157 | final int childIndex = pos - firstListItemPosition;
158 | return listView.getChildAt(childIndex);
159 | }
160 | }
161 |
162 | private void initPlayButton() {
163 | playButton = (ImageButton) findViewById(R.id.playlistItemPlay);
164 | playButton.setOnClickListener(new View.OnClickListener() {
165 | @Override
166 | public void onClick(View v) {
167 | onPlayClickListener();
168 | }
169 | });
170 | }
171 |
172 | private void onPlayClickListener() {
173 | setPlayImage();
174 |
175 | if (player.isPlaying()) {
176 | player.pause();
177 | MobclickAgent.onEvent(this, "pause");
178 | }
179 | else {
180 | player.play();
181 | MobclickAgent.onEvent(this, "play");
182 | }
183 | }
184 |
185 | private void initPlayPrevious() {
186 | playPreviousButton = (ImageButton) findViewById(R.id.playlistItemPrevious);
187 | playPreviousButton.setOnClickListener(new View.OnClickListener() {
188 | @Override
189 | public void onClick(View v) {
190 | playSoundByPosition(player.previousPlayIndex());
191 | MobclickAgent.onEvent(TermActivity.this, "play_previous");
192 | }
193 | });
194 | }
195 |
196 | private void initPlayNext() {
197 | playNextButton = (ImageButton) findViewById(R.id.playlistItemNext);
198 | playNextButton.setOnClickListener(new View.OnClickListener() {
199 | @Override
200 | public void onClick(View v) {
201 | playSoundByPosition(player.nextPlayIndex());
202 | MobclickAgent.onEvent(TermActivity.this, "play_next");
203 | }
204 | });
205 | }
206 |
207 | private int getCurrentPositionWithPlaylist(String playlistName) {
208 | SharedPreferences prefs = getSharedPreferences(MainActivity.SHARED_PREFERENCES_NAME, MODE_PRIVATE);
209 | return prefs.getInt(playlistName, 0);
210 | }
211 |
212 | private void setPlayImage() {
213 | playButton.setImageResource(player.isPlaying() ? R.drawable.ic_action_play : R.drawable.ic_action_pause);
214 | }
215 |
216 | public void onResume() {
217 | super.onResume();
218 | MobclickAgent.onResume(this);
219 | }
220 | public void onPause() {
221 | super.onPause();
222 | MobclickAgent.onPause(this);
223 | }
224 |
225 | @Override
226 | protected void onDestroy() {
227 | super.onDestroy();
228 |
229 | setCurrentPositionWithPlaylist(terms.getTerm(position).getName(), player.getCurrentPosition());
230 | player.close();
231 | }
232 |
233 | private void setCurrentPositionWithPlaylist(String playlistName, int currentPosition) {
234 | SharedPreferences prefs = getSharedPreferences(MainActivity.SHARED_PREFERENCES_NAME, MODE_PRIVATE);
235 | SharedPreferences.Editor prefsEditor = prefs.edit();
236 |
237 | prefsEditor.putInt(playlistName, currentPosition);
238 | prefsEditor.commit();
239 | }
240 |
241 | @Override
242 | public boolean onCreateOptionsMenu(Menu menu) {
243 | // Inflate the menu; this adds items to the action bar if it is present.
244 | getMenuInflater().inflate(R.menu.term, menu);
245 | return true;
246 | }
247 |
248 | private final static String TAG = "TermActivity";
249 |
250 | @Override
251 | public boolean onOptionsItemSelected(MenuItem item) {
252 | // Handle action bar item clicks here. The action bar will
253 | // automatically handle clicks on the Home/Up button, so long
254 | // as you specify a parent activity in AndroidManifest.xml.
255 | int id = item.getItemId();
256 |
257 | if (id == R.id.action_repeat) {
258 | MobclickAgent.onEvent(this, isSequencePlay ? "repeat" : "repeat_one");
259 |
260 | item.setIcon(isSequencePlay ? R.drawable.ic_action_repeat_one : R.drawable.ic_action_repeat);
261 | isSequencePlay = !isSequencePlay;
262 |
263 | VibratorUtil.vibrate(this);
264 | return true;
265 | }
266 | else if (id == R.id.action_bedtime_paly) {
267 | menuItemBedtimePlay = item;
268 | String toastText;
269 |
270 | if (bedtimePlayBeginTime == 0) {
271 | menuItemBedtimePlay.setIcon(R.drawable.ic_action_bedtime_playing);
272 |
273 | bedtimePlayBeginTime = Calendar.getInstance().getTimeInMillis();
274 | toastText = String.format("睡前播放 %d 分钟", getBedtimePlayTimeMinute());
275 | MobclickAgent.onEvent(this, "bedtime_play");
276 | }
277 | else {
278 | menuItemBedtimePlay.setIcon(R.drawable.ic_action_bedtime_play);
279 |
280 | bedtimePlayBeginTime = 0;
281 | toastText = "取消睡前播放设置";
282 | MobclickAgent.onEvent(this, "bedtime_play_cancel");
283 | }
284 |
285 | Toast.makeText(this, toastText, Toast.LENGTH_SHORT).show();
286 | VibratorUtil.vibrate(this);
287 |
288 | return true;
289 | } else if (id == android.R.id.home) {
290 | onBackPressed();
291 | return true;
292 | }
293 |
294 | return super.onOptionsItemSelected(item);
295 | }
296 |
297 | private int getBedtimePlayTimeMinute() {
298 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
299 | return Integer.parseInt(prefs.getString("bedtime_play_time", "30"));
300 | }
301 |
302 | private int getBedtimePlayTimeMillis() {
303 | return getBedtimePlayTimeMinute() * 60 * 1000;
304 | }
305 |
306 | }
307 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/TermAdapter.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.BaseAdapter;
8 | import android.widget.GridView;
9 | import android.widget.ImageView;
10 | import android.widget.TextView;
11 |
12 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Term;
13 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Terms;
14 |
15 | /**
16 | * Created by vwarship on 2014/11/27.
17 | */
18 | public class TermAdapter extends BaseAdapter {
19 | private Context context;
20 | private Terms terms;
21 | private int itemWidth;
22 |
23 | public TermAdapter(Context context, Terms terms, int itemWidth) {
24 | this.context = context;
25 | this.terms = terms;
26 | this.itemWidth = itemWidth;
27 | }
28 |
29 | @Override
30 | public int getCount() {
31 | return terms.count();
32 | }
33 |
34 | @Override
35 | public Object getItem(int position) {
36 | return null;
37 | }
38 |
39 | @Override
40 | public long getItemId(int position) {
41 | return 0;
42 | }
43 |
44 | @Override
45 | public View getView(int position, View convertView, ViewGroup parent) {
46 | LayoutInflater layoutInflater = LayoutInflater.from(context);
47 |
48 | View item = null;
49 |
50 | if (convertView == null)
51 | {
52 | item = layoutInflater.inflate(R.layout.term_item, parent, false);
53 | item.setLayoutParams(new GridView.LayoutParams(itemWidth, itemWidth));
54 | }
55 | else
56 | {
57 | item = convertView;
58 | }
59 |
60 | Term term = terms.getTerm(position);
61 |
62 | item.setBackgroundResource(term.getBackgroundColorResId());
63 |
64 | ImageView imageView = (ImageView)item.findViewById(R.id.iv_term_background_image);
65 | imageView.setBackgroundResource(term.getImageResId());
66 |
67 | TextView textView = (TextView)item.findViewById(R.id.tv_term_name);
68 | textView.setText(term.getName());
69 |
70 | return item;
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/domain/Playlist.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic.domain;
2 |
3 | import java.io.Serializable;
4 | import java.util.ArrayList;
5 | import java.util.List;
6 |
7 | /**
8 | * Created by vwarship on 2014/10/21.
9 | */
10 | public class Playlist implements Serializable {
11 | private List sounds = new ArrayList();
12 |
13 | public void add(Sound sound) {
14 | sounds.add(sound);
15 | }
16 |
17 | public Sound getSound(int index) {
18 | if (index >=0 && index terms;
12 |
13 | public Terms() {
14 | this.terms = new ArrayList();
15 | }
16 |
17 | public void addTerm(Term term) {
18 | terms.add(term);
19 | }
20 |
21 | public Term getTerm(int index) {
22 | return terms.get(index);
23 | }
24 |
25 | public int count() {
26 | return terms.size();
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/util/GridViewUtil.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic.util;
2 |
3 | import android.app.Activity;
4 | import android.content.res.Configuration;
5 | import android.content.res.Resources;
6 | import android.graphics.Rect;
7 | import android.util.DisplayMetrics;
8 | import android.util.TypedValue;
9 |
10 | /**
11 | * Created by vwarship on 2014/11/27.
12 | */
13 | public class GridViewUtil {
14 | private static int PORTRAIT_GRIDVIEW_COLUMN_NUMBER = 2;
15 |
16 | static public int calcItemWidth(Activity activity) {
17 | int colNum = PORTRAIT_GRIDVIEW_COLUMN_NUMBER;
18 |
19 | float padding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
20 | (colNum-1+2)*8,
21 | activity.getResources().getDisplayMetrics());
22 |
23 | final int screenWidth = getScreenWidth(activity);
24 | return (int) ( (screenWidth-padding) / colNum);
25 | }
26 |
27 | static private int getScreenWidth(Activity activity) {
28 | DisplayMetrics metrics = new DisplayMetrics();
29 | activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
30 |
31 | return metrics.widthPixels;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zaoqibu/zaoqibukindergartenmusic/util/TermFactory.java:
--------------------------------------------------------------------------------
1 | package com.zaoqibu.zaoqibukindergartenmusic.util;
2 |
3 | import android.content.Context;
4 |
5 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Playlist;
6 | import com.zaoqibu.zaoqibukindergartenmusic.R;
7 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Sound;
8 | import com.zaoqibu.zaoqibukindergartenmusic.domain.Term;
9 |
10 | /**
11 | * Created by vwarship on 2014/11/27.
12 | */
13 | public class TermFactory {
14 | private Context context;
15 |
16 | public TermFactory(Context context) {
17 | this.context = context;
18 | }
19 |
20 | public Term createTermWithNursery1() {
21 | Term term = new Term("小班·上", R.drawable.term_item_nursery34_1_selector, R.drawable.nursery34_1);
22 | term.setPlaylist(createPlaylist(R.array.Nursery34_1, "Nursery34_1"));
23 |
24 | return term;
25 | }
26 |
27 | private Playlist createPlaylist(int StringArrayResId, String dir) {
28 | Playlist playlist = new Playlist();
29 |
30 | String[] names = context.getResources().getStringArray(StringArrayResId);
31 | for (int i=0; i
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/sound_default_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/res/drawable/sound_default_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/term_item_lowerkindergarten45_1_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/term_item_lowerkindergarten45_2_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/term_item_nursery34_1_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/term_item_nursery34_2_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/term_item_upperkindergarten56_1_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/term_item_upperkindergarten56_2_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/upperkindergarten56_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/res/drawable/upperkindergarten56_1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/upperkindergarten56_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/app/src/main/res/drawable/upperkindergarten56_2.png
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_about.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
18 |
19 |
28 |
29 |
37 |
38 |
46 |
47 |
55 |
56 |
64 |
65 |
73 |
74 |
84 |
85 |
96 |
97 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_playlist_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
13 |
14 |
26 |
27 |
42 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_term.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
16 |
17 |
26 |
27 |
34 |
35 |
42 |
43 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/term_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
21 |
22 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/main.xml:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/term.xml:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/about.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 一起玩、学习、成长。
4 | 版本号:1.5.5
5 | QQ :zaoqibu@qq.com
6 | 微信号:zaoqibu
7 | 邮 箱:zaoqibu@qq.com
8 | 作 者:王军建
9 | 版权 @2014-2015 早起步\n保留所有权利
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FF66C010
4 | #FFFFFFFF
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 8dp
4 | 8dp
5 |
6 | 8dp
7 |
8 | 8dp
9 |
10 | 8dp
11 | 88dp
12 |
13 | 72dp
14 |
15 | 24sp
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 幼儿园音乐
5 | 更多
6 | 循环播放
7 | 单曲循环播放
8 | 睡前播放
9 | 关于
10 | 学期
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings_activity_settings.xml:
--------------------------------------------------------------------------------
1 |
2 | 设置
3 |
4 | 自动接着上次的播放
5 | 程序启动后自动接着上次的播放
6 | 关于
7 | 幼儿园音乐
8 |
9 | 睡前播放时间
10 |
11 | - 15 分钟
12 | - 30 分钟
13 | - 1 小时
14 |
15 |
16 | - 15
17 | - 30
18 | - 60
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings_music_names.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | - 两只小小鸭
6 | - 鱼儿好朋友
7 | - 打电话
8 | - 找朋友
9 | - 开火车
10 | - 我爱我的幼儿园
11 | - 会跳舞的跳跳糖
12 | - 会跳舞的跳跳糖 OK伴奏
13 | - 香甜的水果在哪里
14 | - 拔萝卜
15 | - 小小厨师
16 | - 毛毛虫挠痒痒
17 | - 抱一抱
18 | - 好宝宝
19 | - 好宝宝 OK伴奏
20 | - 小手爬
21 | - 小手拍拍
22 | - 头发、肩膀、膝盖、脚
23 | - 一二三
24 | - 奇妙的声音
25 | - 小小交通警
26 | - 这是什么车
27 | - 这是什么车 OK伴奏
28 | - 汽车开来了
29 | - 小老鼠上灯台
30 | - 小老鼠上灯台 OK伴奏
31 | - 伸伸转
32 | - 两只小鸟
33 | - 走路
34 | - 小花狗
35 | - 我爱我的小动物
36 | - 找小猫
37 | - 捉小鱼
38 | - 小雪花
39 | - 我给太阳唱支歌
40 | - 宝宝不怕冷
41 | - 小雪花飘呀飘
42 | - 好娃娃
43 | - 好娃娃 OK伴奏
44 | - 拉个圆圈赶走
45 | - 亲亲我
46 | - 小小手
47 | - 小小手 OK伴奏
48 | - 放鞭炮
49 | - 包饺子
50 | - 新年到
51 | - 新年好
52 | - 咚咚锵
53 | - 锣和鼓
54 | - 锣和鼓 OK伴奏
55 | - 秧歌步
56 |
57 |
58 |
59 | - 我家有几口
60 | - 睡吧,布娃娃
61 | - 五指歌
62 | - 公鸡操
63 | - 我爱洗澡
64 | - 袋鼠
65 | - 小枕头
66 | - 亲亲热热在一起
67 | - 大猫小猫
68 | - 变大变小
69 | - 彩色世界真奇妙
70 | - 颜色朋友在哪里
71 | - 哈哈笑
72 | - 朋友你好
73 | - 小星星
74 | - 摞拳头
75 | - 快跳起来
76 | - 看样学样
77 | - 猫捉老鼠
78 | - 小胖鸭子捉迷藏
79 | - 小胖鸭子捉迷藏2
80 | - 洗衣服
81 | - 美丽的泥娃娃
82 | - 两只小象
83 | - 夏天到
84 | - 大雨小雨
85 | - 噜啦啦洗澡了
86 | - 萤火虫
87 |
88 |
89 |
90 | - 太阳小鸟夸奖我
91 | - 好朋友
92 | - 幼儿园里好事多
93 | - 让爱住我家
94 | - 过家家
95 | - 爷爷为我打月饼
96 | - 袋鼠妈妈
97 | - 好娃娃
98 | - 我爱祖国
99 | - 我们的祖国是花园
100 | - 祖国,祖国,我们爱你
101 | - 落叶
102 | - 小树叶
103 | - 火车开来了
104 | - 火车开来了 OK伴奏
105 | - 摘果子
106 | - 秋天多么美
107 | - 秋天多么美 OK伴奏
108 | - 小松鼠找松果
109 | - 健康歌
110 | - 健康歌 OK伴奏
111 | - 蚂蚁搬豆
112 | - 蚂蚁搬豆 OK伴奏
113 | - 昆虫音乐会
114 | - 蓝精灵
115 | - 小白船
116 | - 大吊车
117 | - 洒水车
118 | - 一分钱
119 | - 交通警
120 | - 颠倒歌
121 | - 谁的尾巴最好看
122 | - 谁的尾巴最好看 OK伴奏
123 | - 小动物怎样过冬
124 | - 小老鼠和泡泡糖
125 | - 小鸟落落
126 | - 小蜘蛛
127 | - 青蛙找家
128 | - 盖房子
129 | - 小猪睡觉
130 | - 萤火虫
131 | - 雪花和雨滴
132 | - 堆雪人
133 | - 咙咚锵
134 | - 恭喜恭喜
135 | - 卷炮仗
136 |
137 |
138 |
139 | - 小小粉刷匠
140 | - 小小粉刷匠(伴奏)
141 | - 不再麻烦好妈妈
142 | - 不再麻烦好妈妈(伴奏)
143 | - 口哨与小狗
144 | - 朋友舞
145 | - 哈罗,哈罗
146 | - 找朋友
147 | - 天鹅
148 | - 四小天鹅舞曲
149 | - 喂小鸟
150 | - 小飞机
151 | - 小飞机上蓝天
152 | - 金孔雀轻轻跳
153 | - 小星星
154 | - 布谷鸟叫声录音
155 | - 报春
156 | - 春天在哪里
157 | - 小小一粒米
158 | - 春雨沙沙
159 | - 窗开开,门开开
160 | - 种葵花
161 | - 大自然的声音
162 | - 我是快乐的小蜗牛
163 | - 种树歌
164 | - 加油干
165 | - 在农场里
166 | - 气球跳舞
167 | - 影子
168 | - 郊游
169 | - 蝈蝈和蛐蛐
170 | - 花哈蟆
171 | - 说唱济南
172 | - 八仙过海
173 | - 沂蒙山小调
174 | - 扭秧歌
175 | - 六一儿童节
176 | - 夏天的雷雨
177 | - 雷雨音效
178 | - 小蚂蚁避雨
179 | - 下雨啦
180 | - 游泳
181 | - 毛毛虫
182 | - 数蛤蟆
183 |
184 |
185 |
186 | - 拉拉勾
187 | - 我爱你
188 | - 泼水歌
189 | - 司马光砸缸
190 | - 戏说脸谱(京歌)
191 | - 同唱一首歌
192 | - 男儿当自强
193 | - 国旗、国旗红红的哩
194 | - 小海军
195 | - 喜洋洋
196 | - 送我一支玫瑰花
197 | - 龟兔赛跑(京歌)
198 | - 秋天多么美
199 | - 苹果丰收
200 | - 快乐的小鼹鼠
201 | - 化蝶
202 | - 猪八戒吃西瓜
203 | - 吃西瓜
204 | - 百鸟朝凤
205 | - 猴哥
206 | - 猴子看,猴子做
207 | - 一个师傅仨徒弟
208 | - 小老鼠打电话
209 | - 邮递马车
210 | - 打字机
211 | - 雪花飞
212 | - 铃儿响叮当
213 | - 快乐舞会
214 | - 红绸舞
215 |
216 |
217 |
218 | - 闹花灯
219 | - 游子吟
220 | - 风儿找妈妈
221 | - 田纳西摇摆舞
222 | - 唱唱我的名字(歌曲)
223 | - 小小男子汉(歌曲)
224 | - 动物狂欢节终曲(乐曲)
225 | - 不怕输的小火车
226 | - 黄梅戏《女驸马》选段
227 | - 柳树姑娘
228 | - 大自然的声音
229 | - 三只猴子
230 | - 雷神
231 | - 土耳其进行曲
232 | - 快乐的皮影人
233 | - 加速度圆舞曲
234 | - 巡逻兵进行曲
235 | - 勤快人和懒惰人
236 | - 歌声与微笑
237 | - Do-Re-Mi
238 | - 孤独的牧羊人
239 | - 口哨与小狗
240 | - 森林狂想曲
241 | - G大调小步舞曲
242 | - 碰碰车
243 | - 铅笔盒进行曲
244 | - 快上一年级
245 | - 友谊地久天长
246 |
247 |
248 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
14 |
15 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/pref_general.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
17 |
18 |
22 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/pref_headers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:1.0.0'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Settings specified in this file will override any Gradle settings
5 | # configured through the IDE.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Dec 15 00:49:34 CST 2014
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-2.2.1-all.zip
7 |
--------------------------------------------------------------------------------
/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 | # For Cygwin, ensure paths are in UNIX format before anything is touched.
46 | if $cygwin ; then
47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
48 | fi
49 |
50 | # Attempt to set APP_HOME
51 | # Resolve links: $0 may be a link
52 | PRG="$0"
53 | # Need this for relative symlinks.
54 | while [ -h "$PRG" ] ; do
55 | ls=`ls -ld "$PRG"`
56 | link=`expr "$ls" : '.*-> \(.*\)$'`
57 | if expr "$link" : '/.*' > /dev/null; then
58 | PRG="$link"
59 | else
60 | PRG=`dirname "$PRG"`"/$link"
61 | fi
62 | done
63 | SAVED="`pwd`"
64 | cd "`dirname \"$PRG\"`/" >&-
65 | APP_HOME="`pwd -P`"
66 | cd "$SAVED" >&-
67 |
68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
69 |
70 | # Determine the Java command to use to start the JVM.
71 | if [ -n "$JAVA_HOME" ] ; then
72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
73 | # IBM's JDK on AIX uses strange locations for the executables
74 | JAVACMD="$JAVA_HOME/jre/sh/java"
75 | else
76 | JAVACMD="$JAVA_HOME/bin/java"
77 | fi
78 | if [ ! -x "$JAVACMD" ] ; then
79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
80 |
81 | Please set the JAVA_HOME variable in your environment to match the
82 | location of your Java installation."
83 | fi
84 | else
85 | JAVACMD="java"
86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
87 |
88 | Please set the JAVA_HOME variable in your environment to match the
89 | location of your Java installation."
90 | fi
91 |
92 | # Increase the maximum file descriptors if we can.
93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
94 | MAX_FD_LIMIT=`ulimit -H -n`
95 | if [ $? -eq 0 ] ; then
96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
97 | MAX_FD="$MAX_FD_LIMIT"
98 | fi
99 | ulimit -n $MAX_FD
100 | if [ $? -ne 0 ] ; then
101 | warn "Could not set maximum file descriptor limit: $MAX_FD"
102 | fi
103 | else
104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
105 | fi
106 | fi
107 |
108 | # For Darwin, add options to specify how the application appears in the dock
109 | if $darwin; then
110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
111 | fi
112 |
113 | # For Cygwin, switch paths to Windows format before running java
114 | if $cygwin ; then
115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
158 | function splitJvmOpts() {
159 | JVM_OPTS=("$@")
160 | }
161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
163 |
164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
165 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/ic_launcher-web.png
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/snapshots/about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/snapshots/about.png
--------------------------------------------------------------------------------
/snapshots/main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/snapshots/main.png
--------------------------------------------------------------------------------
/snapshots/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/snapshots/settings.png
--------------------------------------------------------------------------------
/snapshots/term1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/snapshots/term1.png
--------------------------------------------------------------------------------
/snapshots/term2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vwarship/KindergartenMusic/29a639b592b1282bf6aed82cb2c8de0117a2cdb1/snapshots/term2.png
--------------------------------------------------------------------------------