├── .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 | 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 | 5 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /KindergartenMusic.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pageres幼儿园音乐 2 | 3 | ## 介绍 4 | 幼儿园音乐--幼儿园音乐的目标是给幼儿园的小朋友提供适合自己操作的音乐播放器。幼儿园的小朋友根据自己上的大、中、小班来选择,默认是所有的歌循环播放,也可以选择单首歌循环播放,还可以睡前播放。幼儿园音乐内容来源于《山东省幼儿园课程指导》的音乐CD。 5 | 6 | ## 功能 7 | * 通过图片选择歌曲。 8 | * 选择了所属班级会自动播放上一次退出时播放的歌。 9 | * 对于喜欢的歌曲,可以选择单首歌循环播放。 10 | * 当前播放的音乐自动显示在可视窗口中。 11 | * 设置睡前播放的时间,时间到了自动暂停播放。 12 | * 设置启动后自动接着上次的播放。 13 | 14 | ## 截图 15 | ![](./snapshots/main.png) 16 | ![](./snapshots/term1.png) 17 | ![](./snapshots/term2.png) 18 | ![](./snapshots/settings.png) 19 | ![](./snapshots/about.png) 20 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/app.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 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 | 4 | 5 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/menu/term.xml: -------------------------------------------------------------------------------- 1 | 4 | 10 | 16 | 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 --------------------------------------------------------------------------------