diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..11cd89e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+.gradle/2.10/tasks/**
+app/build/generated/**
+app/build/intermediates/**
+build/**
+.idea/misc.xml
+.idea/workspace.xml
+.idea/libraries/pinyin4j_2_5_0.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..3de6aa8
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+holysongs-android
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..96cc43e
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000..e7bedf3
--- /dev/null
+++ b/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..97626ba
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..508b3d9
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/animated_vector_drawable_24_1_1.xml b/.idea/libraries/animated_vector_drawable_24_1_1.xml
new file mode 100644
index 0000000..9af8a29
--- /dev/null
+++ b/.idea/libraries/animated_vector_drawable_24_1_1.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/appcompat_v7_24_1_1.xml b/.idea/libraries/appcompat_v7_24_1_1.xml
new file mode 100644
index 0000000..a29ceb3
--- /dev/null
+++ b/.idea/libraries/appcompat_v7_24_1_1.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/design_24_1_1.xml b/.idea/libraries/design_24_1_1.xml
new file mode 100644
index 0000000..6f3adaa
--- /dev/null
+++ b/.idea/libraries/design_24_1_1.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/firebase_analytics_9_2_0.xml b/.idea/libraries/firebase_analytics_9_2_0.xml
new file mode 100644
index 0000000..1247e7a
--- /dev/null
+++ b/.idea/libraries/firebase_analytics_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/firebase_analytics_impl_9_2_0.xml b/.idea/libraries/firebase_analytics_impl_9_2_0.xml
new file mode 100644
index 0000000..6e0d7e2
--- /dev/null
+++ b/.idea/libraries/firebase_analytics_impl_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/firebase_common_9_2_0.xml b/.idea/libraries/firebase_common_9_2_0.xml
new file mode 100644
index 0000000..317d346
--- /dev/null
+++ b/.idea/libraries/firebase_common_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/firebase_core_9_2_0.xml b/.idea/libraries/firebase_core_9_2_0.xml
new file mode 100644
index 0000000..05cfb03
--- /dev/null
+++ b/.idea/libraries/firebase_core_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/firebase_iid_9_2_0.xml b/.idea/libraries/firebase_iid_9_2_0.xml
new file mode 100644
index 0000000..03078b0
--- /dev/null
+++ b/.idea/libraries/firebase_iid_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/org_apache_http_legacy.xml b/.idea/libraries/org_apache_http_legacy.xml
new file mode 100644
index 0000000..8a24684
--- /dev/null
+++ b/.idea/libraries/org_apache_http_legacy.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/play_services_analytics_9_2_0.xml b/.idea/libraries/play_services_analytics_9_2_0.xml
new file mode 100644
index 0000000..c6e4b62
--- /dev/null
+++ b/.idea/libraries/play_services_analytics_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/play_services_analytics_impl_9_2_0.xml b/.idea/libraries/play_services_analytics_impl_9_2_0.xml
new file mode 100644
index 0000000..cf0ceda
--- /dev/null
+++ b/.idea/libraries/play_services_analytics_impl_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/play_services_base_9_2_0.xml b/.idea/libraries/play_services_base_9_2_0.xml
new file mode 100644
index 0000000..8ec9e71
--- /dev/null
+++ b/.idea/libraries/play_services_base_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/play_services_basement_9_2_0.xml b/.idea/libraries/play_services_basement_9_2_0.xml
new file mode 100644
index 0000000..0aec068
--- /dev/null
+++ b/.idea/libraries/play_services_basement_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/play_services_tasks_9_2_0.xml b/.idea/libraries/play_services_tasks_9_2_0.xml
new file mode 100644
index 0000000..e7d0a1b
--- /dev/null
+++ b/.idea/libraries/play_services_tasks_9_2_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/quickblox_android_sdk_chat_2_2_6.xml b/.idea/libraries/quickblox_android_sdk_chat_2_2_6.xml
new file mode 100644
index 0000000..8572d57
--- /dev/null
+++ b/.idea/libraries/quickblox_android_sdk_chat_2_2_6.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/quickblox_android_sdk_core_2_2_6.xml b/.idea/libraries/quickblox_android_sdk_core_2_2_6.xml
new file mode 100644
index 0000000..42ac33e
--- /dev/null
+++ b/.idea/libraries/quickblox_android_sdk_core_2_2_6.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/quickblox_android_sdk_messages_2_2_6.xml b/.idea/libraries/quickblox_android_sdk_messages_2_2_6.xml
new file mode 100644
index 0000000..a6b70fb
--- /dev/null
+++ b/.idea/libraries/quickblox_android_sdk_messages_2_2_6.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/recyclerview_v7_24_1_1.xml b/.idea/libraries/recyclerview_v7_24_1_1.xml
new file mode 100644
index 0000000..f38c199
--- /dev/null
+++ b/.idea/libraries/recyclerview_v7_24_1_1.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/support_annotations_24_1_1.xml b/.idea/libraries/support_annotations_24_1_1.xml
new file mode 100644
index 0000000..53f4232
--- /dev/null
+++ b/.idea/libraries/support_annotations_24_1_1.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/support_v4_24_1_1.xml b/.idea/libraries/support_v4_24_1_1.xml
new file mode 100644
index 0000000..e3d1574
--- /dev/null
+++ b/.idea/libraries/support_v4_24_1_1.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/support_vector_drawable_24_1_1.xml b/.idea/libraries/support_vector_drawable_24_1_1.xml
new file mode 100644
index 0000000..9a7fe3d
--- /dev/null
+++ b/.idea/libraries/support_vector_drawable_24_1_1.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..bbe1787
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000..7f68460
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..2dcd119
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,32 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 24
+ buildToolsVersion "24.0.1"
+
+ defaultConfig {
+ applicationId "com.goodtrendltd.HolySongs"
+ minSdkVersion 14
+ targetSdkVersion 24
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+ }
+ }
+}
+
+dependencies {
+
+ compile 'com.android.support:design:24.1.1'
+ compile 'com.google.android.gms:play-services-analytics:9.2.0'
+ compile files('libs/org.apache.http.legacy.jar')
+ compile files('libs/pinyin4j-2.5.0.jar')
+ compile files('libs/quickblox-android-sdk-core-2.2.6.jar')
+ compile files('libs/quickblox-android-sdk-messages-2.2.6.jar')
+ compile files('libs/quickblox-android-sdk-chat-2.2.6.jar')
+}
+
+apply plugin: 'com.google.gms.google-services'
\ No newline at end of file
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..33110ff
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,38 @@
+{
+ "project_info": {
+ "project_number": "892329193685",
+ "project_id": "firebase-holysongs"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:892329193685:android:a985addaee847fa7",
+ "android_client_info": {
+ "package_name": "com.goodtrendltd.HolySongs"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCTTKiU9Nv57_lFUL5rTCa0hnAmQoGAhEc"
+ }
+ ],
+ "services": {
+ "analytics_service": {
+ "status": 2,
+ "analytics_property": {
+ "tracking_id": "UA-66336761-5"
+ }
+ },
+ "appinvite_service": {
+ "status": 1,
+ "other_platform_oauth_client": []
+ },
+ "ads_service": {
+ "status": 1
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/libs/org.apache.http.legacy.jar b/app/libs/org.apache.http.legacy.jar
new file mode 100644
index 0000000..5b89fbd
Binary files /dev/null and b/app/libs/org.apache.http.legacy.jar differ
diff --git a/app/libs/pinyin4j-2.5.0.jar b/app/libs/pinyin4j-2.5.0.jar
new file mode 100644
index 0000000..e8ede13
Binary files /dev/null and b/app/libs/pinyin4j-2.5.0.jar differ
diff --git a/app/libs/quickblox-android-sdk-chat-2.2.6.jar b/app/libs/quickblox-android-sdk-chat-2.2.6.jar
new file mode 100644
index 0000000..34c1f5b
Binary files /dev/null and b/app/libs/quickblox-android-sdk-chat-2.2.6.jar differ
diff --git a/app/libs/quickblox-android-sdk-core-2.2.6.jar b/app/libs/quickblox-android-sdk-core-2.2.6.jar
new file mode 100644
index 0000000..a42f478
Binary files /dev/null and b/app/libs/quickblox-android-sdk-core-2.2.6.jar differ
diff --git a/app/libs/quickblox-android-sdk-messages-2.2.6.jar b/app/libs/quickblox-android-sdk-messages-2.2.6.jar
new file mode 100644
index 0000000..ba58ab9
Binary files /dev/null and b/app/libs/quickblox-android-sdk-messages-2.2.6.jar differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..6a0b97b
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/assets/songs.xml b/app/src/main/assets/songs.xml
new file mode 100644
index 0000000..61dc1a0
--- /dev/null
+++ b/app/src/main/assets/songs.xml
@@ -0,0 +1,6123 @@
+
+
+ 云上太阳
+
+ 无论是住在美丽的高山,或是躺卧在阴暗的幽谷,
+ 当你抬起头,你将会发现,主已为你我而预备。
+ 云上太阳它总不改变,虽然小雨洒在脸上,
+ 云上太阳它总不改变,阿哈……它不改变。
+
+
+
+ 奇异恩典
+
+ 奇异恩典,何等甘甜,我罪已得赦免;
+ 前我失丧,今被寻回,瞎眼今得看见。
+ 如此恩典,使我敬畏,使我心的安慰;
+ 初信之时,即蒙恩惠,真是何等宝贵。
+ 许多危险,试炼网罗,我已安然经过,
+ 靠主恩典,安全不怕,更引导我归家。
+ 将来喜年,圣徒欢聚,恩光爱谊千年,
+ 喜乐颂赞,在父座前,深望那日快现。
+
+
+
+ 寻找
+
+ 我曾经像一只小小飞鸟,飞跃在这蓝天海上,
+ 我无时无刻彷徨无助,找不到可以倾诉。
+ 我曾经像一只小小飞鸟,穿梭在这城市之中,
+ 我正在寻找那慈爱双手,那就是主耶稣。
+ 主啊,我要回到你身旁,我要回到你身旁,
+ 那慈爱双手正等着我,来拥抱我。
+ 主啊我要回到你身旁,我要回到你身旁,
+ 那慈爱双手来拥抱我,那就是主耶稣。
+
+
+
+ 爱的真谛
+
+ 爱是恒久忍耐,又有恩慈,爱是不嫉妒;
+ 爱是不自夸、不张狂,不作害羞的事,
+ 不求自己的益处,不轻易发怒,
+ 不计算人家的恶,不喜欢不义只喜欢真理。
+ 凡事包容,凡事相信,凡事盼望,
+ 凡事忍耐,凡事要忍耐,爱是永不止息。
+
+
+
+ 全然向你
+
+ 赞美的旋律响起,我的心全然向你,
+ 当圣灵的恩膏满溢,我的灵不再封闭,
+ 赞美的清泉如春雨沐浴,我心中的喜乐川流不息。
+ 赞美的音符如雪花飘逸,心中的暖流冉冉升起。
+ 我要开口向你赞美称谢,
+ 永永远远赞美不停,永永远远称谢不已。
+ 我要欣然向你献上自己,
+ 一生一世献上自己,一生一世脚步不离。
+
+
+
+ 当圣灵在我的心
+
+ 当圣灵在我的心 我要歌颂主,像当年的大卫王(2遍)
+ 我要唱,我要唱,像当年的大卫王(2遍)
+ 2. 拍拍手 3. 来跳舞 4. 赞美主
+
+
+
+ 主我愿单属你
+
+ 我的主,我心爱你,我的主,我渴慕你,
+ 愿你爱来吸引我,使我心单单爱你。
+ 哦 耶稣,我需要你,炼净我,完全属你,
+ 愿你爱来摸着我,使我心全然属你。
+
+
+
+ 信靠耶和华
+
+ 信靠主耶和华的人好像锡鞍山,
+ 永不动摇、永不动摇,哈利路亚。
+ 众山围绕耶路撒冷主也围绕你,
+ 直到永远、直到永远,哈利路亚。
+ 主耶和华善待义人平安归给他,
+ 荣耀归主、荣耀归主,哈利路亚。
+
+
+
+ 和散那
+
+ 和散那、和散那,和散那归于至高 神,
+ 和散那、和散那,和散那归于至高 神,
+ 我们齐声赞美,你至圣尊名,
+ 权柄尊荣归主我神,和散那归于至高神,
+ 荣耀、荣耀,愿荣耀归万王之王,
+ 荣耀、荣耀,愿荣耀归万王之王,
+ 我们齐声赞美,你至圣尊名,
+ 权柄尊荣归主我神,愿荣耀归万王之王。
+
+
+
+ 耶和华,是爱
+
+ 耶和华是爱,让我安歇青草溪水边,
+ 神令我省察心中的幽暗共度每一天。
+ 耶和华是爱,在困境中他保守引领,
+ 神为我摆设丰盛的恩典,再危难也不改变。
+ 在世间主恩与共,他的爱常在我身边,
+ 神为我施恩惠、保守勉励共同度此生。
+ 耶和华是爱,让我安歇青草溪水边,
+ 无限满足快乐涌自心田,再危难也不改变。
+
+
+
+ 耶和华,你是我的神
+
+ 耶和华你是我的神,我要时时称颂你的名,
+ 你是我的盾牌,是我的荣耀,又是叫我抬起头的神。
+ 纵然仇敌围绕攻击我,在你怀中必不怕遭害,
+ 你是我的 神,我所依靠的,你同在使我全然得胜。
+
+
+
+ 神是爱
+
+ 神是爱,打开你的心高声扬。
+ 神是爱,把他告诉各地方。
+ 他创造天空和那深海洋。他创造飞鸟和那蜜蜂忙。
+ 他造一切为你和我,因 神是爱!
+ 神是爱,空气中我能体会,恩典中我能体会,
+ 随时我都能体会,从最深的海洋到那最高高的山。
+ 万物都告诉我,神是爱!
+
+
+
+ 把冷漠变成爱
+
+ 你的眼 是否被太多美丽的事物迷惑,
+ 你的心 是否被太多纷杂的世俗绑锁,
+ 分些关怀 给角落中受伤的灵魂,
+ 分些爱 给那些不起眼的面孔。
+ 以基督的心为心,以他的眼看世界,
+ 你身边的人需要你我把冷漠变成爱。
+ 以基督的心为心,以他的眼看世界,
+ 这世界需要你我把冷漠变成爱。
+
+
+
+ 我需要有你在我生命中
+
+ 哦主,求你保守我的心我的意念,
+ 使我能够遵行你旨意,我愿将你话语深藏在我心,
+ 做路上的光,成为我脚前的灯。
+ 哦主,求你坚固我信心我的力量,
+ 使我得以勇敢向前行,因我知道有时我仍会软弱,
+ 求你带领我,使我不会再退缩
+ 我需要有你在我生命中,好让我一生能学你的样式,
+ 使我能成为你所喜悦的儿女,
+ 使我的生命能够彰显你荣耀。
+
+
+
+ 爱 我愿意
+
+ 十字架上的光芒,温柔又慈祥,
+ 带着主爱的力量,向着我照亮,
+ 我的心不再隐藏,完全的摆上,
+ 愿主爱来浇灌我,在爱中得自由释放。
+ 我愿意降服,我愿意降服,
+ 在你爱的怀抱中,我愿意降服。
+ 你是我的主,你是我的主,
+ 永远在你怀抱中,你是我…你是我的主。
+
+
+
+ 宣教的中国
+
+ 有一种爱像那夏虫永长鸣,春蚕吐丝吐不尽。
+ 有一个声音催促,我要勇敢前行,
+ 圣灵在前引导我的心。
+ 迈开步伐向耶路撒冷,风霜雪雨,意志更坚定,
+ 我要传扬,传扬主的名,誓要得胜在神的国度里。
+ 我带着使命向前走,要唤醒沉睡的中国,
+ 纵然流血的时候,我也永远不回头。
+ 我带着异像向前走,要看到宣教的中国,
+ 将福音传遍世界每个角落。
+
+
+
+ 万王之王 万主之主
+
+ 万王之王,万主之主,荣耀 哈利路亚*2
+ 耶稣 平安的王 荣耀 哈利路亚*2
+
+
+
+ 我的神,我要敬拜你
+
+ 我的神我要敬拜你,我的心深深地爱你
+ 在你的座前,我思想你恩典,我的心赞美敬拜你。
+ 你是我心灵的满足,你是我唯一的喜乐,
+ 在你的座前,我思想你恩典,我的神我要敬拜你。
+
+
+
+ 主你是我最知心的朋友
+
+ 主你是我最知心的朋友,主你是我最亲爱的伴侣。
+ 我的心在天天追想着你,渴望见到你的面。
+ 在我人生的每一个台阶,在我人生的每一个小站,
+ 你的手总是在挽拉着我,把我带在你身边。
+ 告诉我当走的路,没有滑向死亡线,
+ 你爱何等的长阔高深,我心发出惊叹,
+ 有了主还要什么,我心与主心相连,
+ 我已起誓要跟随主,永不改变。
+
+
+
+ 你的恩典
+
+ 你的恩典每天够我用,纵有困难也不会逃避,
+ 有你与我一起,我还惧怕什么,
+ 赐我勇气去改变自己。
+ 啊 啊 耶稣 耶稣 耶稣,
+ 奉献一生皆因最爱是你,
+ 为了你,我愿将一切抛弃,耶稣 为要得着你,
+ (尾声)我已决定,我一生最爱是你。
+
+
+
+ 除你以外
+
+ 除你以外,在天上我还能有谁,
+ 除你以外,在地上我别无眷恋,
+ 除你以外,有谁能擦干我眼泪,
+ 除你以外,有谁能带给我安慰,
+ 虽然我的肉体和我的心肠,渐渐地衰退,
+ 但是神是我心里的力量,是我的福分直到永远。
+
+
+
+ 我的心,你要称颂耶和华
+
+ 我的心,你要称颂耶和华,不可忘记他的恩惠。
+ 他赦免你一切过犯罪孽,医治你疾病复原。
+ 我的心,你要称颂耶和华,不可忘记他的恩惠。
+ 他以仁爱慈悲为你冠冕,为受屈的人伸冤
+ 天离地有何等的高,他的慈爱也何等的深,
+ 东离西有多么的远,他使我的过犯也离我多远。
+ 耶和华有怜悯的爱,且有丰盛无尽的恩典,
+ 从亘古直到永远,耶和华,他是我的神。
+
+
+
+ 你若快乐
+
+ 你若快乐,你就拍拍手(2遍)
+ 你若快乐你知道,生命自然会流露,
+ 你若快乐你就拍拍手。
+ *跺跺脚 *拍拍头 *转个圈 *哈哈笑
+
+
+
+ 耶稣你是宝贵
+
+ 耶稣你是宝贵,你对我真宝贵,
+ 你流宝血洗净我,你爱使我自由,
+ 我只想天天来赞美你,我只想要彰显你的名。
+ 主啊我爱你 我要更爱你。
+ 我只想一生来侍奉你,我只想要荣耀你的名。
+ 主啊我爱你 我要更爱你。
+
+
+
+ 有一双手
+
+ 曾有一双手让盲者复明,生命见光,焕然一新。
+ 他奇妙的手曾抚慰着我领我走向光明。
+ 奇妙的恩典让我又得着美好的新生命。
+ 我永远歌颂,我永远赞美,你那奇妙的双手,
+ 哦 主 你那奇妙的双手,哦 主 你那慈爱的双手。*
+
+
+
+ 全新的你
+
+ 你说阴天代表你的心情,雨天更是你对生命的反应,
+ 你说每天生活一样平静,对于未来没有一点信心,
+ 亲爱朋友你是否曾经,曾经观看满天的星星,
+ 期待有人能够了解你心,能够爱你赐你力量更新。
+ *耶稣能够将一切都更新,耶稣能够体会你的心情。
+ 耶稣能够改变你的曾经,耶稣爱你,耶稣疼你,
+ 耶稣能够造一个全新的你!*
+
+
+
+ 有一位神
+
+ 有一位神,有权能创造宇宙万物,
+ 也有温柔双手安慰受伤灵魂。
+ 1 有一位神,有权柄审判一切罪恶,
+ 也有慈悲体贴人的软弱,
+ 2 有一位神,他坐在荣耀的宝座,
+ 却死在十架挽救人堕落,
+ 有一位神,我们的神,唯一的神,名叫耶和华,
+ 有权威荣光,有恩典慈爱,是昔在今在永在的神!
+
+
+
+ 赐我自由
+
+ 赐我自由的灵阿求你来,来到我的里面,来到我的生活。
+ 赶走生活中的愁烦,驱走我心中的不安。
+ 你的灵阿,在哪里,哪里就有自由,
+ 世界虽有劳苦重担,求你灵来赐我自由。
+
+
+
+ 耶稣会释放你
+
+ 我们在此站立在主前,有人软弱,有人刚强,
+ 让我们一起向主来歌唱,接受完全的爱。
+ 我们在此站立在主前,无论流泪或是喜乐,
+ 有一个地方有慈爱和力量,我们到他里面。
+ 哦就是耶稣!耶稣!他会释放我!
+ 哦就是耶稣,耶稣!使我得胜利!
+
+
+
+ 不一样的天空
+
+ 亲爱的朋友,你可曾知道,
+ 有一片天空,有着不一样的笑容;
+ 亲爱的朋友,你可曾知道,
+ 有一道彩虹,写着那永恒的约定。
+ 不一样的天空,不一样的笑容,
+ 不再有劳苦愁烦,不再有罪孽牵绊,
+ 不一样的天空,不一样的彩虹,
+ 充满着生命的应许,
+ 将无限的爱从十字架洒落。
+
+
+
+ 进入主的同在
+
+ 亲爱的朋友,你可曾知道,
+ 有一片天空,有着不一样的笑容;
+ 亲爱的朋友,你可曾知道,
+ 有一道彩虹,写着那永恒的约定。
+ 不一样的天空,不一样的笑容,
+ 不再有劳苦愁烦,不再有罪孽牵绊,
+ 不一样的天空,不一样的彩虹,
+ 充满着生命的应许,
+ 将无限的爱从十字架洒落。
+
+
+
+ 我一生要赞美你
+
+ 高唱主我爱你,高举我双手来赞美你,
+ 我的心充满欢喜,我要歌唱来颂扬你,
+ 高唱哈利路亚,我的心充满欢欣,
+ 高唱主我爱你,我一生要赞美你。
+
+
+
+ 我以祷告来到你跟前
+
+ 我以祷告来到你跟前,我要寻求你。
+ 我要站在破口之中,在那里我寻求你。1 to *
+ 主我是软弱及无助,你却是我的力量,
+ 以你亲切的手引导我,那就是我的得胜。2 to *
+ *每一次我祷告,我摇动你的手,
+ 祷告做的事,我的手不能做。
+ 每一次我祷告,大山被挪移,
+ 道路被铺平,使列国归向你。*
+
+
+
+ 深触我心
+
+ 耶稣诚然担当,我们的忧患,背负我们痛苦;
+ 耶稣为我们的过犯受害,为我们的罪孽压伤;
+ 因你受的刑罚我们得平安,
+ 因你受的鞭伤我们得医治,完全得医治。
+ 感谢耶稣,我的救主,我得平安,我得医治,
+ 我的耶稣,爱我的主,你的恩典深触我心。
+
+
+
+ 我对你的爱永不变
+
+ 你开了我的耳我的眼,我的嘴将称颂你到永远;
+ 你的意念高过我的思想,如同天高过地。
+ 全地都要来赞美你,我跪拜你面前称颂你,
+ 山虽动摇,地虽改变,我对你的爱永不变。
+
+
+
+ 世上的水
+ 你辞别了家乡千万里,今要往哪里去,
+ 你度过了风浪一重重,力量还剩几许;
+ 当灯下无人独自处,你可曾问自己,
+ 难道说人生匆匆过,换心酸泪满腮。
+ 耶稣基督,耶稣基督,你可知道他能他肯他正带你路,
+ 这世上的水喝了还要渴,人若喝了还要再渴。
+ 主要赐你喜乐活江河,一直流流到永生。
+ (The end)一直流流到永生。
+
+
+
+ 分别为圣
+ 阿爸天父 我主,感谢你救赎我,
+ 我堕落时,你伸出双手,照我本相接纳我;
+ 阿爸天父 我主,感谢你拣选我,
+ 我愿一生来传扬你名,我对你爱永不改变。
+ 喔~主,喔~主,喔~主,你是我最心爱的,
+ 我永不回头,永远不回头,即使我软弱。
+ 喔~主,喔~主,喔~主,我愿献上我的一生,
+ 求你使用我,求你使用我,我愿被分别为圣。
+
+
+
+ 生命的执着
+
+ 你是我心中,我心中唯一的诗歌,
+ 我要向你尽情的歌唱,向你献上最真诚的爱。
+ 你是我心中我心中唯一的切慕,
+ 我要一生紧紧地跟随,让你牵我走天路。
+ 主啊,唯你知我的软弱,你知我最深的意念,
+ 无论在何时,无论在何处,你亲手领我前行,
+ 除你以外,在天我还能有谁,
+ 除你以外,在地也无所爱,
+ 哦我心渴望,我灵切慕,在你荣耀同在中。
+ 哦主!哦主你是我生命唯一的执著。
+
+
+
+ 从太阳出来之地
+
+ 从太阳出来之地,直到日落处的那边,
+ 主的名当赞美的。(2遍)
+ 赞美主名,神的儿女要赞美,赞美主的圣名,
+ 赞美主圣名,从今时直到永远,赞美主的圣名。
+
+
+
+ 主啊 我到你面前
+
+ 主啊,我到你面前,献上我的今天,
+ 我的身体,我的一切,献上当作活祭。
+ 主啊,我到你面前,献上我的今天,
+ 求你更新,求你洁净,我的心思意念。
+ 我与你同钉十架,如今不是我活着,
+ 因我知道你是深爱我,我只为你而活,
+ 主啊,我到你面前,献上我的今天,
+ 愿我一生,蒙你悦纳,成为你的喜悦。
+
+
+
+ 你爱永不变
+
+ 你流出宝血,洗净我污秽,将我的生命赎回,
+ 为了我的罪,牺牲永不悔,显明你及大恩惠,
+ 我深深体会,你爱的宝贵,献上自己永追随,
+ 或伤心或气馁,或生离或死别,
+ 愿刚强壮胆永远不后退。
+ * 哦~你爱永不变,从今直到永远,
+ 深深浇灌我心田,或天旋或地转,
+ 经沧海历桑田,都不能叫我与你爱隔绝。
+
+
+
+ 生命的河
+
+ 生命的河,喜乐的河,缓缓流进我的心窝。
+ 我要唱那一首歌,唱一首天上的歌,
+ 头上的雾云心里的忧伤,全都消没!!!
+
+
+
+ 轻轻听
+
+ 轻轻听,我要轻轻听,我要侧耳听我主声音;
+ 轻轻听,他在轻轻听,我的牧人认得我声音。
+ * 你是大牧者,生命的主宰,我一生只听随主声音;
+ 你是大牧者,生命的主宰,我的牧人认得我声音。
+
+
+
+ 让赞美飞扬
+
+ 在这美丽的时刻,我们相聚在一起,
+ 神的爱拥抱着我们,神的灵充满这地。
+ 当称谢进入他的门,当赞美进入他的院。
+ 击鼓跳舞扬声欢呼,凡有气息都要赞美他。
+ * 让赞美从四处响起,让音符在空中飞舞,
+ 让我们的心向神敞开,让赞美从四处响起,
+ 让音符在空中飞舞,让我们的心向神敞开。
+
+
+
+ 因你与我同行
+
+ 因你与我同行,我就不会孤寂,欢笑时你同喜,忧伤时你共泣.;因你是我力量,我就不会绝望,
+ 困乏软弱中有你慈恩我就得刚强。
+ * 经风暴过黑夜,度阡陌越洋海,有你手牵引我,我就勇往向前,愿我所行路径,原我所历机遇,
+ 处处留下有你同在的恩典痕迹。
+
+
+
+ 主 我要遇见祢
+
+ 来到主前,谦卑跪下倾吐我心意,
+ 我心中伤痛,我眼泪流主必不轻看,
+ 人生道路如此坎坷,有许多无奈,
+ 我来到主前叩门寻找,恳求主开路。
+ (副)主我要遇见祢,主我心渴慕祢,
+ 主我只要有祢,生命窄路与我同过,
+ 主让我遇见祢,主让我得着祢,
+ 主我要祢自己,主祢自己,我主。
+
+
+
+ 如鹿切慕溪
+
+ 神啊,我的心切慕你如鹿切慕溪水,
+ 惟有你是我心所爱,我渴慕来敬拜你。
+ 你是我的力量盾牌,我灵单单降服于你,
+ 惟有你是我心所爱,我渴慕来敬拜你。
+ 48 我们有伟大奇妙神 C
+ 我们有伟大奇妙神,他创造天地和万物,
+ 我们有伟大奇妙神,他使瞎眼看见,瘸腿能行走。
+ * 在他没有难成的事,在他没有难成的事。
+ 噢,全能的上帝,在你没有难成的事,
+ 在你没有难成的事,在你没有难成的事。
+
+
+
+ 我们有伟大奇妙神
+
+ 我们有伟大奇妙神,他创造天地和万物,
+ 我们有伟大奇妙神,他使瞎眼看见,瘸腿能行走。
+ * 在他没有难成的事,在他没有难成的事。
+ 噢,全能的上帝,在你没有难成的事,
+ 在你没有难成的事,在你没有难成的事。
+
+
+
+ 我在这里赞美
+
+ 我在这里赞美,我在那里赞美,
+ 我在任何地方都是要赞美,
+ 我在这里赞美,我在那里赞美,
+ 我在任何地方都是要赞美,啦…… *祷告 *感谢 *敬拜
+
+
+
+ 野地的花
+
+ 野地的花,穿着美丽的衣裳,
+ 天空的鸟儿从来不为生活忙。
+ 慈爱的天父,天天都看顾。
+ 他更爱世上人,为他们预备永生的路。
+ 一切需要,天父都已知道,
+ 若心中烦恼,让他为你除掉。
+ 慈爱的天父,天天都看顾。
+ 他是全能的主,信靠他的人真是有福。
+
+
+
+ 耶稣爱你
+
+ 这世界有个千年不变道理,那就是耶稣爱你,
+ 在世上没有任何的逼迫患难,
+ 能使我们与神的爱隔绝。
+ 你是否愿意同为神的儿女,一生让耶稣爱你,
+ 在世上没有任何的困苦愁烦,
+ 能使我们与神的爱隔绝。
+
+
+
+ 耶稣你名真甘甜
+
+ 耶稣啊耶稣,你名真甘甜,哈利路亚;
+ 耶稣啊耶稣,你是我所爱。
+ 提到你我就不再伤心,
+ 噢,提到你我就歌唱欢喜,
+ 提到你我就荣主圣名,耶稣~~,你是我所爱。
+
+
+
+ 愿意爱你
+
+ ※求你给我,爱你的心,永远坚定,永远不移,
+ 让我爱你,不再是我的嘴唇话语而已(※二次)。
+ 让我真正献上自己,热心事奉只因爱你,
+ 愿你喜悦我的生命,问心无愧说我爱你,
+ 主啊,我愿献上自己,愿意事奉只因爱你,
+ 愿你喜悦我的生命,愿这一生单单爱你。
+
+
+
+ 以色列的圣者
+
+ 以色列的圣者,为我牺牲自己,
+ 神羔羊,你是弥赛亚,耶稣和平之君。
+ 我要跪下来敬拜你主啊!因为你是万王之王。
+ 我要跪下来敬拜你我神!宝贵耶稣,和平之君。
+
+
+
+ 赞美之泉
+
+ 从天父而来的爱和恩典,把我们冰冷的心溶解,
+ 让我们献出每个音符,把它化为赞美之泉,
+ 让我们张开口,举起手,向永生之主称谢,
+ 使赞美之泉流入,每个人的心间。
+
+
+
+ 起来荣耀
+
+ 起来荣耀 *3 我主耶稣,
+ 让我们荣耀 *4 荣耀主耶稣,
+ 让我们荣耀 *3 荣耀主。
+ 祢是大君王,胜过黑暗死亡,
+ 洗净心灵忧伤,带来喜悦平安,
+ 祢是全能神,掌管世上万有,
+ 除去罪恶捆绑,赐给我新的生命。
+
+
+
+ 来高声唱
+
+ ※来高声唱,来高声唱,让我们来赞美尊崇大君王(※二次)。
+ 惟有他配得赞美,因祂是主,昔在今在快来君王。
+ 万膝要跪拜,万口都要承认,
+ 祂是主耶稣,祂是主耶稣,祂是主耶稣基督。
+
+
+
+ 一切歌颂赞美
+
+ 一切歌颂赞美,都归我主我的神,
+ 你是配得歌颂与赞美。
+ 我们高声呼喊,高举耶稣圣名,哈利路亚,
+ ※赞美主,哈利路亚,
+ 赞美主,哈利路亚,哈利路亚(※二次)
+
+
+
+ 耶和华是我牧者
+
+ 耶和华是我牧者,我必不至缺乏,
+ 使我躺卧青草地,在安歇的水边。
+ 他使我灵魂苏醒,引我走正义路,
+ 我虽过死荫幽谷,也必不怕遭害。
+ 1. 在我敌人面前,为我摆设筵席,
+ 你用油膏我的头,使我福杯满溢。
+ 一生一世有恩惠,有慈爱跟随我,
+ 我要住在你殿中,直到永永远远。
+ 2. 嘿嘿呦,嘿嘿呦,主你与我同在,
+ 你的杖和你的竿,时时都安慰我。
+ 嘿嘿呦,嘿嘿呦,有慈爱跟随我,
+ 我要住在你殿中,直到永永远远。
+
+
+
+ 我们成为一家人
+
+ 我们成为一家人,因着耶稣因着耶稣,成为神儿女,
+ 我们成为一家人,因着耶稣因着耶稣,成为神国的子民。
+ (副)因着耶稣得洁净,因着耶稣入光明,
+ 因着耶稣同享复活的生命。
+ 同享生命的喜悦,同在主爱中连结,
+ 因着耶稣同受丰盛的产业。
+
+
+
+ 你是唯一
+
+ 世界有你(我)会更美好,没有人能像你(我),
+ 神的眼中你(我)是宝贝,在这世界你(我)就是唯一。
+ ※ 哦 你(我)是如此如此特别,在上帝的眼中,
+ 没有人能取代你(我) (※二次)
+
+
+
+ 我在这
+
+ ※我在这,是因祢恩典,我在这,是因祢慈爱,
+ 主耶稣,我如此感恩,都因祢丰盛恩典(※二次)。
+ (副) 感谢耶稣、耶稣、耶稣,感谢耶稣,
+ 只因着祢恩典,使我能为祢活,我赞美祢直到永远。
+
+
+
+ 我相信
+
+ 1. 我相信,你的应许,我相信,你的爱,
+ 我相信,你的真实,我相信,~~~你。
+ 2. 我相信,你的恩典,我相信,你能力,
+ 我相信,你智慧完全,我相信,~~~你。
+ 3. 我相信,你的救赎,我相信,你的犠牲,
+ 我相信,你流出宝血,我相信,你复活。
+ (副) 所以我来为要爱你,所以我来为要敬拜你。
+ 你在我身,作为可畏,我一生敬畏你。
+
+
+
+ 把我领到你宝血里
+
+ 耶稣求你进入我的心,用你大能的宝血遮盖我;
+ 开启我心灵,得着我生命,
+ 在你宝血里我就得洁净;
+ 耶稣求你进入我的心,用你大能的宝血释放我,
+ 进入你同在,领受你大爱,
+ 在你宝血里我献上敬拜。
+ 领我到你宝血里,所有罪恶必得赦免,
+ 更新我生命在你爱的宝血里面;
+ 领我到你宝血里面,领受丰盛奇妙恩典,
+ 更新我生命在你爱的宝血里面。
+
+
+
+ 深深爱你
+
+ 我生命中最渴望的一件事,
+ 切慕你,单单寻求你,
+ 用我全心全意,用我全力爱你,
+ 敬拜你让你荣耀充满全地。
+ 深深爱你,耶稣;深深爱你,耶稣。
+ 我爱你超越生命中一切。
+ 深深爱你,耶稣;深深爱,你耶稣。
+ 哦,我爱你,耶稣。
+
+
+
+ 如果你想知道
+
+ 如果你想知道,爱在哪里?爱就在你我的周围。
+ 如果你想知道,爱在哪里?
+ 爱就在每个人的笑脸上。
+ 爱在哪里?爱在哪里?爱就在神的爱子里。
+ 爱从何来?爱从何来?爱就是从神而来。
+
+
+
+ 他是配得
+
+ 同来看主耶稣的荣美,同来知道他奇妙恩惠,
+ 同来看他多么眷顾你,定睛他面上的大慈爱。
+ 同来摸他手上的钉痕,发现他真是奇妙良友,
+ 同来站在血红十架上,同证那永恒不渝的爱。
+ 他是配得,配得被赞美,
+ 他是配得,配得被赞扬,
+ 他是荣耀他真是奇妙,他是我所有一切。
+
+
+
+ 握手
+
+ 踏上十字架的道路,我的心绝不会后悔,
+ 纵然道路曲折难行,我的脚步不会后退。
+ 岁月流过不能再追,春去秋来落叶纷飞,
+ 我要因耶和华敬畏,等候他的必不至羞愧。
+ 向软弱挥挥手,向刚强握手,
+ 向悲伤挥挥手,向喜乐握手。
+ 走在十字架的道路,我的脚踪何等佳美,
+ 有时失望悄悄落泪,耶稣是我力量安慰。
+ 往事飞过只能回味,千山万水有主伴随,
+ 我要向耶和华赞美,扬声歌唱与主同饮杯。
+ 向世界挥挥手,向十架握手,
+ 往前走不回头,往前走莫停留。
+
+
+
+ 让爱走动
+
+ 走过伤心,走过泪水,让每一颗心,再次飞起来。
+ 用你的心,伸出你手,让每个灵魂,再次活过来。
+ 让爱走动,让你的爱化成希望的种子,
+ 随风扬起,编制美丽的梦。
+ 让爱走动,让你的爱化成温暖的拥抱,
+ 绽放阳光,编制神所造的梦。
+
+
+
+ 主的恩典乃是一生之久
+
+ 圣灵啊,求你来,我软弱,你明白,
+ 我无言,你叹息,亲自为我代求。
+ 你监察,我的心,使我走在属神旨意,
+ 你医治,我的灵,使我生命再绚丽。
+ 啊~啊~,我心不住赞美,啊~啊~我灵不住称谢,
+ 一宿虽有哭泣,早晨必欢呼,
+ 主的恩典乃是一生之久。*2
+
+
+
+ 牺牲的爱
+
+ 在十字架上,你为我舍命,受鞭伤,使我得医治。
+ 所有的罪恶,你为我担当,受刑罚,使我得平安。
+ 何等牺牲的爱,圣洁圣子成为赎罪祭,
+ 何等能力胜死亡权势,今我属你永活的真神。
+ 在这个时刻,我心只有你,我的主,我唯一的爱。
+
+
+
+ 愿为主闪亮
+
+ 我只是浩瀚沙海中的一粒沙,渺小且缺乏,
+ 而主耶稣接纳我深深地疼爱我,
+ 领我入主爱之家。
+ 他温柔慈爱,融解了我所有地忧伤,
+ 他奇妙双手,细数过我每一根头发。
+ 我如此不配,而主慈爱呼唤不曾停下,
+ 我一生一世愿为主闪亮。
+
+
+
+ 主赐福如春雨
+
+ 你赐的福如春雨,我在其中欢欣赞美你,
+ 你赐的生命是泉源,在我心中更新不穷,
+ 让我们张开赞美的口,举起敬拜的手,
+ 主将赐福在我们之中。
+ 让我们献上献上,将赞美尊荣,全都向主献上,
+ 而主将赐下赐下,主的恩典,将如春雨降下。
+
+
+
+ 阿爸父
+
+ 阿爸父,哦,阿爸父,我的心向你呼求!
+ 恳求你来洁净我,使我灵得自由。
+ 我的心渴慕见到你的荣面,让你爱将我怀绕,
+ 阿爸父,哦,阿爸父,在你脚前我等候。
+
+
+
+ 差遣我
+
+ 主告诉我,如何献上我的生命,
+ 带希望入人群中。
+ 主告诉我,如何付出我的关怀.,
+ 将温暖带入世界。
+ 我看到灵魂中的忧伤,
+ 孤独中人的心在角落颤抖。
+ 差遣我,差遣我,我愿付出我所有,
+ 差遣我到需要你的人群中,
+ 充满我,充满我,用你爱来充满我,
+ 再一次紧握他们的手。
+
+
+
+ 主我敬拜你
+
+ 主我敬拜你,敞开在你的面前,
+ 主我敬拜你,俯伏在你宝座前敬拜你。
+ 天军向你屈膝,众天使围绕你座前。
+ 主我双手举起,屈膝你宝座前敬拜你。
+
+
+
+ 光明之子
+
+ 你的汗,你的泪,你的血,
+ 洗净了我沉重的罪孽。
+ 引我走出世界的黑暗,圣洁公义从此相伴。
+ 光明之子,从此是我的名字,
+ 那用你宝血重价赎回的名字,
+ 光明之子,主所喜悦的名字,
+ 背起十架将主光带入人群里。
+
+
+
+ 荣耀都归你
+
+ 哈利路亚,荣耀归宝座羔羊,
+ 哈利路亚,荣耀都归你,荣耀都归你真神。
+ 我一生都要来敬拜你,哈利路亚,我的手我的口,
+ 我全心我全人,都要敬拜你。
+
+
+
+ 让我
+
+ 你用重价救赎我,使我脱离罪恶河,
+ 叫我这不配的人凭信得救,
+ 你赐圣灵帮助我,使我胜过老旧我,
+ 祈求恩主领我,迈向属灵高峰。
+ 让我赞美并非美词,让我敬拜并非方式,
+ 让我服事非靠双手,而祷告非仅用口,
+ 让我爱人不要虚假,让我待人由心而发,
+ 让我学习顺服,以圣洁为装饰。
+
+
+
+ 是祭司是器皿
+
+ 活在世界,有许多软弱,
+ 争战不断,迷失在彷徨中。
+ 忘记被拣选,火热渐渐冷却,
+ 求你亲自降临,点燃复兴。(反复1次)
+ *是祭司,有祷告的权柄,
+ 代求和献祭,宣告呼求能力。
+ 是器皿,受膏后要有使命,
+ 恳求洁净,听主说我要用你,
+ 听主声音对你说,我要用你。(耶稣说你)to*,
+ (尾声)你是否跟主回应说,我愿意。
+
+
+
+ 一生爱你
+
+ 亲爱的宝贵耶稣,你爱何等地甘甜;
+ 我的心深深被你吸引,爱你是我的喜乐
+ 一生爱你,一生敬拜你;一生爱你,一生荣耀你;
+ 一生奉献,一生不回头;一生爱你,跟随你。
+
+
+
+ 献上自己为祭
+
+ 献上自己为祭,完全降服于你,
+ 灵火熊熊来焚烧,恩膏厚厚湿衣襟。
+ 迈开征战步伐,高举基督旌旗,
+ 你看我们为华冠,以我们为精兵。
+ 让我们重建大卫倒塌的帐幕,
+ 我们起来堵住其中的破口,
+ 重修毁坏的祭坛,释放被掳的灵魂,
+ 愿你荣耀的国度降临。
+
+
+
+ 荣耀羔羊
+
+ 荣耀啊,荣耀羔羊,配得一切赞美尊崇敬拜。
+ 荣耀啊,荣耀羔羊,至圣至洁荣光充满全地。
+ 万物俯伏跪拜,万口宣扬,
+ 昔在今在永在全能主宰。
+ 颂赞、能力、爱戴,归宝座羔羊,
+ 全地唱、全地唱,哈利路亚。
+
+
+
+ Hi-Ne-Ni
+
+ 耶和华我的主啊!
+ 求你使我放下心中,放下心中所爱。
+ 耶和华我的主啊!
+ 求你使我打碎心中,心中偶像。
+ 直到我在敬拜中献上自己为祭,
+ 无怨无悔永不回头,
+ 直到我在祭坛那里得着命定,
+ 无怨无悔永不回头。
+ HI-NE-NI,HI-NE-NI,烧我、差我,我在这里,
+ HI-NE-NI,HI-NE-NI,烧我、差我,HI-NE-NI。
+ 为这世界黑暗的角落我在这里,
+ 为那不曾被安慰的灵魂。
+ 我在这里,HI-NE-NI,我在这里,HI-NE-NI。
+
+
+
+ 你是荣耀的君王
+
+ 你是荣耀的君王,你是和平之主,
+ 你是天地万有主宰,惟有你圣洁公义。
+ 天使都向你跪下,敬拜尊崇你。
+ 因为在你有永生之道,你是主耶稣基督。
+ 和散那归于大卫的之孙,和散那归于万王之王,
+ 愿荣耀归于至高神,耶稣是弥赛亚。
+
+
+
+ 我全心颂赞
+
+ 当我抬头见你,当我侧耳聆听你声音,
+ 我全心赞美,我传扬你奇妙作为*2
+ 我全心颂赞,你的荣美,我全人颂赞,你的作为,
+ 每日每夜我不停赞美,哈利路亚哈利路亚,阿们……。
+
+
+
+ 亲近你
+
+ 亲近你,心要亲近你;亲近你,心要贴近你。
+ 亲爱主,在你荣光中;不住亲近你;不住敬拜你。
+ 亲近你,在干旱之地;亲近你,聆听你声音。
+ 主我愿贴近你的心,顺服你旨意,讨主你欢欣。
+ 你的爱,使我灵苏醒,使我灵欢欣,我起舞敬拜你。
+
+
+
+ 耶稣基督是主
+
+ 1.2.4. 因为他是万王之王,因为他是万主之主,
+ 唯有他从死里复活,我要敬拜他。*2 to#
+ 3. 高唱荣耀哈利路亚,欢呼荣耀哈利路亚,
+ 他是我的主我的王,我要敬拜他。To ~
+ # 万膝要跪拜,万口要承认,耶稣基督他是主。
+ 万膝要跪拜,万口要承认,耶稣基督他是主。To 3
+ ~ 哈利路亚,哈利路亚,耶稣基督他是主。
+ 哈利路亚,哈利路亚,耶稣基督他是主。To 4
+
+
+
+ 平安七月夜
+
+ 夜星在天上闪闪烁,月娘光光照溪边,
+ 大树下,风微微,听到树蝉在吟诗,
+ 上帝赏赐的平安冥。
+ 耶和华是我的安慰,依靠他拢免惊什么。
+ 虽遇到风台天,他给我心有平静,
+ 将平安放在我的内心。
+ 我过死荫山谷也不惊灾害,
+ 他会和我在伫地,用话来安慰我。
+ 有恩典和慈爱和我相作伴,有平安跟我一世人。
+
+
+
+ 主,恳求你
+
+ 主,求你察看我,试验我,熬炼我的肺腑心肠。
+ 主,求你转向我,怜恤我,因为我是孤独困苦。
+ 主,求你赦免我,看顾我,因为我的罪极重大。
+ 主,求你保护我,搭救我,因为我永远投靠你。
+ 主恳求你引到我,教训我,你是拯救我的神。
+ 主恳求你医治我,保守我,我终日等候仰望你。
+
+
+
+ 心仰望耶稣
+
+ 既然有这么多的见证人,像云彩围绕着我们,
+ 就应该放下各样重担,脱下缠类我们的罪。
+ 既然有这么多的见证人,像云彩围绕着我们,
+ 以忍耐的心向前奔跑,那摆在我们前面的路程。
+ 让我们专心、专心仰望耶稣,那信心的创始完成者,
+ 以合一的心并存忍耐,奔跑我们前面的路程。
+ 让我们专心、专心仰望耶稣,旷野中的安慰引领者,
+ 以喜乐的心并存盼望,奔跑我们前面的路程。
+
+
+
+ 我的救赎者活着
+
+ 我知道我的救赎者活着,祂是永活的主,
+ 当我在深谷迷失时,祂领我走正义路。
+ 我知道我的救赎者活着,祂是永活得主,
+ 当我在旷野孤独时,祂伴我作我的灯。
+ 我知道我的救赎着永远活着,我的心不再忧虑,
+ 我要在每一个日夜中,领受祂的丰盛慈爱。
+ 我知道我的救赎者永远活着,我灵不再沉睡,
+ 当号角响起的那一天,我将见祂荣光之面。
+
+
+
+ 我们一起祷告吧
+
+ 我们一起祷告吧,来到主跟前,屈膝跪拜;
+ 祂是赐福的主,我们向着天,举起双手,
+ 求你打开天上门,将丰沛的恩雨,
+ 滋润充满整个大地;
+ 终于看到主降临,应许的圣灵,浇灌在我们的身上。
+
+
+
+ 爱、喜乐、生命
+
+ 时空不能隔绝他的爱,因他爱我直到万代。
+ 世界不能阻挡他的爱,因他爱我永不更改。
+ 他的爱胜过死亡阴霾,他的爱驱走忧愁悲哀。
+ 让主爱浇灌我们的心,喜乐泉源涌自心地。
+ 忧愁不再我们有喜乐的生命,
+ 让主爱充满我们的心,
+ 生命火花扬自心底,
+ 泪水不再我们有永恒的生命。
+
+
+
+ 追逐
+
+ 2007莫斯科福音夏令营主题曲
+ 曾经追求事业成功,曾经梦想自由天堂,
+ 曾经寻找爱的港湾,却在罪中迷失了方向。
+ 亲爱的主把我召唤,宝血洗净我不再彷徨,
+ 赐我生命引领方向,从此主爱与我相伴。
+ *追逐十架的天堂,跨越生命的约旦,
+ 进入主爱的迦南,享受生命平安!TO*
+
+
+
+ 你是我生命的亮光
+
+ 耶稣是我生命的亮光,照亮我的前方。
+ 虽有暴风雨把我挡,注目我的亮光。
+ 祂(你)使我生命重新得力,使我抬头高昂;
+ 祂(你)使我如鹰展翅上腾,飞跃在高岗上。
+
+
+
+ 主我跟你走
+
+ 主你跟我走,往普天下走 ,
+ 天涯海角紧紧抓住我 。
+ 主我跟你走 ,往普天下走 ,
+ 死荫幽谷紧紧跟你走 。
+ 因你是,万王之王,万主之主 ,
+ 有你跟着我 我还怕什么,
+ 因你已 战胜死亡,得胜君王,
+ 这信心的路 我永不回头。
+ 开启我的眼,信心的双眼,
+ 看那天使天军在身边。
+ 塑造我的心,谦卑地聆听,
+ 你的话语深植在我心。
+
+
+
+ 生命在于你
+
+ 生命,在于你,主!力量,在于你,主!
+ 盼望在于你,在于你。
+ 我要以生命来赞美你,我要尽全力来赞美你,
+ 全心赞美你,全力赞美你,我的盼望在于你,
+
+
+
+ 天上我有个家
+
+ 我知道地上的财富都是短暂,可是我拥有一件永恒的礼物。
+ 我知道天上有一个美丽的天堂,告诉你,我天上有个家。
+ 小鸟自由地在飞翔,像表演一样发出悦耳的声音。
+ 花儿每天穿上美丽的衣裳,告诉你,是多么的美丽。
+ 在天上我有个家,让我们一起奔向这个家。
+ 用我的爱,用我的心,来一起建立这个家。
+
+
+
+ 全然为你
+
+ 我的眼光和心思,单单注视你,喔!耶稣。
+ 随着你心律动,甜蜜的灵来充满我。
+ 放下为自己抓住的,放手交给你,我的主。
+ 我愿使你欢喜,对你的爱不断涌流。
+ 我生命气息全然为你,如同香膏倾倒,
+ 无悔地付出,只愿你心得满足。
+ 我生命气息全然为你,如同香膏倾倒,
+ 全心来献上,最深刻真挚的爱。
+
+
+
+ 每当我瞻仰你
+
+ 每当我瞻仰你至圣荣面,每当我在爱中仰望你。
+ 在你荣耀光中,所有一切都失去光彩。
+ 何等喜乐当我进入你心意,
+ 我全心成为你爱的宝座,
+ 在你荣耀光中,所有一切都失去光彩。
+ 我敬拜你,我敬拜你,我一生活着为要敬拜你。
+ 我敬拜你,我敬拜你,我一生活着为要敬拜你。
+
+
+
+ 宝贵十架
+
+ 主耶稣我感谢祢,祢的身体为我而舍,
+ 带我出黑暗进入光明国度,使我再次能看见。
+ 主耶稣我感谢祢,祢的宝血为我而流,
+ 宝贵十架上医治恩典涌流,使我完全得自由。
+ 宝贵十架的大能赐我生命,
+ 主耶稣我俯伏敬拜祢,
+ 宝贵十架的救恩,是祢所立的约,
+ 祢的爱永远不会改变。
+
+
+
+ 耶稣耶稣
+
+ 耶稣,哦~耶稣,圣洁的救赎主;
+ 耶稣,耶稣,丰富赏赐者。
+ 耶稣,哦~耶稣,至高的得胜者;
+ 耶稣,耶稣,全能的之主。
+ 让凡有气息都说,圣哉,圣哉,圣哉。
+ 你是昔在永在的全能主永不改变;
+ 让凡有气息都说,圣哉,圣哉,圣哉。
+ 唯有你是佩得一切荣耀、尊贵和颂赞。
+
+
+
+ 靠着耶稣得胜
+
+ 在你爱里我要宣告,我软弱得改变,
+ 在你爱里我要宣告,你是王。
+ 在你爱里我要宣告,我不再罪中打转,
+ 是你带领着我得胜。
+ 靠着耶稣得胜,靠着耶稣得胜,
+ 终此生要靠着主爱去得胜。
+ 靠着耶稣得胜,靠着耶稣得胜,
+ 不必惧怕挫败,深知主恩更广阔,
+ 是你带领着我得胜。
+
+
+
+ 心的回归
+
+ 伊甸的美景早已一去不回,
+ 受伤的白鸽难以展翅高飞,
+ 园中的鲜花早以凋谢枯萎,
+ 哭泣的心灵何时能以安慰,
+ 髑髅的山顶无辜羔羊替罪,
+ 永恒的救赎成就奇妙宏伟,
+ 黑暗的大地再见黎明光辉,
+ 疲惫的心灵终又重蒙恩惠。
+ 将你的心归回,让你的灵高飞,
+ 耶稣爱你,他在等你,他是你生命中唯一宝贵。
+ 将你的心归回,让你的灵高飞,
+ 耶稣爱你,他在等你,他是你生命中的永远依归。
+
+
+
+ 这一生最美的祝福
+
+ 在无数的黑夜里,我用星星画出你,
+ 你的恩典如晨星,让我真实的见到你;
+ 在我的歌声里,我用音符赞美你,
+ 你的美好是我今生颂扬的。
+ 这一生最美的祝福,就是能认识主耶稣,
+ 这一生最美的祝福, 就是能信靠主耶稣。
+ 走在高山深谷,他会伴我同行,
+ 我知道,这是最美的祝福 。
+
+
+
+ 展开清晨的翅膀
+
+ 主耶和华你已经鉴察了我。我坐下我起来你都已晓得。
+ 我行路,我躺卧,你都细察,你也深知我一切所行。
+ 我舌头上的话,你没有一句不知道。
+ 你在我前後环绕着我,按手在我身上。
+ 这样的奇妙,是我不能测透,
+ 你的至高你的尊贵,是我永远不能所及。
+ 我可以往哪里去躲避你的灵?
+ 我可以往哪里去逃可躲避你的面?
+ 我若展开清晨的翅膀飞到地极,
+ 就在那里,你的双手也必引导我。
+
+
+
+ 安静
+
+ 1- 藏我在,翅膀荫下;遮盖我,在你大能手中。
+ 2- 我灵安静,在基督里;你大能,使我安然信靠。
+ 副歌:当大海翻腾波涛汹涌,我与你展翅暴风上空;
+ 父你仍作王在洪水中,我要安静知你是神。
+
+
+
+ 花尽一生来爱你
+
+ 你使我感动到流泪,又使我心甜到发笑;
+ 想着你暖流涌上心头,再次心醉你神圣荣耀。
+ 这一生不再追求别的,但以认识你为至宝;
+ 让这爱在我灵魂燃烧,得着你也被你得着。
+ 花尽一生来爱你,花尽一生来爱你
+ 愿我一生不知别的,但知基督并他钉十架;
+ 花尽一生来爱你,花尽一生来爱你,
+ 我愿花尽一生来爱你,花尽一生来爱你!
+
+
+
+ 天堂在我心
+
+ 谁说,沉睡已久的花蕾,不能绽放一季缤纷;
+ 谁说,寒冬之后的大地,不能展现一片青翠;
+ 谁说,曾经受伤的翅膀,不能再度自由地飞。
+ 我要抬起头,张开双臂,拥抱神所赐的世界。
+ i want to be free 自由地飞,
+ 在爱中无惧怕,在爱中无伤悲;
+ i want to be free 不再流泪,
+ because i believe that heaven is here
+ 我有天堂在我的心。
+
+
+
+ 耶稣耶稣
+
+ 我们敬拜的,和平之君;我们称颂的,明亮的晨星;
+ 我们等候的,再来的王,我们仰望的,公义的太阳。
+ 耶稣!耶稣!永生神的儿子,耶稣!耶稣!我的救赎主,
+ 耶稣!耶稣!世界的光,耶稣!耶稣!我心所盼望。
+
+
+
+ 常常喜乐
+
+ 常常喜乐,向主高歌,不论环境如何,
+ 高山或低谷,主都看顾,相信就能蒙福;
+ 常常祷告,耐心等候,主做事有定时,
+ 流泪撒种必欢呼收割,相信就有喜乐;
+ 下垂的手再一次举起来,封闭的心再一次敞开,
+ 抛开一切忧虑,放下一切重担,来到主的面前我喜乐满怀,
+ 冰冷的心被主爱来温暖,干渴的灵被主爱充满,
+ 主是我的力量,主是我的高台,
+ 死阴幽谷一路有耶稣陪伴,他永不离开。
+
+
+
+ 求主充满我
+
+ 主 我来寻求你的面,求你充满我,来充满我;
+ 主 我渴慕你的同在,求你洁净我,来充满我;
+ 耶稣耶稣,耶稣耶稣,你的宝血洗净我;
+ 耶稣耶稣,耶稣耶稣,你以恩典为我冠冕。
+
+
+
+ 彩虹下的约定
+
+ 我空虚的心灵,终于不再流泪;
+ 期待着雨后,缤纷的彩虹,诉说你我的约定;
+ 我不安的脚步,终于可以停歇,
+ 主你已为我,摆设了生命的盛宴。
+ 与你有约,是永恒的约,彩虹为证,千古不变。
+ 我要高歌,为生命喜悦,万物都歌颂你的慈爱;
+ 大地诉说你的恩典!
+
+
+
+ 认识你真好
+
+ 如同朝露中的小草,蓝天中的小鸟;
+ 我整颗心被幸福围绕,哦 我慈爱的天父,
+ 认识你真好,你赐的福分别处找不着
+ 你使我抛开一切烦恼,喜乐充满在心头燃烧;
+ 认识你真好,认识你真好,今生今世我不再寻找。
+ 哦主啊,认识你真好,认识你真好,
+ 只愿分分秒秒在你慈爱的怀抱。
+
+
+
+ 爱的色彩
+
+ 这个世界是什么颜色,每个人都看不太清楚;
+ 放眼望去是黑白没有色彩,因为世人都太孤独;
+ 有了爱,世界就不一样,所有的影像有了颜色;
+ 就像蝴蝶充满活力,找到美丽嫣红的玫瑰;
+ 相信爱,我们心中充满快乐,
+ 因为爱,我们相聚在一起;
+ 让我们手牵手、心连心,犹如奔向彩虹世界里。
+
+
+
+ 给我清洁的心
+
+ 求你按你的慈爱怜恤我,
+ 按你的慈悲涂抹我的过犯,
+ 我知道我的罪恶在我面前,
+ 我的罪恶也常在你的眼前,
+ 神啊 求你不要离我而去,
+ 再次对我显现你的荣面。
+ 不要 不要 掩面不顾我,求你听我的祷告。
+ 神啊,求你为我造清洁的心,
+ 使我里面重新有正直的灵,
+ 不要丢弃我,使我离开你的面,
+ 不要收回你的圣灵。
+
+
+
+ 在主爱中
+
+ 清晨朝阳,天空照耀,仿佛对我微微笑,
+ 阵阵微风,徐徐吹送,逍遥自在白云飘;
+ 鸟语花香,绿草如茵,青春时光多美好,
+ 尽情欢唱,尽情欢笑,烦恼全都不见了。
+ 在基督里,享受主爱,自由奔放乐开怀,
+ 世上没有任何事物,能隔绝神的爱;
+ 在基督里,享受主爱,自由奔放乐开怀,
+ 我要赞美,我要歌颂,造物主的奇妙爱。
+
+
+
+ 眼光
+
+ 不管天有多黑,星星还在夜里闪亮,
+ 不管夜有多长,黎明早已在那头盼望,
+ 不管山有多高,信心的歌把它踏在脚下 ,
+ 不管路有多远,心中有爱仍然可以走到云端。
+ *谁能跨过艰难,谁能飞跃沮丧,
+ 谁能看见前面,有梦可想,
+ 上帝的心看见希望,你的心里要有眼光。1 to *
+ 2 to噢,你的心里要有眼光。
+
+
+
+ 让神儿子的爱围绕你
+
+ 1. 让神的儿子以祂圣灵和祂爱来围绕你,
+ 让祂充满你心,使你灵满足。
+ 让祂担负你一切挂虑,赏赐平安的圣灵,
+ 降临在你生命中,使你完全。
+ 副:耶稣,主耶稣,求充满我们;
+ 耶稣,主耶稣,求充满我们。
+ 2. 哦!扬声欢呼歌唱赞美,让你心充满喜乐,
+ 举起双手甘愿顺服祂的名,
+ 将你的忧伤破碎心灵,痛苦岁月交给祂,
+ 你将靠着祂的名,进入永生。
+ 副:耶稣,主耶稣,求充满我们;
+ 耶稣,主耶稣,求充满我们。
+
+
+
+ 主祷文
+
+ 我们在天上的父,愿人都尊你的名为圣,
+ 愿你的国降临,愿你的旨意行在地上,如同行在天上。
+ 我们日用的饮食,今日赐给我们,
+ 免我们所欠的债,如同我们免了人的债,哈利路亚。
+ 不叫我们遇见试探,救我们脱离凶恶,
+ 因为国度、权柄和荣耀,全是你的,直到永远。
+ 我要一生一世寻求,在主殿中瞻仰荣美,
+ 因为国度、权柄和荣耀,全是你的,直到永远。
+
+
+
+ 紧紧抓住你
+
+ 我无助的时候,你给我力量,
+ 我害怕的时候,你紧紧抱住我,
+ 当我觉得我不行,你告诉我可以,
+ 你就是那最爱我的主。
+ 我紧紧抓住你,我永远不放手,
+ 我看到你独生子,为我钉死在十架上。
+ 我紧紧抓住你,我永远不放手,
+ 是你医治了我,是你从来没离开过我。
+ end - 我已看到我的未来,充满信心和盼望。
+
+
+
+ 改变我,改变世界
+
+ 许多次 我就象是那浮云,不知要往哪里去,
+ 而如今 我可以停止追寻,是你的爱填满我心,
+ 引领我与你同行。
+ 耶稣我恳求你,来改变我的生命,
+ 使我在患难之中,喜乐与刚强,
+ 耶稣我恳求你,使用我来改变这个世界,
+ 赐我信心与勇气,迈向这新的世纪
+ 愿你荣耀的国度,早日降临。
+
+
+
+ 耶稣基督是主
+
+ 因为祂是万王之王,因为祂是万主之主,
+ 唯有祂从死里复活 我要敬拜祂 (2X)
+ 万膝要跪拜,万口要承认,耶稣基督祂是主,
+ 万膝要跪拜,万口要承认,耶稣基督祂是主。
+ 高唱荣耀哈利路亚,欢呼荣耀哈利路亚,
+ 祂是我的主,我的王,我要敬拜祂,
+ 哈利路亚,哈利路亚,耶稣基督祂是主,
+ 哈利路亚,哈利路亚,耶稣基督祂是主。
+ The end - 耶稣基督祂是主(多次)
+
+
+
+ 你是配
+
+ 你是配 唯你是配,配得权柄丰富,配得智慧能力;
+ 你是配 唯你是配,配得尊贵荣耀和赞美 (2X)
+ 因为你曾被杀,用自己的血,从各族各方各国各民,
+ 买了人来,叫他们归于神,作祭司,在地上执掌王权。
+
+
+
+ 主啊,我们自卑
+
+ 主啊!我们自卑,祷告,寻求你面,
+ 转离一切恶行,专心寻求你。
+ 求你从天上垂听,此处所献的祷祈,
+ 主啊!赦免我们的罪,医治这地。
+ 睁眼看,侧耳听,我们痛悔的心灵,
+ 主啊!赦免我们的罪,医治这地。
+
+
+
+
+
+ 荣耀归于真神
+
+ 荣耀归于真神 祂成就大事
+ 为爱世人甚至赐下独生子
+ 献上祂生命为人赎罪受害
+ 永生门已大开 人人可进来
+
+ 荣耀归于真神 祂成就大事
+ 藉圣子耶稣我们得大欢喜
+ 至圣至尊荣我主耶稣基督
+ 将来得见主面 何等大恩福
+
+ 赞美主 赞美主 全地听主声音
+ 赞美主 赞美主 万民快乐高兴
+ 请来 藉主耶稣进入父家中
+ 荣耀归主 祂已成就大事工
+
+
+
+ 还愿
+
+ 我拿甚么报答耶和华所赐给我的一切厚恩
+ 我拿甚么报答耶和华所赐给我的一切厚恩
+ 我要举起救恩的杯
+ 称扬耶和华的名
+ 我要在祂众民面前还我所许的愿
+ 我要举起救恩的杯
+ 称扬耶和华的名
+ 我要在祂众民面前向还我所许的愿
+
+
+
+ 祝福
+
+ 愿耶和华赐福给你
+ 愿耶和华永远保护你
+ 愿耶和华祂的脸光照你
+ 愿耶和华赐你平安
+
+ 愿在主里相会再相会
+ 愿在主里相会再相会
+ 愿主的爱永远在你心怀
+ 愿神永远赐福给你
+
+ 愿耶和华赐福给你
+ 愿耶和华永远保护你
+ 愿耶和华祂的脸光照你
+ 愿耶和华赐你平安
+
+
+
+ 寻羊
+
+ 齐心倾出爱心
+ 凭着信宣告福音
+ 将基督传遍海角天涯
+ 配得起伟大救恩
+
+ 耶稣谦卑降生
+ 除罪困委托重任
+ 使初生灵性得到栽培
+ 添祝福教会见主荫
+
+ 携手去觅遍失落幼羊
+ 同去关心要让幼羊得供养
+ 愿以圣经说话作粮
+ 共去走天国方向
+ 豁此生齐努力作天将
+
+ 齐将携手去觅遍失落幼羊
+ 同去关心要让幼羊得供养
+ 愿以圣经说话作粮
+ 共去走天国方向
+ 豁此生齐努力作天将
+ 愿以爱心去助幼羊
+ 尽我生坚守方向
+ 同步往 齐向上 作天将
+
+
+
+ 谁造
+
+ 谁造绿草蝶扑花间起舞
+ 万鸟空中飞翔
+ 令我不胜赞好
+
+ 谁造大海漫遍天空色彩布
+ 耀眼发光星辰
+ 问你可否知道
+
+ 谁造麦子藏着生机于土里
+ 又会再生出来
+ 令我真想知道
+
+ 谁造天空海阔
+ 造了细小朝露
+ 谁造美妙乐章
+ 能让我赞美创造美好
+
+
+
+ 穿我耳
+
+ 穿我耳我主我神
+ 使我永远属于您
+ 我只求单事奉您
+ 主我愿随您因您
+
+ 您已为我付重价
+ 以您血拯救赎我
+ 我要永远事奉您
+ 不再属己只属您
+
+
+
+ 敬拜主
+
+ 敬拜主 敬拜尊贵的主
+ 荣耀能力一切赞美都归于祂
+ 敬拜主 敬拜权柄的主
+ 从祂宝座能力流出流到万民
+
+ 来高举一同高举主耶稣圣名
+ 来彰显基督耶稣君王荣耀
+ 敬拜主 敬拜尊贵的主
+ 祂曾舍命今得荣耀万王之王
+
+
+
+ 全能神
+
+ 全能神 全能神
+ 万主之主至高神
+ 因你名字的能力
+ 你永远都不改变
+
+ 全能神 全能神
+ 我深爱你全能神
+ 我要赞美高举你全能神
+
+
+
+ 只有您
+
+ 年月是悲喜都过去
+ 问路途上有几多相聚
+ 风沙里实很累
+ 奔跑过人就想睡
+ 只有您会明我弱躯
+ 谁料信心一天破碎
+ 问是谁为我跌倒洒泪
+ 身心我虽很累
+ 走到您处可安睡
+ 让我永远安躺这接纳里
+
+ 年月像风景倒退去
+ 在路途共您片刻欢聚
+ 关心里再不累
+ 安慰里人就不惧
+ 知道您我同有弱躯
+ 人遇绝境一切破碎
+ 问是谁为我痛苦洒泪
+ 挣扎里虽很累
+ 想到有您不畏惧
+ 前面奋斗多艰苦再面对
+
+ 长途中纵使您难永伴随
+ 歧途中分忧友情愿记取
+ 但愿两心里
+ 爱主不减退
+ 朝着主的心意共您追
+ 难料信心一天破碎
+ 又是谁为我跌倒洒泪
+ 身心我虽很累
+ 走到您处可安睡
+ 临到绝境一切破碎
+ 又是谁为我痛苦洒泪
+ 挣扎里虽很累
+ 想到有您不畏惧
+ 前面奋斗多艰苦再面对
+
+
+
+ 亲爱主
+
+ 亲爱主 牵我手
+ 坚立我 领我走
+ 我路途 布满雾 看不透
+ 你引路 过黑夜
+ 纵遇危难同渡过
+ 皆因你 紧握我 拖带我
+
+ 亲爱主 牵我手
+ 帮助我 去困忧
+ 我软弱 我困倦 我伤透
+ 我挫败 纵淌泪
+ 试问谁能明白我
+ 深相信 此刻你 拥抱我
+
+
+
+ 主自己
+
+ 前所要是福祉 今所要是主
+ 前所要是感觉 今要主话语
+ 前所要是恩赐 今要恩赐者
+ 前我寻求医治 今要主自己
+
+ 前自己力苦试 今惟主是靠
+ 前要一半救恩 今要全得救
+ 前用手坚持主 今主手牵我
+ 前常漂流无定 今锚已抛妥
+
+ 前我忙碌打算 今则靠祈祷
+ 前我时常挂虑 今有主看顾
+ 前随我之所欲 今则听主语
+ 前不住的求讨 今则赞美主
+
+ 前藉自己做工 今靠主工作
+ 前我欲利用主 今让主用我
+ 前欲得人称赞 今求主欢喜
+ 前为自己劳碌 今为主而活
+
+ 前惟盼望属主 今知主属我
+ 前我灯将熄灭 今照耀辉煌
+ 前所等的是死 今候主再临
+ 我心一切盼望 安妥在幔内
+
+ 永远高举耶稣 赞美主不息
+ 一切在耶稣里 因祂是我一切
+
+
+
+ 感谢神
+
+ 感谢神 赐我救赎主
+ 感谢神 丰富预备
+ 感谢神 过去的同在
+ 感谢神 主在我旁
+ 感谢神 赐温暖春天
+ 感谢神 凄凉秋景
+ 感谢神 抹干我眼泪
+ 感谢神 赐我安宁
+
+ 感谢神 祷告蒙应允
+ 感谢神 未蒙垂听
+ 感谢神 我曾经风暴
+ 感谢神 丰富供应
+ 感谢神 赐我苦与乐
+ 在绝望里得安慰
+ 感谢神 赐无限恩典
+ 感谢神 无比慈爱
+
+ 感谢神 赐路旁玫瑰
+ 感谢神 玫瑰有刺
+ 感谢神 赐家庭温暖
+ 感谢神 有福盼望
+ 感谢神 赐喜乐忧愁
+ 感谢神 属天平安
+ 感谢神 赐明天盼望
+ 感谢神 直到永远
+
+
+
+ 主的圣名
+
+ 主的圣名 高于世上
+ 谁可跟主我的主去相比
+ 高呼心中的创造主
+
+ 颂赞主(心中主) 颂赞主(心中主)
+ 曾用你血赐予我救赎厚恩
+ 我的心爱你
+ 一生永爱你
+
+
+
+ 我服事您
+
+ 我服事您
+ 因我深爱您
+ 您将生命赐给我
+ 前我失丧 今被您寻见
+ 您将生命赐给我
+
+ 忧伤 破碎心灵
+ 为此您被钉死加略山上
+ 您爱 是我所渴慕
+ 您将生命赐给我
+
+
+
+ 圣灵之歌
+
+ 噢让那主耶稣拥抱你
+ 用圣灵和祂的爱来满足你心和充满你的灵
+ 让祂背负你所有重担
+ 像鸽子主的灵
+ 降临在你生命使你得完全
+
+ 来用欢欣同唱这新歌
+ 因你心充满喜乐甜蜜举起双手降服主的名
+ 你将心里所有的眼泪
+ 并痛苦都交给神
+ 祂会使你一生与耶稣同行
+
+ 耶稣 啊耶稣 来充满我心
+ 耶稣 啊耶稣 来充满我心
+
+
+
+ 时常快乐
+
+ 我里面外面上面下面时常都快乐
+ 我里面外面上面下面时常都快乐
+ 主耶稣在我心 祂洗去我罪污
+ 我里面外面上面下面时常都快乐
+
+
+
+ 我歌颂你
+
+ 我歌颂你 尊贵的主
+ 藉你恩典 把我救赎
+ 你救赎我 代价极重
+ 我与天使向你歌颂
+
+ 我歌颂你 纵泪满襟
+ 忧伤来临 仍觉欢心
+ 因我回想 救主恩典
+ 使我唱歌快乐无边
+
+ 我歌颂你 直到离世
+ 不论在家 海洋陆地
+ 或经死亡 进入永生
+ 永永远远 我歌颂你
+
+ 我歌颂你 尊贵的救主
+ 用我口舌向你讴歌
+ 我歌颂你 永远歌颂你
+ 因你喜乐 已充满我
+
+
+
+ 全地宣告
+
+
+
+
+
+ 全地宣告
+
+ 全地宣告 荣耀复活救世主
+ 无与伦比 救世主耶稣荣美
+ 祂是永永远远 在宝座上羔羊
+ 欢欣跪拜我主 只想敬拜祂名
+
+ 我要宣告 荣耀复活救世主
+ 被杀羔羊 世人得与神和好
+ 你是永永远远 在宝座上羔羊
+ 欢欣跪拜我主 只想敬拜你名
+
+
+
+ 不再陌生
+
+ 祇要用爱心 献每一分
+ 世间充满快乐人
+ 原是与你 共同进退
+ 彼此增添温暖感
+
+ 祇要在我心 从来不分
+ 贫贱贵族过路人
+ 惟愿世界 热情满载
+ 无限祝福心里印
+
+ 轻轻一声亲切慰问
+ 谈谈愿望近况将来
+ 不需要介意 交出这份爱
+ 同行没法再陌生
+
+ 祇要待你真 谣言不侵
+ 彼此开心笑面迎
+ 随着节奏 尽情去唱
+ 无限祝福温暖 歌声中播送
+
+
+
+ 就在这天
+
+ 赞美我主 赞美我主
+ 为我预备 为我预备
+ 就在这天 就在这天
+ 我心中快慰 我心中快慰
+
+ 今天今天感激主恩赐
+ 一起分享当中的欢笑
+ 就在这天 就在这天
+ 感激主恩赐
+
+
+
+ 您真伟大
+
+ 主阿我神 我每逢举目观看
+ 您手所造 一切奇妙大工
+ 看见星宿 又听到隆隆雷声
+ 您的大工 遍满了宇宙中
+
+ 当我想到 神竟愿差祂儿子
+ 降世舍命 我几乎不领会
+ 主在十架 甘愿背我的重担
+ 流血舍身 为要赦免我罪
+
+ 当主再来 欢呼声响彻天空
+ 何等喜乐 主接我回天家
+ 我要跪下 谦恭的崇拜敬奉
+ 并要颂扬 神阿真伟大
+
+ 我灵高唱 赞美救主我神
+ 您真伟大 何等伟大
+ 我灵高唱 赞美救主我神
+ 您真伟大 何等伟大
+
+
+
+ 爱里合一(灵里合一)
+
+ 圣灵里我们合为一
+ 在主爱里合为一
+ 让我们的灵与圣灵相通
+ 在主爱里合为一
+
+ 让我们齐声歌唱
+ 让我们分享主
+ 我们要同心将福音传扬
+ 在主爱里合为一
+
+
+
+ 罗腾树下
+
+ 你曾奉献你身
+ 心说一生为我而活
+ 但你现在怎么景况仍令我失望
+ 你明白我意旨么
+ 你知我的心意何在
+ 但你依然软弱沮丧
+ 仍旧跌倒失落
+ 躺卧在罗腾树下
+ 究竟你做甚么
+ 莫非不能儆醒一时
+ 还要走的道路甚长
+ 起来 起来你再要住何烈山上
+
+
+
+ 全为耶稣
+
+ 全为耶稣 立己爱人
+ 扶苗护幼 珍贵成就
+ 同渡明天 悉心看顾
+ 祈求用我 将爱尽透
+
+ 回望神州 万亿国魂
+ 谁人愿意 心献华夏
+ 寒日梅花 风霜不怕
+ 传扬十架 真爱渡化
+
+ 人人全发挥 尽我生为神
+ 让浅根深化 绝对不会言罢
+ 人神同奋战 灵命作引荐
+ 全面蜕变为热爱祂
+ 全为耶稣 尽献于祂
+ 全力付上 发挥生命 未晚
+
+
+
+ 与神同行
+
+ 在我心灵里听见温柔慈声呼唤
+ 是父神对我说话慈声
+ 嘱咐我转离罪恶 完全顺服听从
+ 走上那喜乐得胜路程
+
+ 世界上一切享乐渐渐变为虚空
+ 属世一切引诱已远离
+ 今我要为主而活 向着高处而行
+ 由圣灵一路带领管理
+
+ 那日在天家一切重担都已卸下
+ 主呼唤我名 我要感恩
+ 吩咐我跟从 赐我冠冕 天上美家
+ 我要快乐颂扬赞美祂
+
+ 与神同行 我要远离世界
+ 与神同行 在祂得着一切
+ 我已决定遵行父神旨意
+ 与神同行 走那生命窄路
+
+
+
+ 如鹿的心
+
+ 如鹿的心 恳切渴想溪水
+ 比我心只想紧靠主
+ 独有您可配得此刻的赞美
+ 衷心敬拜
+
+ 我要一心紧紧靠您
+ 主的心今天我渴慕
+ 独有您可配得此刻的赞美
+ 衷心敬拜
+
+
+
+ 神必与共
+
+ 满心欢欣 满心安慰
+ 在心深处 神必与共
+ 心欢欣 满心安慰
+ 是主看顾 昼夜同行
+
+
+
+ 教会一家
+
+ 愿爱护胜兄弟 大众又似身体
+ 没有手脚不行 没有口 沉默无声
+ 共畅聚胜姊妹 大众又似屋宇
+ 没有砖瓦不行 没有窗 谁住这里
+
+ 愿爱护众兄弟 大众或有差距
+ 没有偏见分歧 愿挽手 齐步同心
+ 愿献奉我生命 在教会作肢体
+ 没有私见骄横 尽我生 荣耀基督
+
+ 恩赐须运用 要多方建立信徒
+ 彼此用爱心 分享主里各样恩典
+
+
+
+ 欢笑快乐
+
+ 神令我今天欢笑心中起舞
+ 高歌莫停 欢恩满怀
+ 神令我今天不再伤心失意
+ 皆因是神的爱
+
+ 我满有快乐 满脸带笑容
+ 因祂天天都保守看顾O-MY-LORD
+ 我确有快乐 盼你也快来
+ 分享这欢笑齐齐来颂赞
+
+
+
+ 以马内利
+
+ 以马内利 以马内利
+ 祂名称为 以马内利
+ 神同在 彰显荣光
+ 祂名称为 以马内利
+
+
+
+ 天父我爱你
+
+ 天父我爱你
+ 赞美你 我敬拜你
+ 在全地都要荣耀你名
+
+ 荣耀你的名 荣耀你的名
+ 在全地都要荣耀你名
+
+
+
+ 亲爱的圣灵
+
+ 亲爱的圣灵 再次触摸我
+ 您大能充满我 满足我需要
+ 只有您可医治我 可一生都坚固我
+ 亲爱的圣灵 再次触摸我
+
+
+
+ 陶造我生命
+
+ 神愿你来陶造我
+ 使我在灵里果子更多
+ 奇妙圣灵请将心窝洁净
+ 剔出污秽愿能成圣
+
+ 恩主我求能像你
+ 心内柔和与谦卑
+ 凭热爱热诚感染万千生命
+ 彰显万千美善灵性
+
+
+
+ 主应允祷告
+
+ 我信主应允祷告
+ 赞美主 赞美主
+ 主应许十分可靠
+ 赞美主 赞美主
+
+ 有耶稣为我中保
+ 主答应迟早必到
+ 且超过所想所祷
+ 赞美主 赞美主
+
+
+
+ 主爱必坚固
+
+ 神爱滔滔活水来匆匆涌流
+ 神爱无限 怜悯没变迁
+
+ 永远都不会动摇
+ 始终不转变
+ 恩主的信实似高天
+ 深恩广阔万里
+
+
+
+ 主爱永难忘
+
+ 主的爱无尽多 我一生都有
+ 名和利并争斗 愿望能决意抛弃
+ 在我主家内 共同作肢体
+ 朋友间愿相爱永无愁
+
+ 惟愿大家肩并肩
+ 手挽手不退后
+ 同互勉 要奋斗 用爱心宽恕
+ 效法主相敬重 勤劳作主工
+ 灵内共长进乐悠悠
+
+
+
+ 荆棘的冠冕
+
+ 谁用荆棘编冠冕无情地戴祂头上
+ 谁曾亲手打祂的头吐唾沬迎祂脸上
+ 是我主披戴羞辱给戏弄不躲避
+ 是我主默然地牺牲甘心承受痛楚
+
+ 谁曾使祂肩担苦架缓缓地向死前行
+ 谁用钉子把祂钉牢挂架上流出血汗
+ 是我主披戴羞辱遭杀害不躲避
+ 是我主默然地牺牲甘心承受痛楚
+
+ 谁在今天将那冠冕无情地戴祂头上
+ 谁在今天把祂钉牢挂架上流出血汗
+ 谁在今天将那冠冕无情地戴祂头上
+
+
+
+ 耶稣,我爱您
+
+ 耶稣我爱您
+ 我跪拜您面前
+ 赞美和敬拜 我们的王
+ 哈利路亚 哈利路亚
+ 哈利路亚 哈利路
+
+
+
+ 元首在前面
+
+ 我的主宰 一起往前行
+ 与祂精兵 一起往前行
+ 不怕艰辛 前路已带着荣耀
+
+ 共唱凯歌 必夸胜万事
+ 颂赞恩主 必夸胜万事
+ 不畏攻击 原是有您在前面
+
+ 元首主基督必引导
+ 同心紧守主的脚步
+ 仇敌全败退 主军必远征
+ 作主精兵 高举旌旗
+ 全然背起军装
+ 跟主领迈步
+ 将信心踏向应许的那方
+
+
+
+ 求引领我心
+
+ 求引领我心 愿尽我心敬拜永活神
+ 求引领我心 愿为您倾出心中爱慕
+
+ 求引领我心 明白主恩
+ 跟主爱深深结合
+ 冲开心捆绑 一心爱着您
+
+
+
+
+ 祂名叫耶稣
+
+ 祂名叫耶稣 耶稣
+ 再没有眼泪
+ 祂医治忧伤破碎心
+ 打开固锁的心门
+ 祂的大能救赎你直到永远
+
+
+
+ 全地齐赞颂
+
+ 赞美天父我多爱你
+ 高举主的圣名于这世上
+ 愿你百姓说出天父你作为
+ 常用赞美建筑上帝的国
+
+ 全地齐赞颂你大能
+ 过去现在未来 真光照耀
+ 全地齐赞颂你大能
+ 过去现在未来
+ 真光照耀
+ 全地齐赞颂你大能
+ 照遍永恒万世
+
+
+
+ 有福的确据
+
+ 有福的确据 耶稣属我
+ 何等的荣耀向我显明
+ 被救主赎回为神后嗣
+ 罪全得洗净圣灵再生
+
+ 完全顺服主 满心欢喜
+ 天堂的荣耀显在心里
+ 彷佛有天使由天降临
+ 报明主慈爱并主爱怜
+
+ 完全献与主 万事安宁
+ 荣耀的圣灵充满我心
+ 时刻仰望主儆醒等候
+ 不住的祈祷到主再临
+
+ 这是我信息 或讲或唱
+ 赞美我救主心里快畅
+ 常谈主慈爱 并颂主恩
+ 赞美我救主昼夜不分
+
+
+
+ 来荣耀颂赞
+
+ 高声赞颂父神深恩
+ 高声赞颂父神深恩
+ 愿荣耀归于我恩主
+ 来荣耀颂赞
+ 颂赞归天父 颂赞归于我神
+ 哈利路亚
+ 高声赞颂父神深恩
+
+
+
+ 主,改造我心
+
+ 主改造我心 使我心变真
+ 主改造我心 但愿能像你
+
+ 你是那陶像 我是泥土
+ 重新塑造我 这是我祈求
+
+
+
+ 当扬声欢呼
+
+ 当向耶和华扬声欢呼
+ 因祂是配得受赞美
+ 用心灵歌唱 齐来拍手
+ 敬拜那永活全能神
+
+ 赞美 赞美 祂是配得受赞美
+ 哈利路亚 敬拜那永活全能神
+
+
+
+ 教会的赞美
+
+ 我们同声赞美来将祂颂扬
+ 我们蒙神恩同往圣山上
+ 见证祂的作为 无论大或小
+ 掌权的基督是我们君王
+ 教会的生活 实际又丰富
+ 罪与世界都日渐地消逝
+ 我们今跳跃 尽情地欢唱
+ 我们今跳跃 尽情地欢唱
+
+ 赞祂与神同等原坐在天上
+ 竟成为人子为我们受创
+ 赞祂从死复活 宝座上为王
+ 复活的丰富我们能尽尝
+ 赞祂何丰富 充满了一切
+ 我们竟成祂丰富的彰显
+ 哦 哈利路亚 丰富的彰显
+ 哦 哈利路亚 丰富的彰显
+
+
+
+ 求主复兴教会
+
+ 求主复兴教会
+ 就在这些年间
+ 我今站在守望楼上
+ 望主即速显现
+
+
+
+ 神啊,颂赞归你
+
+ 神啊,颂赞归你
+ 颂声遍响宇宙
+ 上主我心称赞
+ 颂赞归予恩主
+
+ 曾流血为我赎罪
+ 愿负起我的过犯
+ 上主我心称赞
+ 我的心赞美你
+
+
+
+ 你信实何广大
+
+ 你信实何广大 哦神我的父
+ 在你没有丝毫转动影儿
+ 你不改变你怜爱也无减少
+ 像你以往一样 直到永远
+
+ 暑夏和严寒冬 春风和秋收
+ 日月众星辰在天上运行
+ 联合全宇宙共同多方见证
+ 述说你的信实 怜悯慈爱
+
+ 你赦免我罪愆 赐我永平安
+ 你的光容亲自安慰导引
+ 日日加力更赐我光明盼望
+ 所有你的恩爱 尽都属我
+
+ 你信实何广大 你信实何广大
+ 每早晨赐下新丰富恩惠
+ 我一切需用 你全早已预备
+ 主啊 你的信实何等广大
+
+
+
+ 颂赞哈利路亚
+
+ 心中歌唱 荣耀颂赞主名
+ 双手拍和 从来主不变迁
+ 此刻充满 求上主居心内
+ 开口赞颂 让灵歌轻飘送
+
+ 颂赞哈利路亚 哈利路亚
+ 崇拜感恩归我主
+ 颂赞哈利路亚 哈利路亚
+ 崇拜感恩永属您
+
+
+
+ 祂名高于一切
+
+ 在万名之中 祂高于一切
+ 救主基督圣名 在万名上
+ 在万名之中 祂高于一切
+ 救主基督圣名 掌管宇宙
+
+ 奇妙藏祂手中 天海给祂引领
+ 在祂得享和平 满有能力
+ 在万名之中 祂高于一切
+ 救主基督圣名 掌管宇宙
+
+
+
+ 没有你,那有我
+
+ 从来未试过 将一生交托 为你真正活过
+ 从来未尽用我恩赐 深你恩有许多
+ 回头望过去一生的经过 唯有你的火
+ 光照路途每一步 去冲破障碍又破浪
+
+ 如若没有你 今天不知道 怎么可有我
+ 如若是独自去闯 不知风雨怎去可挡
+ 祈望用我有一切的恩赐 为你去作光
+ 不理路途是艰巨 全为你去苦干
+
+ 让我手能为人 送予永活盼望
+ 让我口传万民 赞美远达四方
+ 让我心全为神 每昼每夜去宣讲
+ 将一生交给主努力干
+
+
+
+ 靠着耶稣圣名
+
+ 靠着耶稣圣名 靠着耶稣圣名
+ 我们必能得胜
+ 靠着耶稣圣名 靠着耶稣圣名
+ 我们必能得胜
+
+ 谁能诉尽神的作为
+ 谁能诉尽祂的爱
+ 靠着耶稣宝贵圣名 我们必能得胜
+
+
+
+ 赞美祂,赞美祂
+
+ 赞美 赞美 耶稣可称颂的救主
+ 全地颂扬 将主妙爱传明
+ 赞美 赞美 光明中天使长欢呼
+ 权柄 荣耀 都归与主圣名
+ 如同牧人 耶稣保护祂小羊
+ 在祂膀臂 终日怀抱抚养
+
+ 赞美 赞美 耶稣可称颂的救主
+ 为我众罪 受苦流血死亡
+ 是我 盘石 是永远救恩的盼望
+ 赞美 赞美 耶稣被钉君王
+ 高声赞美 为我担当众忧伤
+ 无比大爱 奇妙深厚坚强
+
+ 赞美 赞美 述说祂无比的大爱
+ 赞美 赞美 欢呼直到万代
+
+
+
+ 基督,万有之主宰
+
+ 基督万有之主宰
+ 尊贵之君 荣耀救主
+ 神是道路 是世间真光
+ 生命主宰 祂是爱
+
+
+
+ 只有您-永恒的主
+
+ 谁知心痛苦 谁解心里忧
+ 谁可于这刻伴我身边诉
+ 只有您 永恒的主
+ 每一刻等待 静听心声
+ 谁牺牲富足 谁舍尊降卑
+ 谁于漆黑中让每点光照遍
+ 只有您 永恒的主
+ 带出光辉 令我温暖
+
+ 人海中常失落 每天感到压迫苦困
+ 还愿您每天也记念
+ 求恩主启迪 使我能知道
+ 您是永恒 您是盼望 常在我心
+
+ 容许我靠近您 永远没挂虑
+ 容许我爱慕您 因您是我力量
+ 明天纵有幻变 求您引导
+ 愿此生全为您走过
+ 能使我满足只有您
+
+
+
+ 我知谁管着明天
+
+ 我不知明天的道路
+ 每一天只为主活
+ 我不借明天的太阳
+ 因明天或许阴暗
+ 我不要为将来忧虑
+ 因我信主的应许
+ 我今天要与主同行
+ 因祂知前面如何
+
+ 每一步越走越光明
+ 像攀登黄金阶梯
+ 每重担越挑越轻省
+ 每朵云披上银衣
+ 在那里阳光常普照
+ 在那里没有眼泪
+ 在美丽彩虹的尽头
+ 众山岭与天相连
+
+ 我不知明天的道路
+ 或遭遇生活苦楚
+ 但那位养活麻雀者
+ 祂必然也看顾我
+ 祂是我旅途的良伴
+ 或经过水火之灾
+ 但救主必与我同在
+ 祂宝血把我遮盖
+
+ 有许多未来的事情
+ 我现在不能识透
+ 但我知谁管着明天
+ 我也知谁牵我手
+
+
+
+ 主的名多么珍贵
+
+ 主的名是多么的珍贵
+ 主的名胜地上万金
+ 主的名是我内心所渴求
+ 谁与您相比 珍贵是您
+
+
+
+ 荣耀归于耶和华
+
+ 我的心要感谢
+ 万口也欢欣歌唱
+ 列国皆欢呼
+ 感激我主的恩惠
+
+ 我的心要感谢
+ 万口也欢欣歌唱
+ 大爱比天高
+ 信实达万代 从不转动
+
+ 荣耀归于耶和华
+ 超出那高天
+ 全能主宰 将真光充满地球
+
+ 荣耀归于耶和华
+ 超出那高天
+ 全能主宰 将真光充满万世
+
+ 全能主宰 愿我主尊贵远超高天
+ 遍达地上每一角
+
+
+
+ 耶和华为我预备
+
+ 耶和华是我供应者
+ 祂必赐满满的厚恩(为我所需)
+ 耶和华是我供应者
+ 祂必赐满满的厚恩
+
+ 主必天天供给我需要
+ 按照神荣耀里丰富恩典
+ 差遣万千天使保守引导
+ 掌管一生一世从没有变迁
+ 耶和华预备一切厚恩
+
+
+
+ 尽心尽性赞美祂
+
+ 我要尽心尽性来敬拜我主
+ 我要用诗歌来赞美祂
+ 我要尽心尽性来敬拜我主
+ 我要天天赞美祂
+
+ 因我的神是伟大的神
+ 祂配受极大赞美
+ 因我的神是伟大的神
+ 我要尽力来赞美祂
+
+
+
+ 劳苦担重担的人
+
+ 凡劳苦担重担的人
+ 担重担的人 可以到我这里来
+ 凡劳苦担重担的人
+ 担重担的人 可以到我这里来
+
+ 我就使你得享安息
+ 我就使你们得安息
+ 凡劳苦担重担的人
+ 担重担的人 可以到我这里来
+ 可以到我这里来
+
+
+
+ 我要向高山举目
+
+ 我要向高山举目,我的帮助从何来
+ 我的帮助从造天地的耶和华而来
+ 我要向高山举目,我的帮助从何来
+ 我的帮助从造天地的耶和华而来
+ 哈利路亚,哈利路亚,哈利路亚,哈利路
+ 哈利路亚,哈利路亚,哈利路亚,哈利路
+
+ 我要向高山举目,我的帮助从何来
+ 我的帮助从造天地的耶和华而来
+ 我要向高山举目,我的帮助从何来
+ 我的帮助从造天地的耶和华而来
+ 哈利路亚,哈利路亚,哈利路亚,哈利路
+ 哈利路亚,哈利路亚,哈利路亚,哈利路
+
+ 我要向高山举目,我的帮助从何来
+ 我的帮助从造天地的耶和华而来
+ 我要向高山举目,我的帮助从何来
+ 我的帮助从造天地的耶和华而来
+ 哈利路亚,哈利路亚,哈利路亚,哈利路
+ 哈利路亚,哈利路亚,哈利路亚,哈利路
+ 我的帮助从造天地的耶和华而来
+
+
+
+ 我只想去赞美您
+
+ 我只想去赞美您
+ 举起双手说我爱您
+ 您是我的一切
+ 要尊崇您圣名在至高处
+ 我只想去赞美您
+ 举起双手说我爱您
+ 您是我的一切
+ 要尊崇您圣名在至高处
+ 要尊崇您圣名
+ 我要尊崇您圣名
+ 我要尊崇您圣名
+ 在至高处
+
+
+
+ 愿那灵火复兴我
+
+ 愿那复兴我的灵火
+ 重新再来一次复兴我
+
+ 起初的信心何处失落
+ 我愿悔改重新再得着
+ 在明媚的春光里
+ 在幸福的生活中
+ 我们陶醉 我们欢乐
+ 早把主恩典忘记
+ 愿那复兴我的灵火
+ 重新再来一次复兴我
+
+ 起初的希望何处失落
+ 我愿悔改重新再得着
+ 在稳妥的事业里
+ 在迷人的笑声中
+ 我们游戏 我们沉迷
+ 早把主恩典忘记
+ 愿那复兴我的灵火
+ 重新再来一次复兴我
+
+ 起初的爱心何处失落
+ 我愿悔改重新再得着
+ 在艰苦的岁月里
+ 在百般的试炼中
+ 我们祷告 我们儆醒
+ 毋把主恩典忘记
+ 愿那复兴我的灵火
+ 重新再来一次复兴我
+
+ 起初的信望爱何处失落
+ 我愿悔改现在就得着
+
+
+
+ 众人涌进主的国度
+
+ 众人涌进主的国度 十架少人负
+ 众人争夺主的赏赐 世界有谁辞
+ 人虽无心走主道路 仍想主祝福
+ 人虽无心走主道路 仍想主祝福
+
+ 众人都慕得主荣耀 羞辱少人要
+ 众人都爱同主掌权 损失有谁愿
+ 几乎无人因主缘故 看万事如土
+ 几乎无人因主缘故 看万事如土
+
+ 众人都想同主高贵 卑贱却都畏
+ 当主凡事为他预备 他就大赞美
+ 当主稍为求他一点 就立发怨言
+ 当主稍为求他一点 就立发怨言
+
+ 但那诚实爱主的人 祸福都不问
+ 就是他们宝贵心血 也愿为主舍
+ 求主给我这样心志 赤忠忘生死
+ 求主给我这样心志 赤忠忘生死
+
+
+
+ 耶稣是我的知心友
+
+ 耶稣是我的知心友 祂知道我深透
+ 细心带领我向天路走 祂牵扶着我手
+ 我向祂倾诉我忧与愁 我信祂必去困忧
+ 永记祂因我将宝血流 我灵得拯救
+ 耶稣是我的知心友 明我祈求或苦与忧
+ 神到处将我施恩救 慈爱永远伴我走
+
+ 在这世界道路多歧途 谁明白我主恩高
+ 曾为我要被死煎与熬 神奇恩我仰慕
+ 我向祂低首向祂渴求
+ 要带福音往远处走 愿我一生一世跟主脚步
+ 完成主使命
+ 愿这福音恩光遍地球 为人所接受
+
+
+
+ 十字架的道路要牺牲
+
+ 十字架的道路要牺牲 要将一切献与神
+ 要放一切在死的祭坛上面 火才在这里颢现
+
+ 当我们唱诗祷告时候 何等愿说献所有
+ 但是前面有更重的十孛架 有更艰难的生活
+
+ 你要变节或忠心到死 让一切完全损失
+ 直等到永活主的丰盛生命 天天充满在你灵
+
+ 我们的得失并不要紧 神的旨意当留心
+ 我们若将万事都看如粪土 主才不会受拦阻
+
+ 这是十架道路 你愿否走这路
+ 你曾否背十架为你主
+ 你这奉献一切给神的人
+ 你对神是否全贞
+
+
+
+ 我要建立一群大子民
+
+ 我要建立一群大能子民
+ 一群充满赞美的子民
+ 他们要靠我灵来往此地
+ 并要荣耀我宝贵的名
+
+ 主啊 兴起 建立教会
+ 使我们靠您坚固
+ 成为合一 您的肢体
+ 在您爱子的国度
+
+
+
+ 万国啊,你们都当赞美耶和华
+
+ 万国啊,你们都当赞美耶和华
+ 万民哪,你们都当颂赞祂
+ 因为祂向我们大施慈爱
+ 耶和华的诚实存到永远
+ 你们要赞美耶和华
+
+
+
+ 圣灵我们真欢迎您
+
+ 圣灵我们真欢迎您
+ 圣灵我们真欢迎您
+ 求您圣火焚烧我们
+ 如今我们放下世上所爱
+ 举双手深深渴慕您
+ 亲爱圣灵 我们欢迎
+ 亲爱圣灵 欢迎您来
+
+ 圣灵我们真欢迎您
+ 圣灵我们真欢迎您
+ 愿您奇妙同在颢明
+ 将您心意教导您的儿女
+ 顺从您跟从您引导
+ 亲爱圣灵 我们欢迎
+ 亲爱圣灵 欢迎您来
+
+ 圣灵我们真欢迎您
+ 圣灵我们真欢迎您
+ 愿您旨意今日成全
+ 在我身上完成新的工作
+ 降服您毫无保留
+ 亲爱圣灵 我们欢迎
+ 亲爱圣灵 欢迎您来
+
+
+
+ 三一神
+
+ 三一神 我要深爱您
+ 您就是我生命的根源
+ 逆或流 您会牵我手
+ 我必定会永远忠于您
+
+ 每一天我必会思念您
+ 要伸出手来紧握您的手
+ 我要敞开我的心门
+ 让您来观看
+ 因您就是我生命的密友
+
+
+
+ 当我感觉到
+
+ 当我感觉到您手触摸我的生命
+ 您使我唱出这首歌
+ 主啊我爱您
+ 在我灵深处 我给您唱出这首歌
+ 您是我王 您是我神
+ 主啊我爱您
+
+
+
+ 合而为一
+
+ 凡事谦虚温柔忍耐
+ 用爱心相宽容
+ 凡事谦虚温柔忍耐
+ 用和平彼此联络
+
+ 竭力保守圣灵所赐
+ 合而为一的心
+ 竭力保守圣灵所赐
+ 合而为一的心
+
+
+
+ 大奋兴
+
+ 神啊愿您浇灌从前所应许的圣灵
+ 让您婢仆子女传您话语好信息
+ 重新复得异象 能明白主心里所思
+ 如今信心高升 同跟诸天宣告天国渐临近
+
+ 求使万国领受从前主应许的圣灵
+ 愿主显出光辉 列邦对主敬畏
+ 尘世被您震撼 能力彰显的一刻
+ 穷苍现正等待 神您属天之国今正渐临近
+
+ 主快要兴起归祂的百姓
+ 我信这国度快经祂所赐奋兴
+ 主快要兴起归祂的百姓
+ 寻找祂的就必见主救恩的彰显
+
+
+
+ 主您的慈爱
+
+ 主您的慈爱 比生命更好
+ 主您的慈爱 比生命更好
+ 我要用嘴唇来赞美您
+ 因您的慈爱比生命更好
+
+ 我要奉您名 来举起我手
+ 我要奉您名 来举起我手
+ 我要用嘴唇来赞美您
+ 因您的慈爱比生命更好
+
+
+
+ 在幔子里
+
+ 在幔子里 我今来到
+ 站在圣所里 我要瞻仰您面
+ 见到您极美丽
+ 没有可与您比我敬拜您
+ 哦主在幔子里
+
+
+
+ 面对世界
+
+ 必将真理告诸世上
+ 然后世上人才逐渐领悟
+ 逃避世情 难望有成 不可以否认
+ 必将真爱施于世上
+ 然后世上人能彼此分享
+ 神为世人 流尽血汗 不可祇靠讲
+ 谁愿去 谁人愿去 将真理体现
+ 谁愿意 谁人便要 经世界考验
+ 必须使世间可领会
+ 然后福音方有实在意义
+ 能面对神 能面对人 此刻要实行
+
+ 想当初奋兴的教会
+ 常视世上人为服务对象
+ 盐在世上 才是有用 古今也一样
+ 将真心献给主以后
+ 仍旧要为别人尽责任
+ 谁若爱神 谁便要能 分享主爱心
+ 谁愿去 谁人愿去 将真爱体现
+ 谁愿意 谁人便要 经世界考验
+ 必须使世间可领会
+ 然后福音方有实在意义
+ 能面对神 能面对人 一起去实行
+
+
+
+ 感谢耶稣
+
+ 感谢耶稣 因您爱极深
+ 感谢耶稣 您恩典广大
+ 扬声歌颂主您圣名
+ 赞美又赞美不停
+ 您是我的一切
+ 您是我主
+
+
+
+
+ 将心给我
+
+ 假若我有无限智慧
+ 我甘弃主脚下
+ 假若我有财物满贯
+ 我交给主手中
+
+
+ 我愿这生献呈为您
+ 愿明白您心意
+ 不用献我财物智慧
+ 将心给我
+
+
+
+ 人算什么
+
+ 耶和华我们的主
+ 您的名在地何美
+ 您将荣耀彰显于天
+ 将荣耀彰显于天 观看您所造的天
+ 所摆设月亮星宿
+ 观看您指头所造的天
+ 所设的月亮星宿
+ 便说人算什么
+
+ 您竟顾念他 他算什么
+ 他比天使微小一点
+ 您赐他荣耀冠冕
+
+ 耶和华我们的主
+ 您的名在地何美
+ 您将荣耀彰显于天
+ 将荣耀彰显于天 观看您所造的天
+ 所摆设月亮星宿
+ 观看您指头所造的天
+ 所设的月亮星宿
+ 环顾宇宙万物何广阔
+ 试问人算什么
+
+
+
+ 我敬拜您
+
+ 当我转眼仰望您的圣洁
+ 看见您面上荣美慈容
+ 当我世俗的忧虑在您面光中得消散
+
+ 当我伸出手来触摸您心
+ 您的喜乐涌进我心灵
+ 当我世俗的忧虑在您面光中得消散
+
+ 我敬拜您 我敬拜您
+ 我生命之意 是要敬拜您
+ 我敬拜您 我敬拜您
+ 我生命之意 是要敬拜您
+
+
+
+ 环绕
+
+ 你问我帮助从何而来
+ 从造天地万物主而来
+ 众山怎样环绕耶路撒冷
+ 神照样环绕祂百姓
+
+ 环绕 环绕 像众山环绕祂百姓
+ 环绕 环绕 从今时直到永远
+
+
+
+ 为主歌唱
+
+ 为主歌唱 颂赞声响四方
+ 高举主爱 齐来献上这歌
+
+ 让我赞美您唱歌向您颂扬
+ 唱一生主救恩
+ 我赞美您唱歌向您颂扬
+ 同来共和唱
+
+
+
+ 单一的主
+
+ 神造出这天地一切
+ 在世间显出祂尊荣
+ 神造出这天地一切
+ 在世间显出祂大能
+
+ 那里会有阻挡祂的苦困(不会不会)
+ 怎可使祂心里也觉困难(不会不会)
+ 奇妙主多么伟大
+ 万物也声称主的力量
+ 心中赞美 满有创造权能
+ 矜夸诸天单一的主
+
+
+
+ 像天空的鸽子
+
+ 神造出这天地一切
+ 在世间显出祂尊荣
+ 神造出这天地一切
+ 在世间显出祂大能
+
+ 那里会有阻挡祂的苦困(不会不会)
+ 怎可使祂心里也觉困难(不会不会)
+ 奇妙主多么伟大
+ 万物也声称主的力量
+ 心中赞美 满有创造权能
+ 矜夸诸天单一的主
+
+
+
+ 像天空的鸽子
+
+ 哦主耶稣为您自己的荣耀
+ 我在这里求您差遗
+ 我愿您使我成为福音的使者
+ 传十字架永恒不变的爱
+ 为传扬您天国和平的佳音
+ 使我成为传福音的鸽子
+ 向那些忧伤困苦的人们
+ 传主喜乐平安的信息
+
+
+
+ 主爱大能
+
+ 在您慈恩里 愿让我更新改变
+ 今将心献上 到达神宝座
+ 但我确知道 现在我终可夸胜
+ 心中的一切软弱 全凭主爱大能
+
+ 抱紧我 您爱常在我身边
+ 愿使我 紧紧去靠近您
+ 我展翅如鹰一般的高飞
+ 因深知祂爱我 听我每次祈求
+ 扶持我向前行
+
+
+
+ 感谢主
+
+ 感谢主 因您每一天的看顾
+ 给我恩典何等丰富 使我心稳固
+ 感谢主 因您每一天的引导
+ 给我信心奔走天路 使我心爱慕
+
+ 亲爱救主让我亲近您
+ 让圣灵掌管我生
+ 让您的慈爱吸引我来跟随您
+ 亲爱救主让我亲近您
+ 将荣耀归与您名
+ 让我的一生交托在主您手里
+
+
+
+ 我们是您的百姓
+
+ 我们属于您 都是您的百姓
+ 我们正呼求您 宣扬您的圣名
+ 在这黑暗的世代 您召我们发光
+ 当我们寻求您面 主啊显您大能
+
+ 建立您教会 来医治这地 愿您国度降临
+ 建立您教会 来医治这地 愿您旨意成全
+
+
+
+ 圣哉圣洁的羔羊
+
+ 圣哉圣洁的羔羊 祂是那自有永有的神
+ 我的救赎主活着 有一天我必能像祂
+
+ 啊荣耀哈利路亚 我要赞美祂圣名
+ 从捆绑中得释放 使我得以自由
+
+
+
+ 主,我心寻求您
+
+ 主 我心寻求您
+ 因只有您能够满足我心
+ 跪下 寻见您面
+ 当我的心亲近您
+ 将我爱献给您
+ 将我心献给您
+ 将生命献给您
+
+
+
+ 祂为我们的过犯受害
+
+ 那知道祂为我们的过犯受害
+ 为我们的罪孽压伤
+ 因祂受的刑罚 我们得平安
+ 因祂受的鞭伤得医治
+
+ 因为我要将水浇灌口渴的人
+ 将河浇灌干旱之地
+ 我要将我的灵浇灌您的后裔
+ 将我福浇灌您的子孙
+
+
+
+ 主占据心中
+
+ 今天得享主赐义袍保守荫庇
+ 主的恩惠在心中 在心中
+ 今天靠我主的宝血抹去过错
+ 基督会进入我心 入我心
+ 多么欢欣得知天父爱我救我
+ 将主基督来赠我作礼物
+ 当祂望着今天的我
+ 恩主占据心中 再没自我
+
+
+
+ 活着,活着
+
+ 活着 活着
+ 永永远远活着
+ 我主耶稣
+ 活着 活着
+ 直到永远
+ 活着 活着
+ 永永远远活着
+ 我主耶稣
+
+ 活着 唱哈利路亚
+ 唱哈利路亚 我主耶稣
+ 活着 直到永远
+ 唱哈利路亚 唱哈利路亚
+ 我主耶稣 活着
+
+
+
+ 我的神啊!您作王!
+
+ 我的神 我要歌唱我的主
+ 我要欢呼 因您是创造诸天的真神
+ 我的神 我要歌唱我的主
+ 我要欢呼 因您以公义审判这全地
+ 我高歌 因您当受大赞美
+ 我宣扬 宣扬您奇妙作为
+ 主作王 我要歌唱
+ 主作王 我要歌唱
+ 在列邦 我要宣告主作王
+
+
+
+ 靠主前航
+
+ 耶和华是我的主我的王
+ 有了祂内心充满盼望
+ 就算漫天风暴 海边翻起千尺浪
+ 不畏缩随目标向前航
+
+ 耶和华是我的主我的王
+ 有了祂内心不会彷徨
+ 就算遇到挫败 斗志依样激昂
+ 紧靠祂朝目标向前航
+
+
+
+ 全赖您爱在心中
+
+ 沿路遇到挫败失意 恳请您安慰
+ 如同遇上恶浪 主啊您导航
+ 沿途常困恼痛苦悲伤 请亲手牵引
+ 风雨内抹掉迷惘上路途
+
+ 遇到的试炼 全赖您爱在心中
+ 渡过的路途 全赖您爱牵紧我手
+ 长长夜里我困乏 得到主亲手引牵
+ 紧握我手 指引路向
+
+ 遇到的困惑 全赖您爱在心中
+ 暴雨打脸上 云雾里您牵紧我手
+ 红红泪眼挂脸上 主分担种种痛楚
+ 此刻痛苦 帮我渡过
+
+
+
+ 主,您本为大
+
+ 主 您本为大
+ 当受极大赞美
+ 在我们神至圣城中
+ 愿全地都喜乐
+
+ 主 在您里面我们己有权柄
+ 能战胜黑暗众仇敌
+ 今向您来敬拜
+
+ 主 我们高举您至圣尊名
+ 主 我们何等感谢
+ 因您为我成就大事
+ 主 我们信靠无比大爱
+ 主 惟有您是永远上帝
+ 您圣名在天地之上
+
+
+
+ 一无挂虑
+
+ 应当一无挂虑 抛开心头的担
+ 凡事借着祷告 尽诉心意 神在听
+ 应当一无挂虑 主的恩慈不变
+ 危难亦在看顾 长路伴我走过
+
+ 应当一无挂虑 心中恳求之际
+ 神在默默应允 为我指引 前路里
+ 应当一无挂虑 即使所求不见
+ 仍末绝望沮丧 前路定有旨意
+
+ 上帝的祝福恩待 纵是疑难仍必越过
+ 仰望神 今天不再惊怕
+ 面对前途迷离不定 仰赖祈求信心渡过
+ 靠着神 每日面对挑战
+
+
+
+ 在我心只想您
+
+ 在我心只想您 常在我思想意念全是您话
+ 没法抛开舍弃 昼夜藏在内心念记
+ 诚心愿意遵守主说话 愿紧记服从真理
+
+ 神话是永恒 赐给我生命
+ 心中只爱慕您 心中只爱慕您
+
+
+
+ 耶稣只有您配得受荣耀
+
+ 耶稣只有您配得受荣耀
+ 只有您配得受我赞美
+ 只有您配得受我的尊崇和仰慕
+ 因您是那至高王之王
+
+ 赞美您的圣名
+ 赞美您奇妙的名
+ 我要敬拜您主 直到永永远远
+ 用赞美高举您名
+ 我用赞美高举您名
+
+
+
+ 神是我们的神
+
+ 听啊以色列 神是我们的神
+ 听啊以色列 主是独一的主
+
+ 你要尽心 你要尽性
+ 你要尽意 你要尽力
+ 你要爱你主你神
+ 要爱主你的真神
+
+
+
+ 赞美主耶稣齐欢呼
+
+ 赞美主耶稣齐欢呼
+ 赞美主耶稣齐欢呼
+ 赞美主耶稣齐欢呼
+ 赞美主耶稣齐欢呼
+
+ 祂复活了 祂复活了
+ 直活到永永远远
+ 祂复活了 祂复活了
+ 齐来向祂欢呼
+ 因祂已战胜了死亡
+
+
+
+ 主耶稣您慈爱的真光
+
+ 主耶稣您慈爱的真光
+ 要照亮于黑暗世界
+ 耶稣您是世上的真光
+ 您的真理使我们得着自由
+ 照亮我们 照亮世间
+
+ 耶稣是光 父神荣光要充满全地
+ 求您灵火 燃点我们心
+
+ 恩典怜悯 如江河涌溢流到万邦
+ 耶稣真道 如光照亮全地
+
+
+
+ 您是荣耀的君王
+
+ 您是荣耀的君王 您是和平之子
+ 您是天地万有主宰 惟有您圣洁公义
+ 天使都向您跪下 敬拜尊崇您
+ 因为在您有永生之道 您是主耶稣基督
+
+ 和撒那归于戴维的子孙
+ 和撒那归于万王之王
+ 愿荣耀归于至高神
+ 耶稣是弥赛亚
+
+
+
+ 您宝血
+
+ 您宝血使我洁净 您宝血使我重生
+ 因代替了我 成全那救赎的献祭
+ 洁净我 比雪更白 雪更白
+ 我耶稣 神宝贵的献祭
+
+
+
+ 祂是平安
+
+ 祂是平安 所有围着祂已拆毁
+ 祂是平安 祂是平安
+ 将忧虑交托祂 祂必看顾你
+ 祂是平安 祂是平安
+
+
+
+ 主!我高举你的名
+
+ 尽献心中的赞美 让我高举主您圣名
+ 是您牺牲拯救我 在这生中居我心里
+
+ 您从天上降世间 指引我路
+ 在世间被钉十架 我罪得赎
+ 从十架到坟茔 从坟茔升回天
+ 主我高举您的名
+
+
+
+ 倚靠耶和华
+
+ 若非耶和华建造房屋
+ 建造的人就枉然劳力
+ 若非耶和华看守城池
+ 看守的人就枉然儆醒
+
+ 我行若非神所悦 一切将拆毁
+ 我做若非神祝福 一切都将枉然
+ 我所需要持守的 只是一颗心
+ 一颗完全相信的 坚定倚靠的心
+
+
+
+ 献上活祭
+
+ 我心切切渴慕您主 我要紧紧跟随您
+ 您恩典与慈爱永无止息 您信实直到永远
+ 我王我的神 因您奇妙圣名 献上我的赞美
+
+ 我心深深向您敬拜 我灵渴慕您荣光
+ 我完全相信您宝贵应许 我在您怀中安息
+ 我要向世人歌唱您的恩典 直到我见您面
+
+ 耶稣 主耶稣 求用我一生
+ 耶稣 主耶稣 求用我一生
+
+
+
+ 那在我里面的
+
+ 因那在我里面的 比那在世界的更大
+ 因那在我里面的 比那在世界的更大
+
+ 因此我扬声欢呼歌唱 圣灵住在我心
+ 永活真神基督已得胜 我们靠祂一同得胜
+
+ 死亡阴间罪恶的权势 粉碎在祂脚前
+ 荣耀尊贵的君王耶稣 超乎万名之上的名
+
+
+
+ 在耶稣里
+
+ 在耶稣里 我们是好朋友
+ 在耶稣里 我们是好朋友
+
+ 在耶稣里 我们是好朋友
+ 从今时一直到永久
+ 在耶稣里 我们是好朋友
+
+
+
+ 同颂庆主恩典
+
+ 同颂庆主恩典 救主深恩今已彰显
+ 赐与新生的爱 全属我们
+ 王啊我要高歌 您赐深恩使我要高歌
+ 欢呼歌声全献给您 高声欢庆颂赞
+
+ 同来共 Celebrate Celebrate
+ 欢呼都归您 欢呼都归于我的主
+ 同来共 Celebrate Celebrate
+ 欢呼都归您 欢呼都归于我上帝
+
+
+
+ 圣灵请您来
+
+ 圣灵请您来 以此作居所
+ 我们同心唱 求您与我们同在
+ 圣灵请您来 光照我的面
+ 以您恩爱充满我 圣灵请您来
+
+
+
+ 欢欣
+
+ 欢欣 心里感谢神 歌唱归于圣父
+ 赞颂 您赐下慈爱 独生的爱子
+ 欢欣 心里感谢神 歌唱归于圣父
+ 赞颂 您赐下慈爱 独生的爱子
+ 今天 心中刚强无惧怕
+ 主的丰盛满一生 皆因主手曾为我显深恩
+ 今天 心中刚强无惧怕
+ 主的丰盛满一生 皆因主手曾为我显深恩
+ 赞美
+
+
+
+ 惟有您
+
+ 惟有您 惟有您 惟有您是我所爱
+ 惟有您 哦主我王 我愿更认识您
+
+ 我全心 我全人 都向您深深敬拜
+ 圣洁 圣洁 尊贵尊贵之主
+ 我爱您耶稣
+
+
+
+ 以赞美为祭
+
+ 我们来到神的家 以赞美为祭献给祂
+ 我们来到神的家 以赞美为祭献给祂
+
+ 我们以感恩为祭 因您配得尊贵和荣耀
+ 我们以感恩为祭 因您是万王之王
+
+
+
+ 我以祷告来到您跟前
+
+ 我以祷告来到您跟前 我要寻求您
+ 我要站在破口之中 在那里我寻求您
+
+ 主我是软弱及无助 您却是我的力量
+ 以您亲切的手引导我 那就是我的得胜
+
+ 每一次我祷告 我摇动您的手
+ 祷告做的事 我的手不能做
+ 每一次我祷告 大山被挪移
+ 道路被铺平 使列国归向您
+
+
+
+ 主啊您创造我
+
+ 主啊您创造我 用您爱充满我
+ 舍生命从死里救赎我
+ 主啊您创造我 用您爱充满我
+ 舍生命从死里救赎我
+
+ 我要赞美您 敬拜和仰慕您
+ 我要赞美您 宣扬您的名
+ 我要赞美您 敬拜和仰慕您
+ 我要赞美 赞美主
+
+
+
+ 神的灵兴起我
+
+ 我能够看见 您的圣洁
+ 在这地寻找到您
+ 我张开双手 来接受您爱
+ 在脸上见您彰显
+
+ 神您的灵兴起我
+ 神您的灵兴起我
+ 再充满我用您爱
+ 用您的灵
+
+
+
+ 兴起以色列的子民
+
+ 兴起以色列的子民 向创造主高声赞美
+ 来跳舞欢呼歌颂 欢呼歌颂 欢呼歌颂 噢以色列
+
+ 兴起以色列的子民 向创造主高声赞美
+ 来跳舞欢呼歌颂 欢呼歌颂 欢呼歌颂 噢以色列
+
+ 神是我的光 祂是我救恩的盘石
+ 我还怕谁 我要信靠祂
+
+ 哦以色列
+
+
+
+ 万国都要来赞美主
+
+ 万国都要来赞美主 万民都要来赞美主
+ 敬拜耶和华唱诗来向祂欢呼
+ 赞美耶和华万民都快乐欢呼
+
+ 敬拜赞美耶和华 凡有气息都要赞美祂
+ 敬拜耶和华 赞美耶和华
+ 我们活着是为要敬拜赞美祂
+ 我们活着是为要敬拜赞美祂
+
+
+
+ 您的恩典够我用
+
+ 您的恩典每天够我用
+ 纵有困难也不会逃避
+ 有你与我一起 我还惧怕甚么
+ 赐我勇气去改变自己
+
+ 噢 耶稣 耶稣
+ 奉献一生 皆因最爱是您
+ 为了您 愿将一切抛弃
+ 耶稣 为要得着您
+
+
+
+ 来啊!我们要向神歌唱
+
+ 来啊 我们要向神歌唱
+ 来啊 我们要向神歌唱
+ 向拯救我们的盘石欢呼
+ 我们要来感谢祂 用诗歌向祂欢呼
+
+
+
+ 我要敬拜
+
+ 我要敬拜 我永活的真神
+ 唱出赞美 颂赞声
+ 您创造了诸天 并建立了大地
+
+ 我要敬拜 因为您荣耀彰显于天
+ 我要赞美 您的信实遍达全地
+ 您是我神 我只敬拜您
+
+
+
+
+ 扬声欢呼赞美
+
+ 扬声欢呼赞美 称颂我的王
+ 高声颂扬欢唱 哈利路亚
+ 来到主宝座前 尊崇赞美祂
+ 我们欢呼喜乐 来到神的面前
+ 您是创造主 您施行拯救
+ 您已救赎我 您是主 最大医生
+ 您是丰厚盛之主 您是我的牧者
+ 引领我 耶稣我君王 我赞美您
+
+
+
+ 主啊!您的温柔
+
+ 主啊 您的温柔
+ 溶掉我所有苦涩
+ 主啊 我接受您爱
+ 主啊 您的慈爱
+ 改变我所有丑恶
+ 主啊 我接受您爱
+ 主啊 我接受您爱
+ 主啊 我接受您爱
+
+
+
+ 天地赞美
+
+ 地与海奏出歌韵
+ 盘石唱赞美歌声
+ 风雨电也歌颂 云雾同颂吹送
+ 全地奏响声势无比
+
+ 颂赞声永不衰竭
+ 全地要敬拜事奉
+ 高唱万有之上 荣耀无限之处
+ 全属我主尊贵耶稣所有
+
+ 让赞美如风天空海阔飞
+ 让赞美浪花般海中溅起
+ 高唱万有之上 荣耀无限之处
+ 全属我主尊贵耶稣所有
+
+
+
+ 让我仰望您
+
+ 齐声颂赞 神真美好
+ 全因您手所施之工 使我欣慰
+ 全我属您 凡我这生盼望
+ 我交于您手中
+ 一生宣认 我爱主不变
+ 我要永远将我爱慕献给您
+ 一生宣认 我爱主不变
+ 我要永远将我爱慕奉与您
+
+
+
+ 您是弥赛亚
+
+ 颂赞主 颂赞主 高声欢唱
+ 让我举起手来宣称主圣名
+ 颂赞主基督 甘牺牲前来救罪人
+ 您是弥赛亚 我主我上帝
+
+ 神大能今彰显恩典
+ 丰富深厚天天都可见
+ 愿意谦卑屈膝俯伏您面前
+ 颂赞主基督 甘牺牲舍己救万民
+ 您是弥赛亚 我主我上帝
+
+
+
+ 求主赐复兴之火
+
+ 求主赐复兴之火
+ 求主赐圣灵火焰
+ 燃烧教会 能得无穷力量
+ 在这黑暗世代 能作您光辉
+ 熔解冷漠 重点爱您的心
+ 盼主赐下复兴之火
+
+
+
+ 相知
+
+ 恳求上帝祝福你 盼主的爱常在你里头
+ 虽疲累也为你代求 你我的好战友
+
+ 明白我困乏 体恤我软弱
+ 与你分忧 从没有怨尤
+ 同踏上窄路 走到尽头 与你一起奋斗
+
+
+
+ 您是王
+
+ 神您极伟大 万有都归您
+ 主宰一切 您是王
+ 尊贵主 我景仰
+ 屈膝您前 让我颂赞您
+
+
+
+ 大祭司
+
+ 大祭司打开 幔子的阻隔
+ 今进主的圣殿 屈膝敬拜
+ 颂赞天国君 为救赎灵魂
+ 一次将心献奉 舍己献祭
+
+ 赞美您成就 完美圣洁活祭
+ 恩典永存赦罪大能力
+
+
+
+ 祂是主
+
+ 祂是主 祂是主
+ 祂是胜过死亡又复活的主
+ 万膝当跪拜 万口当承认
+ 耶稣基督是主
+
+
+
+ 我已被赎回
+
+ 我已被赎回 借着羔羊的血
+ 我已被赎回 借着羔羊的血
+ 我已被赎回 借着羔羊的血
+ 圣灵充满在我心
+ 我罪全被赦免
+ 藉羔羊的血
+
+
+
+ 您许可
+
+ 挫折有您许可 要让祝福漫过
+ 至死痛楚 要将生命加多
+ 您破碎我一切 却换上更多恩惠
+ 荣耀路径必有泪涕
+
+ 谁肯放弃自救 才将救恩识透
+ 葡萄被压才得释放 酿出新酒
+ 人生到了绝处 才知道爱的深处
+ 才能盛载神恩丰满倾注
+
+
+
+ 全心敬拜
+
+ 全心敬拜 全心歌唱 高呼您全能
+ 全心敬拜 全心歌唱 和平在您的手中
+ 崇敬感恩 来自我的心底
+ 全心敬拜 全心歌唱 专一爱着您
+
+
+
+ 神恩
+
+ 神恩像无限星海 主爱烙印于心土
+ 困乏垂怜加添安慰 解开众罪捆锁
+ 神恩像无尽碧海 主爱永记于心内
+ 软弱全然我坚壮 送给眷佑指引
+
+ 耶稣无限爱在身旁 令我心中铭感
+ 为爱悬十架基督救赎恩情 使我不禁凝泪
+ 神恩像明媚朝阳 温暖我这心冰硬
+ 有若黎明初升光线 送走昨夜黑暗
+ 有若黎明初升光线 送走昨夜黑暗
+
+
+
+ 侍立赞美
+
+ 万有都不可与您相比拟 您真高超奇妙
+ 耶稣亮丽远超于言辞 更非俗世所知
+ 不可计算是您不止的爱 主的智慧没法可测透
+ 万有都不可与您相比拟 君尊也永远属您
+
+ 全能主今我侍立向您 全心惊叹侍立赞美
+ 颂扬声归于配得的您 尽献倾慕向您
+
+
+
+ 同心聚集
+
+ 同心聚集且一起高声唱
+ 愿彼此谦卑一起崇拜祂
+ 齐来献上赞美与歌唱
+ 彼此相爱 愿聚集在此一同高声唱
+
+
+
+ 我心尊主为大
+
+ 我心尊主为大 我心尊主为大
+ 我灵以我神 以我的主为乐
+ 我心尊主为大 我心尊敬您
+
+
+
+ 主爱同在
+
+ 来同颂 颂主爱
+ 爱歌传偏万里长
+ 满是荣光 遍达穹苍
+ 来同颂 颂主爱
+ 爱心燃遍万里长
+ 赞颂同声 万民和应
+ 山呼海应天军天使开口唱颂赞歌
+ 高声宣告您是神万代神活在我心
+
+
+
+ 赞颂父权能
+
+ 欢欣敬拜 全为父您大有权能
+ 凭着您藉爱子救我灵魂赐新生
+ 诸天敬拜 全然述说父您大能
+ 来吧 宇宙众星讴歌高唱您深恩
+
+ 愿父您的天国福音 冲破黑暗 恩光永相近
+ 众子靠赖救主 一起高唱上帝恩
+ 愿荣耀充满天空 充满心中 全凭您权能
+ 成就永活救恩 您是大能神
+ 您是大能神 您是大能神
+ 您是大能神 赞颂父权能
+
+
+
+ 敬拜上帝
+
+ 来敬拜上帝 来赞美上帝
+ 荣耀至尊彰显于世间
+ 来敬拜颂赞 全圣洁上帝
+ 完备救恩千载到万世
+
+ 万口赞奇妙 称颂您
+ 创造大能遍宇宙穹苍
+
+ 来敬拜上帝 齐献上活祭
+ 传颂我主恩典到万世
+
+
+
+ 献身坛上
+
+ 神啊 我全心降服
+ 无畏窄路献身坛上
+ 怜悯我这生 此际求神用我
+ 倚靠着圣灵每刻导引
+
+
+
+ 主啊!来用你的爱充满我们
+
+ 主啊 来用你的爱充满我们
+ 主啊 来用你的爱充满我们
+ 因我们的心如器皿
+ 带到活水江河前
+ 主啊 来用你的爱充满我们
+
+
+
+ 别放弃
+
+ 用信心 不必灰心 不必放弃
+ 毋惧怕 抛开心中顾虑
+ 用信心 安心交托 心中永记
+ 救主基督深爱你
+
+
+
+ 您让我生命改变
+
+ 您恩典丰富极深厚 每天保守
+ 每一刻供应是足够 夜深和白昼
+ 颂赞您 让我生命改变 每刻在引牵
+ 颂赞您 万世千载不变 身心皆奉献
+
+ 您施恩普世像天雨 倾福于世间
+ 细心的把我在看顾 关心无间
+ 颂赞您 让我生命改变 爱心日倍添
+ 愿靠您 面对新的挑战 身心皆奉献
+
+
+
+ 永约的神
+
+ 信是我这生寻着您的应允
+ 是永生的源头方向 令我生命更新
+ 心愿意一生顺服您的指引
+ 伴我一生同行 冲破危难困忧
+
+ 神已立约 倾出祂恩惠 并祝福我一世
+ 神已立约 显彰祂的爱 并宽恕我一切
+ 和您立约 愿跟主方向 愿遵守您管教
+ 齐颂赞主 永活全能 信实无穷
+ 千载百世 不变更
+
+
+
+ 祂等待你
+
+ 知不知此际耶稣 正到你面前在等
+ 祂想此际能与你 同渡着这刻
+ 可否将心里门开启 邀请祂进入心中
+ 祂可将心里愁困 全然变做安慰
+
+
+
+ 陶造我一生
+
+ 因祂牺牲告别痛悲 令我惊叹爱是多完美
+ 耶稣谦卑 权柄抛弃 遭逼迫鞭打替我死
+ 因祂首先献尽真爱 令我愿去爱且去被爱
+ 离开罪捆绑 我灵得到释放 从此基督爱内安躺
+
+ 陶造我一生 为我开出路与指引
+ 祈求神今天倒空我 能摆脱怯懦
+ 我愿委身一世为您歌
+ 陶造我一生 旧我消失别了黑暗
+ 有日软弱 盼望您能 提醒我当天因您振奋
+
+
+
+ 主必应允
+
+ 神您本良善信实 神您乐意饶恕我罪
+ 在您有无限量的爱 凡求告您的必会得您怜悯
+ 神您本良善信实 神您乐意饶恕我罪
+ 在您有无限量的爱 凡求告您的必会得您怜悯
+
+ 求主现听我呼求 垂听我恳切的祷告
+ 无论现我遇是何境况 每当我向您祈求
+ 神啊 您必应允
+
+ 求主现听我呼求 垂听我恳切的祷告
+ 无论现我遇是何境 我定会向您祈求
+ 神您必会应允
+
+
+
+ 颂赞您Hallelujah
+
+ 感激基督带领 恩典赐予我未停
+ 日日服事主 我心欢喜
+ 让赞美声跨千里 要唱唱唱莫停
+ Hallelujah
+ 颂赞您Hallelujah
+ 称赞您Hallelujah
+ Hallelujah
+
+
+
+ 神坐着为王
+
+ 神啊我要一心称谢您
+ 神啊我要高举您圣名
+ 我要因您欢喜快乐
+ 至高的主啊 您荣耀使我心歌颂您
+
+ 驱黑暗留住美
+ 借着神重拾爱
+ 齐心祷告以真诚
+ 藉主夸胜
+
+ 要颂扬神是爱 要颂扬神是美
+ 燃点真爱发光茫
+ 宣告我主坐着为王
+
+ 就算翻起千般骇浪
+ 主必会为我掌舵
+ 每日随时乘风破浪
+ 乐道主的凯歌
+
+ 要颂扬神是爱 要颂扬神是美
+ 燃点真爱发光茫
+ 宣告我主坐着为王
+
+
+
+ 静候恩主
+
+ 静候恩主 万念敞开
+ 神独您照我心深处
+ 像阵清风 透我心窝
+ 除掉往昔的损我
+
+ 主请您进入 我心里面
+ 解开我扰困 彰显您大能
+ 更新我里面 赐我美善
+ 藏在我的心不变
+
+
+
+ 因主的名
+
+ 造物主 今高唱您名字
+ 和平之君得胜者
+ 地上古今的君王
+ 也折服于您面前
+
+ 造物主 今高唱您名字
+ 全能之主安慰者
+ 全凭主恩典怜悯
+ 令我满心温暖
+
+ 全因主的圣名
+ 劳苦可得安静
+ 行走于孤单困惑里面有主倾听
+ 全因主的圣名
+ 愁心可得欢乐
+ 祈祷的必得胜
+ 我以性命来做证
+
+
+
+ 不可能的您
+
+ 在人不能 在您凡事都能
+ 在人不能 在您凡事都可以
+ 皆因您 超过世人能预计
+ 皆因您 原是全能的真神
+
+ 不可能的您 有着不可能的大能
+ 用不可能的心思 管理着地球
+ 不可能的您 有着不可能的恩典
+ 用不可能的祷告 成就不可猜想的一切
+
+
+
+ 当亲近神
+
+ 当亲近神 祂也必亲近你
+ 当亲近神 祂也必亲近你
+ 举起双手歌唱 赞美祂的作为
+ 打开心门向祂赞美 来赞美祂
+ 当亲近神 祂也必亲近你
+ 当亲近神 祂也必亲近你
+
+
+
+ 全因为您
+
+ 常言道 人生像演戏
+ 回看 这生精彩因有着您
+ 人在世永恒何在 或如流星闪耀掠过
+ 是您令我人生找到靠依
+
+ 死荫幽谷中您伴我过渡
+ 欢欣里 风光里 您共我同在
+ 当身处孤单伤痛 来拥我入怀
+ 您是我神 是我奇妙救恩
+
+ 全因为您 令我一生都佳美
+ 您令我生命从空虚化做传奇
+ 无论我壮如红日 或如黄昏般渐渐老
+ 是您令我如鹰般高飞
+
+ 全因为您 令我一生都佳美
+ 您令我生命从空虚化做传奇
+ 唯独您 是我拯救 我总不至死
+ 直到永远 从心底赞美
+ 唯独您 是我拯救 我总不至死
+ 直到永远 从心底赞美
+
+
+
+
+ 我的一生
+
+ 昔日 玩笑不懂事
+ 带点土气 这傻孩子
+ 沉默好学爱心真挚
+ 从不会伤心失意
+ 怕束缚 独爱一身粗布衣
+
+ 长大 越觉不懂事
+ 天真洒脱 太像孩子
+ 仍旧好学爱得真挚
+ 如今懂伤心失意
+ 要冲破自我 小子要展翅
+
+ 今日 述说多惊异
+ 主的看顾 靠近孩子
+ 让我决定爱主真挚
+ 由衷感激祂心意
+ 要一世奉献 倾出我恩赐
+
+ 旧事旧人随岁数迁移
+ 欢笑可记两三事
+ 怀念最深 数那恶梦痛伤事
+ 辛酸苦涩尝过无限次
+ 今我述说太容易
+ 追想从前 一切全赖有主您扶持
+ 一切全赖有主爱
+ 现实纵然残酷求立志
+ 风雨让我当闲事
+ 因您同行 给我无限壮志
+ 愿这生更合您意
+
+
+
+ 我的心寻觅您
+
+ 我的心寻觅您 我的心亲近触摸您
+ 灵得苏醒 深尝大爱
+ 灵恩涌现 情义心中载
+
+ 主我深深感到 您的拯救
+ 释放解决心里罪恶捆绑
+ 给予更新改变 与复兴的能力
+ 全意献上心底爱情
+ 全意献上爱的拥抱
+ 全意献上衷心赞祷
+
+
+
+ 来!高声唱
+
+ 来高声唱 来高声唱
+ 让我们来赞美尊崇大君王
+ 来高声唱 来高声唱
+ 让我们来赞美尊崇大君王
+
+ 惟有祂配得赞美 因祂是主
+ 昔在今在快来君王
+ 万膝要跪拜 万口都要承认
+ 祂是耶稣 祂是耶稣
+ 祂是主耶稣基督
+
+
+
+ 我要赞美耶和华
+
+ 祂居在我心里 祂活在我心里
+ 愿更能认识您 求接纳我祷告
+ 祂赐下独生子救赎人
+ 祂的恩典让我称义
+ 用尽我一生来感谢您
+ 凡有气息都赞美祂
+
+ 我要赞美耶和华 我要赞美耶和华
+ 在圣殿赞美祂 在圣殿赞美祂
+ 祂创造穹苍 显大作为
+ 祂的伟大没法测度
+ 用尽我心来称谢您
+ 凡有气息都赞美祂
+
+ 赞美 赞美 赞美耶和华
+ 敬拜我主 举起双手
+ 哈利路亚 赞美耶和华
+
+
+
+ 有谁能像您
+
+ 有谁能像您 耶稣只有您能感动我心
+ 永永远远再难寻找得到耶稣 有谁能像您
+ 您深恩似江河水涌流 医治从您而来
+ 苦痛者在您怀里得安息 有谁能像您
+
+
+
+ 您的爱
+
+ 谁能似您为我可牺牲一切 为我安排
+ 这美好生命光辉 在十架显明
+ 恩惠与真情 能让我安宁
+ 指引我路程 天父愿您知道
+ 我的生命全凭您得胜
+
+ 是您的爱 令我心灵得欢乐
+ 共那信心去面对将来
+ 人生虽然充满阻碍 前路您会为我开
+ 是您的爱 令我心灵得欢乐
+ 共那信心去面对将来
+ 如今我但愿我的生命里
+ 时刻充满着您的爱
+
+
+
+ 是你爱
+
+ 是你爱令我一生充满愉快
+ 是你爱使我一生有和谐
+ 历遍过苦痛的争扎 在计算摆上多少价
+ 未担心命途多险窄 天天都去倚靠
+
+ 突破这闷困空间灰暗地带
+ 是你爱使我开闯新境界
+ 未会怕风雨的争扎 没计较摆上多少价
+ 未担心命途多险窄 冲开一切害怕
+
+ 冲开那彷徨地带 开启那无穷限界
+ 是你爱使我心胆壮 冲开捆锁未彷徨
+ 解开那胡涂面罩 找真理完全地带
+ 是你爱使我一生心情愉快
+
+
+
+ 我心你心敬拜心
+
+ 我心 你的心 飞天际 唱歌称赞父神
+ 我心 你的心 敞开了 向恩主的敬拜
+ 我心 你的心 飞天际 唱歌称赞父神
+ 我心 你的心 敞开了 向恩主的敬拜
+
+
+
+ 让我走到您面前
+
+ 在这刻恩主请您 以亮光照我路程
+ 求引领我 带我到 神您圣洁居所
+ 让我走到您面前 您是我喜爱的神
+ 神您爱我 我爱您 求您用我一生
+
+ 愿敬拜 愿颂赞 美妙琴声天天献上
+ 惟愿您 接受这份爱
+ 愿敬拜 愿颂赞 美妙琴声天天献上
+ 求您接受这活祭
+
+
+
+ 清心敬拜
+
+ 柔和我声 专心敬拜歌颂您
+ 静待朝见主 一心渴见您的美
+
+ 清心敬拜献歌声 心向往到我主的山岭
+ 倾心赞美吐心声 呼吸您赐福的空气
+
+
+
+ 全世界都赞美
+
+ 高声地喝采 我高唱因为父神同在
+ 掌管我一生 在我的心中不变改
+
+ 一起共挽手 以歌声歌颂父神成就
+ 扭转我一生 为我修补心窝缺口
+ 赞颂您 敬奉您 要让赞美达远地
+
+ 全球民族高声赞扬 万有都归与您
+ 高声唱 让世界都赞美
+ 全世界都赞美您 让世界都赞美
+ 人类全部连起
+ 全球民族高声赞扬 万有都归与您
+ 高声唱 让世界都赞美
+ 全世界都赞美您 让世界都赞美
+ 人类全部连起
+
+
+
+ 祂诚然担当我的忧患
+
+ 祂诚然担当我的忧患 背负我的痛楚
+ 我过犯 罪愆 全归到祂身里
+ 耶稣 为我牺牲
+
+ 祂完全的恩典使我释放 您是我主耶稣
+ 我如羊 前路 迷失了方向
+ 耶稣 为我指引
+
+
+
+ 诗篇一二一
+
+ 我要向高山举目 我的帮助从何而来
+ 我的帮助从造天地的耶和华而来
+ 他必不你的脚摇动 保护你的必不打盹
+ 保护以色列的也不打盹 也不睡觉
+
+ 保护你的是耶和华 耶和华在你右边荫庇你
+ 白日太阳必不伤你 夜间月亮必不害你
+ 耶和华要保护你 免受一切的灾害
+ 他要保护你的性命 你出你入
+ 耶和华要保护你 从今时直到永远
+
+
+
+ 我敬奉您
+
+ 万物尽是主的旨意 被造尽善在您手
+ 慕义尽力高举主您 活着尽在主眷佑
+ 赞美您我歌唱 赞美您尊贵名字
+ 敬拜您我歌唱 敬拜您一生一世
+ 我敬奉您 每事为王
+ 我敬奉您 贯彻我一生
+ 我敬奉您 每日为王
+ 我敬奉您 愿荣美属您
+
+
+
+ 您是神
+
+ 您创造诸天 您创造深海
+ 您创造星月太阳
+ 您创造深渊 您创造山川
+ 您创造广大宇宙
+
+ 您创造我 是我主宰
+ 以您慈爱环绕我
+ 天要述说 地要歌颂
+ 我心敬畏您是神
+
+
+
+ 一身冲劲
+
+ 年青应该起劲 行动莫停
+ 唯求能默默用尽每一天
+ 年青一身冲劲 从未为利为名
+ 完全为尽力事奉作贡献
+
+ 年青增加识见 求学莫停
+ 唯求能事事学习看得清
+ 能将所知所见 全力互助互传
+ 无论成或败亦愿再奋战
+
+ 耶稣的爱 给我真美善
+ 要以实行来呈现
+ 人生于世 应趁青春壮健
+ 用爱意与热诚 去实践
+
+
+
+ 颂唱不息
+
+ 万物共舞欢呼 同颂唱主的真善美
+ 万物颂唱欢呼 神独配赞颂永不息
+ HALLE LUJAH 万物唱不息
+ HALLE LUJAH 欢声不止息
+ HALLE LUJAH 永不息 唱遍宇宙永不息
+
+
+
+ 祂知道,祂看到
+
+ 活着在困恼的风暴
+ 祂知道 祂看到
+ 受现实世界的激动
+ 祂知道 祂看到
+
+ 求能逃脱思潮的汹涌
+ 拚了我心不停向主祷告
+ 孤单漆黑遮蔽我现在
+ 段段道路踏上方看到
+
+ 求能寻到心灵的丰足
+ 教我信心坚强向主祷告
+ 踏着步伐没停留控诉
+ 凭信 凭心 前进
+ 因祂知道
+
+
+
+ 全心赞美
+
+ 用嘴唇来赞美您 用我口来歌颂您
+ 我双眼渴望看见您 向我彰显
+ 愿我耳聆听您声音 我双手领受您大爱
+ 我的全心 完全降服于您
+ 凡那在我里面的 赞美您圣名
+ 凡那在我里面的 赞美您圣名
+
+
+
+ 渴望您的灵
+
+ 心中渴望您的灵 此刻降临在我心灵
+ 恩主恳求您帮助 心中恶愿你洗清
+ 心中渴望您的灵 一再点燃渐冷心灵
+ 甘心将我这生命献呈
+
+ 心中渴望您的灵 安慰软弱乱紊心灵
+ 纷扰里让我安静 主的说话再细听
+ 心中渴望您的灵 火中点燃渐冷心灵
+ 委身再踏上天路旅程
+
+
+
+ 基督作主统治
+
+ 我要靠近天父我主 我的心渴想恩主
+ 奔走这世界竞赛 主拥抱伴我此生
+ 基督作主统治在我心
+ 你劝慰我 圣灵我主 你能力今加添更新
+ 主真理乃我信靠 彰显你荣耀恩典
+ 基督作主统治在我心
+
+ 噢我极渴想恩主你更多
+ 振奋在我心 得知真理更深
+ 噢圣灵我主 倾注每颗心
+ 主恩赐我更新 满你爱让你的触摸
+ 医治痊愈引领 今得见主统治在我心
+
+
+
+ 同来赞美
+
+ 同来赞美齐共唱 哈利路亚
+ 唱出生命的歌
+ 同来赞美齐共唱 哈利路亚
+ 唱出生命的歌
+ 怀着满信念 一生不改变
+ 靠恩主引导每天
+ 前路满盼望 欢欣将心献
+ 愿恩主每日记念
+
+ 同来赞美齐共跳 哈利路亚
+ 跳出生命的舞
+ 同来赞美齐共跳 哈利路亚
+ 跳出生命的舞
+ 怀着满信念 一生不改变
+ 靠恩主引导每天
+ 前路满盼望 欢欣将心献
+ 愿恩主每日记念
+
+
+
+ 诚心敬拜
+
+ 全心欢欣 屈膝敬拜 颂赞您永活神
+ 诚心欢欣 屈膝敬拜 赞美您万世君
+ 无所不知真理运行 智慧遍布穹苍
+ 难料踪迹 不可测透 却舍身救赎我
+ 颂赞祂 永生神 倾出一生舍己为救恩
+ 颂赞祂 至高神 基督恩典一生永护荫
+
+
+
+ 一首赞美的诗歌
+
+ 让那赞美的声音 在这空间响遍
+ 让那敬拜的心声 永不休止
+ 让我心中所有意念 此刻都交主的手里
+ 心中只想献奉我深深敬拜
+ 人活着原是要歌颂赞扬创造我的主
+ 您是配得荣耀
+ 人活着原是要将荣耀归您
+ 一首赞美的诗歌
+ 愿带我到宝座前敬拜
+
+
+
+ 心灵的回响
+
+ 天空里散聚云片片
+ 无奈月明星不闪
+ 莫流泪悲欢合离是难免
+ 祈求上主每一刻能抹泪面
+
+ 世途里恩怨恨爱定会现
+ 心灵中多少困倦与挂牵
+ 向前去不怕浪里多风险
+ 热诚共创真美善
+
+ 愿主爱 常记念
+ 求恩主引导每一天
+ 愿真爱 传世上
+ 永生福共享百万
+
+
+
+ 耶稣配得至圣尊荣
+
+ 耶稣您配得至圣尊荣 耶稣当受最高赞美
+ 愿全地响应诸天唱和 来尊崇主圣名超乎万名
+ 让我们屈膝府伏敬拜祂 因祂圣名万膝要跪拜
+ 让万口承认 祂是主耶稣 全能神 今我荣耀您
+
+ 但愿尊贵 颂赞和权能 都归于您 都归于您
+ 愿尊贵颂赞和权能 都归于您 都归于您
+ 主耶稣 永活真神儿子
+
+
+
+ 向至高者赞美
+
+ 同心皆向至高者赞美 颂赞主圣洁 诚实 无伪正直
+ 同心皆向至高者赞美 颂赞主圣洁 诚实 无伪正直
+
+ 耶稣是生命道路 最美善又完全 作世上盘石
+ 耶稣是生命道路 最美善又完全 主恩光照万世
+
+
+
+ 我要歌颂您圣名
+
+ 我要歌颂您圣名
+ 哦主 歌颂您圣名
+ 哦主 因为您圣名至高配得赞美
+ 我要歌颂您圣名
+ 哦主 歌颂您圣名
+ 哦主 因为您圣名至高配得赞美
+ (我要荣耀您圣名)
+
+
+
+ 你是蒙拣选
+
+ 你是蒙拣选 被父神重用
+ 是有圣洁 君尊的祭司
+ 戴属灵军装 扩建天国度
+ 全赖圣灵导引领人见基督
+ 欢欣跪拜 高歌颂赞
+ 哈利路亚 哈利路亚
+ 感恩颂唱 甘心奉献
+ 荣归基督 同得享天父称赞
+
+
+
+ 无所不在的神
+
+ 我往那里去躲避你的灵
+ 我往那里逃避你的面
+ 我若升到天上你在那里
+ 我若在阴间下榻你也在那里
+ 我若展开清晨的翅膀
+ 飞到海极居住
+ 就是在那里的手必引导我
+ 你的右手也必扶持我
+ 我若说黑暗必定遮蔽我
+ 我周围的亮光必成为黑夜
+ 黑暗也不能遮蔽我 使你不见
+ 黑夜却如白昼发亮
+ 黑暗和光明在你看都是一样
+
+
+
+ 您是我神
+
+ 请开我眼 打开我心
+ 明白您有多深爱我
+ 请释放我 去我缠累
+ 能让我再有力荣耀您
+ 请改变我 谦卑我心
+ 明白我有多么需要您
+ 心紧靠您进您怀内
+ 容让我永贴近随着您
+
+ 您为我钉身受死
+ 抹去我的污秽
+ 您是我神 是我王我心欣慰
+ 我为您张开我口
+ 向世界高声唱
+ 竭力赞扬愿永传您大爱
+ 我为您举起两手
+ 永远高举您
+ 赞颂我神 颂我王 我心所爱
+ 我为您倾出我心
+ 撇弃世间贪爱
+ 放下软弱愿献呈作活祭
+
+ 我为您鼓起我掌
+ 向世界宣称你
+ 您是我神 是我王我心称赞
+ 我为您张开我口
+ 向世界高声唱
+ 竭力赞扬愿永传您大爱
+ 我为您举起两手
+ 永远高举您
+ 赞颂我神 颂我王 我心所爱
+ 我为您倾出我心
+ 撇弃世间贪爱
+ 放下软弱愿献呈作活祭
+
+ 您是我神 是我王到永远
+ 永颂我神竭力赞扬敬拜您
+
+
+
+ 轻轻听
+
+ 轻轻细心听 轻轻细心听您声
+ 轻轻细心听 轻轻细心听您声
+ 细细听 轻轻细细听
+ 倾听您说话儿共对应
+ 细细说 轻轻细细说
+ 因知道我牧人在细听
+ 上帝您是我独一生命光
+ 羊属您必清楚听您声
+ 牧养引导我 轻声教导我
+ 一生听您话儿共对应
+
+
+
+ 主给我子女名份
+
+ 耶和华是创造天与海
+ 迄立渡万世代
+ 耶和华是我王不变改
+ 早晚顾念同在
+
+ 罪里捆绑可得释放
+ 痛悔有依傍
+ 冤屈可得伸诉
+ 眼目明亮见曙光
+ Hallelujah我称颂
+ 您爱我比海深
+ Hallelujah赞基督救恩
+ 主给我子女名份
+
+ 耶和华是创造天与海
+ 迄立渡万世代
+ 耶和华是我王不变改
+ 早晚顾念同在
+
+ 遇上祸患可得拯救
+ 欠缺可得眷佑
+ 孤寡可得安慰
+ 破蹩提步远处走
+ Hallelujah我称颂
+ 您爱我比海深
+ Hallelujah赞基督救恩
+ 主给我荣耀救恩
+
+
+
+ 吶喊,高声唱
+
+ 是我主 为我死 甘舍身的爱付出
+ 叫我颂扬 一生歌唱 主不可测透的厚爱
+ 是我心 护阴所 一生的保障能力
+ 倾出一切 专一于您 献赞颂献出欣赏
+
+ 世界万众也吶喊高声唱
+ 处处和应四海诸山拍掌
+ 我要跪拜仰望您伟大 永远高唱来荣耀主
+ 我要述说您为我的牺牲
+ 愿永爱慕您 我此生不变改
+ 那有及您 信实爱有谁能代替
+
+
+
+ 颂赞主
+
+ 颂赞主因祂的爱超出那高天
+ 颂赞主因祂的爱比海更深
+ 我的心中欢喜雀跃
+ 我快跑到主座前
+ 让我献上每句歌声与颂赞
+
+ 颂赞主因祂的爱超出那高天
+ 颂赞祂的爱比海更深
+ 我的心中欢喜雀跃
+ 我快跑到主座前
+ 让我献上每句歌声与颂赞
+
+ 心中欢喜 在这刻进到您殿
+ 要见您真光发现
+ 我要献上唇上佳美献祭
+ 这歌声彰显您大爱
+
+
+
+ 被您吸引
+
+ 今我被恩主您吸引
+ 我已确知属于您
+ 我知您的爱 从未对我舍弃
+ 主您每一句甜美话
+ 藏在我心成您爱标记
+ 让我这一生 每一刻吸引主您
+
+ 使我这一生也吸引
+ 成您住所我身心
+ 唯愿您圣灵 从我内里彰显
+ 显出您光辉您的爱
+ 让这世界借着我知道
+ 您的爱广大 您圣灵今要作新事
+
+ 感激您 您的爱 已把我妥隐藏
+ 纵使我百般不配 我也被您抱拥
+ 您触摸 您真实 使我灵里满足
+ 我全心渴想主您 感动我
+
+
+
+ 若然没有您
+
+ 若然没有您 朝晖将不可得再现
+ 若然没有您 清风也不可再吹
+ 若然没有您 世界将充斥了恶事
+ 若然没有您 世界再不可有爱
+
+ 若是没有神 这世界会消失盼望
+ 若是没有神大爱 又怎可走过伤心苦痛的岁月
+ 若然没有您 这生将找不到意义
+ 若然没有您 根本也不可有我
+
+
+
+ 主爱有多少
+
+ 主爱有多少 主恩有多深
+ 祂甘愿舍命 为救人灵魂
+ 主爱有多少 主恩有多深
+ 每当我思想 我心感恩
+
+ 天地有多么高 两极有多么远
+ 救主的慈爱 也有多大
+ 永恒有多么长 无限有多么广
+ 救主的恩典 也有多深
+
+
+
+ 我欢喜因我属主耶稣
+
+ 我欢喜因我属主耶稣 我欢喜因我属主耶稣
+ 我欢喜因我属主耶稣 哈利路亚赞美主
+
+ 赞美主(阿门) 赞美主(阿门) 赞美主(阿门)
+ 赞美主(阿门) 赞美主(阿门) 赞美主(阿门)
+ 哈利路亚赞美主
+
+
+
+ 当称颂主
+
+ 来赞美主 每个神的仆人
+ 夜间站在 神的殿中
+ 当向圣所 举起双手
+ 来赞美主 来赞美主
+
+
+
+ 您的话
+
+ 我将您的话语 深藏在我心
+ 免得我得罪您 免得我远离
+ 哦主啊 与我亲近
+ 我爱您声音 作我脚前的灯
+ 作我路上的光
+
+ 天地将要过去 您的话却长存
+ 天地将毁坏 您的话却常新
+
+
+
+ 谁主明天
+
+ 动荡变迁 世事难料 彷徨里失去目标
+ 生老病危 苦罪是谜 人生消失似烟
+ 祸患困扰 天灾难料 谁定向为我指示
+ 唯独救主 可指引步方向 陪伴我寻觅那新一天
+
+ 明天告别时 幻变世界会终结
+ 唯独你永活永生永不改变
+ 耶稣你是盼望 是你主宰今天 明日掌管于你手里
+
+
+
+ 爸爸,天上爸爸
+
+ 孩子 亲爱孩子
+ 让您父拥您入怀
+ 孩子 亲爱孩子
+ 让您父抹您苦痛
+ 替您医伤您治好了
+ 去您痛悲您获释放
+ 抹您泪水再觅欢笑
+ 领您安息再现生趣
+ 孩子 亲爱孩子 父是多么的爱您
+
+ 爸爸 天上爸爸
+ 让孩儿靠近您旁
+ 爸爸 天上爸爸
+ 让孩儿向您倾诉
+ 告诉您知我受伤了
+ 告诉您知我甚悲痛
+ 告诉您知我泪不禁
+ 告诉您知我没希盼
+ 爸爸 天上爸爸 愿您听我倾诉
+
+
+
+ 在天上的爸爸
+
+ 在天上的爸爸 愿人人都尊您名为圣
+ 在天上的爸爸 愿您国度降临
+ 日用的饮食 今日赐给我 赦免我的罪
+ 因我也赦免那亏久我 不要叫我
+ 遇见试探 求救我脱离那恶者
+
+ 哈利路亚 哈利路亚 国度
+ 权柄 荣耀全是您的
+ 赞美 哈利路亚 国度
+ 权柄 荣耀全是您的赞美
+
+
+
+ 耶稣愿您为王
+
+ 耶稣,愿您为王
+ 我们宣扬您是王
+
+ 站立在我们当中
+ 我们用赞美高举您
+
+ 我们的敬拜作您居所
+ 我们的敬拜作您居所
+ 我们的敬拜作您居所
+ 主耶稣来住您的居所
+
+
+
+ 亲近您
+
+ 亲近您 当亲近您请您在我心中
+ 亲近您 当亲近您请您用您的手承托着我
+ 让我以后随着您尽情的亲您
+ 唯愿您 完全充满我
+
+
+
+ 耶稣是一位奇妙救主
+
+ 耶稣是一位奇妙救主 祂会带你经过
+ 耶稣是一位奇妙救主 祂会带你经过
+ 耶稣是一位奇妙救主 祂会带你经过
+ 直到战争完毕真理获得大胜
+ 我主会带你经过 我的亲爱弟兄
+ 当世界被焚 你需要耶稣做您的救主
+ 要将您隐藏在万古盘石中
+ 在万古盘石中把你隐藏
+
+
+
+ 奋力勇闯
+
+ 奋力无惧前往 毋惧畏莫灰心沮丧
+ 同行主应许引领道路 神荣光一生普照前方
+ 奋力无惧前往 毋惧畏忧戚已解免愁怀
+ 神愿意分忧每刻都看顾 是您力量 恒久坚固保障
+
+ 尽向主倾诉 细说恐惧 让眼泪沬干主安慰尽享
+ 痛苦我主亲身经过 明白我常被困扰找方向
+
+ 尽力量无惧前往 毋惧畏冲开困厄苦不再
+ 同行主应许引领道路 神荣光一生普照前方
+ 要刚强无惧前往 毋惧畏冲开困忧苦不再
+ 神在您生命每刻愿同往 是您力量恒久坚固保障
+ 尽掌握一切永远守护 万事靠主恩 今生奋力闯
+ 倍添信心恩主必看顾 神是爱能力满心自由乐享
+
+ 要刚强无惧前往 神伴您奔走每刻愿同往
+ 是您力量恒久坚固保障
+ 神定要同行伴我闯(同闯)
+
+
+
+ 刚强壮胆
+
+ 刚强壮胆不要畏惧 神现与我们同在
+ 刚强壮胆不要畏惧 神现与我们同在
+
+ 神应许不变更 耶稣站此地当中
+ 神已同在 未计何地 全世界都属我的主
+ 神已同在 未怕仇敌 神已践踏仇敌
+
+
+
+ 主是我力量
+
+ 是您的力量坚固方向 艰苦里寻获去向
+ 上帝的力量赐我取向 命途不须怕漫长
+ 在困境惊慌 心态彷徨 隐居您处避风波
+ 静处得安息 振作释放 在神恩典心胆壮
+ 历世何时没有变 地壳山岭曾摇动;
+ 浪涛腾动 浪水翻波 未怕失落可冲破
+ 喂哦 喂哦 喂哦 喂哦
+ 喂哦 喂哦 喂哦 喂哦
+
+
+
+ 齐贺主爱
+
+ 就让这刻一起庆贺
+ 赞美救主深恩伟大
+ 神曾为我临尘世
+ 舍弃性命全没悔恨
+ 若是这天心有烦愁
+ 就让救主舒去困倦
+ 求能共您同赞美祂
+ 不死的爱永远要传扬
+
+ 昨天祂舍身的爱赐我新生
+ 这天祂看顾爱怜伴着我走
+ 明日有着昐望能共享祂尊贵
+ 神为我抹掉一切泪痕
+
+
+
+ 分享主爱
+
+ 让我们分享主恩爱
+ 让主爱充满生命
+ 愿主爱渗透众教会
+ 使我们心灵复兴
+ 求主更新心灵意念
+ 使我们真切相爱
+ 让我们分享主恩爱诚实相爱
+
+
+
+ 愿您崇高
+
+ 让我们分享主恩爱
+ 让主爱充满生命
+ 愿主爱渗透众教会
+ 使我们心灵复兴
+ 求主更新心灵意念
+ 使我们真切相爱
+ 让我们分享主恩爱诚实相爱
+
+
+
+ 愿您崇高
+
+ 我要在万民中称谢您
+ 我要在列邦中歌颂您
+ 您的慈爱高于诸天
+ 您的信实直达穹苍
+ 您的慈爱高于诸天
+ 您的信实直达穹苍
+
+ 哈利路亚哈利路亚
+ 您的慈爱高于诸天
+ 哈利路亚哈利路亚
+ 您的信实直达穹苍
+
+
+
+ 荣耀归我主
+
+ 全地颂赞高唱 HOLY
+ 来荣耀我主基督
+ 让每颗心也欢笑
+ 基督被高举永远得胜
+
+ 我举双手敬拜父
+ 我今高声去赞颂
+ 唯愿站我主宝座前来传扬祂
+
+ 荣耀荣耀都归于我主
+ 荣耀荣耀都归于我主
+
+
+
+ 永在您旁
+
+ 我的双手扬起 侍立(跪在)我主跟前
+ 我要听主慈声 也看见主荣美
+ 我的双手扬起 侍立(跪在)我主跟前
+ 我要听主慈声 也看见主荣美
+
+ 我要安居您怀内 一世饱享主您的爱
+ 我要张口饮主您活水
+ 满足皆因您同在 您脸己光照我的脸
+ 这刻渴望永在您旁
+
+
+
+ 您是我神II
+
+ 我一生甘心居于您里面
+ 唯有您永远也不改变
+ 容让我心热切呼唤救主千百遍
+ 直到那日再见您的面
+
+ 您是我神 您是我王 您最清知道我心
+ 您是我神 您是我王 我要天天紧靠着您
+ 愿将真心奉献 如云彩飘到您面前
+ 现将更新的我呈献给您
+
+
+
+ 我要宣告
+
+ 我要宣告 赞颂筑起主宝座
+ 我要建主宝座 噢~~
+ 赞颂声高 渴望主登上宝座
+ 让我心做您居所
+
+ 您的居所中 我找到欢欣盼望倚靠
+ 我要安稳于 我永久保障坚固盘石
+ 主您永远赐 我随时所需那活水
+ 主您永远作 我随时所需那帮助
+ 故我高声告 我要高声来告
+ 高声宣告 高声宣告
+ 我要宣告
+
+
+
+ 愿主为王
+
+ 赞美 高声欢呼
+ 主基督是我王
+ 乐声中 拥戴主我王
+ 赞美高举您是我主
+
+ 献上赞颂迎着宝座
+ 敬拜筑起您宝座
+ 敬拜筑起您宝座
+ 愿主登基愿主为王
+
+
+
+ 愿事奉耶和华我神
+
+ 愿事奉耶和华我神 撇下世上所有
+ 愿事奉耶和华我神 撇下世上所有
+
+ 回应主的爱 十架大爱倾出宝血
+ 耶稣我尽爱牺牲(不竭)
+ 愿献生命活祭事奉我主
+
+ 愿事奉耶和华我神 撇下世上所有
+ 愿事奉耶和华我神 我乐意付上一切
+
+
+
+ 从没有放弃
+
+ 从没有放弃 您给我的异象
+ 从没有放弃 您给我的理想
+ 当我遇到阻难 您必坚固我
+ 主啊求您给我 有毅力面对
+
+ 让我胜过世间一切困难
+ 助我冲开心中的忧因
+ 让我的心紧紧靠着神
+ 持守心中的呼召
+
+
+
+ 信仰颂
+
+ 我们信圣父永生神 创造天与地的主
+ 我们信圣子主基督 降人间救世之主
+ 藉童女主诞生世上 担罪愆被钉身亡
+ 祂从死复活得胜利 升天掌权在父身旁
+
+ 统治天与地 耶稣基督
+ 统治天与地 耶稣基督
+ 祂是天地主 耶稣基督
+ 祂是天地主 颂基督
+ 名远超万名 名远超万名
+
+ 我们信主差祂圣灵 赐教会能力恩惠
+ 亲见证主话语真理 差信众往普天下
+ 基督必显荣光再临 亲审判万世的人
+ 聚主前万膝必屈拜 众口承认颂祂尊名
+
+ 统治天与地 耶稣基督
+ 统治天与地 耶稣基督
+ 祂是天地主 耶稣基督
+ 祂是天地主 颂基督
+ 名远超万名 名远超万名 名远超万名
+
+
+
+ 天堂在我心
+
+ 谁说 沉睡已久的花蕾 不能绽于一季缤纷
+ 谁说 寒冬之后的大地 不能展现一片青翠
+ 谁说 曾经受伤的翅膀 不能再度自由地飞
+ 我要抬起头 张开双臂 拥抱神所赐的世界
+
+ I want to be free 自由地飞
+ 在爱中无惧怕 在爱中无伤悲
+ I want to be free 不再流泪
+ Because I believe that heaven is here
+ 我有天堂在我的心
+
+
+
+ 是您最重要
+
+ 是您重要 在我的心中最重要 重要是您
+ 全地其上 全赖您一一创造
+ 是您亲手铺设宇宙繁星
+ 于我您给我是到底的拯救
+
+ 颂赞 跪拜 颂赞永归我主
+ 颂赞 跪拜 让我心归我王
+ 于天地里再找不到比您好
+ 在我生命里 再找不到一个相比更重要
+ 神是我一生中最深刻最重要
+
+ 是您重要 在我的一家最重要 重要是您
+ 危险困逼 凭借您一一过渡
+ 是您恩手使这家温馨倍添
+ 于我这家也属您终生归您
+
+ 颂赞 跪拜 颂赞永归我主
+ 颂赞 跪拜 让我家归我王
+ 甘心乐意传颂基督的救恩
+ 让这家奉献 荣耀都归于您皆因您是爱
+ 神是我一家中最深刻最重要
+
+
+
+ 齐声颂赞
+
+ 齐声颂赞 神真美好
+ 全因您手所施之工使我欣慰
+ 全我属您 凡我这生盼望
+ 我交于您手中
+
+ 一生宣认 我爱主不变
+ 我要永远将我爱慕献给您
+ 一生宣认 我爱主不变
+ 我要永远将我爱慕奉与您
+
+
+
+ 我们在天上的父神
+
+ 我们在天上的父神
+ 愿您名超乎全地
+ 但愿我们的赞美作您国度
+ 愿您子民宣扬您大作为
+
+ 举起双手赞美全能神
+ 是昔在今在永在的
+ 举起双手赞美全能神
+ 直到永永远远
+
+
+
+ 我献上生命
+
+ 我献上生命 我将一生给您
+ 我来敬拜来尊崇赞美您的圣名
+ 我献上生命 我将我心给您
+ 我要举起双手去宣扬您就是主
+
+ 我要看见您 来求告您名
+ 好像小孩呼求祂父亲
+ 我要看见您 来求告您名
+ 我要兴起 要兴起
+
+
+
+ 因您爱
+
+ 感谢您 因您爱 您愿意这刻临在
+ 吸引我 靠近我 使我藏身于主爱
+ 纵我眼目未见主荣光 纵我软弱未唱赞歌
+ 您那有力坚刚的翅膀也为我张开 因您爱
+
+ 因着您 伟大爱 您愿意这刻临在
+ 吸引我 靠近我 使我藏身于主爱
+ 我深仰望未见主荣光 纵我软弱未唱赞歌
+ 因我相信恩心的双臂永为我伸出 因您爱
+
+ 注视您 的眼光 我望见主的爱火
+ 纵是我 不配得 您却为我倾出一切
+ 主您眼内流露您慈悲 您双手呈现您恩典
+ 我真感谢 主施恩宝座是为我兴建 因您爱
+
+ 因您永远可靠 啊主我的盘石 您圣灵又充满我作爱的保证
+ 我呼喊阿爸圣父 高呼您爱奇妙 主使我永久渴慕 永远也饥渴
+ 主您爱
+
+
+
+ 恩主的爱
+
+ 恩主的爱 永久不会变改
+ 深恩广阔 浩瀚超出这穹苍
+ 主施恩惠 施公正未曾变样
+ 并以智慧掌管照顾这苍生 因你是主
+
+ 这么宝贵 厚爱深恩充满我心
+ 休息安竭 在你庇荫翅膀中
+ 一生享有 恩主丰富供应供给
+ 在你光中必得看见主真光 因你是主
+
+
+
+ 主您是配得
+
+ 为十架而感恩 为赎价全心致谢
+ 您已负上我羞耻 与我过犯 其哉主爱恩典
+ 为您爱而感恩 为您钉痕手感谢
+ 您血已使我圣洁 今我知道 您赦免您也悦纳
+ 我主真配得 坐于宝座
+ 快拥戴羔羊我主作王直到永远
+ 被高举是您 上帝子我主
+ 您天之骄子舍命爱我
+ 主您是配得 永配受称赞
+
+
+
+ 面对抉择
+
+ 环境诸多变迁 谁可以看见 明天的发展和际遇
+ 人智慧有限 难作选择 前路一片茫茫如没路牌
+
+ 人心思可变更 谁可以看透 人心中的构思和计划
+ 人你我互谋 难作审断 前路一片茫茫如没路牌
+
+ 面对抉择面临困惑 心底里几番冲动
+ 人去亦难留更难 常退避没有用
+ 今天我有主耶稣的足印 给我作指引
+ 面对艰难我誓要跟从 原因主智慧无限
+ 实在我不配为我作选择 原因我已属上主所有
+
+
+
+ 我是个快乐人
+
+ 我是个快乐人 要作快乐事
+ 日日敬拜主 喜乐溢洋洋
+ 不断地歌唱 用力的拍掌
+ 天天敬拜主 我要开心的赞美主
+
+ 赞美主 我要开心的赞美主
+ 敬拜主 我要尽心的敬拜主
+ 多谢主 我要开口多谢主
+ 多谢我主 多谢我主 给我一个快乐心
+ 多谢我主 多谢我主 我是个快乐人
+
+
+
+ 我的心啊,我的灵啊
+
+ 我的心啊 我的灵啊
+ 你要以喜乐的心来赞美主名
+ 我的心啊 我的灵啊
+ 你要以喜乐来赞美主
+
+
+
+ 您是我喜乐的泉源
+
+ 您是我喜乐的泉源 耶稣 生命得以完全
+ 今我要高声呼喊 耶稣 因您喜乐河流全掩盖我
+ 我要歌唱您善美直到永远 为要宣告您至伟大不改变
+ 您是恩主 您是我喜乐泉源
+
+ 扬声叫喊 忘我跳跃呼喊 一切喜乐全因有您
+ 我要放高声呼喊 我要跳舞来颂赞 颂赞崇拜主
+ 您是我喜乐的泉源 耶稣 生命得以完全
+ 今我要高声呼喊 耶稣 因您喜乐河流全掩盖我
+ 我要居于您殿宇直到永远(从今到永远)在您居处过一天胜在世万年
+ 您是恩主 您是我喜乐泉源
+
+
+
+ 主信实无变
+
+ 慈爱主信实无变 在每天清晨 主爱已彰显
+ 慈爱主信实无变 没有分阴晴 主爱励勉
+
+ 慈爱主信实无变 日影西斜 主爱更温暖
+ 慈爱主信实无变 没有分冬暖 主爱复眷
+
+ 爱慕到达主跟前 渴慕救主引牵
+ 困苦 压逼 忧心 挂念 神爱眷必不停断
+ 神爱眷终不改变
+
+
+
+ 将心献上
+
+ 主 我将心献上 全奉献决心踏上前
+ 抛开一切挂牵 尽献给您不改变
+
+
+
+ 我只想去高举主名字
+
+ 我只想去高举主名字 如旗号让这地得看见
+ 这世界必因真理晓得 唯靠主得进天国
+
+ 我要高举 我要高举 我要高举 高举主基督
+ 我要高举 我要高举 我要高举 高举主基督
+
+ 每一次我迈步向前 都闯进主的应许地
+ 我祷告乃有力兵器 将一切坚固营垒 摧毁 摧毁 摧毁
+
+
+
+ 你爱我比这些更深么
+
+ 微风轻奏水面 黎明破晓
+ 湖中挣扎整夜 没有收获
+ 你爱我比这些更深么
+
+ 晨光初照海岸 微微暖火
+ 耶稣经已准备 岸上有早饭
+ 你爱我比这些更深么
+
+ 人海颠沛转动 寻求富足
+ 财宝声势争夺 乱我心懹
+ 你爱我比这些更深么
+
+
+
+ 在您恩光中
+
+ 在痛苦中挣扎神在身边
+ 在困境中失脚神愿伸手引牵
+ 孤单掩盖我 仍旧信主看顾励勉
+ 是您应许不变迁 因主必细听 祷告到达神前
+ 在您恩光中愿听主慈声
+ 在您恩手中让我复平静
+ 恩典中罪恶主抹清
+ 心中的意念请您用慈爱和应
+
+
+
+ 不变以马内利
+
+ 以马内利 神同在不会终止
+ 以马内利 无惧世事改变几多
+ 祂必与你一起 与我一起走每一天
+ 相信在这一刻 以后每一刻也没改变
+ 以马内利 就算漆黑铺天际
+ 深深相信是神仍必与共
+ 以马内利 以马内利 教我心仍然相信
+ 以马内利 以马内利 定会念记
+
+
+
+ 诸天颂赞
+
+ 耶稣 我救主 您至圣有谁能比
+ 一生一世我要颂扬 您不可思议的厚爱
+ 慰解者 护荫者 作我力量避难所
+ 我的全人一息尚存不会停止敬拜您
+ 诸天颂赞向上主呼喊 因祂配得能力尊贵颂赞
+ 高山下拜与大海呼啸 在您圣名的响声中
+ 欢欣颂赞因见主的作为 我爱慕您我此生不变改
+ 因您对我的应许有何能代替
+
+
+
+ 我的一切
+
+ 我天父我所仰慕 远超世上一切我所向往 我渴想您
+ 我爱慕您我的救赎主 一切所有我都归与您 我献所有给您
+ 您的天使在敬仰您 您的子女向您敬拜
+ 您是恩主我的一切 我要献出生命与您
+ 我的恩主乃我所爱 永远也稳居我心底
+
+
+
+ 无论那一处
+
+ 无论那一处 神为我除去无数路障
+ 纵高山幽谷极深处 至汪海滔滔不见天
+ 祂都引牵不变
+ 无论那一处 唯愿众人荣耀敬奉你
+ 我一生奔走为主你 要一生兴起传颂你
+ 尊崇你 我跟从你
+
+ 神厚爱 神厚爱 神厚爱
+ 从心底使我更新 又更新 又更新
+ 神大能存在永远 存永远 存永远
+ 能使一生更精采 又精采 我今天已找得盼望
+ 一生奔走为主你 要一生兴起传颂你
+ 尊崇你 我跟从你
+
+
+
+ 荣光普照
+
+ 荣光普照全地 神恩丰富完备
+ 荣光照耀驱走晦暗 将心灵再点起
+ 求兴起我灵命 燃起心底平静
+ 荣光引路感恩赞美 愿生命更像您
+
+
+
+ 以色列的圣者
+
+ 以色列的圣者 为我牺牲自己
+ 神羔羊 你是弥赛亚 耶稣和平之君
+ 我要跪拜要敬拜你主啊 因为你是万王之王
+ 我要跪拜要敬拜你我神 宝贵耶稣和平之君
+
+
+
+ 深信主爱
+
+ 于您身边 如今我觐见恩主 我渴想您触模
+ 将您恩典荣光照耀我 使我明白您更多
+ 两眼只想看见您荣面 耳?只爱听见您恩言
+ 因您救赎厚恩 圣灵厚厚浇灌 使我铭感您爱颂您恩
+ 高举我手去颂扬 高唱您爱的深长
+ 天高海深 不足比较 主您永作我保障
+ 因此我深深相信 主爱对我永不尽
+ 即使年月变迁 恩主从来未变
+ 主您膀臂亦会为着我伸展百千遍
+
+
+
+ 我将颂赞给您
+
+ 让我以手以口发出颂赞声 传扬您永活名字
+ 来高举祂恩手所造 心中哼赞歌
+ 让我细思细想您不绝救恩 寻求您话语微妙
+ 神竟将祂恩典涌流 谁像您给我宝贵
+ 神啊 我将心里颂赞留给我最爱的您
+ 来看您的爱胜一切 昼夜绵绵未变改
+ 神啊 我将一切奉上 全因您彻底的爱
+ 投进 您丰富的一切 颂赞归于永恒的您
+
+
+
+ 极力尽力赞美主
+
+ 赞美赞美您哈利路亚 极力尽力尽为您歌颂
+ 我要赞美您哈利路亚来同声
+ 主的恩典常常伴我们 日日夜夜就是我保护
+ 我要赞美您哈利路亚在心灵
+ 美妙赞颂声天与海同应 歌唱主大恩 齐颂赞主
+ 你共我同声 心与心同应 称赞主用心灵
+
+
+
+ 是为了我罪
+
+ 1. 在十架上被人冷眼嘲笑 汗血淌滴下救主被钉死
+ 主宰基督为人背上苦担 系挂那木头的应是我
+ 是为了我罪祂舍尊贵 是为了我罪祂牺牲一切
+ 在十架上恩主彰显祂的爱 罪债于一身祂拯救万世
+ 2. 复活盼望罪人今得新生 信祂的必可承受永生
+ 复活盼望罪人变改身心 并赐我圣灵祂一世护荫
+ 被罪恶枷锁今得释放 被罪恶枷锁今可得冲破
+ 复活盼望是让主居于心里 愿一生跟主祂一世导引
+
+
+
+ 爱再不是传说
+
+ 传说中 神是爱 大爱比天高
+ 跨越未来让我深心感到
+ 祂降生 凭着爱 叫唤我归家
+ 仇恨与内疚 流泪与罪债 神愿替我独个承担
+ 爱 再不是传说 是已经发生 也藏在我心坎
+ 爱 再不是传说 在十架山 为我死救赎我
+ 神是爱 让我可以爱
+
+
+
+ 主爱不变
+
+ 神在昨日到今天到永久不变 永远伴在我身边同行
+ 每天每夜存着不死的爱 在看顾在拖带每一天
+ 唯愿你共我信心与爱心不变 靠赖着是我主的恩惠
+ 勇敢 坚刚 存着不死的信 是相信主爱不变
+
+
+
+ 在主前静默
+
+ 静默在至圣的主跟前 主今亲临同在
+ 这是神圣之地 主圣洁无瑕疪
+ 你当尊祂为圣 向祂屈膝敬拜
+ 肃静在至圣的主跟前 主今亲临同在
+
+ 静默在荣耀的主跟前 主光辉今环绕
+ 荣耀至尊君王 主威荣谁能瞻
+ 主以光辉为冕 圣火不熄常燃
+ 肃静在至圣的主跟前 主光辉今环绕
+
+ 静默在全能的主跟前 主施大能权柄
+ 主来洁净医治 来祝福赐宏恩
+ 以信心瞻望主 万事祂皆能成
+ 肃静在至圣的主跟前 主施大能权柄
+
+
+
+ 诗篇130篇1-4节
+
+ 耶和华我从深处 从深处向你求告
+ 愿你听我的声音 愿你侧耳
+ 侧耳听我恳求 听我恳求的声音
+ 你若究察罪孽 谁能站住
+ 但在你有赦免之恩 要叫人敬畏你 我等候耶和华
+ 我心等候 我也仰望
+ 但在你有赦免之恩 要叫人敬畏你 我等候耶和华
+ 我心等候 我也仰望
+
+
+
+ 你使我满足
+
+ 我心必永久颂赞主
+ 每刻信赖倚靠主
+ 我主常使我心无惧怕 你使我立足主你基石
+ 现稳固是我心 故我要说我主
+ 是你于我心是至宝 世间与在天也如是
+ 是你使我满足 故我要说我主
+
+ 是我保障 力气 我福份 我的释放
+ 我盾牌 我高台 我所需要每刻帮助靠倚(是我保障)
+
+
+
+
+ 保护我
+
+ 您永远藏身在我心 保守我同经岁月
+ 您恩手呵护我 引领我行走您义路
+ 我要瞻仰主 我灵也等候
+ 全倾心中爱向您歌颂 为述说主您信实
+ 能栖居您永不朽臂膀 您每刻亲拖带 保护我
+ 哈利路亚 哈利路亚 哈利路亚 哈利路亚
+
+
+
+ 恳求主
+
+ 恳求主请您看我双手 一切我所有 甘心为您用
+ 恳求主请您看我的心 塑造练净我 将我分别为圣
+ 我们要奔向您的祭坛 得着您的火焰
+ 站在破口中抢救那失丧的灵魂
+ 求主赐我怜悯的心为这迷失的人群
+ 我们要改变世界带来盼望在这地
+ 我响应您呼召 建立无墙的教会
+ 让您荣耀彰显 赐下救恩给万民 给万民
+
+
+
+ 君尊义仆
+
+ 1. 贫穷婴孩天上来 进到世间 掩祂光荣
+ 不求供奉 却服侍 为救众生 舍祂性命
+ 2. 在园中挣扎流泪 选择担当众生重罪
+ 拒己心意 遵父旨 慈爱的心痛?破碎
+ 3. 请看祂手上钉痕 那手曾铺满天星宿
+ 却以伤痕证主爱 曾任铁钉扎伤刺透
+ 4. 效法恩主服侍人 决定一生以祂为王
+ 顾念他人的需求 如事奉祂 学祂榜样
+ 副: 谦卑上主 君尊义仆召我们跟从祂脚踪
+ 身心所有 每日献作活的祭 谦恭敬拜君尊义仆
+
+
+
+ 真爱
+
+ 当我想到耶稣独自
+ 背着十架行向这辛酸之路
+ 讥讽嘲笑旁人在耻笑责骂
+ 祂却决心为我受尽痛苦
+
+ 天也昏暗疲倦且软弱
+ 鲜血在渗祂却甘心坚持
+ 原是主真爱情愿舍弃性命
+ 忍受痛苦在十架上为我死
+
+ 在我心不懂去思不懂去想事实是这般
+ 为何您对我深爱我始终未明了
+ 难道我只得半知只得半解事实是这般
+ 原来世界最美的爱是您牺牲不变的爱
+
+ 愿我心懂得去思懂得去想事实是这般
+ 能明白您对我深爱您甘牺牲一切
+ 唯愿我甘将我心甘将这生尽力为您倾
+ 来偿您那对我的爱愿我一生深爱着您
+
+
+
+ 我是主的羊
+
+ 主领我到青草地安歇在溪水旁
+ 黄昏时主与我一路同行
+ 牧场上主的羊都得饱足心快畅
+ 我是主的羊
+
+ 青草地(死荫幽谷) 溪水旁(高山峻岭)
+ 黄昏时(黄昏时) 有主与我同行
+ 黑暗夜(死荫幽谷) 路崎岖(高山峻岭)
+ 每一步(每一步) 跟随主行
+
+
+
+ 耶和华以勒
+
+ 耶和华以勒 我的供应
+ 在恩典里我永不缺乏
+ 耶和华我父 我的倚靠
+ 在主手里 我永得保障
+
+ 让我心称颂恩主 祂有无限丰富
+ 赐予我美好人生
+ 让我口歌颂恩主 祂有无尽的爱
+ 带领我永不缺欠
+
+
+
+ 有呼吸者
+
+ 在祂圣所今要赞美 在祂显权能穹苍赞颂
+ 普世要赞颂 颂赞因祂可畏权能
+ 颂赞祂至圣名字伟大 同歌唱赞颂
+
+ 在日出之处听见 欢呼声响起
+ 于东方飘西方 自南唤北方
+
+ 有呼吸者要向祂 向祂永远歌唱
+ 我里面一切也都颂赞主 颂赞主 颂赞主
+
+
+
+ 容我宁静
+
+ 晨曦之中我寻求神话语
+ 每分一刻感激主多爱宠
+ 日光之中 人流离在多变世俗里
+ 啊 圣灵求您引导我祷
+
+ 容我宁静 听候在您的跟前
+ 一心一意 愿寻求您的旨意
+ 藏您怀内 看万事变得空虚光辉不再
+ 愿我此刻知您是神 愿我得享安息在您手里
+
+
+
+ 渴想您
+
+ 神啊 我天天渴想您 期望每天深深想您
+ 纵使身心经过干旱地 我心仍然 期望每天想您
+ 神啊 我祷告您应允 诚实爱心必得应允
+ 无惧敞开心中的挂虑 永不徒然 神定会必应允
+ 神啊 您拖带我走过 顽劣处境安心经过
+ 路过深谷幽暗干旱地 您必同行 陪伴我轻走过
+ 神啊 您必使我得胜 顺服您心终必得胜
+ 怀着圣洁虚心的脚步 靠主昂然 齐踏上必得胜
+ 神啊 您本意爱宽恕 无限爱心必得宽恕
+ 十架至伟宝血洗我罪 悔改回头 仍获爱心宽恕
+ 神啊 您千载永不变 唯独您永远不改变
+ 尘俗过去消散不再现 美境无常 唯独您不改变
+
+
+
+ 主在圣殿中
+
+ 主在圣殿中 主在圣殿中
+ 普天下的人 在主面前 都应当肃静
+ 肃静 肃静 应当肃静 阿门
+
+
+
+ 爱的印记(改)
+
+ 于太初创始 远在天国度
+ 父就在这刻 爱为我彰显
+ 观看所作的 一切皆美善
+ 尽合父意思 引导我一生
+ 神造我并赐生命和尊贵
+ 神为我牺牲世事不可媲美
+ 完全奉献心中的赞颂
+ 因为您 求用我一生为您尽献
+ I love you I trust in you
+ 将心中爱放在您心里
+ 求属我心印记
+
+
+
+ 复兴的火
+
+ 复兴的火焰正燃烧 让我们响起胜利的号角
+ 传扬耶稣基督的真道 一起迈向合一的宣教
+ 在主前同心的祷告 让我们忠于十架的呼召
+ 以赞美在宝座前围绕 让复兴的火在我里面燃烧
+
+ 复兴的火 圣灵的火 在我心中点燃
+ 复兴的火 圣灵的火 把我烧在主祭坛
+
+
+
+ 耶和华尼西
+
+ 高举神是我的旌旗 面对世间冲击
+ 坚守神是我的真理 来为基督争战
+ 耶和华尼西 耶和华尼西我上帝
+
+
+
+ 燃烧赤子心
+
+ 神御赐生机 无限生气 丰富盛载恩典力量
+ 神属性盖我本性 得胜亦有余
+ 神御赐使命 神仆呼应 一起盛载艰苦任命
+ 团队誓奋斗不息 坚决齐共往
+ 凝聚赤子心 燃烧 燃尽一生给主用
+ 熔尽你共我的真诚 破千关
+ 凝聚教会心 燃烧 燃尽一生给主用
+ 熔尽你共我的恩情 拼搏为主
+
+
+
+ 神圣婴孩
+
+ 多安宁 神圣婴孩 马槽安稳 草柔软
+ 看东方 轻抹光影 圣诞清晨终显现
+ 小圣婴 因您诞生 荒野牧人弃群羊
+ 欢笑 眼泪皆一样 却无罪恶 无玷污
+ 祂带来何等恩赐 成就天父心所愿
+ 小身躯隐约揭示上帝应许皆实现
+ 小圣婴 你生世上 亲尝我们乐与苦
+ 欢笑 眼泪皆一样 却无罪恶无玷污
+ 祂远离荣耀家园 寻找祂失丧民众
+ 尝苦杯死亡灾难 躺卧孤寂幽墓中
+ 小圣婴 因您圣名 黑暗权势尽倾覆
+ 阴间 罪权皆屈服 您是主基督耶稣
+ 多安宁 神圣婴孩 马槽安稳 草柔软
+ 看东方 轻抹光影 圣诞清晨终显现
+
+
+
+ 我是你所造
+
+ 是你创造我的肺腑 在母腹中你已覆庇我
+ 我的受造奇妙可畏 你的作为我心深知道
+ 我在暗中受造被联络 未成形的体质你已看见
+ 我的日子是你所定 尚未度一日已写在你的册上
+
+ 你的意念向我何等宝贵 恩典比海沙更多
+ 求你鉴察我 试炼我 引导我走永生的道路
+
+
+
+ 你是圣洁
+
+ 你是圣洁 圣洁 无人与你相比
+ 你是圣洁 圣洁 荣耀归予我主
+
+ 我要高歌赞颂你圣名 奉上我爱予你
+ 于主光中愿洁净我心灵 更新我灵像你
+
+
+
+ 以清洁的心我赞美你
+
+ 以清洁的心我赞美你
+ 以清洁的心我尊崇你
+ 以我里面正直的灵 我要高举你的名
+ 我要高举你的名 我要高举你的名
+ 心中充满着对你的爱 我要歌颂你的名
+
+
+
+ 寻求你的面
+
+ 神啊求你按你的慈爱怜恤 按你丰盛的慈悲涂抹过犯
+ 求你将我的罪孽洗除净尽 洁除我的罪
+ 我向你犯罪惟独得罪了你 你责备我的时候显为公义
+ 你判断我的时候显为正直 求主赦免
+ 你所喜爱的 (是内里的诚实)
+ 你在我隐密处 (必使我得智慧)
+ 今我谦卑祷告 寻求你的面
+ 转离我恶行 (求你从天垂听)
+ 赦免我们的罪 (医治我们的地)
+ 今我谦卑祷告 寻求你的面
+
+
+
+ 主我给您我心
+
+ 主啊 我只渴求 崇敬主您
+ 我要尽我心敬拜恩主
+ 于我内里一切 也都歌唱
+ 我所盼所思在于您
+ 主我给您我心 灵都归给您 为恩主您而活
+ 我这生里每天 存留的每口气 求显主您美意
+
+
+
+ 让我们来登
+
+ 让我们来登 让我们来登
+ 让我们来登 登耶和华的山
+ 那里有主就有自由 那里有主就有喜乐
+ 祂要教导祂的话语 指示祂的路
+ 那里有主就有能力 那里有主就有慈爱
+ 这些祝福都是你的 你只需要来
+ 让我们来登 让我们来登
+ 让我们来登 登耶和华的山
+
+
+
+ 我们欢迎您来到
+
+ 耶稣愿您降临 停留在我心中
+ 唯您被我欢迎来居住我心
+ 这心作您家您可顺意 于我身上作一切您爱的事
+ 亲爱耶稣来 来接受我爱
+ 让我们再说您是我们的一切
+ 亲爱耶稣来 接受我们的倾诉
+ 我们欢迎您来到
+
+
+
+
+
+ 恩典之路
+
+ 你是我的主.引我走正义路.
+ 高山或低谷.都是你在保护.
+ 万人中唯独.你爱我认识我.
+ 永远不变的应许.这一生都是祝福.
+ 一步又一步.这是恩典之路.
+ 你爱.你手.将我紧紧抓住.
+ 一步又一步.这是盼望之路.
+ 你爱.你手.牵引我走这人生路.
+
+
+
+ 满有能力
+
+ 我的盼望.就在耶稣基督里.
+ 在你里面满有平安.生命泉源.
+ 就在耶稣基督里.有主在我里面活着.
+ 我宣告在我里面的.
+ 比世上一切更有能力.
+ 我不属这世界.我高举耶稣的名.
+ 我宣告在我里面有.
+ 活水涌流满有能力.
+ 有耶稣在我里面活着.我勇敢站立.
+ 有主在我里面.没有惧怕.能战胜仇敌.
+ 有主在我里面.没有惧怕.还得胜有余
+
+
+
+ 如鹰展翅上腾
+
+ 祂已听见我的呼求,祂也明白我的渴望,
+ 放下重担,脱去一切缠累,恢复神造我的荣美形象,
+ 永在的神,创造万物的主, 祂的智慧无法测度,
+ 疲乏的祂赐能力,软弱的祂加力量,等候耶和华必从新得力,
+
+ 如鹰展翅上腾,翱翔在神的国度里,
+ 飞越所有艰难和风暴, 单单注视你荣耀宝座,
+ 如鹰展翅上腾, 翱翔在神的国度里,
+ 领受圣灵恩膏和大能, 活出美好自由的风采。
+
+
+
+ 神羔羊配得
+
+ 感谢你的十字架 感谢你付上代价
+ 担当我罪和羞愧 使我完全
+ 赐下奇妙恩典 感谢你无比大爱
+ 感谢你钉痕双手 宝血洗净我污秽
+ 使我了解 你完全包容赦免
+ 神羔羊配得 坐在宝座上 头戴着尊贵冠冕 你做王到永远
+ 来尊崇赞美 耶稣神儿子 从天降下被钉十架
+ 神羔羊配得 神羔羊配得
+
+
+
+ 最珍贵的角落
+
+ 谢谢你灿烂笑容,照亮我的天空
+ 谢谢你分享心情,把我放在你心中
+ 夜里有时为寒冷,你我生根同暖土
+ 友情是最亮的星,我的生命从此美丽
+ 当你被花朵包围尽情欢欣
+ 我带春风使你舞其中
+ 当你正走在坎坷路,我会伴你在左右
+ 一起向蓝天欢呼,向白云招手
+ 我们要一起笑一起哭
+ 千万人中有个人懂我
+ 你有最珍贵的角落
+
+ 谢谢你灿烂笑容,照亮我的天空
+ 谢谢你分享心情,把我放在你心中
+ 夜里有时为寒冷,你我生根同暖土
+ 友情是最亮的星,我的生命从此美丽
+ 当你被花朵包围尽情欢欣
+ 我带春风使你舞其中
+ 当你正走在坎坷路,我会伴你在左右
+ 一起向蓝天欢呼,向白云招手
+ 我们要一起笑一起哭
+ 千万人中有个人懂我
+ 你有最珍贵的角落
+ 当你被花朵包围尽情欢欣
+ 我带春风使你舞其中
+ 当你正走在坎坷路,我会伴你在左右
+ 一起向蓝天欢呼,向白云招手
+ 我们要一起笑一起哭
+ 千万人中有个人懂我
+ 你有最珍贵的角落
+ 千万人中有个人懂我
+ 你有最珍贵的角落
+
+
+
+ 耶和华祝福满满
+
+ 田中的白鹭鸶 无欠缺什么
+ 山顶的百合花 春天现香味
+ 总是全能的上帝 每日赏赐真福气
+ 使地上发芽结实 显出爱疼的根据
+
+ 耶和华祝福满满 就像海边土沙
+ 恩典慈爱直到万世代
+ 我要举手敬拜他 用欢喜的歌声
+ 赞美称颂他名永无息
+
+
+
+ 脚步
+
+ 祢的脚步带着我的脚步
+ 一步一步都有祝福
+ 每个脚步我要紧紧跟随
+ 走在蒙福的道路
+ 求给我更多的勇气
+ 给我更多的信心
+ 让我勇敢踏出跟随祢的脚步
+ 跟祢行在水面上
+ 跟祢走在旷野地
+ 曲曲折折我也不在乎
+ 我只要更多信靠祢
+ 只要更多顺服祢
+ 凡是出于祢的我就默然不语
+ 就算经过黑暗谷
+ 就算遇到暴风雨
+ 在祢手中都将变成祝福
+
+
+
+ 爱可以再更多一点点
+
+ 我可以拥有全世界却没有爱
+ 我可以明白所有事却还是空白
+ 我可以用信心移山却还是孤单
+ 这世界没有了爱 一切仍是黑白
+ 不要埋藏在心里 把爱说出来
+ 不要默默在一旁 把爱活出来
+ 喔爱 可以在更多一点点
+ 不怕被伤害 把灵魂锁起来
+ 爱 可以在更多一点点
+ 从天父来的爱 把惧怕挪开
+ 发现幸福在转角与你相遇
+ 一瞬间 这世界变的好美
+
+
+
+ 丰盛的应许
+
+ 你仰脸保守你所爱的你护庇永远不离弃
+ 你将我从淤泥里捧起放我在你的手心
+ 我凭着信心领取你丰盛的应许
+ 世界也不能夺去神美好的旨意
+ 我凭着信心领取你恩典永不止息
+ 看见美好应许成就荣耀全都归于你
+ 我等候主我相信你爱我永不放弃
+ 世界也不能夺去神美好的旨意
+ 我等候主我相信你旨意高过我的
+ 看见美好应许成就我全心全意敬拜你
+
+
+
+ 何等恩典
+
+ 以真诚的心.降服在你面前.
+ 开我心眼使我看见.
+ 以感恩的心.领受生命活水.
+ 从你而来的温柔谦卑.
+ 何等恩典.你竟然在乎我.
+ 何等恩典.你宝血为我流.
+ 何等恩典.你以尊贵荣耀为我冠冕.
+ 我的嘴必充满赞美.
+ 你已挪去我所有枷锁.
+ 你已挪去我所有重担.
+ 你已挪去我所有伤悲.
+ 你的名配得所有颂赞
+
+
+
+ 空谷的回音
+
+ 我是空谷的回音 四处寻找我的心
+ 问遍溪水和山川 我心依然无处寻
+ 哦我曾经多旁徨 四周一无安息土
+ 笑声留不住欢乐 眼泪带不走痛苦
+ 我说生命不希奇 一声叹息归尘土
+ 放弃一切的追求 任凭潮水带我走
+ 哦我曾经多旁皇 四周一无安息土
+ 笑声留不住欢乐 眼泪带不走痛苦
+ 有人曾经告诉我 耶稣正在寻找我
+ 他爱能够保护我 他手能够医治我
+ 哦我心中多快乐 我又见到那太阳
+ 我心紧紧跟随他 我唇还要赞美他
+ 朋友你今在那里 四处奔跑何时已
+ 如果你还愿意听 让我在来告诉你
+ 耶稣基督救赎主 他曾满足心无数
+ 向他倾诉向他哭 他必使你得饱足
+
+
+
+ 神迹 - 芥菜种音乐
+
+ 感谢你所赐新生命,因你爱使我们聚集。
+ 若不因为你我怎能在这里。被赎的生命交托于你。
+
+ 感谢你教导的真理,提醒我天天要舍己。
+ 让你在我生命中来管理,我心有神走过的痕迹。
+
+ 哦~神啊我要跟随你!赐我们全然向你的心,
+ 没有人事物能与你相比,帮助我走的更坚定。
+
+ 哦~神啊,我要事奉你,用我被改变的生命,
+ 在每一日中彰显你神迹,使人看见,将荣耀归你,
+
+
+
+ 相信有爱,就有奇迹
+
+ 黑夜将过去 未来不再迟疑
+ 牵起我的手 祢给我勇气
+ 曙光渐显明 点亮前方路
+ 我展翅高飞 祢给我信心
+ 只要相信 相信就有奇迹
+ 挥动信心的翅膀 随着梦想起飞
+ 相信有爱 就有奇迹
+ 不轻言放弃 只要打开眼睛
+ 手牵手一起 就不孤寂
+ 相信有爱 就有奇迹
+ 虽然逆着风 祢给我勇气
+ 飞往那佳美之地
+
+ 信じれば 奇迹はおこる
+ あきらめず 目を开いて
+ つないだ手 离さずに
+
+ 只要相信相信就有奇迹
+ 挥动信心的翅膀 随着梦想起飞
+
+
+
+ 主你是我力量
+
+ 我的诗歌 我的拯救
+ 祢是我患难中随时的帮助
+ 众山怎样围绕耶路撒冷
+ 祢必围绕我到永远
+ 主祢是我力量 主祢是我高台
+ 坚固磐石 我信靠祢必不动摇
+ 主祢是我力量 主祢是避难所
+ 我的盼望只在乎祢
+
+ 我的诗歌 我的拯救
+ 祢是我患难中随时的帮助
+ 众山怎样围绕耶路撒冷
+ 祢必围绕我到永远
+ 主祢是我力量 主祢是我高台
+ 坚固磐石 我信靠祢必不动摇
+ 主祢是我力量 主祢是避难所
+ 我的盼望只在乎祢
+
+ 主祢是我力量 主祢是我高台
+ 坚固磐石 我信靠祢必不动摇
+ 主祢是我力量 主祢是避难所
+ 我的盼望只在乎祢
+
+ 我的盼望只在乎祢
+ 我的盼望只在乎祢
+ 主祢是我力量 主祢是我高台
+ 坚固磐石 我信靠祢必不动摇
+ 主祢是我力量 主祢是避难所
+ 我的盼望只在乎祢
+
+ 主祢是我力量 主祢是我高台
+ 坚固磐石 我信靠祢必不动摇
+ 主祢是我力量 主祢是避难所
+ 我的盼望只在乎祢
+
+ 我的盼望只在乎祢
+ 我的盼望只在乎祢
+ 我的盼望只在乎祢
+
+
+
+ 坐在宝座上圣洁羔羊
+
+ 坐在宝座上圣洁羔羊
+ 我们俯伏敬拜你
+ 昔在今在以后永在
+ 唯有你是全能真神
+ 坐在宝座上尊贵羔羊
+ 我们俯伏敬拜你
+ 颂赞尊贵荣耀权能
+ 都归给你直到永远
+ 万王之王 万主之主
+ 唯有你配得敬拜和尊崇
+ 万王之王 万主之主
+ 我们高举你圣名直到永远
+
+
+
+ 你的爱
+
+ 你创造宇宙万物,统管一切所有,
+ 但你却关心我的需要,了解我的感受。
+
+ 你手铺陈天上云彩,打造永恒国度,
+ 但这双手却甘心为我,忍受彻骨钉伤苦痛。
+
+ 你公义审判万民,圣洁光照全地;
+ 但你却一再施恩典,一再施怜悯,
+ 给我机会回转向你。
+
+ 你的爱如此温柔,超乎我心所想。
+ 这样大有能力的主,竟捧我在手掌心上。
+
+ 你的爱如此深切,我知我无以报答,
+ 但愿倒空我的生命,学习你谦卑的样式,
+ 背起我自己的十字架。
+
+
+
+ 我一生
+
+ 我在主面前拍拍手
+ 在主前跳跳舞
+ 在主面前唱一首欢乐的歌
+ 耶稣爱我我知道
+ 耶稣爱我不改变
+ 耶稣爱我,哈利路亚
+ 我在主面前拍拍手
+ 在主前跳跳舞
+ 在主面前唱一首欢乐的歌
+ 耶稣爱我我知道
+ 耶稣爱我不改变
+ 耶稣爱我,哈利路亚
+ 我一生要赞美主
+ 我一生要事奉主
+ 我一生要来彰显主荣美
+ 我一生要为主而活
+ 我一生要高举主
+ 我一生要跟随主
+ 我一生要来彰显主荣美
+ 我一生要为主而活
+
+ 我要赞美主,赞美主
+ 我要全心全意来赞美主
+ 我要赞美主,赞美主
+ 我要一生一世来赞美主
+ 我要赞美主,赞美主
+ 我要全心全意来赞美主
+ 我要赞美主,赞美主
+ 我要一生一世来赞美主
+ 我一生要赞美主
+ 我一生要事奉主
+ 我一生要来彰显主荣美
+ 我一生要为主而活
+ 我一生要高举主
+ 我一生要跟随主
+ 我一生要来彰显主荣美
+ 我一生要为主而活
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/AboutActivity.java b/app/src/main/java/com/goodtrendltd/HolySongs/AboutActivity.java
new file mode 100644
index 0000000..b2c4665
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/AboutActivity.java
@@ -0,0 +1,35 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.Activity;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.text.util.Linkify;
+import android.widget.TextView;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: LeOn
+ * Date: 13-10-6
+ * Time: 下午10:33
+ */
+public class AboutActivity extends Activity {
+ private SharedPreferences sharedPreferences;
+
+ private String ABOUT_CONTENT = "\n我们是位于马里兰州Germantown的德国镇基督教会,欢迎大家光临。http://www.cccgermantown.org/ " +
+ "\n\n 本app为方便团契或其他聚会时大家敬拜之用,至少可以省去打印的麻烦:-) " +
+ "\n\n任何意见,请反馈至: vcfvct@gmail.com \n感谢Katie的鼓励和添加歌曲^_^。";
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ sharedPreferences = getSharedPreferences(getString(R.string.app_pref), MODE_PRIVATE);
+ if (sharedPreferences.getBoolean(getString(R.string.night_mode_pref_key), true)) {
+ setTheme(android.R.style.Theme_Holo);
+ } else {
+ setTheme(android.R.style.Theme_Holo_Light);
+ }
+ TextView textView = new TextView(this);
+ textView.setLineSpacing(10, 1);
+ textView.setAutoLinkMask(Linkify.ALL);
+ textView.setText(ABOUT_CONTENT);
+ setContentView(textView);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/ChatActivity.java b/app/src/main/java/com/goodtrendltd/HolySongs/ChatActivity.java
new file mode 100644
index 0000000..9224d40
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/ChatActivity.java
@@ -0,0 +1,940 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.v4.content.LocalBroadcastManager;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.NotificationCompat;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.Window;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.ProgressBar;
+import android.widget.RadioButton;
+import android.widget.RadioGroup;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import org.jivesoftware.smack.ConnectionListener;
+import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.XMPPException;
+
+import com.goodtrendltd.HolySongs.bus.BibleSetting;
+import com.goodtrendltd.HolySongs.bus.GlobalMediaStar;
+import com.goodtrendltd.HolySongs.bus.UserMag;
+import com.goodtrendltd.HolySongs.chat.ApplicationSessionStateCallback;
+import com.goodtrendltd.HolySongs.chat.BaseChatActivity;
+import com.goodtrendltd.HolySongs.chat.Chat;
+import com.goodtrendltd.HolySongs.chat.ChatAdapter;
+import com.goodtrendltd.HolySongs.chat.ChatMessage;
+import com.goodtrendltd.HolySongs.chat.ChatService;
+import com.goodtrendltd.HolySongs.chat.ChatService.UserTask;
+import com.goodtrendltd.HolySongs.chat.ChatUser;
+import com.goodtrendltd.HolySongs.chat.HttpClientUtil;
+import com.goodtrendltd.HolySongs.entities.ChatThreadScheduler;
+import com.goodtrendltd.HolySongs.entities.NavigationCategory;
+import com.goodtrendltd.HolySongs.helpers.CommonMethod;
+import com.quickblox.chat.model.QBDialog;
+import com.quickblox.core.request.QBRequestGetBuilder;
+
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+
+public class ChatActivity extends BaseChatActivity implements ApplicationSessionStateCallback, SwipeRefreshLayout.OnRefreshListener {
+
+ private static final String TAG = "ChatActivity";
+
+ public static final String EXTRA_DIALOG = "dialog";
+ private final String PROPERTY_SAVE_TO_HISTORY = "save_to_history";
+ public static final String CHAT_INFO_DATE = "chat_info_date";
+
+ private EditText messageEditText;
+ private ListView messagesContainer;
+ private Button sendButton;
+ private ProgressBar progressBar;
+ private ChatAdapter adapter;
+ private SwipeRefreshLayout swipeLayout;
+
+ private Chat chat;
+ private QBDialog dialog;
+ private RelativeLayout container;
+ private String userkey = "";
+ private Boolean finishedLoading = false;
+ private String token = null; //app push token
+ private Boolean fromGospel = false;
+ private ArrayList messageList = new ArrayList();
+ private ArrayList idList = new ArrayList<>();
+ private Integer mId=0;
+ private Integer SERVER_CONNECT_ATTEMPTS = 3;//number of attempts to get chat history
+ private Integer retry = SERVER_CONNECT_ATTEMPTS;
+ private AlertDialog errorDialog = null;
+ AlertDialog.Builder errorDialogBuilder = null;
+ private ChatActivity content;
+ private static ChatUser chatUser = null;
+ private LinearLayout errorView = null;
+ int updateTries = 0;
+ private int lastTask = 0;
+ private int LOAD_MESSAGES = 1;
+ private int REGISTER = 2;
+ private int UPDATE_USER = 3;
+ public static String CATEGORY = "category";
+ public static String FORM_MESSAGE = "form message";
+ private int category = -1;
+ private String formMessage = "", name = "";
+ public static String NAME = "name";
+ Dialog decisionDialog;
+ ChatMessage infoMessage = null;
+ Boolean registerSuccess = false;
+ static int TRIES_MAX = 3;
+
+ public static void start(Context context, Bundle bundle) {
+ Intent intent = new Intent(context, ChatActivity.class);
+ intent.putExtras(bundle);
+ context.startActivity(intent);
+ }
+
+ protected void initToolbar() {
+ ActionBar actionbar = getSupportActionBar();
+ if (actionbar != null) {
+ actionbar.setDisplayShowTitleEnabled(false);
+ actionbar.setDisplayShowHomeEnabled(true);
+ actionbar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_chat);
+ content = this;
+ Bundle extras = getIntent().getExtras();
+ if(extras != null){
+ if (extras.getInt("fromGospel", 0) != 0) {
+ fromGospel = true;
+ }
+ category = extras.getInt(CATEGORY, -1);
+ formMessage = extras.getString(FORM_MESSAGE);
+ name = extras.getString(NAME);
+ }
+
+ Log.v(TAG,"onCreate fromGospel: "+fromGospel + " --");
+ initViews();
+ initToolbar();
+ // Init chat if the session is active
+ if (isSessionActive()) {
+ initChat();
+ }
+
+ ChatService.getInstance().addConnectionListener(chatConnectionListener);
+
+ new Thread(new Runnable() {
+ @Override
+ public void run()
+ {
+ GlobalMediaStar.recordOpenChat(content);
+ }
+ }).start();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ lastTask=0;
+ ChatThreadScheduler.getInstance().rescheduleCheckMessages(ChatThreadScheduler.SHORT_PERIOD);
+ Log.v(TAG, "onResume");
+ // Register mMessageReceiver to receive messages.
+ LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
+ new IntentFilter(ChatService.NEW_MESSAGES));
+ // Clear all notifications
+ NotificationManager nMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ nMgr.cancelAll();
+ }
+
+ @Override
+ public void onPause() {
+ Log.v(TAG, "onPause()");
+ // Unregister since the activity is not visible
+ ChatThreadScheduler.getInstance().rescheduleCheckMessages(ChatThreadScheduler.LONG_PERIOD);
+ LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
+ super.onPause();
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ Log.v(TAG, "onStop()");
+ ChatThreadScheduler.getInstance().rescheduleCheckMessages(ChatThreadScheduler.LONG_PERIOD);
+
+ }
+
+ //begin of menu related
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu items for use in the action bar
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.chat_menu, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ onBackPressed();
+ return true;
+ case R.id.findchurch:
+ showChurchForm();
+ return true;
+ case R.id.gospel:
+ showGospelActivity();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ Log.v(TAG, "onDestroy()");
+ ChatThreadScheduler.getInstance().rescheduleCheckMessages(ChatThreadScheduler.LONG_PERIOD);
+ ChatService.getInstance().removeConnectionListener(chatConnectionListener);
+ }
+
+ @Override
+ public void onBackPressed() {
+ Log.v(TAG, "onBackPressed");
+ if (chat!=null) {
+ try {
+ chat.release();
+ } catch (XMPPException e) {
+ Log.e(TAG, "failed to release chat", e);
+ }
+ }
+ super.onBackPressed();
+ if (decisionDialog!=null) {
+ decisionDialog.dismiss();
+ }
+ if(fromGospel){
+ Intent intent = new Intent();
+ if(CommonMethod.isNetworkAvailable(content)==true)
+ {
+ intent.putExtra("page",NavigationCategory.Home);
+ }
+ else
+ {
+ intent.putExtra("page", NavigationCategory.Library);
+ }
+ intent.setClass(ChatActivity.this, MainActivity.class);
+ ChatActivity.this.startActivity(intent);
+ ChatActivity.this.finish();
+ }
+ else
+ {
+ finish();
+ }
+ }
+
+ private void initViews() {
+ messagesContainer = (ListView) findViewById(R.id.messagesContainer);
+ messagesContainer.setOverScrollMode(View.OVER_SCROLL_NEVER);
+ messageEditText = (EditText) findViewById(R.id.messageEdit);
+ progressBar = (ProgressBar) findViewById(R.id.progressBar);
+ errorView = (LinearLayout) findViewById(R.id.error_view);
+ swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);
+ swipeLayout.setOnRefreshListener(this);
+ swipeLayout.setRefreshing(false);
+ //加载颜色是循环播放的,只要没有完成刷新就会一直循环,color1>color2>color3>color4
+ swipeLayout.setColorSchemeResources(
+ android.R.color.holo_green_light,
+ android.R.color.holo_orange_light, android.R.color.holo_red_light);
+
+ Intent intent = getIntent();
+ dialog = (QBDialog) intent.getSerializableExtra(EXTRA_DIALOG);
+ container = (RelativeLayout) findViewById(R.id.container);
+ chatUser = ChatUser.getInstance();
+
+ adapter = new ChatAdapter(ChatActivity.this, messageList);
+ messagesContainer.setAdapter(adapter);
+// LinearLayout pickCategoryButton = (LinearLayout)findViewById(R.id.linear_chat_category);
+// pickCategoryButton.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// Intent intent = new Intent();
+// intent.setClass(ChatActivity.this, ChatPreActivity.class);
+// ChatActivity.this.startActivity(intent);
+// }
+// });
+
+ // Send button
+ //
+ sendButton = (Button) findViewById(R.id.chatSendButton);
+ sendButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String messageText = messageEditText.getText().toString();
+ if (TextUtils.isEmpty(messageText)) {
+ return;
+ }
+ sendChatMessage(messageText);
+
+ }
+ });
+ errorView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (lastTask == LOAD_MESSAGES) {
+ onPreparing();
+ loadPastMessages();
+ }
+ else if (lastTask == REGISTER) {
+ onPreparing();
+ register(chatUser);
+ }
+ else if (lastTask == UPDATE_USER){
+ onPreparing();
+ updateUser(chatUser);
+ }
+ }
+ });
+
+ onPreparing();
+
+ }
+
+ private void showChurchForm() {
+ Intent intent = new Intent();
+ intent.setClass(ChatActivity.this, ChatFormActivity.class);
+ intent.putExtra(ChatFormActivity.CATEGORY, ChatPreActivity.CHURCH);
+ ChatActivity.this.startActivity(intent);
+ }
+
+ private void showGospelActivity() {
+ Intent intent = new Intent(this, GospelActivity.class);
+ intent.putExtra("origin","main");
+ startActivity(intent);
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event)
+ {
+ if (keyCode == KeyEvent.KEYCODE_BACK )
+ {
+ Log.v(TAG,fromGospel + " --");
+ if(fromGospel){
+ Intent intent = new Intent();
+ if(CommonMethod.isNetworkAvailable(content))
+ {
+ intent.putExtra("page",NavigationCategory.Home);
+ }else
+ {
+ intent.putExtra("page", NavigationCategory.Library);
+ }
+ intent.setClass(ChatActivity.this, MainActivity.class);
+ ChatActivity.this.startActivity(intent);
+ ChatActivity.this.finish();
+ }
+ else
+ {
+ finish();
+ }
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ private void showKeyboard() {
+ ((InputMethodManager) messageEditText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(messageEditText, InputMethodManager.SHOW_IMPLICIT);
+ }
+
+ private void hideKeyboard() {
+ //TODO: Make this actually work
+ ((InputMethodManager) messageEditText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(messageEditText.getWindowToken(), 0);
+ }
+
+
+ private void sendChatMessage(String messageText) {
+ sendChatMessage(messageText, true);
+ }
+
+ private void sendChatMessage(String messageText, Boolean visible) {
+ UserMag.recordChatFirstMessage(ChatActivity.this);
+ final ChatMessage chatMessage = new ChatMessage();
+ chatMessage.setBody(messageText);
+ //chatMessage.setProperty(PROPERTY_SAVE_TO_HISTORY, "1");
+ chatMessage.setDate(Calendar.getInstance().getTime());
+ chatMessage.setDirection("in");
+ chatMessage.setSendingInProgress(true);
+
+ try {
+ if (visible) {
+ showMessage(chatMessage);
+ final Integer msgIndex = messageList.indexOf(chatMessage);
+ ChatService.sendMessage(chatMessage.getBody(), new ChatService.MessageTask() {
+ @Override
+ protected void onSuccessfulSend(int id) {
+ messageList.get(msgIndex).setSendingInProgress(false);
+ adapter.notifyDataSetChanged();
+ }
+ });
+ }
+ else {
+ Log.d(TAG,"form message: "+chatMessage.getBody());
+ ChatService.sendMessage(chatMessage.getBody(), new ChatService.MessageTask() {
+ @Override
+ protected void onSuccessfulSend(int id) {
+ UserMag.addFormMessageId(getBaseContext(), id);
+ chatUser.addFormMessageId(id);
+ Log.d("chat-form", "set form message id: "+id);
+ }
+ });
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "failed to send a message", e);
+ }
+ messageEditText.setText("");
+ }
+
+ public void setContentBottomPadding(int padding) {
+ container.setPadding(0, 0, 0, padding);
+ }
+
+ private void initChat() {
+ token = ChatService.getToken(this);
+
+ // Restore preferences
+ userkey = ChatUser.getInstance().getKey();
+
+ if (userkey.isEmpty()) { //need to register
+ Log.d("chat-activity-token", "token being used: " + token);
+ if (fromGospel) {
+ showDecisionDialog(true);
+ }
+ else
+ {
+ //pick a category
+ switch (category) {
+ case -1:
+ ShowChatCategory();
+ break;
+ case ChatPreActivity.FAITH:
+ showNameDialog();
+ break;
+ default: //already picked a category
+ chatUser.setUsername(name);
+ chatUser.setFormMessage(formMessage);
+ register(chatUser);
+ swipeLayout.setEnabled(false);
+ break;
+ }
+ }
+ }
+ else { // has a userkey
+ if (fromGospel) {
+ showDecisionDialog(false);
+ }
+ loadChatHistory();
+
+ //send category message
+ if (category!=-1 && category!=ChatPreActivity.FAITH) {
+ chatUser.setFormMessage(formMessage);
+ sendChatMessage(chatUser.getFormMessage(), false);
+ }
+ Log.d("ChatActivity", "ChatUser key being used: " + userkey);
+ Log.d("ChatActivity-token", "token being used: " + token);
+
+ }
+ }
+
+ private void register(ChatUser user) {
+ final ChatUser finalUser = user;
+ if (registerSuccess){
+ Log.v("chat-activity", "register already succeeded!");
+ //catch called twice
+ return;
+ }
+ showAlert(getString(R.string.registering));
+ ChatService.register(token, new UserTask() {
+ @Override
+ protected void onSuccess() {
+ registerSuccess = true;
+ updateUser(finalUser); //after registering, update with user info from dialog
+ if (!finalUser.getFormMessage().isEmpty()) {
+ sendChatMessage(finalUser.getFormMessage(),false);
+ }
+ onLoadFinish();
+ showInfoMessage();
+ }
+
+ @Override
+ protected void onFailure() {
+ if (!ChatActivity.this.isFinishing()) {
+ showAlert("Unable to register");
+ onNetworkFailure(REGISTER);
+ }
+ }
+ });
+ }
+
+ private void onNetworkFailure(int task) {
+ //showErrorsAlert("网络失败");
+ lastTask = task;
+ progressBar.setVisibility(View.GONE);
+ errorView.setVisibility(View.VISIBLE);
+ finishedLoading = false;
+ if (errorDialog != null) {
+ errorDialog.dismiss();
+ }
+ sendButton.setEnabled(false);
+ }
+
+ private void onPreparing() {
+ progressBar.setVisibility(View.VISIBLE);
+ errorView.setVisibility(View.GONE);
+ finishedLoading = false;
+ sendButton.setEnabled(false);
+ }
+
+ private void onLoadFinish() {
+ if (ChatActivity.this.isSessionActive()) {
+ Log.v(TAG, "onLoadFinish()");
+ progressBar.setVisibility(View.GONE);
+ sendButton.setEnabled(true);
+ if (errorDialog != null) {
+ errorDialog.dismiss();
+ }
+ finishedLoading = true;
+ chatUser.emptyInbox();
+// navBar.setNotificationBubble();
+ }
+ }
+
+ private void updateUser(final ChatUser user) {
+ ChatService.updateUser(user.getUsername(), user.getDecision(), new UserTask() {
+ @Override
+ protected void onSuccess() {
+ Log.v(TAG, "updateUser() successful");
+ }
+
+ @Override
+ protected void onFailure() {
+ if (!ChatActivity.this.isFinishing()) {
+// onNetworkFailure(UPDATE_USER);
+ if (updateTries < TRIES_MAX) {
+ updateTries++;
+ updateUser(user);
+ //TODO: Deal with this from return and still unupdated
+ }
+ }
+ }
+ });
+ }
+
+
+ @Override
+ public void onRefresh() {
+ Log.d(TAG, "Loading Messages");
+ ChatService.loadMoreMessages(adapter.getCount(), new ChatService.MessageTask() {
+ @Override
+ protected void onSuccessfulReceive(HttpClientUtil.ResponseObject msgResponse) {
+ ArrayList messages = msgResponse.getMessages();
+ Integer i;
+ for (i = messages.size() - 1; i >= 0; i--) {
+ messageList.add(0, messages.get(i));
+ idList.add(messages.get(i).getId());
+ }
+ adapter.notifyDataSetChanged();
+ swipeLayout.setRefreshing(false);
+ if (msgResponse.getPageNext() == 0) {
+ swipeLayout.setEnabled(false);
+ messagesContainer.setOverScrollMode(View.OVER_SCROLL_ALWAYS);
+ }
+ }
+ });
+ }
+
+ private void loadChatHistory() {
+ QBRequestGetBuilder customObjectRequestBuilder = new QBRequestGetBuilder();
+ customObjectRequestBuilder.setPagesLimit(100);
+ customObjectRequestBuilder.sortDesc("date_sent");
+ swipeLayout.setEnabled(false);
+ hideKeyboard();
+ loadPastMessages();
+ }
+
+ private void loadPastMessages() {
+ getMessages(false, 10);
+ }
+
+ private void getMessages(final Boolean onlyNew, int count) {
+ ChatService.getMessages(onlyNew, count, 1, new ChatService.MessageTask() {
+ @Override
+ protected void onSuccessfulReceive(HttpClientUtil.ResponseObject msgResponse) {
+ onLoadFinish();
+ if (msgResponse.getPageNext() > 0) {
+ swipeLayout.setEnabled(true);
+ } else {
+ swipeLayout.setEnabled(false);
+ showInfoMessage();
+ }
+ ArrayList messages = msgResponse.getMessages();
+ showMessages(messages, onlyNew);
+ progressBar.setVisibility(View.GONE);
+ finishedLoading = true;
+ retry = SERVER_CONNECT_ATTEMPTS; //reset attempts
+ }
+
+ @Override
+ protected void onFailure() {
+ if (retry > 0) {
+ retry--;
+ if (errorDialog == null) {
+ showAlert("Could not connect to server. Retrying...");
+ }
+ loadPastMessages();
+ } else {
+ onNetworkFailure(LOAD_MESSAGES);
+ }
+ Log.e(TAG, "Error Receiving Messages");
+ }
+ });
+ }
+
+ private void showAlert(final String string) {
+ final Handler handler = new Handler();
+ if (errorDialog == null) {
+ errorDialogBuilder = new AlertDialog.Builder(ChatActivity.this);
+ errorDialogBuilder.setCancelable(true);
+ errorDialog = errorDialogBuilder.create();
+ }
+ handler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ if (!finishedLoading && isSessionActive()) {
+ errorDialog.setMessage(string);
+ errorDialog.setCanceledOnTouchOutside(true);
+ if (ChatActivity.this.isSessionActive()) {
+ errorDialog.show();
+ }
+ }
+ }
+ }, 3);
+ Log.e("ChatActivity-register", "chat alert: " + string);
+ }
+
+ // handler for received Intents for the "new messages" event
+ private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ // Extract data included in the Intent
+ int count = intent.getIntExtra(ChatService.COUNT, 0);
+ Log.d("chat-receiver", "Got number of messages: " + count);
+ getMessages(true, count);
+ chatUser.emptyInbox();
+ }
+ };
+
+ public void showMessages(ArrayList messages, Boolean onlyNew) {
+ for (ChatMessage msg : messages) {
+ // Either show all, or only new incoming messages
+ if (!msg.isOutgoing() || !onlyNew) {
+ Log.v("chat-receiver", "adding id:"+msg.getId());
+ if (!msg.isRead()) { chatUser.markAsRead(msg.getId()); }
+ showMessage(msg);
+ Log.v("chat-receiver", "readbox now: " + chatUser.getReadList());
+
+ }
+ }
+ if (!chatUser.getReadList().isEmpty()) {
+ ChatService.markAsRead(chatUser.getReadList(), new ChatService.MessageTask() {
+ @Override
+ protected void onSuccessfulMark() {
+ adapter.notifyDataSetChanged();
+ chatUser.emptyReadList();
+ }
+ });
+ }
+ }
+
+ public void showMessage(ChatMessage message) {
+ if (adapter==null) {
+ adapter = new ChatAdapter(this,messageList);
+ }
+ if (!idList.contains(message.getId())) {
+ messageList.add(message);
+ idList.add(message.getId());
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ adapter.notifyDataSetChanged();
+ scrollDown();
+ }
+ });
+ }
+ }
+
+ public void showInfoMessage() {
+ if (infoMessage==null) {
+ String storedDate = BibleSetting.SysConfigQuery(this, CHAT_INFO_DATE);
+
+ Log.v(TAG, "showInfoMessage infoMessage==null");
+ infoMessage = new ChatMessage();
+ if (category==ChatPreActivity.CHURCH) {
+ infoMessage.setBody(getResources().getString(R.string.chat_welcome_message_church));
+ } else {
+ infoMessage.setBody(getResources().getString(R.string.chat_welcome_message));
+ }
+ infoMessage.setDirection("out");
+ if (storedDate==null || storedDate.isEmpty()) {
+ infoMessage.setDate(Calendar.getInstance().getTime());
+ BibleSetting.SysConfigUpdate(this, CHAT_INFO_DATE, infoMessage.getUTCDate());
+ } else {
+ try {
+ infoMessage.setDateFromString(storedDate);
+ } catch (ParseException e) {
+ infoMessage.setDate(Calendar.getInstance().getTime());
+ e.printStackTrace();
+ }
+ }
+ infoMessage.setId(-12);
+ }
+ if (!messageList.contains(infoMessage)) {
+ Log.v(TAG, "showInfoMessage !messageList.contains(infoMessage) ");
+ messageList.add(0,infoMessage);
+ idList.add(infoMessage.getId());
+ if (adapter==null) {
+ Log.v(TAG, "showInfoMessage adding to adapter ");
+ adapter = new ChatAdapter(this, messageList);
+ messagesContainer.setAdapter(adapter);
+
+ }
+ adapter.notifyDataSetChanged();
+ }
+ }
+
+ private void scrollDown() {
+ messagesContainer.setSelection(messagesContainer.getCount() - 1);
+ }
+
+
+ ConnectionListener chatConnectionListener = new ConnectionListener() {
+ @Override
+ public void connected(XMPPConnection connection) {
+ Log.i(TAG, "connected");
+ }
+
+ @Override
+ public void authenticated(XMPPConnection connection) {
+ Log.i(TAG, "authenticated");
+ }
+
+ @Override
+ public void connectionClosed() {
+ Log.i(TAG, "connectionClosed");
+ }
+
+ @Override
+ public void connectionClosedOnError(final Exception e) {
+ Log.i(TAG, "connectionClosedOnError: " + e.getLocalizedMessage());
+ }
+
+ @Override
+ public void reconnectingIn(final int seconds) {
+ if (seconds % 5 == 0) {
+ Log.i(TAG, "reconnectingIn: " + seconds);
+ }
+ }
+
+ @Override
+ public void reconnectionSuccessful() {
+ Log.i(TAG, "reconnectionSuccessful");
+ }
+
+ @Override
+ public void reconnectionFailed(final Exception error) {
+ Log.i(TAG, "reconnectionFailed: " + error.getLocalizedMessage());
+ }
+ };
+
+ @Override
+ public void onStartSessionRecreation() {
+
+ }
+
+ @Override
+ public void onFinishSessionRecreation(final boolean success) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if (success) {
+ initChat();
+ }
+ }
+ });
+ }
+
+ protected void ShowChatCategory()
+ {
+ Intent intent = new Intent();
+ intent.setClass(ChatActivity.this, ChatPreActivity.class);
+ UserMag.clearNewNotification();
+ this.startActivity(intent);
+ this.finish();
+ }
+
+ protected void showNameDialog() {
+ chatUser.setDecision(ChatUser.NONE);
+ finishedLoading=false;
+ AlertDialog.Builder builder = new AlertDialog.Builder(ChatActivity.this);
+ LayoutInflater inflater = ChatActivity.this.getLayoutInflater();
+ View dialogView = inflater.inflate(R.layout.dialog_chat_name, null);
+ final EditText nameEditText = (EditText) dialogView.findViewById(R.id.nameTextView);
+ builder.setView(dialogView)
+ .setPositiveButton(R.string.submit, null)
+ .setNegativeButton(R.string.skip, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ swipeLayout.setEnabled(false);
+ register(chatUser);
+ }
+ });
+ final AlertDialog dialog = builder.create();
+
+ dialog.setCanceledOnTouchOutside(false);
+ dialog.setOnShowListener(new DialogInterface.OnShowListener() {
+
+ @Override
+ public void onShow(DialogInterface mdialog) {
+ dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ // get name
+ String name = nameEditText.getText().toString();
+ if (name.isEmpty()) {
+ nameEditText.setError(getResources().getString(R.string.name_prompt_error));
+ return;
+ }
+ chatUser.setUsername(name);
+ register(chatUser);
+ dialog.dismiss();
+ swipeLayout.setEnabled(false);
+ }
+ });
+ }
+ });
+ dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
+ @Override
+ public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
+ // Prevent dialog close on back press button
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ onBackPressed();
+ }
+ return keyCode == KeyEvent.KEYCODE_BACK;
+ }
+ });
+ dialog.show();
+ }
+
+ protected ChatUser showDecisionDialog(final Boolean needsRegister) {
+ final ChatUser user = ChatUser.getInstance();
+ decisionDialog = new Dialog(this);
+ decisionDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ decisionDialog.setContentView(R.layout.dialog_chat_introduction);
+ decisionDialog.setCanceledOnTouchOutside(false);
+ decisionDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
+ @Override
+ public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
+ // Prevent dialog close on back press button
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ onBackPressed();
+ }
+ return keyCode == KeyEvent.KEYCODE_BACK;
+ }
+ });
+
+ final EditText nameEditText = (EditText) decisionDialog.findViewById(R.id.nameTextView);
+ final TextView nameTitle = (TextView) decisionDialog.findViewById(R.id.introduction_title);
+ if (!needsRegister) {
+ nameEditText.setVisibility(View.GONE);
+ nameTitle.setVisibility(View.GONE);
+ }
+ final RadioGroup decisionGroup = (RadioGroup) decisionDialog.findViewById(R.id.buttons_select_decision);
+ Button button = (Button) decisionDialog.findViewById(R.id.button_submit);
+ button.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ // get name
+ String name = nameEditText.getText().toString();
+ if (!name.isEmpty()) {
+ chatUser.setUsername(name);
+ }
+
+ // get selected radio button from radioGroup
+ int selectedId = decisionGroup.getCheckedRadioButtonId();
+
+ //Toast.makeText(getApplicationContext(), "SelectedId: "+selectedId, Toast.LENGTH_SHORT).show();
+ // find the radiobutton by returned id
+ if (selectedId != -1) {
+ switch (selectedId) {
+ case R.id.radioButton1:
+ chatUser.setDecision(ChatUser.PRAYED);
+ break;
+ case R.id.radioButton2:
+ chatUser.setDecision(ChatUser.RECOMMITTED);
+ break;
+ case R.id.radioButton3:
+ chatUser.setDecision(ChatUser.GROW);
+ break;
+ }
+ decisionDialog.dismiss();
+ swipeLayout.setEnabled(false);
+ if (needsRegister) {
+ register(chatUser);
+ } else {
+ updateUser(chatUser);
+ }
+ } else {
+ Toast.makeText(getApplicationContext(), R.string.decision_error, Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
+
+ decisionDialog.show();
+
+ return user;
+ }
+}
+
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/ChatFormActivity.java b/app/src/main/java/com/goodtrendltd/HolySongs/ChatFormActivity.java
new file mode 100644
index 0000000..a0501cc
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/ChatFormActivity.java
@@ -0,0 +1,146 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.util.Log;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.goodtrendltd.HolySongs.bus.GlobalMediaStar;
+import com.goodtrendltd.HolySongs.helpers.CommonMethod;
+
+public class ChatFormActivity extends AppCompatActivity {
+
+ public static String CATEGORY = "category";
+ Activity context;
+
+ EditText txt_name;
+ EditText txt_phone;
+ EditText txt_address;
+ Button btn_submit;
+ private int categoryId=1;
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.chat_form);
+ context = this;
+ initUI();
+ initToolbar();
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ }
+ public void initUI() {
+
+ txt_name = (EditText) findViewById(R.id.txt_name);
+ txt_phone = (EditText) findViewById(R.id.txt_phone);
+ txt_address = (EditText) findViewById(R.id.txt_address);
+
+ btn_submit = (Button) findViewById(R.id.btn_submit);
+ btn_submit.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!checkInfo()) {
+ return;
+ }
+ String message = makeMessage();
+ //TODO: write to prefs?
+ //start chat
+ Intent intent = new Intent();
+ intent.setClass(ChatFormActivity.this, ChatActivity.class);
+ intent.putExtra(ChatActivity.CATEGORY, ChatPreActivity.CHURCH);
+ intent.putExtra(ChatActivity.FORM_MESSAGE, message);
+ intent.putExtra(ChatActivity.NAME, txt_name.getText().toString());
+ Log.d("chat-form", ChatActivity.CATEGORY + ": " + categoryId);
+ Log.d("chat-form", ChatActivity.FORM_MESSAGE + ": " + message);
+ Log.d("chat-form", ChatActivity.NAME+": "+txt_name.getText().toString());
+ ChatFormActivity.this.startActivity(intent);
+ ChatFormActivity.this.finish();
+ }
+ });
+
+ }
+
+ protected void initToolbar() {
+ ActionBar actionbar = getSupportActionBar();
+ if (actionbar != null) {
+ actionbar.setDisplayShowTitleEnabled(false);
+ actionbar.setDisplayShowHomeEnabled(true);
+ actionbar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ onBackPressed();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ private Boolean checkInfo() {
+ boolean check = true;
+ if (txt_name.getText().toString().isEmpty()) {
+ txt_name.setError(getResources().getString(R.string.name_prompt));
+ check = false;
+ }
+ if (txt_phone.getText().toString().isEmpty()) {
+ txt_phone.setError(getResources().getString(R.string.error_phone));
+ check = false;
+ }
+ if (txt_address.getText().toString().isEmpty()) {
+ txt_address.setError(getResources().getString(R.string.error_address));
+ check = false;
+ }
+ return check;
+ }
+
+ private String makeMessage() {
+ String msg = "";
+ //[加入教会]:姓名:xxx;手机号码:13730211;地址:xxxxxx
+ msg="[加入教会]:姓名:"+txt_name.getText()+";手机号码:"+txt_phone.getText()+";地址:"+txt_address.getText();
+ if(CommonMethod.isNetworkAvailable(context))
+ {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ GlobalMediaStar.recordChatMsg(context
+ , txt_name.getText().toString()
+ , txt_phone.getText().toString()
+ , txt_address.getText().toString()
+ , categoryId + ""
+ );
+ }
+ }).start();
+ }
+ return msg;
+ }
+
+ @Override
+ public void onBackPressed() {
+// Intent intent = new Intent();
+// intent.setClass(ChatFormActivity.this, ChatPreActivity.class);
+// ChatFormActivity.this.startActivity(intent);
+// ChatFormActivity.this.finish();
+ super.onBackPressed();
+ }
+}
+
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/ChatPreActivity.java b/app/src/main/java/com/goodtrendltd/HolySongs/ChatPreActivity.java
new file mode 100644
index 0000000..44f8cd2
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/ChatPreActivity.java
@@ -0,0 +1,111 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.graphics.PorterDuff;
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.goodtrendltd.HolySongs.entities.ChatCategory;
+import com.goodtrendltd.HolySongs.helpers.CommonMethod;
+
+import java.util.ArrayList;
+
+
+public class ChatPreActivity extends AppCompatActivity {
+
+ static final int FAITH = 2;//信仰辅导
+ static final int CHURCH = 3;//信仰辅导
+
+ Activity context;
+ Toolbar toolbar;
+
+ ArrayList list = null;
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.chat_pre);
+ context = this;
+ initViews();
+ initToolbar();
+// PushAgent.getInstance(context).onAppStart();
+// SyncUserhandler.postAtTime(runSyncUser, 1000 * 60 * 2);
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ onBackPressed();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ protected void initToolbar() {
+ ActionBar actionbar = getSupportActionBar();
+ if (actionbar != null) {
+ actionbar.setDisplayShowTitleEnabled(false);
+ actionbar.setDisplayShowHomeEnabled(true);
+ actionbar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+
+ public void initViews(){
+ View chatNowView = findViewById(R.id.chat_now_view);
+ View findChurchView = findViewById(R.id.find_church_view);
+ View skipTextView = findViewById(R.id.skip_text_view);
+
+ View.OnClickListener clickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent();
+ int id = v.getId();
+ if (v.getClass()==ImageView.class) {
+ ImageView view = (ImageView) v;
+ view.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
+ }
+ if (id==R.id.chat_now_view || id==R.id.skip_text_view) {
+ intent.setClass(ChatPreActivity.this, ChatActivity.class);
+ intent.putExtra(ChatActivity.CATEGORY, FAITH);
+ ChatPreActivity.this.startActivity(intent);
+ }
+ else {
+ intent.setClass(ChatPreActivity.this, ChatFormActivity.class);
+ intent.putExtra(ChatFormActivity.CATEGORY, CHURCH);
+ ChatPreActivity.this.startActivity(intent);
+ }
+ finish();
+ }
+ };
+
+ chatNowView.setOnClickListener(clickListener);
+ findChurchView.setOnClickListener(clickListener);
+ skipTextView.setOnClickListener(clickListener);
+ }
+
+ @Override
+ public void onBackPressed() {
+ super.onBackPressed();
+ }
+}
+
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/CustomApplication.java b/app/src/main/java/com/goodtrendltd/HolySongs/CustomApplication.java
new file mode 100644
index 0000000..2457cbf
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/CustomApplication.java
@@ -0,0 +1,107 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.Application;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.IBinder;
+import android.support.annotation.Nullable;
+import android.util.Log;
+
+import com.goodtrendltd.HolySongs.bus.GlobalMediaStar;
+import com.goodtrendltd.HolySongs.chat.ChatService;
+import com.goodtrendltd.HolySongs.entities.ChatThreadScheduler;
+import com.goodtrendltd.HolySongs.helpers.CommonMethod;
+import com.google.android.gms.analytics.GoogleAnalytics;
+import com.google.android.gms.analytics.Tracker;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+
+public class CustomApplication extends Application
+{
+ public static CustomApplication instance = null;
+ private static final String VALUE = "Harvey";
+ static Context context;
+ final Handler SyncDataHandler = new Handler();
+ private static ScheduledThreadPoolExecutor exec;
+ public static String FLURRY_API_KEY = "4H89NXRH68DJ7ZZ5Y52R";
+
+ // for Google Analytics
+ public static GoogleAnalytics analytics;
+ public Tracker tracker = null;
+
+ public CustomApplication() {
+ // Exists only to defeat instantiation.
+ instance = this;
+ }
+
+ @Override
+ public void onCreate()
+ {
+ super.onCreate();
+ }
+
+ public static CustomApplication getInstance() {
+ if(instance == null) {
+ instance = new CustomApplication();
+ }
+ return instance;
+ }
+
+ synchronized public Tracker getDefaultTracker() {
+ if (tracker == null) {
+ GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
+ // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
+ tracker = analytics.newTracker(R.xml.global_tracker);
+ }
+ return tracker;
+ }
+
+ public void scheduleMessageRetrieve() {
+
+ ChatService.initIfNeed(this);
+ ChatService.initChatService(this);
+ ChatService.getInstance();
+ ChatThreadScheduler.getInstance().scheduleCheckMessages();
+ }
+
+ public void AppSyncData(){
+
+ try {
+ Class.forName("android.os.AsyncTask");
+ }
+ catch(Throwable ignore) {
+ // ignored
+ }
+ context = getBaseContext();
+ scheduleMessageRetrieve();
+ }
+
+
+ /**
+ * Service for sending data about usage
+ */
+ class AnalyticsService extends Service {
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+
+ return START_STICKY;
+ }
+
+ @Nullable
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+ }
+
+ public static Context getContext()
+ {
+ if (instance==null) {
+ Log.w("bible-application", "WARNING: Tried to get custom application context, which was null");
+ instance = getInstance();
+ }
+ return instance;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/DisplayLyricActivity.java b/app/src/main/java/com/goodtrendltd/HolySongs/DisplayLyricActivity.java
new file mode 100644
index 0000000..cc2ff1b
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/DisplayLyricActivity.java
@@ -0,0 +1,144 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.graphics.Color;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.provider.Settings;
+import android.text.method.ScrollingMovementMethod;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.widget.ShareActionProvider;
+import android.widget.TextView;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: LeOn
+ * Date: 13-10-5
+ * Time: 下午10:13
+ */
+public class DisplayLyricActivity extends Activity {
+ public static String SEARCH_TARGET = "com.goodtrendltd.searchTarget";
+
+ private ShareActionProvider mShareActionProvider;
+ private String songName;
+ private String lyric;
+
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.app_pref), MODE_PRIVATE);
+ if (sharedPreferences.getBoolean(getString(R.string.night_mode_pref_key), true)) {
+ setTheme(R.style.MyHoloTheme);
+ } else {
+ setTheme(R.style.MyHoloLightTheme);
+ }
+ setContentView(R.layout.lyric_view);
+
+ Intent intent = getIntent();
+ lyric = intent.getStringExtra(MainActivity.LYRIC);
+ songName = intent.getStringExtra(MainActivity.SONG_NAME);
+
+ // Create the text view
+ TextView lyricTextView = (TextView) findViewById(R.id.lyricContent);
+ lyricTextView.setMovementMethod(new ScrollingMovementMethod());
+ lyricTextView.setTextSize(sharedPreferences.getInt(getString(R.string.font_size_pref_key), 20));
+ lyricTextView.setText(lyric);
+ lyricTextView.setLineSpacing(20, 1.0f);
+
+ TextView titleTextView = (TextView) findViewById(R.id.title);
+ titleTextView.setText(songName);
+ titleTextView.setTextSize(25);
+ titleTextView.setTextColor(Color.parseColor("#00BFFF"));
+
+ }
+
+ //begin of menu related
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu items for use in the action bar
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.lyricview_actions, menu);
+ // Locate MenuItem with ShareActionProvider
+ MenuItem item = menu.findItem(R.id.menu_item_share);
+ // Fetch and store ShareActionProvider
+ mShareActionProvider = (ShareActionProvider) item.getActionProvider();
+
+ Intent i = new Intent(Intent.ACTION_SEND);
+ i.setType("text/plain");
+ i.putExtra(Intent.EXTRA_SUBJECT, songName);
+ i.putExtra(Intent.EXTRA_TEXT, lyric);
+
+ mShareActionProvider.setShareIntent(i);
+
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle presses on the action bar items
+ switch (item.getItemId()) {
+ case R.id.youtube:
+ openSearch(getString(R.string.youtube));
+ return true;
+ case R.id.youku:
+ openSearch(getString(R.string.youku));
+ return true;
+ case R.id.tudou:
+ openSearch(getString(R.string.tudou));
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
+
+ private void openSearch(final String target) {
+ ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo.State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
+ if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
+ navigateToSearch(target);
+ } else {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setIcon(android.R.drawable.ic_dialog_alert);
+ builder.setTitle(R.string.alert_title);
+ builder.setMessage(R.string.alert_message);
+ builder.setPositiveButton(R.string.ok_button, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // 如果没有网络连接,则进入网络设置界面
+ navigateToSearch(target);
+ }
+ });
+ builder.setNegativeButton(R.string.cancel_button, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+ builder.create();
+ builder.show();
+ }
+ }
+
+ private void navigateToSearch(String target){
+ Intent intent = new Intent(this, VideoSearch.class);
+ intent.putExtra(SEARCH_TARGET, target);
+ intent.putExtra(MainActivity.SONG_NAME, songName);
+ startActivity(intent);
+ }
+
+ // Call to update the share intent
+ private void setShareIntent(Intent shareIntent) {
+ if (mShareActionProvider != null) {
+ mShareActionProvider.setShareIntent(shareIntent);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/GospelActivity.java b/app/src/main/java/com/goodtrendltd/HolySongs/GospelActivity.java
new file mode 100644
index 0000000..18c4dd6
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/GospelActivity.java
@@ -0,0 +1,235 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.view.PagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.goodtrendltd.HolySongs.bus.BibleSetting;
+import com.goodtrendltd.HolySongs.bus.GlobalMediaStar;
+import com.goodtrendltd.HolySongs.helpers.CommonMethod;
+
+import java.util.ArrayList;
+
+/**
+ * Created by Julia on 5/3/2016.
+ */
+public class GospelActivity extends AppCompatActivity {
+
+ Activity context;
+ ViewPager viewPager;
+ ArrayList viewList;
+ String TAG = "GospelActivity";
+ String origin = "";
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Log.v("init-trace",CommonMethod.GetCurrentMillisecondDate() + " BibleInitSlider 01 ");
+ context = this;
+
+ if (BibleSetting.getNightMode(this)) {
+ setTheme(R.style.DarkAppTheme);
+ } else {
+ setTheme(R.style.BaseAppTheme);
+ }
+ // Press Bible - Install
+
+ Log.v("init-trace",CommonMethod.GetCurrentMillisecondDate() + " BibleInitSlider 02 ");
+ Log.d("bible-init", " -- firstLoad -- ");
+
+ context = this;
+
+ setContentView(R.layout.activity_bible_init_slider);
+ viewPager = (ViewPager)findViewById(R.id.viewPager);
+ viewList = new ArrayList();
+
+ InitButton();
+
+ LayoutInflater inflater = (LayoutInflater)context.getSystemService
+ (Context.LAYOUT_INFLATER_SERVICE);
+
+ View view = inflater.inflate(R.layout.activity_bible_init_knowgod, null);
+ SetFontTypeFace(view,R.id.txt_one);
+ SetFontTypeFace(view,R.id.txt_two);
+ SetFontTypeFace(view,R.id.txt_three);
+ SetFontTypeFace(view,R.id.txt_four);
+ SetFontTypeFace(view,R.id.txt_five);
+ SetFontTypeFace(view,R.id.txt_six);
+ SetFontTypeFace(view,R.id.txt_seven);
+ SetFontTypeFace(view, R.id.txt_eight);
+
+ Button btnYes = (Button)view.findViewById(R.id.btn_yes);
+ Button btnReadBible = (Button)view.findViewById(R.id.btn_read_bible);
+
+ Bundle extras = getIntent().getExtras();
+ if (extras!=null) {
+ origin = extras.getString("origin", " ");
+ if (origin.equals("main")) {
+ btnReadBible.setText(R.string.done);
+ } else {
+ btnReadBible.setText(R.string.skip);
+ initToolbar();
+ }
+ }
+
+ btnReadBible.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ onBackPressed();
+ }
+ });
+
+ btnYes.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new Thread(new Runnable(){
+ @Override
+ public void run()
+ {
+ GlobalMediaStar.decision(context);
+ }
+ }).start();
+
+ Intent intent = new Intent(GospelActivity.this, ChatActivity.class);
+ intent.putExtra("fromGospel",1);
+ startActivity(intent);
+ GospelActivity.this.finish();
+ }
+ });
+
+ viewList.add(view);
+ viewPager.setAdapter(new GuidePageAdapter());
+ viewPager.setOnPageChangeListener(new GuidePageChangeListener());
+
+ Log.v(TAG," -- recordGospel -- ");
+ if(CommonMethod.isNetworkAvailable(context))
+ {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ GlobalMediaStar.recordGospel(context);
+ }
+ }).start();
+ }
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ }
+
+ protected void initToolbar() {
+ ActionBar actionbar = getSupportActionBar();
+ if (actionbar != null) {
+ actionbar.setDisplayShowTitleEnabled(false);
+ actionbar.setDisplayShowHomeEnabled(true);
+ actionbar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ onBackPressed();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ // 指引页面数据适配器
+ private class GuidePageAdapter extends PagerAdapter {
+
+ @Override
+ public int getCount() {
+ return viewList.size();
+ }
+
+ @Override
+ public boolean isViewFromObject(View arg0, Object arg1) {
+ return arg0 == arg1;
+ }
+
+ @Override
+ public int getItemPosition(Object object) {
+ return super.getItemPosition(object);
+ }
+
+ @Override
+ public void destroyItem(View arg0, int arg1, Object arg2) {
+ ((ViewPager) arg0).removeView(viewList.get(arg1));
+ }
+
+ @Override
+ public Object instantiateItem(View arg0, int arg1) {
+ ((ViewPager) arg0).addView(viewList.get(arg1));
+ return viewList.get(arg1);
+ }
+
+
+ }
+
+ // 指引页面更改事件监听器
+ private class GuidePageChangeListener implements ViewPager.OnPageChangeListener {
+
+ @Override
+ public void onPageScrollStateChanged(int arg0) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onPageScrolled(int arg0, float arg1, int arg2) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onPageSelected(int arg0) {
+ //遍历数组让当前选中图片下的小圆点设置颜色
+ }
+ }
+
+ private void InitButton(){
+
+ findViewById(R.id.btn_silder_one).setVisibility(View.GONE);
+ findViewById(R.id.btn_silder_two).setVisibility(View.GONE);
+ findViewById(R.id.btn_silder_three).setVisibility(View.GONE);
+ }
+
+ private void SetFontTypeFace(View view,int id){
+ TextView txtview = (TextView)view.findViewById(id);
+// if (txtview.getTypeface()==null) {
+// txtview.setTypeface(BibleSetting.getDefaultFont(this));
+// return;
+// }
+// //TODO: Null pointer!!!
+// if (txtview.getTypeface().isBold()) {
+// txtview.setTypeface(BibleSetting.getDefaultFont(this, Typeface.BOLD));
+// }
+// else if (txtview.getTypeface().isItalic()) {
+// txtview.setTypeface(BibleSetting.getDefaultFont(this, Typeface.ITALIC));
+// }
+// else {
+// txtview.setTypeface(BibleSetting.getDefaultFont(this));
+// }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/HTML5WebView.java b/app/src/main/java/com/goodtrendltd/HolySongs/HTML5WebView.java
new file mode 100644
index 0000000..e860bc7
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/HTML5WebView.java
@@ -0,0 +1,207 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.Activity;
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.webkit.GeolocationPermissions;
+import android.webkit.WebChromeClient;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.FrameLayout;
+
+public class HTML5WebView extends WebView {
+
+ private Context mContext;
+ private MyWebChromeClient mWebChromeClient;
+ private View mCustomView;
+ private FrameLayout mCustomViewContainer;
+ private WebChromeClient.CustomViewCallback mCustomViewCallback;
+
+ private FrameLayout mContentView;
+ private FrameLayout mBrowserFrameLayout;
+ private FrameLayout mLayout;
+
+ private ProgressDialog pd;
+
+ static final String LOGTAG = "HTML5WebView";
+
+ private void init(Context context) {
+ mContext = context;
+ Activity a = (Activity) mContext;
+
+ mLayout = new FrameLayout(context);
+
+ mBrowserFrameLayout = (FrameLayout) LayoutInflater.from(a).inflate(R.layout.video_html5_screen, null);
+ mContentView = (FrameLayout) mBrowserFrameLayout.findViewById(R.id.main_content);
+ mCustomViewContainer = (FrameLayout) mBrowserFrameLayout.findViewById(R.id.fullscreen_custom_content);
+
+ mLayout.addView(mBrowserFrameLayout, COVER_SCREEN_PARAMS);
+
+ mWebChromeClient = new MyWebChromeClient();
+ setWebChromeClient(mWebChromeClient);
+
+ setWebViewClient(new MyWebViewClient());
+
+ // Configure the webview
+ WebSettings s = getSettings();
+ s.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
+// s.setUseWideViewPort(true);
+// s.setLoadWithOverviewMode(true);
+ s.setSavePassword(true);
+ s.setSaveFormData(true);
+ s.setJavaScriptEnabled(true);
+
+ // enable navigator.geolocation
+// s.setGeolocationEnabled(true);
+// s.setGeolocationDatabasePath("/data/data/org.itri.html5webview/databases/");
+
+ // enable Web Storage: localStorage, sessionStorage
+ s.setDomStorageEnabled(true);
+
+ mContentView.addView(this);
+ }
+
+ public HTML5WebView(Context context) {
+ super(context);
+ init(context);
+ }
+
+ public HTML5WebView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init(context);
+ }
+
+ public HTML5WebView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ init(context);
+ }
+
+ public FrameLayout getLayout() {
+ return mLayout;
+ }
+
+ public boolean inCustomView() {
+ return (mCustomView != null);
+ }
+
+ public void hideCustomView() {
+ mWebChromeClient.onHideCustomView();
+ }
+
+ private class MyWebChromeClient extends WebChromeClient {
+ private Bitmap mDefaultVideoPoster;
+ private View mVideoProgressView;
+
+ @Override
+ public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback)
+ {
+ //Log.i(LOGTAG, "here in on ShowCustomView");
+ HTML5WebView.this.setVisibility(View.GONE);
+
+ // if a view already exists then immediately terminate the new one
+ if (mCustomView != null) {
+ callback.onCustomViewHidden();
+ return;
+ }
+
+ mCustomViewContainer.addView(view);
+ mCustomView = view;
+ mCustomViewCallback = callback;
+ mCustomViewContainer.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onHideCustomView() {
+
+ if (mCustomView == null)
+ return;
+
+ // Hide the custom view.
+ mCustomView.setVisibility(View.GONE);
+
+ // Remove the custom view from its container.
+ mCustomViewContainer.removeView(mCustomView);
+ mCustomView = null;
+ mCustomViewContainer.setVisibility(View.GONE);
+ mCustomViewCallback.onCustomViewHidden();
+
+ HTML5WebView.this.setVisibility(View.VISIBLE);
+
+ //Log.i(LOGTAG, "set it to webVew");
+ }
+
+ @Override
+ public Bitmap getDefaultVideoPoster() {
+ //Log.i(LOGTAG, "here in on getDefaultVideoPoster");
+ if (mDefaultVideoPoster == null) {
+ mDefaultVideoPoster = BitmapFactory.decodeResource(
+ getResources(), R.drawable.default_video_poster);
+ }
+ return mDefaultVideoPoster;
+ }
+
+ @Override
+ public View getVideoLoadingProgressView() {
+ //Log.i(LOGTAG, "here in on getVideoLoadingPregressView");
+
+ if (mVideoProgressView == null) {
+ LayoutInflater inflater = LayoutInflater.from(mContext);
+ mVideoProgressView = inflater.inflate(R.layout.video_loading_progress, null);
+ }
+ return mVideoProgressView;
+ }
+
+ @Override
+ public void onReceivedTitle(WebView view, String title) {
+ ((Activity) mContext).setTitle(title);
+ }
+
+ @Override
+ public void onProgressChanged(WebView view, int newProgress) {
+ ((Activity) mContext).getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100);
+ }
+
+ @Override
+ public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
+ callback.invoke(origin, true, false);
+ }
+ }
+
+ private class MyWebViewClient extends WebViewClient {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ Log.i(LOGTAG, "shouldOverrideUrlLoading: "+url);
+ // don't override URL so that stuff within iframe can work properly
+ // view.loadUrl(url);
+ return false;
+ }
+
+ @Override
+ public void onPageStarted(WebView view, String url, Bitmap favicon) {
+ if (pd == null || !pd.isShowing()) {
+ pd = ProgressDialog.show(mContext, "", mContext.getString(R.string.loading_video), true);
+ pd.setCancelable(true);
+ }
+ }
+
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ if (pd.isShowing()) {
+ pd.dismiss();
+ }
+ }
+ }
+
+ static final FrameLayout.LayoutParams COVER_SCREEN_PARAMS =
+ new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/MainActivity.java b/app/src/main/java/com/goodtrendltd/HolySongs/MainActivity.java
new file mode 100644
index 0000000..2687f79
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/MainActivity.java
@@ -0,0 +1,314 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.ListActivity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.graphics.PixelFormat;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.design.widget.FloatingActionButton;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.view.*;
+import android.view.WindowManager.LayoutParams;
+import android.widget.*;
+
+import com.goodtrendltd.HolySongs.bus.BibleSetting;
+import com.goodtrendltd.HolySongs.bus.GlobalMediaStar;
+import com.goodtrendltd.HolySongs.helpers.ChineseCharComp;
+import com.goodtrendltd.HolySongs.helpers.CommonMethod;
+import com.goodtrendltd.HolySongs.helpers.HanziHelper;
+import com.goodtrendltd.HolySongs.helpers.XMLParser;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import java.io.*;
+import java.util.*;
+
+public class MainActivity extends AppCompatActivity implements AbsListView.OnScrollListener {
+
+
+ public final static String LYRIC = "com.goodtrendltd.LYRIC";
+ public final static String SONG_NAME = "com.goodtrendltd.SONG_NAME";
+
+ private Map songLyricMap = new HashMap();
+
+ private RemoveWindow mRemoveWindow = new RemoveWindow();
+ Handler mHandler = new Handler();
+ private WindowManager mWindowManager;
+ private TextView mDialogText;
+ private boolean mShowing;
+ private boolean mReady;
+ private char mPrevLetter = Character.MIN_VALUE;
+
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ int firstLoad = BibleSetting.getFirstStart(this);
+ if(firstLoad!=0)
+ {
+ Intent i = new Intent();
+ i.setClass(this,GospelActivity.class);
+ i.putExtra("origin","first");
+ recordInstall();
+ startActivity(i);
+ }
+ if (BibleSetting.getNightMode(this)) {
+ setTheme(R.style.DarkAppTheme);
+ } else {
+ setTheme(R.style.BaseAppTheme);
+ }
+ setContentView(R.layout.main);
+
+ initApplication();
+ recordRun();
+ XMLParser parser = new XMLParser();
+ String myData = getXml("songs.xml");
+ setDataFromXML(parser, myData);
+ final List titleList = new ArrayList(songLyricMap.keySet());
+ Collections.sort(titleList, new ChineseCharComp());
+
+ ListView listView = getListView();
+ listView.setTextFilterEnabled(true);
+ listView.setAdapter(new SongTitleAdapter(getApplicationContext(), titleList));
+ Sidebar sb = (Sidebar) findViewById(R.id.side_bar);
+ sb.bindListView(getListView());
+
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ String songName = titleList.get(position);
+ navigateToLyric(songName);
+ }
+ });
+ setupIndicator();
+
+ if (getActionBar()!=null) {
+ getActionBar().setTitle(R.string.app_name);
+ }
+
+ FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_find_church);
+ fab.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent i = new Intent();
+ i.setClass(MainActivity.this, ChatActivity.class);
+ startActivity(i);
+ }
+ });
+ }
+
+ private void initApplication() {
+ CustomApplication application = (CustomApplication)getApplication();
+ application.AppSyncData();
+ }
+
+ private void recordInstall() {
+
+ if(CommonMethod.isNetworkAvailable(this))
+ {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ GlobalMediaStar.recordInstall(MainActivity.this);
+ }
+ }).start();
+ }
+ }
+
+ private void recordRun() {
+
+ if (CommonMethod.isNetworkAvailable(this)) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ GlobalMediaStar.recordRun(MainActivity.this);
+ }
+ }).start();
+ }
+ }
+
+ private void navigateToLyric(String songName) {
+ String lyric = songLyricMap.get(songName);
+ Intent intent = new Intent(this, DisplayLyricActivity.class);
+ intent.putExtra(LYRIC, lyric);
+ intent.putExtra(SONG_NAME, songName);
+ startActivity(intent);
+ }
+
+ private String getXml(String path) {
+
+ String xmlString = null;
+ try {
+ InputStream is = getAssets().open(path);
+ int length = is.available();
+ byte[] data = new byte[length];
+ is.read(data);
+ xmlString = new String(data);
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+
+ return xmlString == null ? null : xmlString.replaceAll(" ", "");
+ }
+
+ private void setDataFromXML(XMLParser parser, String xml) {
+ Document doc = parser.getDomElement(xml);
+ NodeList nl = doc.getElementsByTagName("song");
+ // looping through all item nodes -
+ for (int i = 0; i < nl.getLength(); i++) {
+ // creating new HashMap
+ Element e = (Element) nl.item(i);
+ // adding each child node to HashMap key => value
+ String name = parser.getValue(e, "name");
+ String lyric = parser.getValue(e, "lyric");
+ songLyricMap.put(name, lyric);
+ }
+
+ }
+
+ private void setupIndicator() {
+ mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
+ getListView().setOnScrollListener(this);
+ LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+ mDialogText = (TextView) inflate.inflate(R.layout.list_position, null);
+ mDialogText.setVisibility(View.INVISIBLE);
+
+ mHandler.post(new Runnable() {
+
+ public void run() {
+ mReady = true;
+ WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
+ LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
+ WindowManager.LayoutParams.TYPE_APPLICATION,
+ WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
+ | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+ PixelFormat.TRANSLUCENT);
+ mWindowManager.addView(mDialogText, lp);
+ }
+ });
+ }
+
+ private void removeWindow() {
+ if (mShowing) {
+ mShowing = false;
+ mDialogText.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ @Override
+ public void onScrollStateChanged(AbsListView view, int scrollState) {
+ }
+
+ @Override
+ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+ if (mReady) {
+ char firstLetter = (HanziHelper.words2Pinyin((String) getListView().getItemAtPosition(firstVisibleItem))).charAt(0);
+ if (!mShowing && firstLetter != mPrevLetter) {
+ mShowing = true;
+ mDialogText.setVisibility(View.VISIBLE);
+ }
+ mDialogText.setText(((Character) firstLetter).toString().toUpperCase());
+ mHandler.removeCallbacks(mRemoveWindow);
+ mHandler.postDelayed(mRemoveWindow, 2000);
+ mPrevLetter = firstLetter;
+ }
+ }
+
+ private final class RemoveWindow implements Runnable {
+ public void run() {
+ removeWindow();
+ }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ mReady = true;
+ }
+
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ removeWindow();
+ mReady = false;
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mWindowManager.removeView(mDialogText);
+ mReady = false;
+ }
+
+
+ //begin of menu related
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu items for use in the action bar
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.main_activity_actions, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle presses on the action bar items
+ switch (item.getItemId()) {
+ case R.id.about:
+ openAbout();
+ return true;
+ case R.id.settings:
+ openSettings();
+ return true;
+ case R.id.sharing:
+ openSharing();
+ return true;
+ case R.id.gospel:
+ openGospel();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
+
+ private void openSharing() {
+ try {
+ Intent i = new Intent(Intent.ACTION_SEND);
+ i.setType("text/plain");
+ i.putExtra(Intent.EXTRA_SUBJECT, "敬拜赞美诗");
+ StringBuilder stringBuffer = new StringBuilder();
+ stringBuffer.append("\n敬拜赞美诗App安装地址: \n\n ");
+ stringBuffer.append(" 安卓:").append(getString(R.string.app_url_android)).append(" \n\n");
+ stringBuffer.append(" 苹果:").append(getString(R.string.app_url_ios)).append(" \n\n");
+ i.putExtra(Intent.EXTRA_TEXT, stringBuffer.toString());
+ startActivity(Intent.createChooser(i, "选择用于分享的app"));
+ } catch (Exception e) { //e.toString();
+ }
+ }
+
+ private void openSettings() {
+ Intent intent = new Intent(this, SettingsActivity.class);
+ startActivity(intent);
+ }
+
+ private void openAbout() {
+ Intent intent = new Intent(this, AboutActivity.class);
+ startActivity(intent);
+ }
+
+ private void openGospel() {
+ Intent intent = new Intent(this, GospelActivity.class);
+ intent.putExtra("origin","main");
+ startActivity(intent);
+ }
+
+ private ListView getListView() {
+ return (ListView) findViewById(R.id.list);
+ }
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/SettingsActivity.java b/app/src/main/java/com/goodtrendltd/HolySongs/SettingsActivity.java
new file mode 100644
index 0000000..d2a95e5
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/SettingsActivity.java
@@ -0,0 +1,117 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: LeOn
+ * Date: 13-10-26
+ * Time: 下午4:52
+ */
+public class SettingsActivity extends Activity {
+ private SharedPreferences sharedPreferences;
+ private List fontSizes;
+ Spinner fontSizeSpinner;
+ Switch nightModeSwitch;
+ private boolean isNightModeToggled = false;
+
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ sharedPreferences = getSharedPreferences(getString(R.string.app_pref), MODE_PRIVATE);
+ if (sharedPreferences.getBoolean(getString(R.string.night_mode_pref_key), true)) {
+ setTheme(android.R.style.Theme_Holo);
+ } else {
+ setTheme(android.R.style.Theme_Holo_Light);
+ }
+ setContentView(R.layout.settings_view);
+
+ //start of font size spinner
+ fontSizes = new ArrayList();
+ fontSizes.add(getString(R.string.font_size_prompt) + sharedPreferences.getInt(getString(R.string.font_size_pref_key), 20));
+ Resources res = getResources();
+ fontSizes.addAll(Arrays.asList(res.getStringArray(R.array.font_size_array)));
+
+ fontSizeSpinner = (Spinner) findViewById(R.id.fontSizeSpinner);
+ ArrayAdapter dataAdapter = new ArrayAdapter(this,
+ android.R.layout.simple_spinner_item, fontSizes);
+ dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ fontSizeSpinner.setAdapter(dataAdapter);
+
+ fontSizeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ if (position > 0) {
+ String sizeString = parent.getItemAtPosition(position).toString();
+ SharedPreferences.Editor editor = sharedPreferences.edit();
+ editor.putInt(getString(R.string.font_size_pref_key), Integer.parseInt(sizeString));
+ editor.commit();
+ fontSizes.set(0, getString(R.string.font_size_prompt) + sharedPreferences.getInt(getString(R.string.font_size_pref_key), 20));
+ fontSizeSpinner.setSelection(0);
+ Toast.makeText(parent.getContext(), "歌词字体已设置为 : " + sizeString, Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
+ }
+ });
+ //end of font size spinner
+
+ //start of theme switch
+ nightModeSwitch = (Switch) findViewById(R.id.nightModeSwitch);
+ nightModeSwitch.setChecked(sharedPreferences.getBoolean(getString(R.string.night_mode_pref_key), true));
+
+ }
+
+ /**
+ * Called when the user clicks the resume default font size button
+ */
+ public void resumeDefaultSize(View view) {
+ SharedPreferences.Editor editor = sharedPreferences.edit();
+ editor.putInt(getString(R.string.font_size_pref_key), 20);
+ editor.commit();
+ fontSizes.set(0, getString(R.string.font_size_prompt) + 20);
+ //have to use notifyDataSetChanged() to refresh the spinner since here we did not change selection(still position 0) in spinner.
+ BaseAdapter adapter = (BaseAdapter) fontSizeSpinner.getAdapter();
+ adapter.notifyDataSetChanged();
+ Toast.makeText(getBaseContext(), "歌词字体已恢复为 : 20", Toast.LENGTH_SHORT).show();
+ }
+
+ /**
+ * Called when the night mode switch clicked
+ */
+ public void onNightModeSwitch(View view) {
+ boolean on = ((Switch) view).isChecked();
+ SharedPreferences.Editor editor = sharedPreferences.edit();
+ if (on) {
+ editor.putBoolean(getString(R.string.night_mode_pref_key), true);
+ } else {
+ editor.putBoolean(getString(R.string.night_mode_pref_key), false);
+ }
+ editor.commit();
+ isNightModeToggled = !isNightModeToggled;
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK && isNightModeToggled) {
+ Intent a = new Intent(this,MainActivity.class);
+ a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(a);
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/Sidebar.java b/app/src/main/java/com/goodtrendltd/HolySongs/Sidebar.java
new file mode 100644
index 0000000..58f944a
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/Sidebar.java
@@ -0,0 +1,101 @@
+package com.goodtrendltd.HolySongs;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Point;
+import android.util.AttributeSet;
+import android.view.Display;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.ListView;
+import android.widget.SectionIndexer;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: LeOn
+ * Date: 13-10-5
+ * Time: 下午11:12
+ */
+public class Sidebar extends View {
+ public static String[] ALPHABET_ARRAY = new String[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S",
+ "T", "U", "V", "W", "X", "Y", "Z" };
+
+ private SectionIndexer sectionIndexter;
+ private ListView list;
+ private int itemHeight = 22;
+
+ public Sidebar(Context context) {
+ super(context);
+ init();
+ }
+
+ public Sidebar(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public Sidebar(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ init();
+ }
+
+ private void init() {
+ setBackgroundColor(0x44FFFFFF);
+ //get height by different screen resolution
+ WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
+ Display display = wm.getDefaultDisplay();
+ Point size = new Point();
+ display.getSize(size);
+ int height = size.y;
+ itemHeight = height/36;
+ }
+
+ public void bindListView(ListView list) {
+ this.list = list;
+ sectionIndexter = (SectionIndexer) list.getAdapter();
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ super.onTouchEvent(event);
+ int i = (int) event.getY();
+ int idx = i / itemHeight;
+ if (idx >= ALPHABET_ARRAY.length) {
+ idx = ALPHABET_ARRAY.length - 1;
+ } else if (idx < 0) {
+ idx = 0;
+ }
+ switch(event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ case MotionEvent.ACTION_MOVE:
+ setBackgroundColor(0x8844FFFF);
+ if (sectionIndexter == null) {
+ sectionIndexter = (SectionIndexer) list.getAdapter();
+ }
+ int position = sectionIndexter.getPositionForSection(idx);
+ if (position == -1) {
+ return true;
+ }
+ list.setSelection(position);
+ break;
+ case MotionEvent.ACTION_UP:
+ setBackgroundColor(0x44FFFFFF);
+ break;
+ }
+ return true;
+ }
+
+ protected void onDraw(Canvas canvas) {
+ Paint paint = new Paint();
+ paint.setColor(0xFF111111);
+ paint.setTextSize(25);
+ paint.setTextAlign(Paint.Align.CENTER);
+ float widthCenter = getMeasuredWidth() / 2;
+ for (int i = 0, length = ALPHABET_ARRAY.length; i < length; i++) {
+ canvas.drawText(ALPHABET_ARRAY[i], widthCenter, itemHeight + (i * itemHeight), paint);
+ }
+ super.onDraw(canvas);
+ }
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/SongTitleAdapter.java b/app/src/main/java/com/goodtrendltd/HolySongs/SongTitleAdapter.java
new file mode 100644
index 0000000..bd43f31
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/SongTitleAdapter.java
@@ -0,0 +1,202 @@
+package com.goodtrendltd.HolySongs;
+
+import java.util.List;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.graphics.Color;
+import android.preference.PreferenceManager;
+import android.util.SparseIntArray;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.SectionIndexer;
+import android.widget.TextView;
+
+import com.goodtrendltd.HolySongs.bus.BibleSetting;
+import com.goodtrendltd.HolySongs.helpers.HanziHelper;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: LeOn
+ * Date: 13-10-6
+ * Time: 上午10:00
+ */
+public class SongTitleAdapter extends ArrayAdapter implements SectionIndexer {
+ private SparseIntArray alphaMap;
+ private List items;
+ private Context context;
+ Boolean nightMode = true;
+
+ public SongTitleAdapter(Context context, List items) {
+ super(context, R.layout.song_item, items);
+ this.alphaMap = new SparseIntArray(Sidebar.ALPHABET_ARRAY.length);
+ this.items = items;
+ this.context = context;
+ nightMode = BibleSetting.getNightMode(context);
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder viewHolder;
+ if (convertView == null) {
+ viewHolder = new ViewHolder();
+ convertView = LayoutInflater.from(context).inflate(R.layout.song_item, null);
+ viewHolder.name = (TextView) convertView.findViewById(R.id.name);
+ convertView.setTag(viewHolder);
+ } else {
+ viewHolder = (ViewHolder) convertView.getTag();
+ }
+ String p = items.get(position);
+ viewHolder.name.setText(p);
+ if (!nightMode) {
+ viewHolder.name.setTextColor(Color.parseColor("#000000"));
+// convertView.setBackgroundColor(Color.parseColor("#FFFFFF"));
+ }
+// else {
+// viewHolder.name.setTextColor(Color.parseColor("#FFFFFF"));
+// convertView.setBackgroundColor(Color.parseColor("#000000"));
+// }
+ return convertView;
+ }
+
+ private class ViewHolder {
+
+ public TextView name;
+
+ }
+
+ @Override
+ public int getPositionForSection(int section) {
+ // Check bounds
+ if (section <= 0) {
+ return 0;
+ }
+ if (section >= Sidebar.ALPHABET_ARRAY.length) {
+ section = Sidebar.ALPHABET_ARRAY.length - 1;
+ }
+ String targetLetter = Sidebar.ALPHABET_ARRAY[section];
+ int key = targetLetter.charAt(0);
+ int start = 0;
+ int end = items.size();
+ int pos;
+ //if pos already exists
+ if ((pos = alphaMap.get(key, Integer.MIN_VALUE)) != Integer.MIN_VALUE) {
+ return pos;
+ } else {
+ //FIXME haven't considered non-alphabet characters
+ //estimate the start and end search position,
+ //if couldn't find the right end position, then search its next letter's position until find it or reach the end.
+ //if couldn't find the right start position, then search its prev letter's position until fint it or reach the start.
+ end = getApproximateEndPosOfLetter(items, section);
+ start = getApproximateStartPosOfLetter(items, section - 1);
+ }
+ while (start < end) {
+ pos = (start + end) / 2;
+ String curLetter = Character.toString(HanziHelper.words2Pinyin(items.get(pos)).charAt(0));
+ int result = curLetter.compareToIgnoreCase(targetLetter);
+ if (result < 0) {
+ start = pos + 1;
+ } else if (result > 0) {
+ end = pos - 1;
+ } else if (result == 0) {
+ while (Character.toString(HanziHelper.words2Pinyin(items.get(pos)).charAt(0))
+ .compareToIgnoreCase(targetLetter) == 0) {
+ if (pos >= 1) {
+ pos--;
+ } else if (pos == 0) {
+ alphaMap.put(key, pos);
+ return pos;
+ }
+ }
+ break;
+ }
+ }
+ pos++;
+ alphaMap.put(key, pos);
+ return pos;
+ }
+
+ @Override
+ public int getSectionForPosition(int position) {
+ String sourceLetter = HanziHelper.words2Pinyin(items.get(position));
+ for (int i = 0, alphabetLength = Sidebar.ALPHABET_ARRAY.length;
+ i < alphabetLength; i++) {
+ String targetLetter = Sidebar.ALPHABET_ARRAY[i];
+ if (sourceLetter.compareTo(targetLetter) == 0) {
+ return i;
+ }
+ }
+ return 0;
+ }
+
+ @Override
+ public Object[] getSections() {
+ return Sidebar.ALPHABET_ARRAY;
+ }
+
+ private int getApproximateStartPosOfLetter(List source, int section) {
+ int result = -1;
+ ;
+ while (section >= 0) {
+ result = getFirstAppearanceOfLetter(source, Sidebar.ALPHABET_ARRAY[section]);
+ if (result != -1) {
+ while (Sidebar.ALPHABET_ARRAY[section].equals(
+ Character.toString(HanziHelper.words2Pinyin(source.get(result)).charAt(0)))) {
+ if (result < source.size() - 1) {
+ result++;
+ } else {
+ return result;
+ }
+ }
+ return --result;
+ } else {
+ section--;
+ }
+ }
+ return result;
+ }
+
+ private int getApproximateEndPosOfLetter(List source, int section) {
+ int result = -1;
+ ;
+ while (section < Sidebar.ALPHABET_ARRAY.length) {
+ result = getFirstAppearanceOfLetter(source, Sidebar.ALPHABET_ARRAY[section]);
+ if (result != -1) {
+ while (Sidebar.ALPHABET_ARRAY[section].equals(
+ Character.toString(HanziHelper.words2Pinyin(source.get(result)).charAt(0)))) {
+ if (result >= 1) {
+ result--;
+ } else {
+ return result;
+ }
+ }
+ return ++result;
+ } else {
+ section++;
+ }
+ }
+ return result;
+ }
+
+ private int getFirstAppearanceOfLetter(List source, String targetLetter) {
+ int appearance = -1;
+ int tmpStart = 0;
+ int tmpEnd = source.size();
+ while (tmpStart < tmpEnd) {
+ int tmpPos = (tmpStart + tmpEnd) / 2;
+ String curLetter = Character.toString(HanziHelper.words2Pinyin(source.get(tmpPos)).charAt(0));
+ int result = curLetter.compareToIgnoreCase(targetLetter);
+ if (result < 0) {
+ tmpStart = tmpPos + 1;
+ } else if (result > 0) {
+ tmpEnd = tmpPos - 1;
+ } else if (result == 0) {
+ appearance = tmpPos;
+ break;
+ }
+ }
+ return appearance;
+ }
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/VideoSearch.java b/app/src/main/java/com/goodtrendltd/HolySongs/VideoSearch.java
new file mode 100644
index 0000000..23b797c
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/VideoSearch.java
@@ -0,0 +1,86 @@
+package com.goodtrendltd.HolySongs;
+
+import android.app.Activity;
+import android.app.ProgressDialog;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.webkit.WebChromeClient;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: LeOn
+ * Date: 13-11-3
+ * Time: 上午8:40
+ */
+public class VideoSearch extends Activity {
+ private String target;
+ private String songName;
+ private HTML5WebView webView;
+ private ProgressDialog pd;
+
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Intent intent = getIntent();
+ target = intent.getStringExtra(DisplayLyricActivity.SEARCH_TARGET);
+ songName = intent.getStringExtra(MainActivity.SONG_NAME);
+
+ webView = new HTML5WebView(this);
+
+ if (savedInstanceState != null) {
+ webView.restoreState(savedInstanceState);
+ } else {
+ webView.loadUrl(getSearchUrl());
+ }
+ setContentView(webView.getLayout());
+ }
+
+ private String getSearchUrl() {
+ String url = "";
+ if (getString(R.string.youtube).equals(target)) {
+ url = getString(R.string.youtube_url) + songName;
+ } else if (getString(R.string.youku).equals(target)) {
+ url = getString(R.string.youku_url) + songName;
+ } else if (getString(R.string.tudou).equals(target)) {
+ url = getString(R.string.tudou_url) + songName;
+ }
+ return url;
+ }
+
+ //override this to make sure video stops playing after use hit back button.
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
+ webView.goBack();
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ @Override
+ public void onPause() {
+ webView.stopLoading();
+ webView.setVisibility(View.GONE);
+ webView.destroy();
+ super.onPause();
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ webView.saveState(outState);
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ webView.stopLoading();
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/bus/BibleSetting.java b/app/src/main/java/com/goodtrendltd/HolySongs/bus/BibleSetting.java
new file mode 100644
index 0000000..47012e8
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/bus/BibleSetting.java
@@ -0,0 +1,282 @@
+package com.goodtrendltd.HolySongs.bus;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Typeface;
+import android.provider.Settings;
+import android.support.v4.app.NotificationManagerCompat;
+import android.util.Log;
+
+import com.goodtrendltd.HolySongs.CustomApplication;
+import com.goodtrendltd.HolySongs.R;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.UUID;
+
+public class BibleSetting
+{
+
+ private static final String LANGUAGE = "bibleLanguage";
+ public static final String SETTINGS_PREF = "com.pressbible.view";
+ static Typeface fontTypeFace=null;
+ static Typeface biblefontTypeFace=null;
+ static Typeface boldFace=null;
+ static Typeface italicFace=null;
+ static Typeface yaHeiTypeFace=null;
+ static Typeface asapItalicTF=null, asapRegularTF=null, asapBoldTF=null;
+// static DatabaseSetting db = new DatabaseSetting();
+
+ private static Hashtable fontCache = new Hashtable();
+
+ public static String SysConfigQuery(Context context, String key)
+ {
+ SharedPreferences read = context.getSharedPreferences(key, Activity.MODE_WORLD_READABLE);
+ //步骤2:获取文件中的值
+ String val = read.getString(key, "");
+ return val;
+
+ }
+
+ public static void SysConfigUpdate(Context context, final String key, final String value){
+ SharedPreferences.Editor editor = context.getSharedPreferences(key, Activity.MODE_WORLD_WRITEABLE).edit();
+ //步骤2-2:将获取过来的值放入文件
+ editor.putString(key, value);
+ //步骤3:提交
+ editor.commit();
+ }
+
+ //获得 第一次启动
+ public static int getFirstStart(Context context){
+ String lastDate = SysConfigQuery(context, "getFirstStart");
+ int isFirst = 0;
+ if(lastDate.equals("")){
+ isFirst = 0;
+ }
+ else
+ {
+ //first install ever
+ isFirst = Integer.parseInt(lastDate);
+ }
+
+ int code = getPackageVersionCode(context);
+ if(code!=isFirst){
+ isFirst = 1;
+ UserMag.setNewNotification();
+ SysConfigUpdate(context, "getFirstStart",String.valueOf(code));
+ }
+ else
+ {
+ isFirst = 0;
+ }
+
+ return isFirst;
+ }
+
+ //获得 第一次启动
+ public static int getLocalNotificationCode(Context context){
+// String localnotification = DatabaseSetting.SysConfigQuery("locallocalnotificationorder");
+// int order = 10001;
+// if(localnotification.equals("")){
+// order = 10001;
+// }
+// else
+// {
+// //first install ever
+// order = Integer.parseInt(localnotification);
+// if(order >= 10016){
+// order = 10001;
+// }
+// else
+// {
+// order = order + 1;
+// }
+// }
+// db.SysConfigUpdate("locallocalnotificationorder",order+"");
+// return order;
+ return 1;
+ }
+
+ public static String getBibleLanguage(Context context) {
+ return SysConfigQuery(context, BibleSetting.LANGUAGE);
+ }
+
+ public static Boolean getPushPreference(Context context) {
+ return NotificationManagerCompat.from(context).areNotificationsEnabled();
+ }
+
+ //获取 版本信息
+ public static int getAppVersion(Context context){
+ String appversion = SysConfigQuery(context, "appversion");
+ if(appversion.equals("")){
+ appversion = "0";
+ }
+ return Integer.parseInt(appversion);
+ }
+
+ //设置 版本信息
+ public static void setAppVersion(Context context,String version){
+ SysConfigUpdate(context, "appversion",version);
+ }
+
+ public static Boolean getNightMode(Context context) {
+ SharedPreferences sharedPreferences = context.getSharedPreferences(context.getString(R.string.app_pref), Context.MODE_PRIVATE);
+ return sharedPreferences.getBoolean(context.getString(R.string.night_mode_pref_key), true);
+ }
+
+ public static String getChatAPIKey(Context context) {
+ return "1mjl1Qryo9zkx8XQsYBxF8sTDj6nGtaBEGaYueC2FTKW3lRhJ05VBraq9B6BWrN";
+ }
+
+ public static String getGMOEventAPIKey(Context context) {
+ return "nSNXrKQpZthbHxFuREVTSAqljFUcDipZ1ZFdnpHiXMLKK08giVpcKyPD5agbZUg";
+ }
+
+ public static String getAppName(Context context) {
+ if (getLocalLanguage(context)== LocalLanguage.SIMPLIFIED_CHINESE ||
+ getLocalLanguage(context)==LocalLanguage.TRADITIONAL_CHINESE) {
+ return "Video Bible";
+ } else {
+ return "Press Bible";
+ }
+ }
+
+ public static String getDeviceIDHash() {
+ Context context = CustomApplication.getContext();
+ if (context==null) return "";
+ String anonymousIDKey = "anonymous-id";
+
+ //Get from local
+ SharedPreferences prefs = context.getSharedPreferences(SETTINGS_PREF, Context.MODE_PRIVATE);
+ if (prefs.contains(anonymousIDKey)) {
+ return prefs.getString(anonymousIDKey, "");
+ }
+
+ //Else, make new id
+ String androidID = Settings.Secure.getString(context.getContentResolver(),
+ Settings.Secure.ANDROID_ID);
+
+ if (androidID==null || androidID.isEmpty()) {
+ androidID = UUID.randomUUID().toString();
+ }
+
+ MessageDigest md = null;
+ try {
+ md = MessageDigest.getInstance("SHA-256");
+ } catch (NoSuchAlgorithmException e) {
+ e.printStackTrace();
+ Log.e("setting","getDeviceIDHash: "+e);
+ }
+
+ try {
+ md.update(androidID.getBytes("UTF-8")); // Change this to "UTF-16" if needed
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ Log.e("setting","getDeviceIDHash: "+e);
+ }
+ byte[] digest = md.digest();
+
+ //Write to local
+ String hashID = String.format("%064x", new java.math.BigInteger(1, digest));
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putString(anonymousIDKey,hashID).apply();
+
+ return hashID;
+ }
+
+ public static void SetChatCategory(Context context,String chatCategory){
+
+ SharedPreferences sharedPreferences = context.getSharedPreferences(SETTINGS_PREF, Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = sharedPreferences.edit();
+ editor.putString("chatcategory", chatCategory);
+ editor.commit();
+ }
+
+ //安装后,首次加载设置
+ public static void FirstLoadSetting(Context context){
+// Log.d("bible-setting", "BibleSetting firstLoadSetting()");
+// int verseCode = ActivityHelper.getPackageVersionCode(context);
+// String code = SysConfigQuery(context, "verseCode");
+// Boolean isNeedDelete = false;
+// if(code.equals("")==true )
+// {
+// isNeedDelete = true;
+// }else if(Integer.parseInt(code) 0 && responseContent.equals("-1") == false) {
+ JSONObject jsonObject;
+ jsonObject = new JSONObject(responseContent);
+ visitorId = jsonObject.get("id").toString();
+
+ SharedPreferences.Editor editor = context.getSharedPreferences(KEY, Activity.MODE_WORLD_WRITEABLE).edit();
+ //步骤2-2:将获取过来的值放入文件
+ editor.putString(KEY, visitorId);
+ //步骤3:提交
+ editor.commit();
+ }
+ } catch (Exception e) {
+ Log.v("globalmediastar"," record eventType exception: " + e.toString());
+ } finally {
+ // 关闭连接,释放资源
+ httpClient.getConnectionManager().shutdown();
+ }
+ }
+ Log.v("globalmediastar",visitorId + " -- visitorId ");
+ return visitorId;
+ }
+
+ public static String STAR_URL = "https://xinxiwang.me/events";
+// public static String STAR_URL = "https://stats.globalmediaoutreach.com/api/v2/events/app";
+
+ public static void decision(Activity context)
+ {
+ postInfo(context,"decision");
+ }
+
+ public static void recordRun(Activity context)
+ {
+ postInfo(context,"open");
+ }
+
+ public static void recordGospel(Activity context)
+ {
+ postInfo(context,"gospel");
+ }
+
+ public static void recordInstall(Activity context)
+ {
+ postInfo(context,"install");
+ //star_baidu
+ //star_360
+ //star_xiaomi
+ //star_qq
+ //postInfo(context,"star_qq");
+ }
+
+ public static void recordOpenChat(Activity context){
+
+ CustomApplication application = (CustomApplication)context.getApplication();
+ Tracker mTracker = application.getDefaultTracker();
+ mTracker.send(new HitBuilders.EventBuilder()
+ .setCategory("Action")
+ .setAction("open-chat")
+ .setLabel("open-chat")
+ .setValue(System.currentTimeMillis())
+ .build());
+ Log.v("globalmediastar"," -- chat open-chat -- ");
+ }
+
+ public static void recordFirstChat(Activity context)
+ {
+ CustomApplication application = (CustomApplication)context.getApplication();
+ Tracker mTracker = application.getDefaultTracker();
+ mTracker.send(new HitBuilders.EventBuilder()
+ .setCategory("Action")
+ .setAction("first-chat")
+ .setLabel("first-chat")
+ .setValue(System.currentTimeMillis())
+ .build());
+ Log.v("globalmediastar"," -- chat first-chat -- ");
+ }
+
+ public static void recordChatMsg(Activity context,String name,String phone,String address,String categoryId){
+
+ Map createMap = new HashMap();
+ createMap.put("phone",phone);
+ createMap.put("category_id",categoryId);
+ createMap.put("name",name);
+ createMap.put("app_name","jdt");
+ createMap.put("address",address);
+
+ String charset = "utf-8";
+ String url = "http://www.jdtapps.me/api/chat/enter";
+
+ Log.v("globalmediastar"," -- chat msg 01 -- " + name + " - " + phone + " - " + address + " - " + categoryId);
+ try
+ {
+// httpPost = new HttpPost(url);
+//
+// //设置参数
+// List list = new ArrayList();
+// Iterator iterator = createMap.entrySet().iterator();
+// while(iterator.hasNext()){
+// Map.Entry elem = (Map.Entry) iterator.next();
+// list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()));
+// }
+// if(list.size() > 0){
+// UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);
+// httpPost.setEntity(entity);
+// }
+// HttpResponse response = httpClient.execute(httpPost);
+// if(response != null){
+// HttpEntity resEntity = response.getEntity();
+// if(resEntity != null){
+//
+// }
+// }
+
+
+ HttpClient client = new DefaultHttpClient();
+ HttpPost httpPost = new HttpPost(url);
+
+// createMap.put("phone",phone);
+// createMap.put("category_id",categoryId);
+// createMap.put("name",name);
+// createMap.put("app_name","jdt");
+// createMap.put("address",address);
+
+ List params = new ArrayList();
+ params.add(new BasicNameValuePair("phone", phone));
+ params.add(new BasicNameValuePair("category_id", categoryId));
+ params.add(new BasicNameValuePair("name", name));
+ params.add(new BasicNameValuePair("app_name", "bible"));
+ params.add(new BasicNameValuePair("address", address));
+ httpPost.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
+
+ HttpResponse response = client.execute(httpPost);
+ if (200 == response.getStatusLine().getStatusCode())
+ {
+ //response.getEntity().getContent();
+ }
+
+ Log.v("globalmediastar"," -- chat msg 02 -- ");
+ }
+ catch(Exception ex){
+ ex.printStackTrace();
+ Log.v("globalmediastar"," -- chat msg 03 -- "+ex.toString());
+ }
+ }
+
+ static void postInfo(Activity context,String eventType){
+
+ CustomApplication application = (CustomApplication)context.getApplication();
+ Tracker mTracker = application.getDefaultTracker();
+ mTracker.send(new HitBuilders.EventBuilder()
+ .setCategory("Action")
+ .setAction(eventType)
+ .setLabel(eventType)
+ .setValue(System.currentTimeMillis())
+ .build());
+
+ Log.v("globalmediastar"," post star - "+eventType);
+ String rooturl = STAR_URL;
+ DefaultHttpClient httpClient = null;
+ String responseContent = null;
+ try {
+
+ KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
+ trustStore.load(null, null);
+
+ SSLSocketFactory sf = newSslSocketFactory(context);
+
+ HttpParams params = new BasicHttpParams();
+ HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
+ HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
+
+ SchemeRegistry registry = new SchemeRegistry();
+ registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
+ registry.register(new Scheme("https", sf, 443));
+
+ ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
+
+ httpClient = new DefaultHttpClient(ccm, params);
+
+ HttpPost httpPost = new HttpPost(rooturl);
+// CLog.v("recordRun url: " + rooturl);
+ List formParams = new ArrayList(); //构建POST请求的表单参数
+ formParams.add(new BasicNameValuePair("key", BibleSetting.getGMOEventAPIKey(context)));
+ formParams.add(new BasicNameValuePair("appName", BibleSetting.getAppName(context)));
+ formParams.add(new BasicNameValuePair("visitorId", getVisitorId(context)));
+ formParams.add(new BasicNameValuePair("eventType", eventType));
+ formParams.add(new BasicNameValuePair("language", context.getResources().getConfiguration().locale.getLanguage()));
+ formParams.add(new BasicNameValuePair("deviceType", "Android"));
+ formParams.add(new BasicNameValuePair("timestamp", "" + getTimeStamp()));
+ httpPost.setEntity(new UrlEncodedFormEntity(formParams, "UTF-8"));
+
+ HttpResponse response = httpClient.execute(httpPost);
+ HttpEntity entity = response.getEntity(); // 获取响应实体
+// CLog.v("recordRun params: "+System.currentTimeMillis()+" language: "+context.getResources().getConfiguration().locale.getLanguage());
+ if (entity != null) {
+ responseContent = EntityUtils.toString(entity, "UTF-8");
+// Log.v("recordRun response: ",responseContent);
+// CLog.v( " record : " +eventType+ " -- "+responseContent);
+ }
+ Log.v("globalmediastar", " record : " +eventType+ " -- "+responseContent + " -- "+getTimeStamp());
+// CLog.v("recordRun response: "+System.currentTimeMillis()+" language: "+context.getResources().getConfiguration().locale.getLanguage());
+ }
+ catch (Exception e)
+ {
+// CLog.v("recordRun Exception: "+e.toString());
+// CLog.v("recordRun response: "+responseContent);
+ Log.v("globalmediastar"," record eventType exception: " + e.toString());
+ }
+ finally {
+ // 关闭连接,释放资源
+ httpClient.getConnectionManager().shutdown();
+ }
+ }
+
+ public static void postChapter(int bookId,int chapterId) {
+ PrintWriter out = null;
+ BufferedReader in = null;
+ String result = "";
+ try {
+ String url = "http://godlife.com/api/v1.0/bible/languages/en/versions/CEV/books/"+ getShortenedBookNameByBookId(String.valueOf(bookId)) +"/chapters/"+chapterId;
+ url = url + "?key="+BibleSetting.getChatAPIKey(CustomApplication.getContext());
+
+ URL realUrl = new URL(url);
+ // 打开和URL之间的连接
+ URLConnection conn = realUrl.openConnection();
+ // 设置通用的请求属性
+ conn.setRequestProperty("accept", "*/*");
+ conn.setRequestProperty("connection", "Keep-Alive");
+ conn.setRequestProperty("user-agent",
+ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+ // 发送POST请求必须设置如下两行
+ conn.setDoOutput(true);
+ conn.setDoInput(true);
+ // 获取URLConnection对象对应的输出流
+ out = new PrintWriter(conn.getOutputStream());
+ // 发送请求参数
+ // flush输出流的缓冲
+ out.flush();
+ // 定义BufferedReader输入流来读取URL的响应
+ in = new BufferedReader(
+ new InputStreamReader(conn.getInputStream()));
+ String line;
+ while ((line = in.readLine()) != null) {
+ result += line;
+ }
+ Log.v("globalmediastar"," -- pass -- "+result);
+ } catch (Exception e) {
+ Log.v("globalmediastar","发送 POST 请求出现异常!"+e);
+ e.printStackTrace();
+ }
+ //使用finally块来关闭输出流、输入流
+ finally{
+ try{
+ if(out!=null){
+ out.close();
+ }
+ if(in!=null){
+ in.close();
+ }
+ }
+ catch(IOException ex){
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ static SSLSocketFactory newSslSocketFactory(Context context) {
+ try {
+ // Get an instance of the Bouncy Castle KeyStore format
+ // Get the raw resource, which contains the keystore with
+ // your trusted certificates (root and any intermediate certs)
+ InputStream in;
+ //TODO: testing
+ Log.d("HttpClientUtil", "using harvestinitiative server");
+ KeyStore trusted = KeyStore.getInstance("BKS");
+ in = context.getResources().openRawResource(R.raw.gmochatssl);
+ try {
+ // Initialize the keystore with the provided trusted certificates
+ // Also provide the password of the keystore
+ trusted.load(in, "gmochat".toCharArray());
+ } finally {
+ in.close();
+ }
+ // Pass the keystore to the SSLSocketFactory. The factory is responsible
+ // for the verification of the server certificate.
+ SSLSocketFactory sf = new SSLSocketFactory(trusted);
+ // Hostname verification from certificate
+ // http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e506
+ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+ return sf;
+
+ } catch (Exception e) {
+ throw new AssertionError(e);
+ }
+ }
+
+
+ static String urlEncode(String sUrl)
+ {
+ StringBuffer urlOK = new StringBuffer();
+ for(int i=0; i': urlOK.append("%3E"); break;
+ case '/': urlOK.append("%2F"); break;
+ case ' ': urlOK.append("%20"); break;
+ case ':': urlOK.append("%3A"); break;
+ case '-': urlOK.append("%2D"); break;
+ default: urlOK.append(ch); break;
+ }
+ }
+ return urlOK.toString();
+
+ }
+
+ static String getShortenedBookNameByBookId(String bookId){
+ String[][] bookInfo = new String[66][3];
+ bookInfo[0][0] = "Gen"; bookInfo[0][1] = "Genesis"; bookInfo[0][2] = "1";
+ bookInfo[1][0] = "Exod"; bookInfo[1][1] = "Exodus"; bookInfo[1][2] = "2";
+ bookInfo[2][0] = "Lev"; bookInfo[2][1] = "Leviticus"; bookInfo[2][2] = "3";
+ bookInfo[3][0] = "Num"; bookInfo[3][1] = "Numbers"; bookInfo[3][2] = "4";
+ bookInfo[4][0] = "Deut"; bookInfo[4][1] = "Deuteronomy"; bookInfo[4][2] = "5";
+ bookInfo[5][0] = "Josh"; bookInfo[5][1] = "Joshua"; bookInfo[5][2] = "6";
+ bookInfo[6][0] = "Judg"; bookInfo[6][1] = "Judges"; bookInfo[6][2] = "7";
+ bookInfo[7][0] = "Ruth"; bookInfo[7][1] = "Ruth"; bookInfo[7][2] = "8";
+ bookInfo[8][0] = "1Sam"; bookInfo[8][1] = "1 Samuel"; bookInfo[8][2] = "9";
+ bookInfo[9][0] = "2Sam"; bookInfo[9][1] = "2 Samuel"; bookInfo[9][2] = "10";
+ bookInfo[10][0] = "1Kgs"; bookInfo[10][1] = "1 Kings"; bookInfo[10][2] = "11";
+ bookInfo[11][0] = "2Kgs"; bookInfo[11][1] = "2 Kings"; bookInfo[11][2] = "12";
+ bookInfo[12][0] = "1Chr"; bookInfo[12][1] = "1 Chronicles"; bookInfo[12][2] = "13";
+ bookInfo[13][0] = "2Chr"; bookInfo[13][1] = "2 Chronicles"; bookInfo[13][2] = "14";
+ bookInfo[14][0] = "Ezra"; bookInfo[14][1] = "Ezra"; bookInfo[14][2] = "15";
+ bookInfo[15][0] = "Neh"; bookInfo[15][1] = "Nehemiah"; bookInfo[15][2] = "16";
+ bookInfo[16][0] = "Esth"; bookInfo[16][1] = "Esther"; bookInfo[16][2] = "17";
+ bookInfo[17][0] = "Job"; bookInfo[17][1] = "Job"; bookInfo[17][2] = "18";
+ bookInfo[18][0] = "Ps"; bookInfo[18][1] = "Psalms"; bookInfo[18][2] = "19";
+ bookInfo[19][0] = "Prov"; bookInfo[19][1] = "Proverbs"; bookInfo[19][2] = "20";
+ bookInfo[20][0] = "Eccl"; bookInfo[20][1] = "Ecclesiastes"; bookInfo[20][2] = "21";
+ bookInfo[21][0] = "Song"; bookInfo[21][1] = "Song of Songs"; bookInfo[21][2] = "22";
+ bookInfo[22][0] = "Isa"; bookInfo[22][1] = "Isaiah"; bookInfo[22][2] = "23";
+ bookInfo[23][0] = "Jer"; bookInfo[23][1] = "Jeremiah"; bookInfo[23][2] = "24";
+ bookInfo[24][0] = "Lam"; bookInfo[24][1] = "Lamentations"; bookInfo[24][2] = "25";
+ bookInfo[25][0] = "Ezek"; bookInfo[25][1] = "Ezekiel"; bookInfo[25][2] = "26";
+ bookInfo[26][0] = "Dan"; bookInfo[26][1] = "Daniel"; bookInfo[26][2] = "27";
+ bookInfo[27][0] = "Hos"; bookInfo[27][1] = "Hosea"; bookInfo[27][2] = "28";
+ bookInfo[28][0] = "Joel"; bookInfo[28][1] = "Joel"; bookInfo[28][2] = "29";
+ bookInfo[29][0] = "Amos"; bookInfo[29][1] = "Amos"; bookInfo[29][2] = "30";
+ bookInfo[30][0] = "Obad"; bookInfo[30][1] = "Obadiah"; bookInfo[30][2] = "31";
+ bookInfo[31][0] = "Jonah"; bookInfo[31][1] = "Jonah"; bookInfo[31][2] = "32";
+ bookInfo[32][0] = "Mic"; bookInfo[32][1] = "Micah"; bookInfo[32][2] = "33";
+ bookInfo[33][0] = "Nah"; bookInfo[33][1] = "Nahum"; bookInfo[33][2] = "34";
+ bookInfo[34][0] = "Hab"; bookInfo[34][1] = "Habakkuk"; bookInfo[34][2] = "35";
+ bookInfo[35][0] = "Zeph"; bookInfo[35][1] = "Zephaniah"; bookInfo[35][2] = "36";
+ bookInfo[36][0] = "Hag"; bookInfo[36][1] = "Haggai"; bookInfo[36][2] = "37";
+ bookInfo[37][0] = "Zech"; bookInfo[37][1] = "Zechariah"; bookInfo[37][2] = "38";
+ bookInfo[38][0] = "Mal"; bookInfo[38][1] = "Malachi"; bookInfo[38][2] = "39";
+ bookInfo[39][0] = "Matt"; bookInfo[39][1] = "Matthew"; bookInfo[39][2] = "40";
+ bookInfo[40][0] = "Mark"; bookInfo[40][1] = "Mark"; bookInfo[40][2] = "41";
+ bookInfo[41][0] = "Luke"; bookInfo[41][1] = "Luke"; bookInfo[41][2] = "42";
+ bookInfo[42][0] = "John"; bookInfo[42][1] = "John"; bookInfo[42][2] = "43";
+ bookInfo[43][0] = "Acts"; bookInfo[43][1] = "Acts"; bookInfo[43][2] = "44";
+ bookInfo[44][0] = "Rom"; bookInfo[44][1] = "Romans"; bookInfo[44][2] = "45";
+ bookInfo[45][0] = "1Cor"; bookInfo[45][1] = "1 Corinthians"; bookInfo[45][2] = "46";
+ bookInfo[46][0] = "2Cor"; bookInfo[46][1] = "2 Corinthians"; bookInfo[46][2] = "47";
+ bookInfo[47][0] = "Gal"; bookInfo[47][1] = "Galatians"; bookInfo[47][2] = "48";
+ bookInfo[48][0] = "Eph"; bookInfo[48][1] = "Ephesians"; bookInfo[48][2] = "49";
+ bookInfo[49][0] = "Phil"; bookInfo[49][1] = "Philippians"; bookInfo[49][2] = "50";
+ bookInfo[50][0] = "Col"; bookInfo[50][1] = "Colossians"; bookInfo[50][2] = "51";
+ bookInfo[51][0] = "1Thess"; bookInfo[51][1] = "1 Thessalonians"; bookInfo[51][2] = "52";
+ bookInfo[52][0] = "2Thess"; bookInfo[52][1] = "2 Thessalonians"; bookInfo[52][2] = "53";
+ bookInfo[53][0] = "1Tim"; bookInfo[53][1] = "1 Timothy"; bookInfo[53][2] = "54";
+ bookInfo[54][0] = "2Tim"; bookInfo[54][1] = "2 Timothy"; bookInfo[54][2] = "55";
+ bookInfo[55][0] = "Titus"; bookInfo[55][1] = "Titus"; bookInfo[55][2] = "56";
+ bookInfo[56][0] = "Phlm"; bookInfo[56][1] = "Philemon"; bookInfo[56][2] = "57";
+ bookInfo[57][0] = "Heb"; bookInfo[57][1] = "Hebrews"; bookInfo[57][2] = "58";
+ bookInfo[58][0] = "Jas"; bookInfo[58][1] = "James"; bookInfo[58][2] = "59";
+ bookInfo[59][0] = "1Pet"; bookInfo[59][1] = "1 Peter"; bookInfo[59][2] = "60";
+ bookInfo[60][0] = "2Pet"; bookInfo[60][1] = "2 Peter"; bookInfo[60][2] = "61";
+ bookInfo[61][0] = "1John"; bookInfo[61][1] = "1 John"; bookInfo[61][2] = "62";
+ bookInfo[62][0] = "2John"; bookInfo[62][1] = "2 John"; bookInfo[62][2] = "63";
+ bookInfo[63][0] = "3John"; bookInfo[63][1] = "3 John"; bookInfo[63][2] = "64";
+ bookInfo[64][0] = "Jude"; bookInfo[64][1] = "Jude"; bookInfo[64][2] = "65";
+ bookInfo[65][0] = "Rev"; bookInfo[65][1] = "Revelation"; bookInfo[65][2] = "66";
+
+
+ for(int i = 0;i<66;i++){
+ if(bookInfo[i][2].equals(bookId)==true){
+ return bookInfo[i][0];
+ }
+ }
+
+ return "";
+ }
+
+ static String getTimeStamp() {
+ Calendar calendar = Calendar.getInstance();
+ java.util.Date now = calendar.getTime();
+ String longTimestamp = Long.toString(now.getTime());
+ String timestamp = longTimestamp.substring(0, 10);
+// Utils.Log("timestamp " + timestamp);
+ //Utils.Log(" Mllis " + System.currentTimeMillis());
+ return timestamp;
+ }
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/bus/LocalLanguage.java b/app/src/main/java/com/goodtrendltd/HolySongs/bus/LocalLanguage.java
new file mode 100644
index 0000000..35c2df8
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/bus/LocalLanguage.java
@@ -0,0 +1,16 @@
+package com.goodtrendltd.HolySongs.bus;
+
+/**
+ * Created by vincent on 15/8/13.
+ */
+public enum LocalLanguage {
+
+ //简体中文
+ TRADITIONAL_CHINESE,
+
+ //繁体中文
+ SIMPLIFIED_CHINESE,
+
+ //英文
+ ENGLISH
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/bus/UserMag.java b/app/src/main/java/com/goodtrendltd/HolySongs/bus/UserMag.java
new file mode 100644
index 0000000..53ddf73
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/bus/UserMag.java
@@ -0,0 +1,141 @@
+package com.goodtrendltd.HolySongs.bus;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.util.Log;
+
+import com.goodtrendltd.HolySongs.CustomApplication;
+import com.goodtrendltd.HolySongs.chat.ChatUser;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import java.util.ArrayList;
+
+/**
+ * Created by vincent on 15/6/25.
+ */
+public class UserMag {
+ public static String FORM_MESSAGE_ID_ARRAY = "form_message_id_array";
+ public static String PREFS_FILE_NAME = "com.pressbible.view";
+
+ public static String CHAT_BUBBLE = "chat_bubble";
+
+ private UserMag() {
+
+ }
+
+ public static Boolean recordChatFirstMessage(Activity context) {
+ SharedPreferences prefs = context.getSharedPreferences(PREFS_FILE_NAME, Context.MODE_PRIVATE);
+ if(prefs.contains("sentFirstMessage")) {
+ return false;
+ }
+ else {
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putBoolean("sentFirstMessage", true);
+ editor.apply();
+ GlobalMediaStar.recordFirstChat(context);
+ return true;
+ }
+ }
+
+
+ public static void addFormMessageId(Context context, int id){
+ JSONArray array = new JSONArray();
+ try {
+ array = loadJSONArray(context, FORM_MESSAGE_ID_ARRAY);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ Log.d("chat-user","form message array error: "+e);
+ }
+ //add new value
+ array.put(id);
+ saveJSONArray(context, FORM_MESSAGE_ID_ARRAY, array);
+ }
+
+ public static ArrayList getFormMessageIds(){
+ Context context = CustomApplication.getContext();
+ ArrayList listdata = new ArrayList();
+ JSONArray jArray = new JSONArray();
+ try {
+ jArray = loadJSONArray(context, FORM_MESSAGE_ID_ARRAY);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ Log.d("chat-user","form message array error: "+e);
+ }
+ if (jArray != null) {
+ for (int i=0;i writing \"false\" to CHAT_BUBBLE");
+ SharedPreferences.Editor editor = userinfo.edit();
+ editor.putBoolean(CHAT_BUBBLE, false).apply();
+ }
+
+ public static void setNewNotification() {
+ Context context = CustomApplication.getContext();
+ Log.d("chat-usermag","setNewNotification() -> writing \"true\" to CHAT_BUBBLE");
+ SharedPreferences userinfo = context.getSharedPreferences(PREFS_FILE_NAME, 0);
+ SharedPreferences.Editor editor = userinfo.edit();
+ editor.putBoolean(CHAT_BUBBLE, true).apply();
+ }
+
+ public static void saveJSONArray(Context c, String key, JSONArray array) {
+ SharedPreferences settings = c.getSharedPreferences(PREFS_FILE_NAME, Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = settings.edit();
+ editor.putString(key, array.toString());
+ editor.apply();
+ }
+
+ public static JSONArray loadJSONArray(Context c, String key) throws JSONException {
+ SharedPreferences settings = c.getSharedPreferences(PREFS_FILE_NAME, Context.MODE_PRIVATE);
+ return new JSONArray(settings.getString(key, "[]"));
+ }
+
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/chat/ApplicationSessionStateCallback.java b/app/src/main/java/com/goodtrendltd/HolySongs/chat/ApplicationSessionStateCallback.java
new file mode 100644
index 0000000..44e0a28
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/chat/ApplicationSessionStateCallback.java
@@ -0,0 +1,9 @@
+package com.goodtrendltd.HolySongs.chat;
+
+/**
+ * Created by igorkhomenko on 4/29/15.
+ */
+public interface ApplicationSessionStateCallback {
+ void onStartSessionRecreation();
+ void onFinishSessionRecreation(boolean success);
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/chat/BaseChatActivity.java b/app/src/main/java/com/goodtrendltd/HolySongs/chat/BaseChatActivity.java
new file mode 100644
index 0000000..c4790aa
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/chat/BaseChatActivity.java
@@ -0,0 +1,141 @@
+package com.goodtrendltd.HolySongs.chat;
+
+import android.app.ProgressDialog;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
+
+import com.quickblox.users.model.QBUser;
+
+/**
+ * Created by igorkhomenko on 4/29/15.
+ */
+public class BaseChatActivity extends AppCompatActivity implements ApplicationSessionStateCallback {
+ private static final String TAG = BaseChatActivity.class.getSimpleName();
+
+ private static final String USER_LOGIN_KEY = "USER_LOGIN_KEY";
+ private static final String USER_PASSWORD_KEY = "USER_PASSWORD_KEY";
+
+ private boolean sessionActive = false;
+ private boolean needToRecreateSession = false;
+
+ private ProgressDialog progressDialog;
+ private final Handler handler = new Handler();
+
+ public boolean isSessionActive() {
+ return sessionActive;
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // 'initialised' will be true if it's the 1st start of the app or if the app's process was killed by OS(or user)
+ //
+ boolean initialised = ChatService.initIfNeed(this);
+ if(initialised && savedInstanceState != null){
+ needToRecreateSession = true;
+ }else{
+ sessionActive = true;
+ }
+ }
+
+ @Override
+ public void onRestoreInstanceState(Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+
+ if(needToRecreateSession){
+ needToRecreateSession = false;
+
+ Log.d(TAG, "Need to restore chat connection");
+ /*
+ QBUser user = new QBUser();
+ user.setLogin(savedInstanceState.getString(USER_LOGIN_KEY));
+ user.setPassword(savedInstanceState.getString(USER_PASSWORD_KEY));
+
+ savedInstanceState.remove(USER_LOGIN_KEY);
+ savedInstanceState.remove(USER_PASSWORD_KEY);
+
+ recreateSession(user);*/
+ }
+ }
+
+ private void recreateSession(final QBUser user){
+ sessionActive = false;
+ this.onStartSessionRecreation();
+
+ showProgressDialog();
+
+ // Restoring Chat session
+ //
+ /*
+ ChatService.getInstance().login(user, new QBEntityCallbackImpl() {
+ @Override
+ public void onSuccess() {
+ Log.d(TAG, "Chat login onSuccess");
+
+ progressDialog.dismiss();
+ progressDialog = null;
+
+ sessionActive = true;
+ BaseChatActivity.this.onFinishSessionRecreation(true);
+ }
+
+ @Override
+ public void onError(List errors) {
+
+ Log.d(TAG, "Chat login onError: " + errors);
+
+ Toast toast = Toast.makeText(getApplicationContext(),
+ "Error in the recreate session request, trying again in 3 seconds.. Check you internet connection.", Toast.LENGTH_SHORT);
+ toast.show();
+
+ // try again
+ handler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ recreateSession(user);
+ }
+ }, 3000);
+
+ BaseChatActivity.this.onFinishSessionRecreation(false);
+ }
+ });*/
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ /*QBUser currentUser = ChatService.getInstance().getCurrentUser();
+ if(currentUser != null) {
+ outState.putString(USER_LOGIN_KEY, currentUser.getLogin());
+ outState.putString(USER_PASSWORD_KEY, currentUser.getPassword());
+ }*/
+
+ // Always call the superclass so it can save the view hierarchy state
+ super.onSaveInstanceState(outState);
+ }
+
+ private void showProgressDialog(){
+ if(progressDialog == null) {
+ progressDialog = new ProgressDialog(BaseChatActivity.this);
+ progressDialog.setTitle("Loading");
+ progressDialog.setMessage("Restoring chat session...");
+ progressDialog.setProgressStyle(progressDialog.STYLE_SPINNER);
+ }
+ progressDialog.show();
+ }
+
+
+ //
+ // ApplicationSessionStateCallback
+ //
+
+ @Override
+ public void onStartSessionRecreation() {
+ }
+
+ @Override
+ public void onFinishSessionRecreation(boolean success) {
+ }
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/chat/Chat.java b/app/src/main/java/com/goodtrendltd/HolySongs/chat/Chat.java
new file mode 100644
index 0000000..a9d0403
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/chat/Chat.java
@@ -0,0 +1,10 @@
+package com.goodtrendltd.HolySongs.chat;
+
+import org.jivesoftware.smack.SmackException;
+import org.jivesoftware.smack.XMPPException;
+
+public interface Chat {
+ void sendMessage(ChatMessage message) throws XMPPException, SmackException.NotConnectedException;
+
+ void release() throws XMPPException;
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/chat/ChatAdapter.java b/app/src/main/java/com/goodtrendltd/HolySongs/chat/ChatAdapter.java
new file mode 100644
index 0000000..0a7b51c
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/chat/ChatAdapter.java
@@ -0,0 +1,177 @@
+package com.goodtrendltd.HolySongs.chat;
+
+import android.app.Activity;
+import android.content.Context;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import java.util.Calendar;
+import java.util.List;
+import com.goodtrendltd.HolySongs.R;
+
+public class ChatAdapter extends BaseAdapter {
+
+ private final List chatMessages;
+ private Activity context;
+ private Calendar calendar = Calendar.getInstance();
+
+ private enum ChatItemType {
+ Message,
+ Sticker
+ }
+
+ public ChatAdapter(Activity context, List chatMessages) {
+ this.context = context;
+ this.chatMessages = chatMessages;
+ }
+
+ @Override
+ public int getCount() {
+ if (chatMessages != null) {
+ return chatMessages.size();
+ } else {
+ return 0;
+ }
+ }
+
+ @Override
+ public ChatMessage getItem(int position) {
+ if (chatMessages != null) {
+ return chatMessages.get(position);
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public int getViewTypeCount() {
+ return ChatItemType.values().length;
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder holder;
+ ChatMessage chatMessage = getItem(position);
+ LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+ if (convertView == null) {
+ convertView = vi.inflate(R.layout.list_item_message, parent, false);
+ holder = createViewHolder(convertView);
+ convertView.setTag(holder);
+ } else {
+ holder = (ViewHolder) convertView.getTag();
+ }
+
+ boolean isOutgoing = chatMessage.isOutgoing();
+ if(chatMessage.getBody().indexOf("]:姓名:")>0){
+ convertView.setVisibility(View.GONE);
+ }
+ else
+ {
+ convertView.setVisibility(View.VISIBLE);
+ }
+ setAlignment(holder, isOutgoing);
+ if (holder.txtMessage != null) {
+ holder.txtMessage.setText(chatMessage.getBody());
+ }
+ holder.txtInfo.setText(getTimeText(chatMessage));
+ if (chatMessage.isSendingInProgress()) {
+ holder.msgProgressBar.setVisibility(View.VISIBLE);
+ }
+ else {
+ holder.msgProgressBar.setVisibility(View.GONE);
+ }
+ return convertView;
+ }
+
+ public void add(ChatMessage message) {
+ chatMessages.add(message);
+ }
+
+ public void add(List messages) {
+ chatMessages.addAll(messages);
+ }
+
+ private void setAlignment(ViewHolder holder, boolean isOutgoing) {
+ if (!isOutgoing) {
+ LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) holder.messageHolder.getLayoutParams();
+ layoutParams.gravity = Gravity.LEFT;
+ holder.messageHolder.setLayoutParams(layoutParams);
+
+ RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) holder.content.getLayoutParams();
+ lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 0);
+ lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
+ holder.content.setLayoutParams(lp);
+
+ layoutParams = (LinearLayout.LayoutParams) holder.txtInfo.getLayoutParams();
+ layoutParams.gravity = Gravity.LEFT;
+ holder.txtInfo.setLayoutParams(layoutParams);
+ if (holder.txtMessage != null) {
+ holder.contentWithBG.setBackgroundResource(R.drawable.incoming_message);
+ layoutParams = (LinearLayout.LayoutParams) holder.txtMessage.getLayoutParams();
+ layoutParams.gravity = Gravity.LEFT;
+ holder.txtMessage.setLayoutParams(layoutParams);
+ } else {
+ holder.contentWithBG.setBackgroundResource(android.R.color.transparent);
+ }
+ } else {
+ LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) holder.messageHolder.getLayoutParams();
+ layoutParams.gravity = Gravity.RIGHT;
+ holder.messageHolder.setLayoutParams(layoutParams);
+
+ RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) holder.content.getLayoutParams();
+ lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 0);
+ lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
+ holder.content.setLayoutParams(lp);
+
+ layoutParams = (LinearLayout.LayoutParams) holder.txtInfo.getLayoutParams();
+ layoutParams.gravity = Gravity.RIGHT;
+ holder.txtInfo.setLayoutParams(layoutParams);
+
+ if (holder.txtMessage != null) {
+ holder.contentWithBG.setBackgroundResource(R.drawable.outgoing_message_green);
+ layoutParams = (LinearLayout.LayoutParams) holder.txtMessage.getLayoutParams();
+ layoutParams.gravity = Gravity.RIGHT;
+ holder.txtMessage.setLayoutParams(layoutParams);
+ } else {
+ holder.contentWithBG.setBackgroundResource(android.R.color.transparent);
+ }
+ }
+ }
+
+ private ViewHolder createViewHolder(View v) {
+ ViewHolder holder = new ViewHolder();
+ holder.txtMessage = (TextView) v.findViewById(R.id.txtMessage);
+ holder.content = (LinearLayout) v.findViewById(R.id.content);
+ holder.contentWithBG = (LinearLayout) v.findViewById(R.id.contentWithBackground);
+ holder.messageHolder = (LinearLayout) v.findViewById(R.id.messageHolder);
+ holder.txtInfo = (TextView) v.findViewById(R.id.txtInfo);
+ holder.msgProgressBar = (ProgressBar) v.findViewById(R.id.message_progressBar);
+ return holder;
+ }
+
+ private String getTimeText(ChatMessage message) {
+ return message.getPrettyDate(context);
+ }
+
+ private static class ViewHolder {
+ public TextView txtMessage;
+ public TextView txtInfo;
+ public LinearLayout content;
+ public LinearLayout contentWithBG;
+ public LinearLayout messageHolder;
+ public ProgressBar msgProgressBar;
+ }
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/chat/ChatMessage.java b/app/src/main/java/com/goodtrendltd/HolySongs/chat/ChatMessage.java
new file mode 100644
index 0000000..4e16bf1
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/chat/ChatMessage.java
@@ -0,0 +1,91 @@
+package com.goodtrendltd.HolySongs.chat;
+
+import android.content.Context;
+import android.text.format.DateUtils;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Created by Julia on 9/22/2015.
+ */
+public class ChatMessage {
+ private Integer id;
+ private Date date;
+ private String body;
+ private boolean readFlag;
+ private boolean saveToHistory = false;
+ private String direction;
+ private boolean sendingInProgress = false;
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss", Locale.getDefault());
+ DateFormat df = DateFormat.getDateTimeInstance();
+// fromDate = sdf.format(fromDateTime);
+
+ public ChatMessage() {
+ }
+ public Integer getId() {return this.id;}
+ public void setId(Integer id) {this.id = id;}
+ public String getBody() {return this.body;}
+ public void setBody(String body) {
+ this.body = body;
+ }
+ public void setReadFlag(Boolean flag) { this.readFlag=flag; }
+ public Boolean isRead() {return this.readFlag; }
+ public void setDirection(String direction) { this.direction = direction; }
+ public void setDate(Date date) {
+ //Date is stored as date object
+ this.date=date;
+ }
+ public void setDateFromString(String utcdate) throws ParseException {
+ //From string, ex. 2015-09-22 07:11:49
+ //to Date object
+ sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
+ this.date = sdf.parse(utcdate);
+ }
+ public Date getDate() {
+ return this.date;
+ }
+ public String getUTCDate() {
+ //In UTC time zone: yyyy-MM-dd 1970-01-01
+ sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
+ return sdf.format(this.date);
+ }
+ public String getPrettyDate(Context ctxt) {
+ //Date to String, ex. Dec 31, 1969 4:00:00 PM
+ String prettyDate = "";
+ // prettyDate = df.format(prettyDate);
+ if(DateUtils.isToday(this.date.getTime())) { //today
+ prettyDate = DateUtils.formatDateTime(ctxt,this.date.getTime(), DateUtils.FORMAT_SHOW_TIME);
+ }
+ else { //relative format in days up to 3 days ago, otherwise standard format
+ prettyDate = DateUtils.getRelativeDateTimeString(ctxt,this.date.getTime(), DateUtils.DAY_IN_MILLIS,3* DateUtils.DAY_IN_MILLIS, DateUtils.FORMAT_SHOW_WEEKDAY).toString();
+ }
+ return prettyDate;
+ }
+
+ public boolean isOutgoing(){
+ if (this.direction.equals("in")) {
+ //"in" means that the message is sent in to the OM's
+ //For our purposes, "in" means received messages
+ return true;
+ }
+ else {
+ //"out" means message is sent from the OM's
+ //In this code, "out" means sent messages from app
+ return false;
+ }
+ }
+
+ public boolean isSendingInProgress() {
+ return this.sendingInProgress;
+ }
+ public void setSendingInProgress(Boolean status) {
+ this.sendingInProgress = status;
+ }
+}
diff --git a/app/src/main/java/com/goodtrendltd/HolySongs/chat/ChatService.java b/app/src/main/java/com/goodtrendltd/HolySongs/chat/ChatService.java
new file mode 100644
index 0000000..844b850
--- /dev/null
+++ b/app/src/main/java/com/goodtrendltd/HolySongs/chat/ChatService.java
@@ -0,0 +1,639 @@
+package com.goodtrendltd.HolySongs.chat;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.provider.Settings.Secure;
+import android.support.v4.content.LocalBroadcastManager;
+import android.support.v7.app.NotificationCompat;
+import android.util.Log;
+
+import com.goodtrendltd.HolySongs.ChatActivity;
+import com.goodtrendltd.HolySongs.CustomApplication;
+import com.goodtrendltd.HolySongs.R;
+import com.goodtrendltd.HolySongs.bus.BibleSetting;
+import com.goodtrendltd.HolySongs.bus.LocalLanguage;
+import com.goodtrendltd.HolySongs.bus.UserMag;
+
+import com.quickblox.auth.QBAuth;
+import com.quickblox.auth.model.QBSession;
+import com.quickblox.chat.QBChatService;
+import com.quickblox.core.QBEntityCallback;
+import com.quickblox.core.QBEntityCallbackImpl;
+import com.quickblox.users.model.QBUser;
+
+import org.jivesoftware.smack.ConnectionListener;
+import org.jivesoftware.smack.XMPPConnection;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ChatService {
+
+ static final String SENDER_ID="868640157488";
+
+ private static final String TAG = ChatService.class.getSimpleName();
+
+ static final int AUTO_PRESENCE_INTERVAL_IN_SECONDS = 30;
+ static final int REGISTER_TASK = 1;
+ static final int UPDATE_TASK = 2;
+ static final int GETMESSAGES_TASK = 3;
+ static final int MARKASREAD_TASK = 4;
+ static final int SENDMESSAGE_TASK = 5;
+ public static final String COUNT = "count";
+ public static final String MSG_CONTENT = "content";
+ public static final String NEW_MESSAGES = "new-message";
+
+ private static ChatService instance;
+ private static Context context;
+ private static ChatUser chatUser = ChatUser.getInstance();
+ private static int mId =0;
+
+ public static void initChatService(Context context) {
+ ChatService.context = context;
+ }
+
+ public static synchronized ChatService getInstance() {
+ if(instance == null) {
+ instance = new ChatService();
+ }
+ return instance;
+ }
+
+ public static boolean initIfNeed(Context ctx) {
+ if (!QBChatService.isInitialized()) {
+ QBChatService.setDebugEnabled(true);
+ QBChatService.init(ctx);
+ Log.d(TAG, "Initialise QBChatService");
+
+ return true;
+ }
+
+ return false;
+ }
+
+ private QBChatService chatService;
+
+ private ChatService() {
+ chatService = QBChatService.getInstance();
+ chatService.addConnectionListener(chatConnectionListener);
+ }
+
+ public void addConnectionListener(ConnectionListener listener){
+ chatService.addConnectionListener(listener);
+ }
+
+ public void removeConnectionListener(ConnectionListener listener){
+ chatService.removeConnectionListener(listener);
+ }
+
+ public static Integer register(String push_token, UserTask usertask){
+
+ Integer code;
+ try
+ {
+ Log.v("ChatService-post-https", "Executing register task...");
+ Map params = new HashMap();
+ Map task = new HashMap();
+
+ params.put("app_key", BibleSetting.getChatAPIKey(CustomApplication.getContext()));
+ Log.v("ChatService-post-https", "Executing register task 1...");
+ params.put("platform", "android");
+ params.put("push_token", push_token);
+ Log.v("ChatService-post-https", "Executing register task 2...");
+ task.put("task", ChatService.REGISTER_TASK);
+
+ Log.v("ChatService-post-https", "Still registering......");
+ usertask.execute(params, task);
+
+ //HttpsUtil.post("https://commchannels.globalmediaoutreach.com/api/app/users", key, values);
+ code=0;
+ }
+ catch(Exception ex){
+ code=1;
+ System.out.println(" \t " + ex.getMessage());
+ Log.d("ChatService-register:", "register failed, exception: " + ex+" "+ex.getMessage());
+ }
+
+ // Create REST API session
+ //
+ return code;
+ }
+
+ public static void updateUser(String username, String decision, UserTask userTask) {
+ //write updated user info to shared preferences
+ String userkey = UserMag.getUserKey();
+ SharedPreferences userinfo = context.getSharedPreferences(UserMag.PREFS_FILE_NAME, 0);
+ SharedPreferences.Editor editor = userinfo.edit();
+ editor.putString(ChatUser.USER_NAME_PREF, username);
+ editor.putString(ChatUser.USER_DECISION_PREF, decision);
+ editor.apply();
+
+ try {
+ Log.d("ChatService-post-https", "Executing updateUser task...");
+ Map params = new HashMap();
+ Map task = new HashMap();
+
+ params.put("user_key", userkey);
+ params.put("name", username);
+ params.put("decision", decision);
+ task.put("task", ChatService.UPDATE_TASK);
+
+ userTask.execute(params, task);
+ }
+ catch (Exception e) {
+ Log.e("ChatService-updateUser", e.toString());
+ }
+ }
+
+ public static void markAsRead(ArrayList ids, MessageTask messageTask){
+ //write updated user info to shared preferences
+ String userkey = UserMag.getUserKey();
+ //TODO: {"success":false,"errorType":"InvalidParameter","code":452,"message":"\u0027ids\u0027 should be an array of integers"}
+ try {
+ Log.d("ChatService-put-https", "Executing markAsRead...");
+ Map params = new HashMap();
+ Map task = new HashMap();
+
+ params.put("user_key", userkey);
+ for (Integer i : ids) {
+ params.put("ids[]", i.toString());
+ }
+ Log.d("ChatService-post-https", "ids being marked: " + ids.toString());
+ task.put("task", ChatService.MARKASREAD_TASK);
+
+ messageTask.execute(params, task);
+
+ }
+ catch (Exception e) {
+ Log.e("ChatService-markAsRead", e.toString());
+ }
+ }
+
+ public static void loadMoreMessages(Integer msgCount, MessageTask messageTask) {
+ Integer minPageSize = 5;
+ Integer pageSize = (msgCount % minPageSize) + minPageSize;
+ Integer pageNumber = (msgCount/pageSize) + 1;
+ Log.d("ChatServie-messages", "loading pageSize:"+pageSize);
+ Log.d("ChatServie-messages", "loading pageNumber:" + pageNumber);
+ getMessages(false, pageSize, pageNumber, messageTask);
+ }
+
+ public static Integer getMessages(Boolean onlyNew, Integer count, Integer page, MessageTask messageTask) {
+ String fromDate="";
+ String toDate="";
+
+ if (count<1 || count>1000) {
+ count=50;
+ Log.d("ChatService-messages", "Message count must be between 1 and 1000. Count set to 50.");
+ }
+ if (page<1) {
+ page=1;
+ Log.d("ChatService-messages", "Page count must be greater than 1. Page count set to 1.");
+ }
+
+ String userkey = UserMag.getUserKey();
+
+ try {
+ Log.d("ChatService-messages", "Executing getMessages task...");
+ Map params = new HashMap();
+ Map task = new HashMap();
+
+ params.put("user_key", userkey);
+// params.put("from_date", fromDate);
+// params.put("to_date", toDate);
+ params.put("only_new", onlyNew.toString());
+ params.put("count", count.toString());
+ params.put("page", page.toString());
+ task.put("task", ChatService.GETMESSAGES_TASK);
+
+ Log.d("ChatService-messages", "user_key:" + userkey);
+ messageTask.execute(params, task);
+ }
+ catch (Exception e) {
+ Log.e("ChatService-messages", e.toString());
+ return 1;
+ }
+ return 0;
+ }
+
+ public static class CheckMessages implements Runnable {
+ @Override
+ public void run() {
+
+ Log.v("chat", "CheckMessages!");
+
+ if (UserMag.getUserKey()=="") {
+ return;
+ }
+
+ //check for new messages
+ ChatService.getMessages(Boolean.TRUE, 30, 1, new MessageTask() {
+ @Override
+ protected void onSuccessfulReceive(HttpClientUtil.ResponseObject msgResponse) {
+ int count = 0;
+ ArrayList messages = msgResponse.getMessages();
+
+ for (ChatMessage msg : messages) {
+ if (!msg.isOutgoing()) {
+ if (chatUser.addToInbox(msg)) {
+ makeNotification(msg);
+ };
+ count++;
+ }
+ }
+
+ if (count > 0) {
+ Log.v("chat", "making notification. Count: " + count);
+ sendNotification(count, messages);
+ }
+ }
+ });
+ }
+
+ // Send an Intent with an action named "my-event".
+ private void sendNotification(int count, ArrayList messages) {
+ Intent intent = new Intent(ChatService.NEW_MESSAGES);
+ // add data
+ intent.putExtra(ChatService.COUNT, count);
+ LocalBroadcastManager.getInstance(ChatService.context).sendBroadcast(intent);
+ }
+ }
+
+ private static void makeNotification(ChatMessage message) {
+ String text = message.getBody();
+ long when = message.getDate().getTime();
+ Intent notificationIntent = new Intent(context, ChatActivity.class);
+ PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
+ mId=mId+1;
+ Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
+
+ //Detailed version
+ Notification notification = new NotificationCompat.Builder(context)
+ .setContentTitle(context.getString(R.string.chat_notification_title))
+ .setContentText(text)
+ .setWhen(when)
+ .setSmallIcon(R.drawable.icon)
+ .setAutoCancel(true)
+ .addAction(android.R.drawable.ic_menu_view, "View details", contentIntent)
+ .setContentIntent(contentIntent)
+ .setPriority(Notification.PRIORITY_DEFAULT)
+ .setSound(alarmSound).build();
+
+ NotificationManager mNotificationManager =
+ (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+ // mId allows you to update the notification later on.
+ mNotificationManager.notify(mId, notification);
+ }
+
+ public static Integer sendMessage(String message, MessageTask messageTask) {
+ String userkey = UserMag.getUserKey();
+ String language="";
+
+ if(BibleSetting.getLocalLanguage(context)== LocalLanguage.SIMPLIFIED_CHINESE
+ || BibleSetting.getLocalLanguage(context)== LocalLanguage.TRADITIONAL_CHINESE )
+ language="zh";
+ else
+ language="en";
+
+ try {
+ Map params = new HashMap();
+ Map task = new HashMap();
+
+ Log.d("ChatService-messages", "send message: " + message);
+ params.put("user_key", userkey);
+ params.put("message", message);
+ params.put("language", language);
+ task.put("task", ChatService.SENDMESSAGE_TASK);
+
+ messageTask.execute(params, task);
+ }
+ catch (Exception e) {
+ Log.e("ChatService-messages", e.toString());
+ return 1;
+ }
+ return 0;
+ }
+
+ public static String getToken(Context context){
+ String android_id=null;
+ try {
+ /*InstanceID instanceID = InstanceID
+ .getInstance(context);*/
+
+ android_id = Secure.getString(context.getContentResolver(),
+ Secure.ANDROID_ID);
+ Log.d("token", "android_id retrieved: " + android_id);
+ } catch (Exception ex) {
+ //e.printStackTrace();
+ Log.d("token", "android_id could not be retrieved: " + ex);
+ }
+ return android_id;
+ }
+
+ public void login(final QBUser user, final QBEntityCallback callback){
+
+ // Create REST API session
+ //
+
+ QBAuth.createSession(user, new QBEntityCallbackImpl() {
+ @Override
+ public void onSuccess(QBSession session, Bundle args) {
+
+ user.setId(session.getUserId());
+
+ // login to Chat
+ //
+ loginToChat(user, new QBEntityCallbackImpl() {
+
+ @Override
+ public void onSuccess() {
+ callback.onSuccess();
+ }
+
+ @Override
+ public void onError(List errors) {
+ callback.onError(errors);
+ }
+ });
+ }
+
+ @Override
+ public void onError(List errors) {
+ callback.onError(errors);
+ }
+ });
+ }
+
+ private void loginToChat(final QBUser user, final QBEntityCallback callback){
+ }
+
+
+ public static class UserTask extends AsyncTask