FANGLH 9 rokov pred
rodič
commit
be577d0e0a
99 zmenil súbory, kde vykonal 8589 pridanie a 106 odobranie
  1. 3 1
      app_core/imageload/src/main/AndroidManifest.xml
  2. 4 4
      app_core/imageload/src/main/java/com/uas/imageloader/BaseImageLoaderStrategy.java
  3. 5 5
      app_core/imageload/src/main/java/com/uas/imageloader/ImageLoaderUtil.java
  4. 9 8
      app_core/imageload/src/main/java/com/uas/imageloader/iml/GlideImageLoaderStrategy.java
  5. 1 1
      app_core/imageload/src/main/java/com/uas/imageloader/listener/ImageSaveListener.java
  6. 1 1
      app_core/imageload/src/main/java/com/uas/imageloader/listener/ProgressLoadListener.java
  7. 1 1
      app_core/imageload/src/main/java/com/uas/imageloader/listener/SourceReadyListener.java
  8. 2 2
      app_core/imageload/src/main/java/com/uas/imageloader/transformation/GlideCircleTransform.java
  9. 1 1
      app_core/imageload/src/main/java/com/uas/imageloader/utils/FileUtils.java
  10. 1 1
      app_core/imageload/src/main/java/com/uas/imageloader/utils/ImageUtils.java
  11. 2 2
      app_core/imageload/src/main/java/com/uas/imageloader/utils/ScreenUtils.java
  12. 1 1
      app_core/imageload/src/main/java/com/uas/imageloader/utils/Utils.java
  13. 3 3
      app_core/message/src/main/java/com/uas/message/imp/BaseToastImpl.java
  14. 3 3
      app_core/message/src/main/java/com/uas/message/imp/ToastCustomizedImpl.java
  15. 1 1
      app_core/message/src/main/java/com/uas/message/interfacepack/BaseToast.java
  16. 8 8
      app_core/message/src/main/java/com/uas/message/interfacepack/CustomizedToast.java
  17. 3 3
      app_core/message/src/main/java/com/uas/message/utils/ToastUtils.java
  18. 1 1
      app_core/message/src/main/java/com/uas/message/utils/Utils.java
  19. 1 1
      app_core/message/src/main/java/com/uas/message/utils/ViewUtils.java
  20. 1 1
      app_core/network/src/main/java/com/uas/network/app/base/BaseActivity.java
  21. 1 1
      app_core/network/src/main/java/com/uas/network/app/base/BaseApplication.java
  22. 6 6
      app_core/network/src/main/java/com/uas/network/app/http/HttpBase.java
  23. 6 6
      app_core/network/src/main/java/com/uas/network/app/http/HttpClient.java
  24. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/Method.java
  25. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/cache/CacheType.java
  26. 11 11
      app_core/network/src/main/java/com/uas/network/app/http/impl/RetrofitImpl.java
  27. 3 2
      app_core/network/src/main/java/com/uas/network/app/http/interceptor/CacheInterceptor.java
  28. 3 2
      app_core/network/src/main/java/com/uas/network/app/http/interceptor/LogInterceptor.java
  29. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/retrofit/StringConverterFactory.java
  30. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/retrofit/StringRequestBodyConverter.java
  31. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/retrofit/StringResponseBodyConverter.java
  32. 10 0
      app_core/network/src/main/java/com/uas/network/app/http/rx/Result1Listener.java
  33. 2 2
      app_core/network/src/main/java/com/uas/network/app/http/rx/Result2Listener.java
  34. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/rx/ResultListener.java
  35. 2 2
      app_core/network/src/main/java/com/uas/network/app/http/rx/ResultSubscriber.java
  36. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/rx/RxJavaUtils.java
  37. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/service/ParamService.java
  38. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/ssl/TrustAllCerts.java
  39. 1 1
      app_core/network/src/main/java/com/uas/network/app/http/ssl/TrustAllHostnameVerifier.java
  40. 0 10
      app_core/network/src/main/java/network/app/http/rx/Result1Listener.java
  41. 5 1
      app_modular/appme/build.gradle
  42. BIN
      app_modular/appme/libs/ormlite-core-4.48.jar
  43. 12 1
      app_modular/appme/src/main/AndroidManifest.xml
  44. 46 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/bean/StepEntity.java
  45. 107 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/calendar/BeforeOrAfterCalendarView.java
  46. 119 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/calendar/RecordsCalenderItemView.java
  47. 24 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/constant/Constant.java
  48. 36 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/db/StepDBOpenHelper.java
  49. 117 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/db/StepDataDao.java
  50. 392 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/service/StepService.java
  51. 42 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/CommonSensorUtils.java
  52. 50 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/StepCountCheckUtil.java
  53. 37 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/StepHttpUtils.java
  54. 166 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/TimeUtil.java
  55. 314 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/view/NewStepActivity.java
  56. 141 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/view/NewStepListActivity.java
  57. 141 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/view/StepSplashActivity.java
  58. 840 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/activity/BusinessCircleActivity.java
  59. 1221 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/adapter/PublicMessageAdapter.java
  60. 76 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/adapter/UserClickableSpan.java
  61. 305 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/audio/AudioPalyer.java
  62. 64 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/CircleMessage.java
  63. 98 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/Comment.java
  64. 60 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/Gift.java
  65. 63 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/Praise.java
  66. 570 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/PublicMessage.java
  67. 31 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/cusview/MyGridView.java
  68. 189 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/cusview/PMsgBottomView.java
  69. 31 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/cusview/ResizeLayout.java
  70. 5 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/cusview/showCEView.java
  71. 31 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/view/PMsgTypeView.java
  72. 53 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/xmpp/AppConstant.java
  73. 243 0
      app_modular/appme/src/main/java/com/uas/appme/workcircle/xmpp/SmileyParser.java
  74. BIN
      app_modular/appme/src/main/res/drawable-hdpi/uuu.png
  75. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/ic_blue_round_bg.png
  76. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/ic_small_blue_rectangular.png
  77. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/im_input_bar_bg.9.png
  78. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/im_input_bg.9.png
  79. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/im_input_expression_nor_u.png
  80. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/im_input_expression_press.png
  81. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/im_photo_button_normal.png
  82. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/im_send_button_disabled.9.png
  83. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/im_send_button_normal.9.png
  84. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/im_send_button_pressed.9.png
  85. BIN
      app_modular/appme/src/main/res/drawable-xhdpi/uustephistory.png
  86. BIN
      app_modular/appme/src/main/res/drawable-xxhdpi/start_splash1.jpg
  87. BIN
      app_modular/appme/src/main/res/drawable-xxhdpi/uuu.png
  88. 8 0
      app_modular/appme/src/main/res/drawable/im_btn_emotion_bg.xml
  89. 9 0
      app_modular/appme/src/main/res/drawable/im_btn_send_bg.xml
  90. 33 0
      app_modular/appme/src/main/res/layout/activity_business_circle.xml
  91. 204 0
      app_modular/appme/src/main/res/layout/activity_newstep.xml
  92. 14 0
      app_modular/appme/src/main/res/layout/before_or_after_calendar_layout.xml
  93. 61 0
      app_modular/appme/src/main/res/layout/p_msg_bottom_view.xml
  94. 58 0
      app_modular/appme/src/main/res/layout/records_calender_item_view.xml
  95. 14 0
      app_modular/appme/src/main/res/layout/step_splash.xml
  96. 249 0
      app_modular/appme/src/main/res/values/attrs.xml
  97. 329 0
      app_modular/appme/src/main/res/values/colors.xml
  98. 1872 3
      app_modular/appme/src/main/res/values/strings.xml
  99. 3 0
      app_modular/appworks/build.gradle

+ 3 - 1
app_core/imageload/src/main/AndroidManifest.xml

@@ -1,7 +1,9 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="base.android.com.imageload" >
 
-    <application android:allowBackup="true" android:label="@string/app_name"
+    <application
+        android:allowBackup="true"
+        android:label="@string/app_name"
         android:supportsRtl="true">
 
     </application>

+ 4 - 4
app_core/imageload/src/main/java/com/library/imageloader/BaseImageLoaderStrategy.java → app_core/imageload/src/main/java/com/uas/imageloader/BaseImageLoaderStrategy.java

@@ -1,11 +1,11 @@
-package com.library.imageloader;
+package com.uas.imageloader;
 
 import android.content.Context;
 import android.widget.ImageView;
 
-import com.library.imageloader.listener.ImageSaveListener;
-import com.library.imageloader.listener.ProgressLoadListener;
-import com.library.imageloader.listener.SourceReadyListener;
+import com.uas.imageloader.listener.ImageSaveListener;
+import com.uas.imageloader.listener.ProgressLoadListener;
+import com.uas.imageloader.listener.SourceReadyListener;
 
 
 /**

+ 5 - 5
app_core/imageload/src/main/java/com/library/imageloader/ImageLoaderUtil.java → app_core/imageload/src/main/java/com/uas/imageloader/ImageLoaderUtil.java

@@ -1,13 +1,13 @@
 
-package com.library.imageloader;
+package com.uas.imageloader;
 
 import android.content.Context;
 import android.widget.ImageView;
 
-import com.library.imageloader.iml.GlideImageLoaderStrategy;
-import com.library.imageloader.listener.ImageSaveListener;
-import com.library.imageloader.listener.ProgressLoadListener;
-import com.library.imageloader.listener.SourceReadyListener;
+import com.uas.imageloader.iml.GlideImageLoaderStrategy;
+import com.uas.imageloader.listener.ImageSaveListener;
+import com.uas.imageloader.listener.ProgressLoadListener;
+import com.uas.imageloader.listener.SourceReadyListener;
 
 
 public class ImageLoaderUtil{

+ 9 - 8
app_core/imageload/src/main/java/com/library/imageloader/iml/GlideImageLoaderStrategy.java → app_core/imageload/src/main/java/com/uas/imageloader/iml/GlideImageLoaderStrategy.java

@@ -1,4 +1,4 @@
-package com.library.imageloader.iml;
+package com.uas.imageloader.iml;
 
 import android.content.Context;
 import android.content.Intent;
@@ -13,13 +13,13 @@ import com.bumptech.glide.load.resource.drawable.GlideDrawable;
 import com.bumptech.glide.load.resource.gif.GifDrawable;
 import com.bumptech.glide.request.RequestListener;
 import com.bumptech.glide.request.target.Target;
-import com.library.imageloader.BaseImageLoaderStrategy;
-import com.library.imageloader.listener.ImageSaveListener;
-import com.library.imageloader.listener.ProgressLoadListener;
-import com.library.imageloader.listener.SourceReadyListener;
-import com.library.imageloader.transformation.GlideCircleTransform;
-import com.library.imageloader.utils.FileUtils;
-import com.library.imageloader.utils.ImageUtils;
+import com.uas.imageloader.BaseImageLoaderStrategy;
+import com.uas.imageloader.listener.ImageSaveListener;
+import com.uas.imageloader.listener.ProgressLoadListener;
+import com.uas.imageloader.listener.SourceReadyListener;
+import com.uas.imageloader.transformation.GlideCircleTransform;
+import com.uas.imageloader.utils.FileUtils;
+import com.uas.imageloader.utils.ImageUtils;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -28,6 +28,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.concurrent.ExecutionException;
+
 /**
  * Created by Arison on 2017/5/22.
  * 用GlideImageLoader加载图片

+ 1 - 1
app_core/imageload/src/main/java/com/library/imageloader/listener/ImageSaveListener.java → app_core/imageload/src/main/java/com/uas/imageloader/listener/ImageSaveListener.java

@@ -1,4 +1,4 @@
-package com.library.imageloader.listener;
+package com.uas.imageloader.listener;
 
 /**
  * Created by Arison on 2017/5/22.

+ 1 - 1
app_core/imageload/src/main/java/com/library/imageloader/listener/ProgressLoadListener.java → app_core/imageload/src/main/java/com/uas/imageloader/listener/ProgressLoadListener.java

@@ -1,4 +1,4 @@
-package com.library.imageloader.listener;
+package com.uas.imageloader.listener;
 
 /**
  * Created by Arison on 2017/5/22.

+ 1 - 1
app_core/imageload/src/main/java/com/library/imageloader/listener/SourceReadyListener.java → app_core/imageload/src/main/java/com/uas/imageloader/listener/SourceReadyListener.java

@@ -1,4 +1,4 @@
-package com.library.imageloader.listener;
+package com.uas.imageloader.listener;
 
 /**
  * 图片加载前

+ 2 - 2
app_core/imageload/src/main/java/com/library/imageloader/transformation/GlideCircleTransform.java → app_core/imageload/src/main/java/com/uas/imageloader/transformation/GlideCircleTransform.java

@@ -1,4 +1,4 @@
-package com.library.imageloader.transformation;
+package com.uas.imageloader.transformation;
 
 import android.content.Context;
 import android.content.res.Resources;
@@ -13,7 +13,7 @@ import android.graphics.RectF;
 
 import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
 import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
-import com.library.imageloader.utils.ScreenUtils;
+import com.uas.imageloader.utils.ScreenUtils;
 
 /**
  * @desc:自定义BitmapTransformation来实现圆形图片加载

+ 1 - 1
app_core/imageload/src/main/java/com/library/imageloader/utils/FileUtils.java → app_core/imageload/src/main/java/com/uas/imageloader/utils/FileUtils.java

@@ -1,4 +1,4 @@
-package com.library.imageloader.utils;
+package com.uas.imageloader.utils;
 
 import android.os.Environment;
 

+ 1 - 1
app_core/imageload/src/main/java/com/library/imageloader/utils/ImageUtils.java → app_core/imageload/src/main/java/com/uas/imageloader/utils/ImageUtils.java

@@ -1,4 +1,4 @@
-package com.library.imageloader.utils;
+package com.uas.imageloader.utils;
 
 import android.graphics.BitmapFactory;
 import android.text.TextUtils;

+ 2 - 2
app_core/imageload/src/main/java/com/library/imageloader/utils/ScreenUtils.java → app_core/imageload/src/main/java/com/uas/imageloader/utils/ScreenUtils.java

@@ -1,4 +1,4 @@
-package com.library.imageloader.utils;
+package com.uas.imageloader.utils;
 
 import android.app.Activity;
 import android.content.Context;
@@ -31,7 +31,7 @@ public class ScreenUtils {
     }
 
     public static int sp2px(float spValue) {
-        final float scale =Utils.getContext().getResources().getDisplayMetrics().density;
+        final float scale = Utils.getContext().getResources().getDisplayMetrics().density;
         return (int) (spValue * scale + 0.5f);
     }
 

+ 1 - 1
app_core/imageload/src/main/java/com/library/imageloader/utils/Utils.java → app_core/imageload/src/main/java/com/uas/imageloader/utils/Utils.java

@@ -1,4 +1,4 @@
-package com.library.imageloader.utils;
+package com.uas.imageloader.utils;
 
 import android.annotation.SuppressLint;
 import android.content.Context;

+ 3 - 3
app_core/message/src/main/java/com/uas/message/supertoasts/imp/BaseToastImpl.java → app_core/message/src/main/java/com/uas/message/imp/BaseToastImpl.java

@@ -1,4 +1,4 @@
-package com.uas.message.supertoasts.imp;
+package com.uas.message.imp;
 
 import android.app.Activity;
 import android.app.Notification;
@@ -13,8 +13,8 @@ import android.view.Gravity;
 import com.github.johnpersano.supertoasts.library.Style;
 import com.github.johnpersano.supertoasts.library.SuperToast;
 import com.github.johnpersano.supertoasts.library.utils.PaletteUtils;
-import com.uas.message.supertoasts.interfacepack.BaseToast;
-import com.uas.message.supertoasts.utils.Utils;
+import com.uas.message.interfacepack.BaseToast;
+import com.uas.message.utils.Utils;
 import com.umano.message.supertoasts.R;
 
 /**

+ 3 - 3
app_core/message/src/main/java/com/uas/message/supertoasts/imp/ToastCustomizedImpl.java → app_core/message/src/main/java/com/uas/message/imp/ToastCustomizedImpl.java

@@ -1,4 +1,4 @@
-package com.uas.message.supertoasts.imp;
+package com.uas.message.imp;
 
 import android.app.Activity;
 import android.app.Notification;
@@ -19,8 +19,8 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import com.uas.message.supertoasts.interfacepack.CustomizedToast;
-import com.uas.message.supertoasts.utils.Utils;
+import com.uas.message.interfacepack.CustomizedToast;
+import com.uas.message.utils.Utils;
 import com.umano.message.supertoasts.R;
 
 import java.util.Timer;

+ 1 - 1
app_core/message/src/main/java/com/uas/message/supertoasts/interfacepack/BaseToast.java → app_core/message/src/main/java/com/uas/message/interfacepack/BaseToast.java

@@ -1,4 +1,4 @@
-package com.uas.message.supertoasts.interfacepack;
+package com.uas.message.interfacepack;
 
 import android.app.Activity;
 import android.content.Context;

+ 8 - 8
app_core/message/src/main/java/com/uas/message/supertoasts/interfacepack/CustomizedToast.java → app_core/message/src/main/java/com/uas/message/interfacepack/CustomizedToast.java

@@ -1,4 +1,4 @@
-package com.uas.message.supertoasts.interfacepack;
+package com.uas.message.interfacepack;
 
 import android.app.Activity;
 import android.content.Context;
@@ -30,10 +30,10 @@ public interface CustomizedToast {
      * backgroundcolor:字体背景的颜色 不设置传-1
      * duration:toast的时间长短 1:LONG,else:SHORT
      */
-    void show(Context ct, String text,int messageColor, int backgroundcolor,int duration);
-    void showAtTop(Context ct, String text,int messageColor, int backgroundcolor,int duration);
-    void showAtCenter(Context ct, String text,int messageColor, int backgroundcolor,int duration);
-    void showAtBottom(Context ct, String text,int messageColor, int backgroundcolor,int duration);
+    void show(Context ct, String text, int messageColor, int backgroundcolor, int duration);
+    void showAtTop(Context ct, String text, int messageColor, int backgroundcolor, int duration);
+    void showAtCenter(Context ct, String text, int messageColor, int backgroundcolor, int duration);
+    void showAtBottom(Context ct, String text, int messageColor, int backgroundcolor, int duration);
 
 
     /**
@@ -54,7 +54,7 @@ public interface CustomizedToast {
      * @param resource   自定义的布局 :R.layout.xxx
      * @param location  Toast弹出的位置:Gravity.BOTTOM
      */
-    void showCuslayoutToast(Context ct,String text,@LayoutRes int resource,int location);
+    void showCuslayoutToast(Context ct, String text, @LayoutRes int resource, int location);
 
     /**
      * 简单的图片+text Toast 方式
@@ -65,7 +65,7 @@ public interface CustomizedToast {
      * @param messageColor
      * @param location
      */
-    void showWithPicuure(Context ct,String text,int pictureid,int duration,int messageColor,int location);
+    void showWithPicuure(Context ct, String text, int pictureid, int duration, int messageColor, int location);
 
     /**
      * 自定义动画 支持底部弹出,自下而上。
@@ -74,5 +74,5 @@ public interface CustomizedToast {
      * @param duration
      * @param location
      */
-    void showMiuiText(Context ct, String text,  int duration,int location);
+    void showMiuiText(Context ct, String text, int duration, int location);
 }

+ 3 - 3
app_core/message/src/main/java/com/uas/message/supertoasts/utils/ToastUtils.java → app_core/message/src/main/java/com/uas/message/utils/ToastUtils.java

@@ -1,4 +1,4 @@
-package com.uas.message.supertoasts.utils;
+package com.uas.message.utils;
 
 import android.content.Context;
 import android.view.View;
@@ -39,7 +39,7 @@ public class ToastUtils  {
      * @param postion
      * @return
      */
-    public  ToastUtils addView(View view,int postion) {
+    public ToastUtils addView(View view, int postion) {
         toastView = (LinearLayout) toast.getView();
         toastView.addView(view, postion);
 
@@ -81,7 +81,7 @@ public class ToastUtils  {
     /**
      * 短时间显示Toast
      */
-    public  ToastUtils Short(Context context, CharSequence message){
+    public ToastUtils Short(Context context, CharSequence message){
         if(toast==null||(toastView!=null&&toastView.getChildCount()>1)){
             toast= Toast.makeText(context, message, Toast.LENGTH_SHORT);
             toastView=null;

+ 1 - 1
app_core/message/src/main/java/com/uas/message/supertoasts/utils/Utils.java → app_core/message/src/main/java/com/uas/message/utils/Utils.java

@@ -1,4 +1,4 @@
-package com.uas.message.supertoasts.utils;
+package com.uas.message.utils;
 
 import android.annotation.SuppressLint;
 import android.content.Context;

+ 1 - 1
app_core/message/src/main/java/com/uas/message/supertoasts/utils/ViewUtils.java → app_core/message/src/main/java/com/uas/message/utils/ViewUtils.java

@@ -1,4 +1,4 @@
-package com.uas.message.supertoasts.utils;
+package com.uas.message.utils;
 
 /**
  * Created by FANGlh on 2017/8/10.

+ 1 - 1
app_core/network/src/main/java/network/app/base/BaseActivity.java → app_core/network/src/main/java/com/uas/network/app/base/BaseActivity.java

@@ -1,4 +1,4 @@
-package network.app.base;
+package com.uas.network.app.base;
 
 import android.os.Build;
 import android.os.Bundle;

+ 1 - 1
app_core/network/src/main/java/network/app/base/BaseApplication.java → app_core/network/src/main/java/com/uas/network/app/base/BaseApplication.java

@@ -1,4 +1,4 @@
-package network.app.base;
+package com.uas.network.app.base;
 
 import android.app.Application;
 

+ 6 - 6
app_core/network/src/main/java/network/app/http/HttpBase.java → app_core/network/src/main/java/com/uas/network/app/http/HttpBase.java

@@ -1,4 +1,4 @@
-package network.app.http;
+package com.uas.network.app.http;
 
 
 import rx.Subscriber;
@@ -28,10 +28,10 @@ public abstract class HttpBase {
 	 * @param s rxjava
 	 */
 	public  void send(HttpClient builder, Subscriber<Object> s){
-		if (builder.getMethod()==Method.GET) {
+		if (builder.getMethod()== Method.GET) {
 			get(builder, s);
 		}
-		if (builder.getMethod()==Method.POST) {
+		if (builder.getMethod()== Method.POST) {
 			post(builder, s);
 		}
 	}
@@ -40,10 +40,10 @@ public abstract class HttpBase {
 	 *         支持多文件上传
 	  * @author:Arison on 2017/5/17
 	  */
-	public void uploads(HttpClient builder,Subscriber<Object> s){}
+	public void uploads(HttpClient builder, Subscriber<Object> s){}
 	
-	public abstract void get(HttpClient builder,Subscriber<Object> s);
+	public abstract void get(HttpClient builder, Subscriber<Object> s);
 	
-	public abstract void post(HttpClient builder,Subscriber<Object> s);
+	public abstract void post(HttpClient builder, Subscriber<Object> s);
 	
 }

+ 6 - 6
app_core/network/src/main/java/network/app/http/HttpClient.java → app_core/network/src/main/java/com/uas/network/app/http/HttpClient.java

@@ -1,12 +1,12 @@
-package network.app.http;
+package com.uas.network.app.http;
 
 
+import com.uas.network.app.http.impl.RetrofitImpl;
+
 import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
-import network.app.http.impl.RetrofitImpl;
-
 
 /**
  * @author Arison
@@ -34,7 +34,7 @@ public class HttpClient {
     private Builder mBuilder;
 
     private HttpBase httpBase;
-    
+
 
     public HttpClient(Builder builder) {
         super();
@@ -62,7 +62,7 @@ public class HttpClient {
 
 
     private static HttpClient instance;
-    
+
     public static HttpClient getInstance(){
         if (instance == null) {
             synchronized (HttpClient.class) {
@@ -117,7 +117,7 @@ public class HttpClient {
         private HttpBase httpBase;//具体的网络请求类
 
         //默认的参数
-        public Builder() {   
+        public Builder() {
             this.method = Method.GET;
         }
 

+ 1 - 1
app_core/network/src/main/java/network/app/http/Method.java → app_core/network/src/main/java/com/uas/network/app/http/Method.java

@@ -1,4 +1,4 @@
-package network.app.http;
+package com.uas.network.app.http;
 
 /**
  * Created by Arison on 2017/5/12.

+ 1 - 1
app_core/network/src/main/java/network/app/http/cache/CacheType.java → app_core/network/src/main/java/com/uas/network/app/http/cache/CacheType.java

@@ -1,4 +1,4 @@
-package network.app.http.cache;
+package com.uas.network.app.http.cache;
 
 /**
  * Created by Arison on 2017/5/12.

+ 11 - 11
app_core/network/src/main/java/network/app/http/impl/RetrofitImpl.java → app_core/network/src/main/java/com/uas/network/app/http/impl/RetrofitImpl.java

@@ -1,7 +1,16 @@
-package network.app.http.impl;
+package com.uas.network.app.http.impl;
 
 
 import com.google.gson.Gson;
+import com.uas.network.app.http.HttpBase;
+import com.uas.network.app.http.HttpClient;
+import com.uas.network.app.http.interceptor.CacheInterceptor;
+import com.uas.network.app.http.interceptor.LogInterceptor;
+import com.uas.network.app.http.retrofit.StringConverterFactory;
+import com.uas.network.app.http.rx.RxJavaUtils;
+import com.uas.network.app.http.service.ParamService;
+import com.uas.network.app.http.ssl.TrustAllCerts;
+import com.uas.network.app.http.ssl.TrustAllHostnameVerifier;
 
 import java.io.File;
 import java.security.SecureRandom;
@@ -11,15 +20,6 @@ import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLSocketFactory;
 import javax.net.ssl.TrustManager;
 
-import network.app.http.HttpBase;
-import network.app.http.HttpClient;
-import network.app.http.interceptor.CacheInterceptor;
-import network.app.http.interceptor.LogInterceptor;
-import network.app.http.retrofit.StringConverterFactory;
-import network.app.http.rx.RxJavaUtils;
-import network.app.http.service.ParamService;
-import network.app.http.ssl.TrustAllCerts;
-import network.app.http.ssl.TrustAllHostnameVerifier;
 import okhttp3.Cache;
 import okhttp3.MultipartBody;
 import okhttp3.OkHttpClient;
@@ -104,7 +104,7 @@ public class RetrofitImpl extends HttpBase {
 	}
 	
 	@Override
-	public void uploads(HttpClient mBuilder,Subscriber<Object> s){
+	public void uploads(HttpClient mBuilder, Subscriber<Object> s){
 		MultipartBody.Builder builder = new MultipartBody.Builder();
 		builder.setType(MultipartBody.FORM);
 		//追加参数

+ 3 - 2
app_core/network/src/main/java/network/app/http/interceptor/CacheInterceptor.java → app_core/network/src/main/java/com/uas/network/app/http/interceptor/CacheInterceptor.java

@@ -1,9 +1,10 @@
-package network.app.http.interceptor;
+package com.uas.network.app.http.interceptor;
 
 
+import com.uas.network.app.http.cache.CacheType;
+
 import java.io.IOException;
 
-import network.app.http.cache.CacheType;
 import okhttp3.CacheControl;
 import okhttp3.Interceptor;
 import okhttp3.Request;

+ 3 - 2
app_core/network/src/main/java/network/app/http/interceptor/LogInterceptor.java → app_core/network/src/main/java/com/uas/network/app/http/interceptor/LogInterceptor.java

@@ -1,10 +1,11 @@
-package network.app.http.interceptor;
+package com.uas.network.app.http.interceptor;
+
+import com.uas.network.app.http.HttpClient;
 
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
-import network.app.http.HttpClient;
 import okhttp3.FormBody;
 import okhttp3.HttpUrl;
 import okhttp3.Interceptor;

+ 1 - 1
app_core/network/src/main/java/network/app/http/retrofit/StringConverterFactory.java → app_core/network/src/main/java/com/uas/network/app/http/retrofit/StringConverterFactory.java

@@ -1,4 +1,4 @@
-package network.app.http.retrofit;
+package com.uas.network.app.http.retrofit;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;

+ 1 - 1
app_core/network/src/main/java/network/app/http/retrofit/StringRequestBodyConverter.java → app_core/network/src/main/java/com/uas/network/app/http/retrofit/StringRequestBodyConverter.java

@@ -1,4 +1,4 @@
-package network.app.http.retrofit;
+package com.uas.network.app.http.retrofit;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.io.Writer;

+ 1 - 1
app_core/network/src/main/java/network/app/http/retrofit/StringResponseBodyConverter.java → app_core/network/src/main/java/com/uas/network/app/http/retrofit/StringResponseBodyConverter.java

@@ -1,4 +1,4 @@
-package network.app.http.retrofit;
+package com.uas.network.app.http.retrofit;
 
 import java.io.IOException;
 

+ 10 - 0
app_core/network/src/main/java/com/uas/network/app/http/rx/Result1Listener.java

@@ -0,0 +1,10 @@
+package com.uas.network.app.http.rx;
+
+/**
+ * @author Arison
+ * 回调接口
+ * @param <T>
+ */
+public interface Result1Listener<T> extends ResultListener<T> {
+	void onResponse(T t);
+}

+ 2 - 2
app_core/network/src/main/java/network/app/http/rx/Result2Listener.java → app_core/network/src/main/java/com/uas/network/app/http/rx/Result2Listener.java

@@ -1,11 +1,11 @@
-package network.app.http.rx;
+package com.uas.network.app.http.rx;
 
 /**
  * @author Arison
  * 回调接口
  * @param <T>
  */
-public interface Result2Listener<T> extends ResultListener<T>{
+public interface Result2Listener<T> extends ResultListener<T> {
 	 void onResponse(T t);
 	 void onFailure(Object t);
 }

+ 1 - 1
app_core/network/src/main/java/network/app/http/rx/ResultListener.java → app_core/network/src/main/java/com/uas/network/app/http/rx/ResultListener.java

@@ -1,4 +1,4 @@
-package network.app.http.rx;
+package com.uas.network.app.http.rx;
 
 /**
  * Created by Arison on 2017/5/16.

+ 2 - 2
app_core/network/src/main/java/network/app/http/rx/ResultSubscriber.java → app_core/network/src/main/java/com/uas/network/app/http/rx/ResultSubscriber.java

@@ -1,4 +1,4 @@
-package network.app.http.rx;
+package com.uas.network.app.http.rx;
 
 
 import java.io.IOException;
@@ -17,7 +17,7 @@ public class ResultSubscriber<T> extends Subscriber<T> {
 
 	private ResultListener<T> resultListener;
 	private Result2Listener<T> result2Listener;
-	
+
 	public ResultSubscriber(ResultListener<T> listener) {
 		if (listener!=null){
 			if (listener instanceof  Result2Listener){

+ 1 - 1
app_core/network/src/main/java/network/app/http/rx/RxJavaUtils.java → app_core/network/src/main/java/com/uas/network/app/http/rx/RxJavaUtils.java

@@ -1,4 +1,4 @@
-package network.app.http.rx;
+package com.uas.network.app.http.rx;
 
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;

+ 1 - 1
app_core/network/src/main/java/network/app/http/service/ParamService.java → app_core/network/src/main/java/com/uas/network/app/http/service/ParamService.java

@@ -1,4 +1,4 @@
-package network.app.http.service;
+package com.uas.network.app.http.service;
 
 import java.util.Map;
 

+ 1 - 1
app_core/network/src/main/java/network/app/http/ssl/TrustAllCerts.java → app_core/network/src/main/java/com/uas/network/app/http/ssl/TrustAllCerts.java

@@ -1,4 +1,4 @@
-package network.app.http.ssl;
+package com.uas.network.app.http.ssl;
 
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;

+ 1 - 1
app_core/network/src/main/java/network/app/http/ssl/TrustAllHostnameVerifier.java → app_core/network/src/main/java/com/uas/network/app/http/ssl/TrustAllHostnameVerifier.java

@@ -1,4 +1,4 @@
-package network.app.http.ssl;
+package com.uas.network.app.http.ssl;
 
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLSession;

+ 0 - 10
app_core/network/src/main/java/network/app/http/rx/Result1Listener.java

@@ -1,10 +0,0 @@
-package network.app.http.rx;
-
-/**
- * @author Arison
- * 回调接口
- * @param <T>
- */
-public interface Result1Listener<T> extends ResultListener<T>{
-	void onResponse(T t);
-}

+ 5 - 1
app_modular/appme/build.gradle

@@ -18,8 +18,12 @@ android {
     }
 }
 dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
+    compile fileTree(include: ['*.jar'], dir: 'libs')
     testCompile deps.junit
     compile deps.appcompatV7
     compile deps.fastjson
+    //project
+    compile project(':common')
+    compile project(':pullToRefershLibraryMy')
+    compile files('libs/ormlite-core-4.48.jar')
 }

BIN
app_modular/appme/libs/ormlite-core-4.48.jar


+ 12 - 1
app_modular/appme/src/main/AndroidManifest.xml

@@ -1 +1,12 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.uas.appme" />
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.uas.appme" >
+
+<application
+    android:allowBackup="true"
+    android:label="@string/app_name"
+    android:supportsRtl="true">
+    
+    <activity android:name=".pedometer.view.StepSplashActivity"/>
+    <activity android:name=".pedometer.view.NewStepActivity"/>
+</application>
+</manifest>

+ 46 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/bean/StepEntity.java

@@ -0,0 +1,46 @@
+package com.uas.appme.pedometer.bean;
+
+/**
+ * Created by FANGLH
+ * Date : 2017/4/13
+ * To do :
+ */
+
+public class StepEntity {
+
+    private String curDate; //当天的日期
+    private String steps;   //当天的步数
+
+    public StepEntity() {
+    }
+
+    public StepEntity(String curDate, String steps) {
+        this.curDate = curDate;
+        this.steps = steps;
+    }
+
+    public String getCurDate() {
+        return curDate;
+    }
+
+    public void setCurDate(String curDate) {
+        this.curDate = curDate;
+    }
+
+    public String getSteps() {
+        return steps;
+    }
+
+    public void setSteps(String steps) {
+        this.steps = steps;
+    }
+
+
+    @Override
+    public String toString() {
+        return "StepEntity{" +
+                "curDate='" + curDate + '\'' +
+                ", steps=" + steps +
+                '}';
+    }
+}

+ 107 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/calendar/BeforeOrAfterCalendarView.java

@@ -0,0 +1,107 @@
+package com.uas.appme.pedometer.calendar;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import com.uas.appme.R;
+import com.uas.appme.pedometer.utils.TimeUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by FANGLH
+ * Date : 2017/4/13
+ * To do :查看当前日期前七天或后七天日历
+ */
+
+public class BeforeOrAfterCalendarView extends RelativeLayout {
+
+    private List<Integer> dayList = new ArrayList<>();
+    private List<String> dateList = new ArrayList<>();
+
+    protected List<RecordsCalenderItemView> itemViewList = new ArrayList<>();
+    protected Context mContext;
+    protected LinearLayout calenderViewLl;
+    protected int curPosition;
+
+    public BeforeOrAfterCalendarView(Context context) {
+        super(context);
+        this.mContext = context;
+        init();
+    }
+
+    private void init() {
+        View view = LayoutInflater.from(mContext).inflate(R.layout.before_or_after_calendar_layout, this);
+
+        calenderViewLl = (LinearLayout) view.findViewById(R.id.boa_calender_view_ll);
+
+        setBeforeDateViews();
+
+        initItemViews();
+    }
+
+    /**
+     * 设置之前的日期显示
+     */
+    private void setBeforeDateViews() {
+        //获取日期列表
+        dateList.addAll(TimeUtil.getBeforeDateListByNow());
+        dayList.addAll(TimeUtil.dateListToDayList(dateList));
+    }
+
+    private void initItemViews() {
+        for (int i = 0; i < dateList.size(); i++) {
+            int day = dayList.get(i);
+            String curItemDate = dateList.get(i);
+            final RecordsCalenderItemView itemView;
+            if(day == TimeUtil.getCurrentDay()){
+                itemView = new RecordsCalenderItemView(mContext, "今天", String.valueOf(day), i, curItemDate);
+            }else{
+                itemView = new RecordsCalenderItemView(mContext, TimeUtil.getCurWeekDay(curItemDate), String.valueOf(day), i, curItemDate);
+            }
+
+            itemViewList.add(itemView);
+            calenderViewLl.addView(itemView);
+
+            itemView.setOnCalenderItemClick(new RecordsCalenderItemView.OnCalenderItemClick() {
+                @Override
+                public void onCalenderItemClick() {
+                    curPosition = itemView.getPosition();
+                    switchPositionView(curPosition);
+
+                    //点击事件
+                    if (calenderClickListener != null) {
+                        calenderClickListener.onClickToRefresh(curPosition,dateList.get(curPosition));
+                    }
+                }
+            });
+        }
+
+        switchPositionView(6);
+
+    }
+
+    private void switchPositionView(int position) {
+        for (int i = 0; i < itemViewList.size(); i++) {
+            if (position == i) {
+                itemViewList.get(i).setChecked(true);
+            } else {
+                itemViewList.get(i).setChecked(false);
+            }
+        }
+    }
+
+    private BoaCalenderClickListener calenderClickListener;
+
+    public interface BoaCalenderClickListener {
+        void onClickToRefresh(int position, String curDate);
+    }
+
+    public void setOnBoaCalenderClickListener(BoaCalenderClickListener calenderClickListener) {
+        this.calenderClickListener = calenderClickListener;
+    }
+}

+ 119 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/calendar/RecordsCalenderItemView.java

@@ -0,0 +1,119 @@
+package com.uas.appme.pedometer.calendar;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.uas.appme.R;
+import com.uas.appme.pedometer.view.NewStepActivity;
+
+
+/**
+ * 查看一周内每天的历史纪录日历Item布局
+ */
+
+public class RecordsCalenderItemView extends RelativeLayout {
+    private static final String TAG = "RecordsCalenderItemView";
+
+    private Context mContext;
+
+    private LinearLayout itemLl;
+    private View lineView;
+    private TextView weekTv;
+    private RelativeLayout dateRl;
+    private TextView dateTv;
+    //日期时间
+    private String weekStr, dateStr;
+    private int position;
+
+    //当前item 的时间  ,如   2017年02月07日 ,  用以判断当前item是否可以被点击
+    protected String curItemDate;
+
+
+    OnCalenderItemClick itemClick = null;
+
+    public interface OnCalenderItemClick {
+        public void onCalenderItemClick();
+    }
+
+    public void setOnCalenderItemClick(OnCalenderItemClick itemClick) {
+        this.itemClick = itemClick;
+    }
+
+
+    public RecordsCalenderItemView(Context context, String week, String date, int position, String curItemDate) {
+        super(context);
+        this.mContext = context;
+        this.weekStr = week;
+        this.dateStr = date;
+        this.position = position;
+        this.curItemDate = curItemDate;
+        init();
+    }
+
+    private void init() {
+        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        final View itemView = inflater.inflate(R.layout.records_calender_item_view, this);
+        itemLl = (LinearLayout) itemView.findViewById(R.id.records_calender_item_ll);
+        weekTv = (TextView) itemView.findViewById(R.id.records_calender_item_week_tv);
+        lineView = itemView.findViewById(R.id.calendar_item_line_view);
+        dateRl = (RelativeLayout) itemView.findViewById(R.id.records_calender_item_date_rl);
+        dateTv = (TextView) itemView.findViewById(R.id.records_calender_item_date_tv);
+
+        //如果日期是今天的话设为选中  目前有BUG
+
+//        if(curItemDate.equals(TimeUtil.getCurrentDate())){
+//            dateTv.setBackgroundResource(R.drawable.ic_blue_round_border_bg);
+//            dateTv.getBackground().setAlpha(255);
+//        }else{
+//            if(dateTv.getBackground() != null){
+//                dateTv.getBackground().setAlpha(0);
+//            }
+//        }
+
+
+        weekTv.setTextSize(15);
+        lineView.setVisibility(GONE);
+
+        weekTv.setText(weekStr);
+        dateTv.setText(dateStr);
+
+        itemView.setLayoutParams(new LayoutParams((NewStepActivity.screenWidth) / 7,
+                ViewGroup.LayoutParams.MATCH_PARENT));
+
+        itemView.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                itemClick.onCalenderItemClick();
+            }
+        });
+
+    }
+
+    //返回当前项的id
+    public int getPosition() {
+        return position;
+    }
+
+    public void setChecked(boolean checkedFlag) {
+
+        if (checkedFlag) {
+            //当前item被选中后样式
+            weekTv.setTextColor(getResources().getColor(R.color.main_text_color));
+            dateTv.setTextColor(getResources().getColor(R.color.white));
+            dateRl.setBackgroundResource(R.drawable.ic_blue_round_bg);
+        } else {
+            //当前item未被选中样式
+            weekTv.setTextColor(getResources().getColor(R.color.gray_default_dark));
+            dateTv.setTextColor(getResources().getColor(R.color.gray_default_dark));
+            //设置背景透明
+            dateRl.setBackgroundColor(Color.TRANSPARENT);
+        }
+
+    }
+}

+ 24 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/constant/Constant.java

@@ -0,0 +1,24 @@
+package com.uas.appme.pedometer.constant;
+
+/**
+ * Created by FANGLH
+ * Date : 2017/3/24
+ * To do :
+ */
+
+public class Constant {
+    public static final int MSG_FROM_CLIENT = 0;
+    public static final int MSG_FROM_SERVER = 1;
+    public static final String BASEURL = "http://news-at.zhihu.com/api/4/";
+    public static final String START = "start-image/1080*1776";
+    public static final String THEMES = "themes";
+    public static final String LATESTNEWS = "news/latest";
+    public static final String BEFORE = "news/before/";
+    public static final String THEMENEWS = "theme/";
+    public static final String CONTENT = "news/";
+    public static final int TOPIC = 131;
+    public static final String START_LOCATION = "start_location";
+    public static final String CACHE = "cache";
+    public static final int LATEST_COLUMN = Integer.MAX_VALUE;
+    public static final int BASE_COLUMN = 100000000;
+}

+ 36 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/db/StepDBOpenHelper.java

@@ -0,0 +1,36 @@
+package com.uas.appme.pedometer.db;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+/**
+ * Created by FANGlh on 2017/4/13.
+ * function:
+ */
+
+public class StepDBOpenHelper extends SQLiteOpenHelper {
+    private static final String DB_NAME = "StepCounter.db"; //数据库名称
+    private static final int DB_VERSION = 1;//数据库版本,大于0
+
+    //用于创建Banner表
+    private static final String CREATE_BANNER = "create table step ("
+            + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+            + "curDate TEXT, "
+            + "totalSteps TEXT)";
+
+
+    public StepDBOpenHelper(Context context) {
+        super(context, DB_NAME, null,DB_VERSION);
+    }
+
+    @Override
+    public void onCreate(SQLiteDatabase db) {
+        db.execSQL(CREATE_BANNER);//执行有更改的sql语句
+    }
+
+    @Override
+    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+
+    }
+}

+ 117 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/db/StepDataDao.java

@@ -0,0 +1,117 @@
+package com.uas.appme.pedometer.db;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+
+import com.uas.appme.pedometer.bean.StepEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by FANGLH  on 2017/4/13.
+ */
+
+public class StepDataDao {
+    private StepDBOpenHelper stepHelper;
+    private SQLiteDatabase stepDb;
+
+    public StepDataDao(Context context) {
+        stepHelper = new StepDBOpenHelper(context);
+    }
+
+    /**
+     * 添加一条新记录
+     *
+     * @param stepEntity
+     */
+    public void addNewData(StepEntity stepEntity) {
+        stepDb = stepHelper.getReadableDatabase();
+
+        ContentValues values = new ContentValues();
+        values.put("curDate", stepEntity.getCurDate());
+        values.put("totalSteps", stepEntity.getSteps());
+        stepDb.insert("step", null, values);
+
+        stepDb.close();
+    }
+
+    /**
+     * 根据日期查询记录
+     *
+     * @param curDate
+     * @return
+     */
+    public StepEntity getCurDataByDate(String curDate) {
+        stepDb = stepHelper.getReadableDatabase();
+        StepEntity stepEntity = null;
+        Cursor cursor = stepDb.query("step", null, null, null, null, null, null);
+        while (cursor.moveToNext()) {
+            String date = cursor.getString(cursor.getColumnIndexOrThrow("curDate"));
+            if (curDate.equals(date)) {
+                String steps = cursor.getString(cursor.getColumnIndexOrThrow("totalSteps"));
+                stepEntity = new StepEntity(date, steps);
+                //跳出循环
+                break;
+            }
+        }
+        //关闭
+        stepDb.close();
+        cursor.close();
+        return stepEntity;
+    }
+
+    /**
+     * 查询所有的记录
+     *
+     * @return
+     */
+    public List<StepEntity> getAllDatas() {
+        List<StepEntity> dataList = new ArrayList<>();
+        stepDb = stepHelper.getReadableDatabase();
+        Cursor cursor = stepDb.rawQuery("select * from step", null);
+
+        while (cursor.moveToNext()) {
+            String curDate = cursor.getString(cursor.getColumnIndex("curDate"));
+            String totalSteps = cursor.getString(cursor.getColumnIndex("totalSteps"));
+            StepEntity entity = new StepEntity(curDate, totalSteps);
+            dataList.add(entity);
+        }
+
+        //关闭数据库
+        stepDb.close();
+        cursor.close();
+        return dataList;
+    }
+
+    /**
+     * 更新数据
+     * @param stepEntity
+     */
+    public void updateCurData(StepEntity stepEntity) {
+        stepDb = stepHelper.getReadableDatabase();
+
+        ContentValues values = new ContentValues();
+        values.put("curDate",stepEntity.getCurDate());
+        values.put("totalSteps", stepEntity.getSteps());
+        stepDb.update("step", values, "curDate=?", new String[]{stepEntity.getCurDate()});
+
+        stepDb.close();
+    }
+
+
+    /**
+     * 删除指定日期的记录
+     *
+     * @param curDate
+     */
+    public void deleteCurData(String curDate) {
+        stepDb = stepHelper.getReadableDatabase();
+
+        if (stepDb.isOpen())
+            stepDb.delete("step", "curDate", new String[]{curDate});
+        stepDb.close();
+    }
+}

+ 392 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/service/StepService.java

@@ -0,0 +1,392 @@
+package com.uas.appme.pedometer.service;
+
+import android.annotation.TargetApi;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.app.Service;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.graphics.BitmapFactory;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
+
+import com.uas.appme.R;
+import com.uas.appme.pedometer.bean.StepEntity;
+import com.uas.appme.pedometer.constant.Constant;
+import com.uas.appme.pedometer.db.StepDataDao;
+import com.uas.appme.pedometer.utils.TimeUtil;
+import com.uas.appme.pedometer.view.StepSplashActivity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Created by FANGLH
+ * Date : 2017/4/13
+ * To do :
+ */
+@TargetApi(Build.VERSION_CODES.CUPCAKE)
+
+public class StepService extends Service implements SensorEventListener {
+    public static final String TAG = "StepService";
+
+    //当前日期
+    private static String CURRENT_DATE;
+    //当前步数
+    private int CURRENT_STEP;
+    //3秒进行一次存储
+    private static int saveDuration = 3000;
+    //传感器
+    private SensorManager sensorManager;
+    //数据库
+    private StepDataDao stepDataDao;
+    //计步传感器类型 0-counter 1-detector
+    private static int stepSensor = -1;
+    //广播接收
+    private BroadcastReceiver mInfoReceiver;
+    //自定义简易计时器
+    private TimeCount timeCount;
+    //发送消息,用来和Service之间传递步数
+    private Messenger messenger = new Messenger(new MessengerHandler());
+    //是否有当天的记录
+    private boolean hasRecord;
+    //未记录之前的步数
+    private int hasStepCount;
+    //下次记录之前的步数
+    private int previousStepCount;
+    private Notification.Builder builder;
+
+    private NotificationManager notificationManager;
+    private Intent nfIntent;
+    private int VERSION_CODES = Build.VERSION.SDK_INT;
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        initBroadcastReceiver();
+        new Thread(new Runnable() {
+            public void run() {
+                getStepDetector();
+            }
+        }).start();
+        startTimeCount();
+        initTodayData();
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return messenger.getBinder();
+    }
+
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        /**
+         * 此处设将Service为前台,不然当APP结束以后很容易被GC给干掉,这也就是大多数音乐播放器会在状态栏设置一个
+         * 原理大都是相通的
+         */
+        notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+        //获取一个Notification构造器
+        builder = new Notification.Builder(this.getApplicationContext());
+        /**
+         * 设置点击通知栏打开的界面,此处需要注意了,如果你的计步界面不在主界面,则需要判断app是否已经启动,
+         *
+         */
+        nfIntent = new Intent(this, StepSplashActivity.class);
+        builder.setContentIntent(PendingIntent.getActivity(this, 0, nfIntent, 0)) // 设置PendingIntent
+                .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.drawable.uuu)) // 设置下拉列表中的图标(大图标)
+                .setContentTitle(MyApplication.getInstance().getString(R.string.uu_step_Running_in_the_background)) // 设置下拉列表里的标题
+                .setSmallIcon(R.drawable.uuu) // 设置状态栏内的小图标
+                .setContentText(MyApplication.getInstance().getString(R.string.comeon_more_sport)); // 设置上下文内容
+        // 获取构建好的Notification
+        if (VERSION_CODES > 15) {
+            Notification stepNotification = builder.build();
+            notificationManager.notify(110,stepNotification);
+            // 参数一:唯一的通知标识;参数二:通知消息。
+            startForeground(110, stepNotification);// 开始前台服务
+        }
+        return START_STICKY;
+    }
+
+    /**
+     * 自定义handler
+     */
+    private class MessengerHandler extends Handler {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case Constant.MSG_FROM_CLIENT:
+                    try {
+                        //这里负责将当前的步数发送出去,可以在界面或者其他地方获取,我这里是在MainActivity中获取来更新界面
+                        Messenger messenger = msg.replyTo;
+                        Message replyMsg = Message.obtain(null, Constant.MSG_FROM_SERVER);
+                        Bundle bundle = new Bundle();
+                        bundle.putInt("steps", CURRENT_STEP);
+                        replyMsg.setData(bundle);
+                        messenger.send(replyMsg);
+                    } catch (RemoteException e) {
+                        e.printStackTrace();
+                    }
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
+
+
+    /**
+     * 初始化广播
+     */
+    private void initBroadcastReceiver() {
+        final IntentFilter filter = new IntentFilter();
+        // 屏幕灭屏广播
+        filter.addAction(Intent.ACTION_SCREEN_OFF);
+        //关机广播
+        filter.addAction(Intent.ACTION_SHUTDOWN);
+        // 屏幕解锁广播
+        filter.addAction(Intent.ACTION_USER_PRESENT);
+        // 当长按电源键弹出“关机”对话或者锁屏时系统会发出这个广播
+        // example:有时候会用到系统对话框,权限可能很高,会覆盖在锁屏界面或者“关机”对话框之上,
+        // 所以监听这个广播,当收到时就隐藏自己的对话,如点击pad右下角部分弹出的对话框
+        filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
+        //监听日期变化
+        filter.addAction(Intent.ACTION_DATE_CHANGED);
+        filter.addAction(Intent.ACTION_TIME_CHANGED);
+        filter.addAction(Intent.ACTION_TIME_TICK);
+
+        mInfoReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                String action = intent.getAction();
+                switch (action) {
+                    // 屏幕灭屏广播
+                    case Intent.ACTION_SCREEN_OFF:
+                        //屏幕熄灭改为10秒一存储
+                        saveDuration = 10000;
+                        break;
+                    //关机广播,保存好当前数据
+                    case Intent.ACTION_SHUTDOWN:
+                        saveStepData();
+                        break;
+                    // 屏幕解锁广播
+                    case Intent.ACTION_USER_PRESENT:
+                        saveDuration = 3000;
+                        break;
+                    // 当长按电源键弹出“关机”对话或者锁屏时系统会发出这个广播
+                    // example:有时候会用到系统对话框,权限可能很高,会覆盖在锁屏界面或者“关机”对话框之上,
+                    // 所以监听这个广播,当收到时就隐藏自己的对话,如点击pad右下角部分弹出的对话框
+                    case Intent.ACTION_CLOSE_SYSTEM_DIALOGS:
+                        saveStepData();
+                        break;
+                    //监听日期变化
+                    case Intent.ACTION_DATE_CHANGED:
+                    case Intent.ACTION_TIME_CHANGED:
+                    case Intent.ACTION_TIME_TICK:
+                        saveStepData();
+                        isNewDay();
+                        break;
+                    default:
+                        break;
+                }
+            }
+        };
+        //注册广播
+        registerReceiver(mInfoReceiver, filter);
+    }
+
+    /**
+     * 初始化当天数据
+     */
+    private void initTodayData() {
+        //获取当前时间
+        CURRENT_DATE = TimeUtil.getCurrentDate();
+//        CURRENT_DATE = TimeUtils.s_long_2_str(System.currentTimeMillis());
+        //获取数据库
+        stepDataDao = new StepDataDao(getApplicationContext());
+        //获取当天的数据,用于展示
+        StepEntity entity = stepDataDao.getCurDataByDate(CURRENT_DATE);
+        //为空则说明还没有该天的数据,有则说明已经开始当天的计步了
+        if (entity == null) {
+            CURRENT_STEP = 0;
+        } else {
+            CURRENT_STEP = Integer.parseInt(entity.getSteps());
+        }
+    }
+
+
+    /**
+     * 监听晚上0点变化初始化数据
+     */
+    private void isNewDay() {
+        String time = "00:00";
+        if (time.equals(new SimpleDateFormat("HH:mm").format(new Date())) ||
+                !CURRENT_DATE.equals(TimeUtil.getCurrentDate())) {
+            initTodayData();
+        }
+    }
+
+
+    /**
+     * 获取传感器实例
+     */
+    private void getStepDetector() {
+        if (sensorManager != null) {
+            sensorManager = null;
+        }
+        // 获取传感器管理器的实例
+        sensorManager = (SensorManager) this
+                .getSystemService(SENSOR_SERVICE);
+        //android4.4以后可以使用计步传感器
+        int VERSION_CODES = Build.VERSION.SDK_INT;
+        if (VERSION_CODES >= 19) {
+            addCountStepListener();
+        }
+    }
+
+
+    /**
+     * 添加传感器监听
+     */
+    private void addCountStepListener() {
+        Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
+        Sensor detectorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
+        if (countSensor != null) {
+            stepSensor = 0;
+            sensorManager.registerListener(StepService.this, countSensor, SensorManager.SENSOR_DELAY_NORMAL);
+        } else if (detectorSensor != null) {
+            stepSensor = 1;
+            sensorManager.registerListener(StepService.this, detectorSensor, SensorManager.SENSOR_DELAY_NORMAL);
+        }
+    }
+
+
+    /**
+     * 由传感器记录当前用户运动步数,注意:该传感器只在4.4及以后才有,并且该传感器记录的数据是从设备开机以后不断累加,
+     * 只有当用户关机以后,该数据才会清空,所以需要做数据保护
+     *
+     * @param event
+     */
+    @Override
+    public void onSensorChanged(SensorEvent event) {
+        if (stepSensor == 0) {
+            int tempStep = (int) event.values[0];
+            if (!hasRecord) {
+                hasRecord = true;
+                hasStepCount = tempStep;
+            } else {
+                int thisStepCount = tempStep - hasStepCount;
+                CURRENT_STEP += (thisStepCount - previousStepCount);
+                previousStepCount = thisStepCount;
+            }
+        } else if (stepSensor == 1) {
+            if (event.values[0] == 1.0) {
+                CURRENT_STEP++;
+            }
+        }
+    }
+
+    @Override
+    public void onAccuracyChanged(Sensor sensor, int accuracy) {
+
+    }
+
+
+    /**
+     * 开始倒计时,去存储步数到数据库中
+     */
+    private void startTimeCount() {
+        timeCount = new TimeCount(saveDuration, 10000);
+        timeCount.start();
+    }
+
+
+    private class TimeCount extends CountDownTimer {
+        /**
+         * @param millisInFuture    The number of millis in the future from the call
+         *                          to {@link #start()} until the countdown is done and {@link #onFinish()}
+         *                          is called.
+         * @param countDownInterval The interval along the way to receive
+         *                          {@link #onTick(long)} callbacks.
+         */
+        public TimeCount(long millisInFuture, long countDownInterval) {
+            super(millisInFuture, countDownInterval);
+        }
+
+        @Override
+        public void onTick(long millisUntilFinished) {
+
+        }
+
+        @Override
+        public void onFinish() {
+            // 如果计时器正常结束,则每隔三秒存储步数到数据库
+            timeCount.cancel();
+            saveStepData();
+            startTimeCount();
+        }
+    }
+
+
+    /**
+     * 保存当天的数据到数据库中,并去刷新通知栏
+     */
+    private void saveStepData() {
+        //查询数据库中的数据
+        StepEntity entity = stepDataDao.getCurDataByDate(CURRENT_DATE);
+        //为空则说明还没有该天的数据,有则说明已经开始当天的计步了
+        if (entity == null) {
+            //没有则新建一条数据
+            entity = new StepEntity();
+            entity.setCurDate(CURRENT_DATE);
+            entity.setSteps(String.valueOf(CURRENT_STEP));
+
+            stepDataDao.addNewData(entity);
+        } else {
+            //有则更新当前的数据
+            entity.setSteps(String.valueOf(CURRENT_STEP));
+
+            stepDataDao.updateCurData(entity);
+        }
+
+        builder.setContentIntent(PendingIntent.getActivity(this, 0, nfIntent, 0)) // 设置PendingIntent
+                .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.drawable.uuu)) // 设置下拉列表中的图标(大图标)
+                .setContentTitle(MyApplication.getInstance().getString(R.string.uu_step_Running_in_the_background)) // 设置下拉列表里的标题
+                .setSmallIcon(R.drawable.uuu) // 设置状态栏内的小图标
+                .setContentText(MyApplication.getInstance().getString(R.string.comeon_more_sport)); // 设置上下文内容 
+
+        if (VERSION_CODES > 15){
+            // 获取构建好的Notification
+            Notification stepNotification = builder.build();
+            //调用更新
+            notificationManager.notify(110,stepNotification);
+        }
+
+    }
+
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        //主界面中需要手动调用stop方法service才会结束
+        stopForeground(true);
+        unregisterReceiver(mInfoReceiver);
+    }
+
+    @Override
+    public boolean onUnbind(Intent intent) {
+        return super.onUnbind(intent);
+    }
+}

+ 42 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/CommonSensorUtils.java

@@ -0,0 +1,42 @@
+package com.uas.appme.pedometer.utils;
+
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.util.Log;
+
+import java.util.List;
+
+/**
+ * Created by FANGlh on 2017/8/9.
+ * function:
+ */
+
+public class CommonSensorUtils  {
+
+    private Context context;
+
+    public CommonSensorUtils() {
+
+    }
+
+
+    /**
+     * 获取查看手机上有哪些传感器:
+     * @param context
+     */
+    public static void checkSenior(Context context){
+        //获取传感器管理器
+        SensorManager mSensorManager = (SensorManager) context
+                .getSystemService(context.SENSOR_SERVICE);
+        List<Sensor> deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
+
+        for (Sensor sensor : deviceSensors) {
+            Log.i("sensor", "------------------");
+            Log.i("sensor", sensor.getName());
+            Log.i("sensor", sensor.getVendor());
+            Log.i("sensor", Integer.toString(sensor.getType()));
+            Log.i("sensor", "------------------");
+        }
+    }
+}

+ 50 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/StepCountCheckUtil.java

@@ -0,0 +1,50 @@
+package com.uas.appme.pedometer.utils;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.os.Build;
+
+import com.xzjmyk.pm.activity.MyApplication;
+
+/**
+ * Created by FANGLH
+ * Date : 2017/4/13
+ * To do :检测手机是否支持计步工具类
+ */
+
+public class StepCountCheckUtil {
+
+    private Context context;
+    //是否有传感器
+    private boolean hasSensor;
+
+    public StepCountCheckUtil(Context context) {
+        this.context = context;
+        hasSensor = isSupportStepCountSensor();
+    }
+
+    @TargetApi(Build.VERSION_CODES.KITKAT)
+    public static boolean isSupportStepCountSensor() {
+        return MyApplication.getInstance().getPackageManager()
+                .hasSystemFeature(PackageManager.FEATURE_SENSOR_STEP_COUNTER);
+    }
+
+    /**
+     * 判断该设备是否支持计歩
+     *
+     * @param context
+     * @return
+     */
+    @TargetApi(Build.VERSION_CODES.KITKAT)
+    public static boolean isSupportStepCountSensor(Context context) {
+        // 获取传感器管理器的实例
+        SensorManager sensorManager = (SensorManager) context
+                .getSystemService(context.SENSOR_SERVICE);
+        Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
+        Sensor detectorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
+        return countSensor != null || detectorSensor != null;
+    }
+}

+ 37 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/StepHttpUtils.java

@@ -0,0 +1,37 @@
+package com.uas.appme.pedometer.utils;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+
+import com.loopj.android.http.AsyncHttpClient;
+import com.loopj.android.http.ResponseHandlerInterface;
+import com.xzjmyk.pm.newpedo.constant.Constant;
+
+/**
+ *Created by FANGlh on 2017/4/24.
+ * function:
+ */
+public class StepHttpUtils {
+    private static AsyncHttpClient client = new AsyncHttpClient();
+
+    public static void get(String url, ResponseHandlerInterface responseHandler) {
+        client.get(Constant.BASEURL + url, responseHandler);
+    }
+
+    public static void getImage(String url, ResponseHandlerInterface responseHandler) {
+        client.get(url, responseHandler);
+    }
+
+    public static boolean isNetworkConnected(Context context) {
+        if (context != null) {
+            ConnectivityManager mConnectivityManager = (ConnectivityManager) context
+                    .getSystemService(Context.CONNECTIVITY_SERVICE);
+            NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
+            if (mNetworkInfo != null) {
+                return mNetworkInfo.isAvailable();
+            }
+        }
+        return false;
+    }
+}

+ 166 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/TimeUtil.java

@@ -0,0 +1,166 @@
+package com.uas.appme.pedometer.utils;
+
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 时间工具类
+ */
+
+public class TimeUtil {
+    private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
+    private static Calendar mCalendar = Calendar.getInstance();
+    private static String[] weekStrings = new String[]{"日","一", "二", "三", "四", "五", "六"};
+    private static String[] rWeekStrings = new String[]{"周日","周一", "周二", "周三", "周四", "周五", "周六"};
+
+
+    /**
+     * 改变日期格式
+     * @param date  2017年02月09日
+     * @return 2017-02-09
+     */
+    public static String changeFormatDate(String date){
+        SimpleDateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String curDate = null;
+        try {
+            Date dt = dateFormat.parse(date);
+            curDate = dFormat.format(dt);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return curDate;
+    }
+
+    /**
+     * 返回当前的时间
+     * @return  今天 09:48
+     */
+    public static String getCurTime(){
+        SimpleDateFormat dFormat = new SimpleDateFormat("HH:mm");
+        String time = "今天 "+dFormat.format(System.currentTimeMillis());
+        return time;
+    }
+
+    /**
+     * 获取运动记录是周几,今天则返回具体时间,其他则返回具体周几
+     * @param dateStr
+     * @return
+     */
+    public static String getWeekStr(String dateStr){
+
+        String todayStr = dateFormat.format(mCalendar.getTime());
+
+        if(todayStr.equals(dateStr)){
+            return getCurTime();
+        }
+
+        Calendar preCalendar = Calendar.getInstance();
+        preCalendar.add(Calendar.DATE, -1);
+        String yesterdayStr = dateFormat.format(preCalendar.getTime());
+        if(yesterdayStr.equals(dateStr)){
+            return "昨天";
+        }
+
+        int w = 0;
+        try {
+            Date date = dateFormat.parse(dateStr);
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(date);
+            w = calendar.get(Calendar.DAY_OF_WEEK) - 1;
+            if (w < 0){
+                w = 0;
+            }
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return rWeekStrings[w];
+    }
+
+
+    /**
+     * 获取是几号
+     *
+     * @return dd
+     */
+    public static int getCurrentDay() {
+        return mCalendar.get(Calendar.DATE);
+    }
+
+    /**
+     * 获取当前的日期
+     *
+     * @return yyyy年MM月dd日
+     */
+    public static String getCurrentDate() {
+        String currentDateStr = dateFormat.format(mCalendar.getTime());
+        return currentDateStr;
+    }
+
+
+    /**
+     * 根据date列表获取day列表
+     *
+     * @param dateList
+     * @return
+     */
+    public static List<Integer> dateListToDayList(List<String> dateList) {
+        Calendar calendar = Calendar.getInstance();
+        List<Integer> dayList = new ArrayList<>();
+        for (String date : dateList) {
+            try {
+                calendar.setTime(dateFormat.parse(date));
+                int day = calendar.get(Calendar.DATE);
+                dayList.add(day);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+        return dayList;
+    }
+
+
+    /**
+     * 根据当前日期获取以含当天的前一周日期
+     * @return [2017年02月21日, 2017年02月22日, 2017年02月23日, 2017年02月24日, 2017年02月25日, 2017年02月26日, 2017年02月27日]
+     */
+    public static List<String> getBeforeDateListByNow(){
+        List<String> weekList = new ArrayList<>();
+
+        for (int i = -6; i <= 0; i++) {
+            //以周日为一周的第一天
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.DATE, i);
+            String date = dateFormat.format(calendar.getTime());
+            weekList.add(date);
+        }
+        return weekList;
+    }
+
+    /**
+     * 判断当前日期是周几
+     * @param curDate
+     * @return
+     */
+    public static String getCurWeekDay(String curDate){
+        int w = 0;
+        try {
+            Date date = dateFormat.parse(curDate);
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(date);
+            w = calendar.get(Calendar.DAY_OF_WEEK) - 1;
+            if (w < 0){
+                w = 0;
+            }
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return weekStrings[w];
+    }
+}

+ 314 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/view/NewStepActivity.java

@@ -0,0 +1,314 @@
+package com.uas.appme.pedometer.view;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.graphics.Paint;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
+import android.util.Log;
+import android.view.Display;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.common.ui.ViewUtils;
+import com.uas.appme.R;
+import com.uas.appme.pedometer.bean.StepEntity;
+import com.uas.appme.pedometer.calendar.BeforeOrAfterCalendarView;
+import com.uas.appme.pedometer.constant.Constant;
+import com.uas.appme.pedometer.db.StepDataDao;
+import com.uas.appme.pedometer.service.StepService;
+import com.uas.appme.pedometer.utils.StepCountCheckUtil;
+import com.uas.appme.pedometer.utils.TimeUtil;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * Created by FANGlh on 2017/4/13.
+ * function:
+ */
+public class NewStepActivity extends BaseActivity implements Handler.Callback {
+
+//    public static String UU_STEP_NOTICE = "UUSTEPNOTICE";
+    /**
+     * 屏幕长度和宽度
+     */
+    public static int screenWidth, screenHeight;
+
+    private BeforeOrAfterCalendarView calenderView;
+
+    private String curSelDate;
+    private DecimalFormat df = new DecimalFormat("#.##");
+    private List<StepEntity> stepEntityList = new ArrayList<>();
+    private StepDataDao stepDataDao;
+    private Boolean support_step;
+
+    @ViewInject(R.id.movement_records_calender_ll)
+    private LinearLayout movementCalenderLl;
+    @ViewInject(R.id.movement_total_km_time_tv)
+    private TextView kmTimeTv;
+    @ViewInject(R.id.movement_total_km_tv)
+    private TextView totalKmTv;
+    @ViewInject(R.id.movement_total_steps_time_tv)
+    private TextView stepsTimeTv;
+    @ViewInject(R.id.movement_total_steps_tv)
+    private TextView totalStepsTv;
+    @ViewInject(R.id.is_support_tv)
+    private TextView supportTv;
+    @ViewInject(R.id.steps_history_ll)
+    private LinearLayout steps_history_ll;
+    @ViewInject(R.id.steps_history_tv)
+    private TextView steps_history_tv;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_newstep);
+        ViewUtils.inject(this);
+        initView();
+        initData();
+    }
+
+
+    private void initView() {
+        steps_history_tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线效果
+        curSelDate = TimeUtil.getCurrentDate();
+//        curSelDate = TimeUtils.s_long_2_str(System.currentTimeMillis());
+        support_step = StepCountCheckUtil.isSupportStepCountSensor(this);
+//                ||StepCountCheckUtil.isSupportStepCountSensor();
+        Log.i("support_step",support_step+"");
+    }
+
+    private void initData() {
+        WindowManager windowManager = getWindowManager();
+        Display display = windowManager.getDefaultDisplay();
+        screenWidth = display.getWidth();
+        screenHeight = display.getHeight();
+
+        //放到获取宽度之后
+        calenderView = new BeforeOrAfterCalendarView(this);
+        movementCalenderLl.addView(calenderView);
+        /**
+         * 这里判断当前设备是否支持计步
+         */
+        if (support_step) {
+            getRecordList();
+            supportTv.setVisibility(View.GONE);
+            setDatas();
+            setupService();
+//            PreferenceUtils.putInt(NewStepActivity.UU_STEP_NOTICE, 0);
+//            PushManager.resumeWork(MyApplication.getInstance());
+//            Toast.makeText(mContext, "您已开启UU运动", Toast.LENGTH_LONG).show();
+            initListener();
+        } else {
+            totalStepsTv.setText("0");
+            supportTv.setVisibility(View.VISIBLE);
+            steps_history_ll.setVisibility(View.GONE);
+        }
+    }
+
+
+    private void initListener() {
+        calenderView.setOnBoaCalenderClickListener(new BeforeOrAfterCalendarView.BoaCalenderClickListener() {
+            @Override
+            public void onClickToRefresh(int position, String curDate) {
+                //获取当前选中的时间
+                curSelDate = curDate;
+                //根据日期去取数据
+                setDatas();
+            }
+        });
+
+        steps_history_ll.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+//                Log.i("stepEntity",stepEntity+"");
+                startActivity(new Intent(getApplicationContext(),NewStepListActivity.class));
+            }
+        });
+    }
+
+
+    private boolean isBind = false;
+    private Messenger mGetReplyMessenger = new Messenger(new Handler(this));
+    private Messenger messenger;
+
+    /**
+     * 开启计步服务
+     */
+    private void setupService() {
+        Intent intent = new Intent(this, StepService.class);
+        isBind = bindService(intent, conn, Context.BIND_AUTO_CREATE);
+        startService(intent);
+        Log.i("StepService","StepService开启了");
+    }
+
+    /**
+     * 定时任务
+     */
+    private TimerTask timerTask;
+    private Timer timer;
+    /**
+     * 用于查询应用服务(application Service)的状态的一种interface,
+     * 更详细的信息可以参考Service 和 context.bindService()中的描述,
+     * 和许多来自系统的回调方式一样,ServiceConnection的方法都是进程的主线程中调用的。
+     */
+    private ServiceConnection conn = new ServiceConnection() {
+        /**
+         * 在建立起于Service的连接时会调用该方法,目前Android是通过IBind机制实现与服务的连接。
+         * @param name 实际所连接到的Service组件名称
+         * @param service 服务的通信信道的IBind,可以通过Service访问对应服务
+         */
+        @Override
+        public void onServiceConnected(ComponentName name, final IBinder service) {
+            /**
+             * 设置定时器,每隔三秒钟去更新一次运动步数
+             */
+            timerTask = new TimerTask() {
+                @Override
+                public void run() {
+                    try {
+                        messenger = new Messenger(service);
+                        Message msg = Message.obtain(null, Constant.MSG_FROM_CLIENT);
+                        msg.replyTo = mGetReplyMessenger;
+                        messenger.send(msg);
+                    } catch (RemoteException e) {
+                        e.printStackTrace();
+                    }
+                }
+            };
+            timer = new Timer();
+            timer.schedule(timerTask, 0, 3000);
+        }
+
+        /**
+         * 当与Service之间的连接丢失的时候会调用该方法,
+         * 这种情况经常发生在Service所在的进程崩溃或者被Kill的时候调用,
+         * 此方法不会移除与Service的连接,当服务重新启动的时候仍然会调用 onServiceConnected()。
+         * @param name 丢失连接的组件名称
+         */
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+
+        }
+    };
+
+
+    /**
+     * 设置记录数据
+     *
+     */
+    private void setDatas() {
+        StepEntity stepEntity = stepDataDao.getCurDataByDate(curSelDate);
+
+        if (stepEntity != null) {
+            int steps = Integer.parseInt(stepEntity.getSteps());
+
+            //获取全局的步数
+            totalStepsTv.setText(String.valueOf(steps));
+            //计算总公里数
+            totalKmTv.setText(countTotalKM(steps));
+        } else {
+            //获取全局的步数
+            totalStepsTv.setText("0");
+            //计算总公里数
+            totalKmTv.setText("0");
+        }
+
+        //设置时间
+        String time = TimeUtil.getWeekStr(curSelDate);
+        kmTimeTv.setText(time);
+        stepsTimeTv.setText(time);
+        Log.i("today",time);
+    }
+
+    /**
+     * 简易计算公里数,假设一步大约有0.7米
+     *
+     * @param steps 用户当前步数
+     * @return
+     */
+    private String countTotalKM(int steps) {
+        double totalMeters = steps * 0.7;
+        //保留两位有效数字
+        return df.format(totalMeters / 1000);
+    }
+
+
+    /**
+     * 获取全部运动历史纪录
+     */
+    private void getRecordList() {
+        //获取数据库
+        stepDataDao = new StepDataDao(this);
+        stepEntityList.clear();
+        stepEntityList.addAll(stepDataDao.getAllDatas());
+        // TODO: 在这里获取历史记录条数,当条数达到7条或以上时,显示更多历史记录
+//        if (stepEntityList.size() >= 7) {
+            steps_history_ll.setVisibility(View.VISIBLE);
+//        }else {
+//            steps_history_ll.setVisibility(View.GONE);
+//        }
+        Log.i("stepEntityList", stepEntityList +"");
+    }
+
+    @Override
+    public boolean handleMessage(Message msg) {
+        switch (msg.what) {
+            //这里用来获取到Service发来的数据
+            case Constant.MSG_FROM_SERVER:
+
+                //如果是今天则更新数据
+                if (curSelDate.equals(TimeUtil.getCurrentDate())) {
+                    //记录运动步数
+                    int steps = msg.getData().getInt("steps");
+                    //设置的步数
+                    totalStepsTv.setText(String.valueOf(steps));
+                    //计算总公里数
+                    totalKmTv.setText(countTotalKM(steps));
+                }
+                break;
+        }
+        return false;
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        //记得解绑Service,不然多次绑定Service会异常
+        if (isBind) this.unbindService(conn);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home){
+            startActivity(new Intent(getApplicationContext(), SettingActivity.class));
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
+    public void onBackPressed() {
+        startActivity(new Intent(getApplicationContext(), SettingActivity.class));
+        super.onBackPressed();
+    }
+}

+ 141 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/view/NewStepListActivity.java

@@ -0,0 +1,141 @@
+package com.uas.appme.pedometer.view;
+
+import android.graphics.Paint;
+import android.os.Bundle;
+import android.support.v7.app.AlertDialog;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.uas.appme.R;
+import com.uas.appme.pedometer.bean.StepEntity;
+import com.uas.appme.pedometer.db.StepDataDao;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by FANGlh on 2017/4/13.
+ * function:
+ */
+public class NewStepListActivity extends BaseActivity {
+    private UuStepNumAdapter muuStepNumAdapter;
+    private StepDataDao stepDataDao;
+    private List<StepEntity> stepEntityList;
+    @ViewInject(R.id.step_num_lv)
+    private MyListView step_num_lv;
+    @ViewInject(R.id.steps_history_tv)
+    private TextView steps_history_tv;
+    @ViewInject(R.id.steps_history_ll)
+    private LinearLayout step_ll;
+    private DBManager manager;
+    @ViewInject(R.id.step_photo_im)
+    private CircleImageView step_photo_im;
+    @ViewInject(R.id.step_name_tv)
+    private TextView step_name_tv;
+    @ViewInject(R.id.step_em_ll)
+    private LinearLayout step_em_ll;
+    private String em_name = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_emname");
+    private String em_code;
+    private Boolean platform;
+
+    //
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.newstep_data);
+        ViewUtils.inject(this);
+        initView();
+        initData();
+        showNotice();
+    }
+
+    private void showNotice() {
+        new AlertDialog.Builder(mContext)
+                .setTitle(getString(R.string.uu_friend_notice))
+                .setMessage(getString(R.string.uu_love_notice))
+                .setPositiveButton(getString(R.string.i_known),null)
+                .show();
+    }
+
+    private void initView() {
+        muuStepNumAdapter = new UuStepNumAdapter();
+        stepEntityList = new ArrayList<>();
+        steps_history_tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
+        step_ll.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                showNotice();
+            }
+        });
+        step_ll.setVisibility(View.GONE);
+        platform = ApiUtils.getApiModel() instanceof ApiPlatform;
+        manager = new DBManager(this);
+    }
+    private void initData() {
+        //获取数据库
+        stepDataDao = new StepDataDao(this);
+        stepEntityList.clear();
+        stepEntityList.addAll(stepDataDao.getAllDatas());
+        Log.i("stepEntityList", stepEntityList + "");
+
+        if (!ListUtils.isEmpty(stepEntityList)){
+            muuStepNumAdapter.setStepEntityList(stepEntityList);
+            step_num_lv.setAdapter(muuStepNumAdapter);
+        }
+
+        if (platform) {
+            em_code = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "b2b_uu");
+        }
+        else {
+            em_code = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+        }
+        step_name_tv.setText(em_name + "");
+        String loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
+
+        AvatarHelper.getInstance().display(loginUserId, step_photo_im, true, false);
+    }
+
+    public class UuStepNumAdapter extends BaseAdapter {
+        private List<StepEntity> stepEntityList;
+        public List<StepEntity> getStepEntityList() {return stepEntityList;}
+        public void setStepEntityList(List<StepEntity> stepEntityList) {this.stepEntityList = stepEntityList;}
+        @Override
+        public int getCount() {
+            return stepEntityList == null ? 0 : stepEntityList.size();
+        }
+        @Override
+        public Object getItem(int position) {
+            return stepEntityList.get(position);
+        }
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            ViewHolder viewHolder = null;
+            if (convertView == null){
+                viewHolder = new ViewHolder();
+                convertView =  View.inflate(mContext, R.layout.item_uustep_nums,null);
+                viewHolder.docmainmsg_list = (TextView) convertView.findViewById(R.id.item_comdoc_am_list_tv);
+                viewHolder.docmainmsg_value = (TextView) convertView.findViewById(R.id.item_comdoc_am_value_tv);
+                convertView.setTag(viewHolder);
+
+            }else {
+                viewHolder = (ViewHolder) convertView.getTag();
+            }
+//            viewHolder.docmainmsg_list.setText(stepEntityList.get(getCount() - position - 1).getCurDate());
+            viewHolder.docmainmsg_list.setText( TimeUtils.s_long_2_str(DateFormatUtil.str2Long(stepEntityList.get(getCount() - position - 1).getCurDate(), "yyyy年MM月dd日")));
+            viewHolder.docmainmsg_value.setText(stepEntityList.get(getCount() - position - 1).getSteps());
+            return convertView;
+        }
+        class ViewHolder{
+            TextView docmainmsg_list;
+            TextView docmainmsg_value;
+        }
+    }
+}

+ 141 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/view/StepSplashActivity.java

@@ -0,0 +1,141 @@
+package com.uas.appme.pedometer.view;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.os.Handler;
+import android.preference.PreferenceActivity;
+import android.view.Window;
+import android.view.WindowManager;
+import android.view.animation.Animation;
+import android.view.animation.ScaleAnimation;
+import android.widget.ImageView;
+import android.widget.Toast;
+
+import com.uas.appme.R;
+import com.uas.appme.pedometer.constant.Constant;
+import com.uas.appme.pedometer.utils.StepHttpUtils;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ *Created by FANGlh on 2017/4/24.
+ * function:
+ */
+public class StepSplashActivity extends Activity {
+    private ImageView iv_start;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
+        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+        setContentView(R.layout.step_splash);
+        iv_start = (ImageView) findViewById(R.id.iv_start);
+        initImage();
+
+        new Handler().postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            startActivity();
+                        }
+                    }, 3000);
+
+    }
+
+    private void initImage() {
+        File dir = getFilesDir();
+        final File imgFile = new File(dir, "start.jpg");
+        if (imgFile.exists()) {
+            iv_start.setImageBitmap(BitmapFactory.decodeFile(imgFile.getAbsolutePath()));
+        } else {
+            iv_start.setImageResource(R.drawable.start_splash1);
+        }
+
+        final ScaleAnimation scaleAnim = new ScaleAnimation(1.0f, 1.2f, 1.0f, 1.2f,
+                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
+                0.5f);
+        scaleAnim.setFillAfter(true);
+        scaleAnim.setDuration(3000);
+        scaleAnim.setAnimationListener(new Animation.AnimationListener() {
+            @Override
+            public void onAnimationStart(Animation animation) {
+
+            }
+
+            @Override
+            public void onAnimationEnd(Animation animation) {
+                if (StepHttpUtils.isNetworkConnected(StepSplashActivity.this)) {
+                    StepHttpUtils.get(Constant.START, new AsyncHttpResponseHandler() {
+                        @Override
+                        public void onSuccess(int i, PreferenceActivity.Header[] headers, byte[] bytes) {
+                            try {
+                                JSONObject jsonObject = new JSONObject(new String(bytes));
+                                String url = jsonObject.getString("img");
+                                StepHttpUtils.getImage(url, new BinaryHttpResponseHandler() {
+                                    @Override
+                                    public void onSuccess(int i, PreferenceActivity.Header[] headers, byte[] bytes) {
+                                        saveImage(imgFile, bytes);
+                                        startActivity();
+                                    }
+
+                                    @Override
+                                    public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
+                                        startActivity();
+                                    }
+                                });
+
+                            } catch (JSONException e) {
+                                e.printStackTrace();
+                            }
+                        }
+
+                        @Override
+                        public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
+                            startActivity();
+                        }
+                    });
+                } else {
+                    Toast.makeText(StepSplashActivity.this, getString(R.string.networks_out), Toast.LENGTH_LONG).show();
+                    startActivity();
+                }
+            }
+
+            @Override
+            public void onAnimationRepeat(Animation animation) {
+
+            }
+        });
+        iv_start.startAnimation(scaleAnim);
+
+    }
+
+    private void startActivity() {
+        Intent intent = new Intent(StepSplashActivity.this, NewStepActivity.class);
+        startActivity(intent);
+        overridePendingTransition(android.R.anim.fade_in,
+                android.R.anim.fade_out);
+        finish();
+    }
+
+    public void saveImage(File file, byte[] bytes) {
+        try {
+            if (file.exists()) {
+                file.delete();
+            }
+            FileOutputStream fos = new FileOutputStream(file);
+            fos.write(bytes);
+            fos.flush();
+            fos.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+    }
+}

+ 840 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/activity/BusinessCircleActivity.java

@@ -0,0 +1,840 @@
+package com.uas.appme.workcircle.activity;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.provider.MediaStore;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.AbsListView;
+import android.widget.AdapterView;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.common.preferences.PreferenceUtils;
+import com.common.system.DisplayUtil;
+import com.common.ui.CameraUtil;
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.uas.appme.R;
+import com.uas.appme.workcircle.adapter.PublicMessageAdapter;
+import com.uas.appme.workcircle.bean.Comment;
+import com.uas.appme.workcircle.bean.PublicMessage;
+import com.uas.appme.workcircle.cusview.PMsgBottomView;
+import com.uas.appme.workcircle.cusview.ResizeLayout;
+import com.uas.appme.workcircle.cusview.showCEView;
+import com.uas.appme.workcircle.xmpp.AppConstant;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.uas.appme.workcircle.xmpp.AppConstant.CIRCLE_TYPE_MY_BUSINESS;
+
+
+/**
+ * 我的商务圈
+ */
+public class BusinessCircleActivity extends BaseActivity implements showCEView {
+    private static final int REQUEST_CODE_GET_SHUOSHUODETAIL_BACK = 101;
+    /**
+     * 本界面的类型 Constant.CIRCLE_TYPE_MY_BUSINESS,我的商务圈<br/>
+     * Constant。CIRCLE_TYPE_PERSONAL_SPACE,个人空间<br/>
+     */
+    private int mType;
+    /* mPageIndex仅用于商务圈情况下 */
+    private int mPageIndex = 0;
+    private PullToRefreshListView mPullToRefreshListView;//
+    /* 封面视图 */
+    private View mMyCoverView;// 封面root view
+    private ImageView imgHead;// 封面图片ImageView
+    private Button mInviteBtn;// 面试邀请按钮
+    private ImageView mAvatarImg;// 用户头像
+    private ResizeLayout mResizeLayout;
+    private PMsgBottomView mPMsgBottomView;
+
+    private List<PublicMessage> mMessages = new ArrayList<PublicMessage>();
+
+    private PublicMessageAdapter mAdapter;
+
+    private String mLoginUserId;// 当前登陆用户的UserId
+    private String mLoginNickName;// 当前登陆用户的昵称
+
+    /* 当前选择的是哪个用户的个人空间,仅用于查看个人空间的情况下 */
+    private String mUserId;
+    private String mNickName;
+    public showCEView ceView;
+    private File vFile;
+    private Comparator<? super Comment> comp = new Comparator<Comment>() {
+        @Override
+        public int compare(Comment comment, Comment t1) {
+
+            return (int) (comment.getTime() - t1.getTime());
+        }
+    };
+    private TextView mQzonename;
+    private PopupWindow mMoreWindow;
+    private View mMoreMenuView;
+    private TextView sendqzonetext_tv;
+    private TextView sendqzonepicture_tv;
+    private TextView sendqzonnevideo_tv;
+    private TextView sendqzonecancel_tv;
+    private Intent intent;
+    private String qzonename;
+
+    private int bePraise = -1;
+    private int mClickPosition = -1;
+
+    public void setShowCEViewListener(showCEView ceView) {
+        this.ceView = ceView;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
+        mLoginNickName = MyApplication.getInstance().mLoginUser.getNickName();
+        if (TextUtils.isEmpty(mLoginUserId)) {// 容错
+            return;
+        }
+
+        if (getIntent() != null) {
+            mType = getIntent().getIntExtra(AppConstant.EXTRA_CIRCLE_TYPE, CIRCLE_TYPE_MY_BUSINESS);// 默认的为查看我的商务圈
+            mUserId = getIntent().getStringExtra(AppConstant.EXTRA_USER_ID);
+            mNickName = getIntent().getStringExtra(AppConstant.EXTRA_NICK_NAME);
+        }
+
+        if (!isMyBusiness()) {// 如果查看的是个人空间的话,那么mUserId必须要有意义
+            if (TextUtils.isEmpty(mUserId)) {// 没有带userId参数,那么默认看的就是自己的空间
+                mUserId = mLoginUserId;
+                mNickName = mLoginNickName;
+            }
+        }
+
+        setContentView(R.layout.activity_business_circle);
+
+        initView();
+    }
+    @Override
+    protected void onResume() {
+        requestData(true);
+        super.onResume();
+    }
+
+
+    /**
+     * 是否是商务圈类型
+     *
+     * @return
+     */
+    private boolean isMyBusiness() {
+        return mType == CIRCLE_TYPE_MY_BUSINESS;
+    }
+
+    /**
+     * 是否是个人空间类型之个人中心
+     *
+     * @return
+     */
+    private boolean isMySpace() {
+        return mLoginUserId.equals(mUserId);
+    }
+
+    private void initView() {
+        initTopTitleBar();
+        initCoverView();
+
+        mMoreMenuView = View.inflate(getApplicationContext(), R.layout.layout_menu_send_qzone_message, null);
+        sendqzonetext_tv = (TextView) mMoreMenuView.findViewById(R.id.send_qzone_text);
+        sendqzonepicture_tv = (TextView) mMoreMenuView.findViewById(R.id.send_qzone_picture);
+        sendqzonnevideo_tv = (TextView) mMoreMenuView.findViewById(R.id.send_qzone_video);
+        sendqzonecancel_tv = (TextView) mMoreMenuView.findViewById(R.id.send_qzone_cancel);
+        mMoreWindow = new PopupWindow(mMoreMenuView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
+        mMoreWindow.setAnimationStyle(R.style.MenuAnimationFade);
+        mMoreWindow.setBackgroundDrawable(new BitmapDrawable());
+        mMoreWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                closeMorePopupWindow();
+            }
+        });
+
+
+        sendqzonetext_tv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                intent.setClass(BusinessCircleActivity.this, SendShuoshuoActivity.class);
+                intent.putExtra("type", 0);
+                startActivityForResult(intent, REQUEST_CODE_SEND_MSG);
+                closeMorePopupWindow();
+            }
+        });
+        intent = new Intent();
+        sendqzonepicture_tv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                intent.setClass(BusinessCircleActivity.this, SendShuoshuoActivity.class);
+                intent.putExtra("type", 1);
+                startActivityForResult(intent, REQUEST_CODE_SEND_MSG);
+                closeMorePopupWindow();
+            }
+        });
+        sendqzonnevideo_tv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                intent.setClass(BusinessCircleActivity.this, SendVideoActivity.class);
+                startActivityForResult(intent, REQUEST_CODE_SEND_MSG);
+                closeMorePopupWindow();
+            }
+        });
+        sendqzonecancel_tv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                closeMorePopupWindow();
+            }
+        });
+
+
+        mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
+        mPMsgBottomView = (PMsgBottomView) findViewById(R.id.bottom_view);
+
+        mResizeLayout = (ResizeLayout) findViewById(R.id.resize_layout);
+        mResizeLayout.setOnResizeListener(new ResizeLayout.OnResizeListener() {
+            @Override
+            public void OnResize(int w, int h, int oldw, int oldh) {
+                if (oldh < h) {// 键盘被隐藏
+
+                }
+            }
+        });
+
+        mPMsgBottomView.setPMsgBottomListener(new PMsgBottomView.PMsgBottomListener() {
+            @Override
+            public void sendText(String text) {
+                if (mCommentReplyCache != null) {
+                    mCommentReplyCache.text = text;
+                    addComment(mCommentReplyCache);
+                    mPMsgBottomView.hide();
+                }
+            }
+        });
+        mPullToRefreshListView.getRefreshableView().addHeaderView(mMyCoverView, null, false);
+        mAdapter = new PublicMessageAdapter(this, mMessages);
+        if (isMySpace()) {
+            mAdapter.setType(AppConstant.CIRCLE_TYPE_PERSONAL_SPACE);
+        } else {
+            mAdapter.setType(CIRCLE_TYPE_MY_BUSINESS);
+        }
+
+        setListenerAudio(mAdapter); //设置借口回调
+
+
+        mPullToRefreshListView.getRefreshableView().setAdapter(mAdapter);
+
+        mPullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
+
+            @Override
+            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
+                requestData(true);
+            }
+
+            @Override
+            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
+                requestData(false);
+            }
+        });
+
+        mPullToRefreshListView.getRefreshableView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                mClickPosition = (int) parent.getItemIdAtPosition(position);
+                PublicMessage message = mMessages.get((int) parent.getItemIdAtPosition(position));
+                Intent intent = new Intent(BusinessCircleActivity.this, PMsgDetailActivity.class);
+                intent.putExtra("public_message", message);
+                startActivityForResult(intent, REQUEST_CODE_GET_SHUOSHUODETAIL_BACK);
+            }
+        });
+
+        mPullToRefreshListView.getRefreshableView().setOnScrollListener(
+                new PauseOnScrollListener(ImageLoader.getInstance(), true, true, new AbsListView.OnScrollListener() {
+                    @Override
+                    public void onScrollStateChanged(AbsListView view, int scrollState) {
+                        if (mPMsgBottomView.getVisibility() != View.GONE) {
+                            mPMsgBottomView.hide();
+                        }
+                    }
+
+                    @Override
+                    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+                    }
+                }));
+
+        if (isMyBusiness()) {
+            readFromLocal();
+        } else {
+            requestData(true);
+        }
+
+
+    }
+
+    private void initTopTitleBar() {
+        if (isMyBusiness()) {
+            getSupportActionBar().setTitle(getString(R.string.user_firend_cirle));
+        } else {
+            if (isMySpace()) {
+                getSupportActionBar().setTitle(R.string.umeng_socialize_text_ucenter);
+            } else {
+                qzonename = FriendDao.getInstance().getRemarkName(mLoginUserId, mUserId);
+                if (TextUtils.isEmpty(qzonename)) {
+                    qzonename = mNickName;
+                }
+                getSupportActionBar().setTitle(qzonename);
+            }
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        if (isMyBusiness() || isMySpace()) {// 允许发布说说等
+            getMenuInflater().inflate(R.menu.menu_business, menu);
+        }
+        return super.onCreateOptionsMenu(menu);
+    }
+
+
+    private static final int REQUEST_CODE_SEND_MSG = 1;
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        int itemId = item.getItemId();
+        switch (itemId) {
+            case R.id.send_qzone:
+                if (mMoreMenuView == null) break; // add time : 2017-5-17 14:16
+                mMoreWindow.showAtLocation(getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);
+                DisplayUtil.backgroundAlpha(this, 0.5f);
+                break;
+            case android.R.id.home:
+                startActivity(new Intent(activity, MainActivity.class));
+                finish();
+                break;
+            default:
+                break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    private void closeMorePopupWindow() {
+        if (mMoreWindow != null) {
+            mMoreWindow.dismiss();
+//            mMoreWindow = null;
+            DisplayUtil.backgroundAlpha(this, 1f);
+
+        }
+
+    }
+
+    private void initCoverView() {
+        mMyCoverView = LayoutInflater.from(this).inflate(R.layout.space_cover_view, null);
+        imgHead = (ImageView) mMyCoverView.findViewById(R.id.cover_img);
+        mInviteBtn = (Button) mMyCoverView.findViewById(R.id.invite_btn);
+        mAvatarImg = (ImageView) mMyCoverView.findViewById(R.id.avatar_img);
+        mQzonename = (TextView) mMyCoverView.findViewById(R.id.qzone_name);
+        // 邀请按钮
+        mInviteBtn.setVisibility(View.GONE);// TODO 面试邀请按钮放这里太难看了,隐藏掉算求
+        // 头像
+        if (isMyBusiness() || isMySpace()) {
+            AvatarHelper.getInstance().displayAvatar(mLoginUserId, mAvatarImg, true);
+            mQzonename.setText(MyApplication.getInstance().mLoginUser.getNickName());
+        } else {
+            AvatarHelper.getInstance().displayAvatar(mUserId, mAvatarImg, true);
+            mQzonename.setText(qzonename);
+        }
+        mAvatarImg.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {// 进入个人资料页
+                if (isMyBusiness()) {
+                    Intent intent = new Intent(activity, BusinessCircleActivity.class);
+                    intent.putExtra(AppConstant.EXTRA_CIRCLE_TYPE, AppConstant.CIRCLE_TYPE_PERSONAL_SPACE);
+                    intent.putExtra(AppConstant.EXTRA_USER_ID, mLoginUserId);
+                    startActivity(intent);
+                }
+//                Intent intent = new Intent(BusinessCircleActivity.this,PersonalQzoneActivity.class);
+                else if (isMySpace()) {
+                    Intent intent = new Intent(BusinessCircleActivity.this, BasicInfoActivity.class);
+                    intent.putExtra(AppConstant.EXTRA_USER_ID, mLoginUserId);
+                    startActivity(intent);
+                } else {
+                    Intent intent = new Intent(BusinessCircleActivity.this, BasicInfoActivity.class);
+                    intent.putExtra(AppConstant.EXTRA_USER_ID, mUserId);
+                    startActivity(intent);
+                }
+
+            }
+        });
+
+//        if (isMyBusiness() || isMySpace()) {
+//            mCoverImg.setUserId(mLoginUserId);
+//        } else {
+//            mCoverImg.setUserId(mUserId);
+//        }
+
+        imgHead.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+//                if (mPhotos == null || mPhotos.size() <= 0) {
+//                    return;
+//                }
+//                ArrayList<String> images = new ArrayList<String>();
+//                for (int i = 0; i < mPhotos.size(); i++) {
+//                    images.add(mPhotos.get(i).getOriginalUrl());
+//                }
+//                Intent intent = new Intent(BusinessCircleActivity.this, MultiImagePreviewActivity.class);
+//                intent.putExtra(AppConstant.EXTRA_IMAGES, images);
+//                startActivity(intent);
+                showSelectAvatarDialog();
+            }
+        });
+        //   loadPhotos();
+
+        String url = PreferenceUtils.getString(this, HEAD_PHONE, "o");
+        File file = new File(url);
+        if (isMyBusiness() || isMySpace()) {
+            if (url != null && !url.equals("o")) {
+                if (file.exists()) {
+                    imgHead.setImageBitmap(BitmapFactory.decodeFile(url));
+//                    ImageLoader.getInstance().displayImage(url, imgHead);
+                } else {
+                    imgHead.setImageResource(R.drawable.qzone_phone);
+                }
+            } else {
+                imgHead.setImageResource(R.drawable.qzone_phone);
+            }
+        } else {
+            imgHead.setImageResource(R.drawable.qzone_phone);
+        }
+    }
+
+    private void showSelectAvatarDialog() {
+        String[] items = new String[]{getString(R.string.common_camera), getString(R.string.c_photo_album)};
+        AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle(getString(R.string.qzone_change_picture)).setSingleChoiceItems(items, 0,
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        if (which == 0) {
+                            takePhoto();
+                        } else {
+                            selectPhoto();
+                        }
+                        dialog.dismiss();
+                    }
+                });
+        builder.show();
+    }
+
+    private static final int REQUEST_CODE_CAPTURE_CROP_PHOTO = 2;
+    private static final int REQUEST_CODE_PICK_CROP_PHOTO = 4;
+    private Uri mNewPhotoUri;
+
+    public void takePhoto() {
+        Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+        startActivityForResult(openCameraIntent, REQUEST_CODE_CAPTURE_CROP_PHOTO);
+    }
+
+    public void saveBitmap(Bitmap bitmap) {
+        if (vFile == null)
+            vFile = new File(Environment.getExternalStorageDirectory()
+                    + "/Android/data/com.xzjmyk.pm.activity/files/Pictures/", "backhead.jpg");
+        if (!vFile.exists()) {
+            File vDirPath = vFile.getParentFile();
+            vDirPath.mkdirs();
+        } else {
+            if (vFile.exists()) {
+                vFile.delete();
+            }
+        }
+        try {
+            FileOutputStream out = new FileOutputStream(vFile);
+            bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
+            PreferenceUtils.putString(this, HEAD_PHONE, vFile.toString());
+            out.flush();
+            out.close();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void selectPhoto() {
+        CameraUtil.pickImageSimple(this, REQUEST_CODE_PICK_CROP_PHOTO);
+    }
+
+
+    private void loadPhotos() {
+        if (isMyBusiness() || isMySpace()) {// 自己的,那么就直接从数据库加载我的相册
+            mPhotos = MyPhotoDao.getInstance().getPhotos(mLoginUserId);
+            setCoverPhotos(mPhotos);
+            return;
+        }
+        // 别人的,那么就从网上请求
+        HashMap<String, String> params = new HashMap<String, String>();
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        params.put("userId", mUserId);
+
+        StringJsonArrayRequest<MyPhoto> request = new StringJsonArrayRequest<MyPhoto>(mConfig.USER_PHOTO_LIST, new ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError arg0) {
+            }
+        }, new StringJsonArrayRequest.Listener<MyPhoto>() {
+            @Override
+            public void onResponse(ArrayResult<MyPhoto> result) {
+                boolean success = Result.defaultParser(BusinessCircleActivity.this, result, false);
+                if (success) {
+                    mPhotos = result.getData();
+                    setCoverPhotos(mPhotos);
+                }
+            }
+        }, MyPhoto.class, params);
+        addDefaultRequest(request);
+    }
+
+    private void setCoverPhotos(List<MyPhoto> photos) {
+
+
+        if (photos == null || photos.size() <= 0) {
+            return;
+        }
+        String[] coverPhotos = new String[photos.size()];
+        for (int i = 0; i < photos.size(); i++) {
+            coverPhotos[i] = photos.get(i).getOriginalUrl();
+        }
+//        mCoverImg.setImages(coverPhotos);
+    }
+
+    private List<MyPhoto> mPhotos = null;
+
+    private void readFromLocal() {
+        FileDataHelper.readArrayData(this, mLoginUserId, FileDataHelper.FILE_BUSINESS_CIRCLE, new StringJsonArrayRequest.Listener<PublicMessage>() {
+            @Override
+            public void onResponse(ArrayResult<PublicMessage> result) {
+                if (result != null && result.getData() != null && result.getData().size() > 0) {
+                    mMessages.clear();
+                    mMessages.addAll(result.getData());
+                    mAdapter.notifyDataSetInvalidated();
+                }
+                requestData(true);
+            }
+        }, PublicMessage.class);
+    }
+
+
+    @Override
+    protected void onStop() {
+//        if (mCoverImg != null) {
+//            mCoverImg.onStop();
+//        }
+        if (listener != null) {
+            listener.ideChange();
+        }
+        listener = null;
+        super.onStop();
+    }
+
+    /**
+     * 接口,调用外部类的方法,让应用不可见时停止播放声音
+     */
+    ListenerAudio listener;
+
+    public void setListenerAudio(ListenerAudio listener) {
+        this.listener = listener;
+    }
+
+    public interface ListenerAudio {
+        void ideChange();
+    }
+
+    private File mCurrentFile;
+    private static final int REQUEST_CODE_CROP_PHOTO = 3;
+
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == REQUEST_CODE_SEND_MSG) {
+            if (resultCode == Activity.RESULT_OK) {// 发说说成功
+                String messageId = data.getStringExtra(AppConstant.EXTRA_MSG_ID);
+                CircleMessageDao.getInstance().addMessage(mLoginUserId, messageId);
+                requestData(true);
+            }
+        } else if (requestCode == REQUEST_CODE_CAPTURE_CROP_PHOTO) {// 拍照返回再去裁减
+            if (resultCode == Activity.RESULT_OK) {
+                Bitmap bitmap = (Bitmap) data.getExtras().get("data");
+                imgHead.setImageBitmap(bitmap);
+                saveBitmap(bitmap);
+            }
+        } else if (requestCode == REQUEST_CODE_PICK_CROP_PHOTO) {// 选择一张图片,然后立即调用裁减
+            if (resultCode == Activity.RESULT_OK) {
+                if (data != null && data.getData() != null) {
+                    String path = CameraUtil.getImagePathFromUri(this, data.getData());
+                    Uri o = Uri.fromFile(new File(path));
+                    mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this,MyApplication.getInstance().mLoginUser.getUserId(), CameraUtil.MEDIA_TYPE_IMAGE);
+                    mCurrentFile = new File(mNewPhotoUri.getPath());
+                    CameraUtil.cropImage(this, o, mNewPhotoUri, REQUEST_CODE_CROP_PHOTO, 1, 1, 300, 300);
+                } else {
+                    ToastUtil.showToast(this, R.string.c_photo_album_failed);
+                }
+            }
+        } else if (requestCode == REQUEST_CODE_CROP_PHOTO) {
+            if (resultCode == Activity.RESULT_OK) {
+                if (mNewPhotoUri != null) {
+                    mCurrentFile = new File(mNewPhotoUri.getPath());
+                    ImageLoader.getInstance().displayImage(mNewPhotoUri.toString(), imgHead);
+                    PreferenceUtils.putString(this, HEAD_PHONE, mCurrentFile.toString());
+                } else {
+                    ToastUtil.showToast(this, mNewPhotoUri.toString());
+                }
+            }
+
+        } else if (requestCode == REQUEST_CODE_GET_SHUOSHUODETAIL_BACK) {  // 从说说详情界面返回后处理是否当前条数据的赞、评论显示
+            if (resultCode == PMsgDetailActivity.SHUOSHUODETAIL_BACK) {
+                bePraise = data.getIntExtra("bePraise", -1);
+                Praise praise = new Praise();
+                praise.setNickName(MyApplication.getInstance().mLoginUser.getNickName());
+                praise.setUserId(MyApplication.getInstance().mLoginUser.getUserId());
+                if (bePraise != -1) {
+                    if (bePraise == 1) {
+                        mMessages.get(mClickPosition).getPraises().add(praise);
+                        mAdapter.notifyDataSetChanged();
+                    } else if (bePraise == 0) {
+                        mMessages.get(mClickPosition).getPraises().remove(praise);
+                        mAdapter.notifyDataSetChanged();
+                    }
+                }
+            }
+        }
+    }
+
+    private static String HEAD_PHONE = "head_phone";
+    /********** 公共消息的数据请求部分 *********/
+    /**
+     * 请求公共消息
+     *
+     * @param isPullDwonToRefersh 是下拉刷新,还是上拉加载
+     */
+    private void requestData(boolean isPullDwonToRefersh) {
+        if (isMyBusiness()) {
+            requestMyBusiness(isPullDwonToRefersh);
+        } else {
+            requestSpace(isPullDwonToRefersh);
+        }
+    }
+
+    private void requestMyBusiness(final boolean isPullDwonToRefersh) {
+
+        if (isPullDwonToRefersh) {
+            mPageIndex = 0;
+        }
+        HashMap<String, String> params = new HashMap<String, String>();
+        String messageId = null;
+        if (!isPullDwonToRefersh && mMessages.size() > 0) {
+            messageId = mMessages.get(mMessages.size() - 1).getMessageId();
+            params.put("messageId", messageId);
+        }
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        params.put("pageSize", "" + 10);
+        params.put("type", "0");
+//        params.put("flag", 1+"");
+        StringJsonArrayRequest<PublicMessage> request = new StringJsonArrayRequest<PublicMessage>(
+                mConfig.MSG_LIST, new Response.ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError arg0) {
+                ToastUtil.showErrorNet(BusinessCircleActivity.this);
+            }
+        }, new StringJsonArrayRequest.Listener<PublicMessage>() {
+            @Override
+            public void onResponse(ArrayResult<PublicMessage> result) {
+                Log.i("Arison", "商务信息:" + JSON.toJSONString(result));
+                boolean success = Result.defaultParser(mContext, result, true);
+                if (success) {
+                    List<PublicMessage> datas = result.getData();
+                    for (int i = 0; i < datas.size(); i++) {
+                        Collections.sort(datas.get(i).getComments(), comp);
+                    }
+                    if (isPullDwonToRefersh) {
+                        mMessages.clear();
+                    }
+                    if (datas != null && datas.size() > 0) {// 没有更多数据
+                        mPageIndex++;
+                        if (isPullDwonToRefersh) {
+                            FileDataHelper.writeFileData(BusinessCircleActivity.this, mLoginUserId, FileDataHelper.FILE_BUSINESS_CIRCLE, result);
+                            PreferenceUtils.putLong(mContext, "TIMEMILL", datas.get(0).getTime());
+                        }
+                        mMessages.addAll(datas);
+                    }
+                    mAdapter.notifyDataSetChanged(true);
+                } else {
+
+                }
+                mPullToRefreshListView.onRefreshComplete();
+            }
+        }, PublicMessage.class, params);
+        addDefaultRequest(request);
+    }
+
+    private void requestSpace(final boolean isPullDwonToRefersh) {
+        String messageId = null;
+        if (!isPullDwonToRefersh && mMessages.size() > 0) {
+            messageId = mMessages.get(mMessages.size() - 1).getMessageId();
+        }
+        HashMap<String, String> params = new HashMap<String, String>();
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        params.put("userId", mUserId);
+        params.put("flag", PublicMessage.FLAG_NORMAL + "");
+
+        if (!TextUtils.isEmpty(messageId)) {
+            params.put("messageId", messageId);
+        }
+        params.put("pageSize", String.valueOf(AppConfig.PAGE_SIZE));
+
+        StringJsonArrayRequest<PublicMessage> request = new StringJsonArrayRequest<PublicMessage>(mConfig.MSG_USER_LIST, new ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError arg0) {
+                ToastUtil.showErrorNet(BusinessCircleActivity.this);
+                mPullToRefreshListView.onRefreshComplete();
+            }
+        }, new StringJsonArrayRequest.Listener<PublicMessage>() {
+            @Override
+            public void onResponse(ArrayResult<PublicMessage> result) {
+                boolean success = Result.defaultParser(BusinessCircleActivity.this, result, true);
+                if (success) {
+                    List<PublicMessage> datas = result.getData();
+                    if (isPullDwonToRefersh) {
+                        mMessages.clear();
+                    }
+                    if (datas != null && datas.size() > 0) {// 没有更多数据
+                        mMessages.addAll(datas);
+                    }
+                    mAdapter.notifyDataSetChanged(true);
+                }
+                mPullToRefreshListView.onRefreshComplete();
+            }
+        }, PublicMessage.class, params);
+        addDefaultRequest(request);
+    }
+
+
+    private void addComment(CommentReplyCache cache) {
+        Comment comment = new Comment();
+        comment.setUserId(mLoginUserId);
+        comment.setNickName(mLoginNickName);
+        comment.setToUserId(cache.toUserId);
+        comment.setToNickname(cache.toNickname);
+        comment.setBody(cache.text);
+        addComment(cache.messagePosition, comment);
+    }
+
+    /**
+     * 添加一条回复
+     *
+     * @param position 回复的索引(用于本地更新适配器和获取messageID)
+     * @param comment  回复的内容对象
+     */
+    private void addComment(final int position, final Comment comment) {
+        final PublicMessage message = mMessages.get(position);
+        Map<String, String> params = new HashMap<String, String>();
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        params.put("messageId", message.getMessageId());
+        if (!TextUtils.isEmpty(comment.getToUserId())) {
+            params.put("toUserId", comment.getToUserId());
+        }
+        if (!TextUtils.isEmpty(comment.getToNickname())) {
+            params.put("toNickname", comment.getToNickname());
+        }
+        params.put("body", comment.getBody());
+
+        StringJsonObjectRequest<String> request = new StringJsonObjectRequest<String>(mConfig.MSG_COMMENT_ADD, new ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError arg0) {
+                ToastUtil.showErrorNet(BusinessCircleActivity.this);
+            }
+        }, new StringJsonObjectRequest.Listener<String>() {
+            @Override
+            public void onResponse(ObjectResult<String> result) {
+                boolean success = Result.defaultParser(BusinessCircleActivity.this, result, true);
+                if (success && result.getData() != null) {
+                    List<Comment> comments = message.getComments();
+                    if (comments == null) {
+                        comments = new ArrayList<Comment>();
+                        message.setComments(comments);
+                    }
+                    comment.setCommentId(result.getData());
+                    comments.add(comment);//  防止评论时候显示在第一个位置
+                    mAdapter.notifyDataSetChanged(false);
+                }
+            }
+        }, String.class, params);
+        addDefaultRequest(request);
+    }
+
+    public void showCommentEnterView(int messagePosition, String toUserId, String toNickname, String toShowName) {
+        mCommentReplyCache = new CommentReplyCache();
+        mCommentReplyCache.messagePosition = messagePosition;
+        mCommentReplyCache.toUserId = toUserId;
+        mCommentReplyCache.toNickname = toNickname;
+        if (TextUtils.isEmpty(toUserId) || TextUtils.isEmpty(toNickname) || TextUtils.isEmpty(toShowName)) {
+            mPMsgBottomView.setHintText("");
+        } else {
+            mPMsgBottomView.setHintText(getString(R.string.task_reply, toShowName));
+        }
+        mPMsgBottomView.show();
+    }
+
+
+    class CommentReplyCache {
+        int messagePosition;// 消息的Position
+        String toUserId;
+        String toNickname;
+        String text;
+    }
+
+    CommentReplyCache mCommentReplyCache = null;
+
+    @Override
+    public void onBackPressed() {
+        if (mPMsgBottomView != null && mPMsgBottomView.getVisibility() == View.VISIBLE) {
+            mPMsgBottomView.hide();
+        }
+//        else {
+//            startActivity(new Intent(activity, MainActivity.class));
+//            finish();
+//        }
+        super.onBackPressed();
+    }
+
+    @Override
+    public void showView(int messagePosition, String toUserId, String toNickname, String toShowName) {
+        showCommentEnterView(messagePosition, toUserId, toNickname, toShowName);
+    }
+}

+ 1221 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/adapter/PublicMessageAdapter.java

@@ -0,0 +1,1221 @@
+package com.uas.appme.workcircle.adapter;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.text.SpannableStringBuilder;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.common.data.DateFormatUtil;
+import com.common.data.StringUtil;
+import com.common.system.SystemUtil;
+import com.common.ui.ProgressDialogUtil;
+import com.uas.appme.workcircle.BusinessCircleActivity;
+import com.uas.appme.workcircle.BusinessCircleFragment;
+import com.uas.appme.workcircle.audio.AudioPalyer;
+import com.uas.appme.workcircle.bean.PublicMessage;
+import com.uas.appme.workcircle.cusview.MyGridView;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @项目名称: SkWeiChat-Baidu
+ * @包名: com.xzjmyk.pm.activity.adapter
+ * @作者:王阳
+ * @创建时间: 2015年10月13日 下午5:21:17
+ * @描述: 我的空间(商务圈)公共消息的接口
+ * @SVN版本号: $Rev$
+ * @修改人: $Author$
+ * @修改时间: $Date$
+ * @修改的内容: 增加一个接口在界面不可见时让音频停止
+ */
+public class PublicMessageAdapter extends BaseAdapter implements BusinessCircleActivity.ListenerAudio, BusinessCircleFragment.ListenerAudioFragment {
+
+    private Context mContext;
+
+    private List<PublicMessage> mMessages;
+    private LayoutInflater mInflater;
+
+    private String mLoginUserId;
+    private String mLoginNickName;
+    private ProgressDialog mProgressDialog;
+    private int type;
+    // 播放音频的记录
+    private ViewHolder mVoicePlayViewHolder;// 当前正在播放的VocieViewHolder
+    private AudioPalyer mAudioPalyer;
+    private String mVoicePlayId = null;
+
+    private Map<String, String> mShowNameMaps;
+    private CommentAdapter mAdapter;
+
+    public List<PublicMessage> getmMessages() {
+        return mMessages;
+    }
+
+    public void setmMessages(List<PublicMessage> mMessages) {
+        this.mMessages = mMessages;
+    }
+
+    public void reset() {
+        if (mAudioPalyer != null) {
+            mAudioPalyer.stop();
+        }
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public PublicMessageAdapter(Context context, List<PublicMessage> messages) {
+        mContext = context;
+        mMessages = messages;
+        mInflater = LayoutInflater.from(mContext);
+        mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
+        mLoginNickName = MyApplication.getInstance().mLoginUser.getNickName();
+        mShowNameMaps = new HashMap<String, String>();
+        mProgressDialog = ProgressDialogUtil.init(mContext, null, mContext.getString(R.string.please_waitting));
+        mAudioPalyer = new AudioPalyer();
+        mAudioPalyer.setAudioPlayListener(new AudioPalyer.AudioPlayListener() {
+            @Override
+            public void onSeekComplete() {
+            }
+
+            @Override
+            public void onPrepared() {
+            }
+
+            @Override
+            public void onError() {
+                mVoicePlayId = null;
+                if (mVoicePlayViewHolder != null) {
+                    updateVoiceViewHolderIconStatus(false, mVoicePlayViewHolder);
+                }
+                mVoicePlayViewHolder = null;
+            }
+
+            @Override
+            public void onCompletion() {
+                mVoicePlayId = null;
+                if (mVoicePlayViewHolder != null) {
+                    updateVoiceViewHolderIconStatus(false, mVoicePlayViewHolder);
+                }
+                mVoicePlayViewHolder = null;
+            }
+
+            @Override
+            public void onBufferingUpdate(int percent) {
+            }
+
+            @Override
+            public void onPreparing() {
+
+            }
+        });
+
+    }
+
+    @Override
+    public int getCount() {
+        return mMessages.size();
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return position;
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public int getViewTypeCount() {
+        return 10;
+    }
+
+    private static final int VIEW_TYPE_NORMAL_TEXT = 0;
+    private static final int VIEW_TYPE_FW_TEXT = 1;
+    private static final int VIEW_TYPE_NORMAL_SINGLE_IMAGE = 2;
+    private static final int VIEW_TYPE_FW_SINGLE_IMAGE = 3;
+    private static final int VIEW_TYPE_NORMAL_MULTI_IMAGE = 4;
+    private static final int VIEW_TYPE_FW_MULTI_IMAGE = 5;
+    private static final int VIEW_TYPE_NORMAL_VOICE = 6;
+    private static final int VIEW_TYPE_FW_VOICE = 7;
+    private static final int VIEW_TYPE_NORMAL_VIDEO = 8;
+    private static final int VIEW_TYPE_FW_VIDEO = 9;
+
+    /**
+     * @see PublicMessage#getType() <br/>
+     * 1=文字消息;2=图文消息;3=语音消息; 4=视频消息;5、转载<br/>
+     * 分的视图类型有: <br/>
+     * {@link #VIEW_TYPE_NORMAL_TEXT}0、普通文字消息视图<br/>
+     * {@link #VIEW_TYPE_FW_TEXT} 1、转载文字消息视图 <br/>
+     * {@link #VIEW_TYPE_NORMAL_SINGLE_IMAGE} 2、普通单张图片的视图<br/>
+     * {@link #VIEW_TYPE_FW_SINGLE_IMAGE} 3、转载单张图片的视图<br/>
+     * {@link #VIEW_TYPE_NORMAL_MULTI_IMAGE}4、普通多张图片的视图<br/>
+     * {@link #VIEW_TYPE_FW_MULTI_IMAGE} 5、转载多张图片的视图<br/>
+     * {@link #VIEW_TYPE_NORMAL_VOICE} 6、普通音频视图<br/>
+     * {@link #VIEW_TYPE_FW_VOICE} 7、转载音频视图<br/>
+     * {@link #VIEW_TYPE_NORMAL_VIDEO}8、普通视频视图<br/>
+     * {@link #VIEW_TYPE_FW_VIDEO} 9、转载视频视图<br/>
+     */
+    @Override
+    public int getItemViewType(int position) {
+        PublicMessage message = mMessages.get(position);
+        boolean fromSelf = message.getSource() == PublicMessage.SOURCE_SELF;
+        PublicMessage.Body body = message.getBody();
+        if (body == null) {// 如果为空,那么可能是数据错误,直接返回一个普通的文本视图
+            return VIEW_TYPE_NORMAL_TEXT;
+        }
+        if (body.getType() == PublicMessage.TYPE_TEXT) {// 文本视图
+            if (fromSelf)
+                return VIEW_TYPE_NORMAL_TEXT;
+            else
+                return VIEW_TYPE_FW_TEXT;
+        } else if (body.getType() == PublicMessage.TYPE_IMG) {
+            if (body.getImages() == null || body.getImages().size() <= 1) {// 普通的单张图片的视图
+                if (fromSelf)
+                    return VIEW_TYPE_NORMAL_SINGLE_IMAGE;
+                else
+                    return VIEW_TYPE_FW_SINGLE_IMAGE;
+            } else {// 普通的多张图片视图
+                if (fromSelf)
+                    return VIEW_TYPE_NORMAL_MULTI_IMAGE;
+                else
+                    return VIEW_TYPE_FW_MULTI_IMAGE;
+            }
+        } else if (body.getType() == PublicMessage.TYPE_VOICE) {// 普通音频
+            if (fromSelf)
+                return VIEW_TYPE_NORMAL_VOICE;
+            else
+                return VIEW_TYPE_FW_VOICE;
+        } else if (body.getType() == PublicMessage.TYPE_VIDEO) {// 普通视频
+            if (fromSelf)
+                return VIEW_TYPE_NORMAL_VIDEO;
+            else
+                return VIEW_TYPE_FW_VIDEO;
+        } else {// 其他,数据错误
+            return VIEW_TYPE_NORMAL_TEXT;
+        }
+
+    }
+
+    @Override
+    public View getView(final int position, View convertView, final ViewGroup parent) {
+        int viewType = getItemViewType(position);
+        ViewHolder viewHolder = null;
+        if (convertView == null || ((Integer) convertView.getTag(R.id.tag_key_list_item_type)) != viewType) {
+            convertView = mInflater.inflate(R.layout.p_msg_item_main_body, null);
+            View innerView = null;
+            if (viewType == VIEW_TYPE_NORMAL_TEXT) {
+                viewHolder = new NormalTextHolder();
+            } else if (viewType == VIEW_TYPE_FW_TEXT) {
+                FwTextHolder holder = new FwTextHolder();
+                innerView = mInflater.inflate(R.layout.p_msg_item_fw_text, null);
+                holder.text_tv = (TextView) innerView.findViewById(R.id.text_tv);
+                viewHolder = holder;
+            } else if (viewType == VIEW_TYPE_NORMAL_SINGLE_IMAGE) {
+                NormalSingleImageHolder holder = new NormalSingleImageHolder();
+                innerView = mInflater.inflate(R.layout.p_msg_item_normal_single_img, null);
+                holder.image_view = (ImageView) innerView.findViewById(R.id.image_view);
+                viewHolder = holder;
+            } else if (viewType == VIEW_TYPE_FW_SINGLE_IMAGE) {
+                FwSingleImageHolder holder = new FwSingleImageHolder();
+                innerView = mInflater.inflate(R.layout.p_msg_item_fw_single_img, null);
+                holder.text_tv = (TextView) innerView.findViewById(R.id.text_tv);
+                holder.image_view = (ImageView) innerView.findViewById(R.id.image_view);
+                viewHolder = holder;
+            } else if (viewType == VIEW_TYPE_NORMAL_MULTI_IMAGE) {
+                NormalMultiImageHolder holder = new NormalMultiImageHolder();
+                innerView = mInflater.inflate(R.layout.p_msg_item_normal_multi_img, null);
+                holder.grid_view = (MyGridView) innerView.findViewById(R.id.grid_view);
+                viewHolder = holder;
+            } else if (viewType == VIEW_TYPE_FW_MULTI_IMAGE) {
+                FwMultiImageHolder holder = new FwMultiImageHolder();
+                innerView = mInflater.inflate(R.layout.p_msg_item_fw_multi_img, null);
+                holder.text_tv = (TextView) innerView.findViewById(R.id.text_tv);
+                holder.grid_view = (MyGridView) innerView.findViewById(R.id.grid_view);
+                viewHolder = holder;
+            } else if (viewType == VIEW_TYPE_NORMAL_VOICE) {
+                NormalVoiceHolder holder = new NormalVoiceHolder();
+                innerView = mInflater.inflate(R.layout.p_msg_item_normal_voice, null);
+                holder.img_view = (ImageView) innerView.findViewById(R.id.img_view);
+                holder.voice_action_img = (ImageView) innerView.findViewById(R.id.voice_action_img);
+                holder.voice_desc_tv = (TextView) innerView.findViewById(R.id.voice_desc_tv);
+                viewHolder = holder;
+            } else if (viewType == VIEW_TYPE_FW_VOICE) {
+                FwVoiceHolder holder = new FwVoiceHolder();
+                innerView = mInflater.inflate(R.layout.p_msg_item_fw_voice, null);
+                holder.text_tv = (TextView) innerView.findViewById(R.id.text_tv);
+                holder.img_view = (ImageView) innerView.findViewById(R.id.img_view);
+                holder.voice_action_img = (ImageView) innerView.findViewById(R.id.voice_action_img);
+                holder.voice_desc_tv = (TextView) innerView.findViewById(R.id.voice_desc_tv);
+                viewHolder = holder;
+            } else if (viewType == VIEW_TYPE_NORMAL_VIDEO) {
+                NormalVideoHolder holder = new NormalVideoHolder();
+                innerView = mInflater.inflate(R.layout.p_msg_item_normal_video, null);
+                holder.video_thumb_img = (ImageView) innerView.findViewById(R.id.video_thumb_img);
+                holder.video_desc_tv = (TextView) innerView.findViewById(R.id.video_desc_tv);
+                viewHolder = holder;
+            } else if (viewType == VIEW_TYPE_FW_VIDEO) {
+                FwVideoHolder holder = new FwVideoHolder();
+                innerView = mInflater.inflate(R.layout.p_msg_item_fw_video, null);
+                holder.text_tv = (TextView) innerView.findViewById(R.id.text_tv);
+                holder.video_thumb_img = (ImageView) innerView.findViewById(R.id.video_thumb_img);
+                holder.video_desc_tv = (TextView) innerView.findViewById(R.id.video_desc_tv);
+                viewHolder = holder;
+            }
+            viewHolder.location_tv = (TextView) convertView.findViewById(R.id.location_tv);
+            viewHolder.avatar_img = (ImageView) convertView.findViewById(R.id.avatar_img);
+            viewHolder.nick_name_tv = (TextView) convertView.findViewById(R.id.nick_name_tv);
+            viewHolder.time_tv = (TextView) convertView.findViewById(R.id.time_tv);
+            viewHolder.body_tv = (TextView) convertView.findViewById(R.id.body_tv);
+            viewHolder.content_fl = (FrameLayout) convertView.findViewById(R.id.content_fl);
+            viewHolder.delete_tv = (TextView) convertView.findViewById(R.id.delete_tv);
+            viewHolder.operation_more_img = (ImageView) convertView.findViewById(R.id.operation_more_img);
+            viewHolder.multi_praise_tv = (TextView) convertView.findViewById(R.id.multi_praise_tv);
+            viewHolder.command_listView = (ListView) convertView.findViewById(R.id.command_listView);
+            viewHolder.praise_rl = (RelativeLayout) convertView.findViewById(R.id.praise_rl);
+            viewHolder.img_praise_top = (ImageView) convertView.findViewById(R.id.img_praise_top);
+            viewHolder.img_praise_line = convertView.findViewById(R.id.img_praise_line);
+            viewHolder.daily_share_tv = (TextView) convertView.findViewById(R.id.daily_share_tv);
+            if (innerView != null) {
+                viewHolder.content_fl.addView(innerView);
+            }
+            convertView.setTag(R.id.tag_key_list_item_type, viewType);
+            convertView.setTag(R.id.tag_key_list_item_view, viewHolder);
+        } else {
+            viewHolder = (ViewHolder) convertView.getTag(R.id.tag_key_list_item_view);
+        }
+        final ViewHolder finalHolder = viewHolder;// 和ViewHolder一样的,只不过用作匿名内部类里面调用需要final
+        // set data
+        final PublicMessage message = mMessages.get(position);
+        if (message == null) {
+            return convertView;
+        }
+
+        //判断有地理位置信息
+        if (message.getLocation() != null && message.getLocation().length() > 0) {
+            viewHolder.location_tv.setVisibility(View.VISIBLE);
+            viewHolder.location_tv.setText(message.getLocation());
+        } else {
+            viewHolder.location_tv.setVisibility(View.GONE);
+        }
+        // 设备头像
+        AvatarHelper.getInstance().displayAvatar(message.getUserId(), viewHolder.avatar_img, true);
+        /* 设置昵称 */
+        SpannableStringBuilder nickNamebuilder = new SpannableStringBuilder();
+        final String userId = message.getUserId();
+        String showName = getShowName(userId, message.getNickName());
+        UserClickableSpan.setClickableSpan(mContext, nickNamebuilder, showName, message.getUserId());
+        if (getType() == AppConstant.CIRCLE_TYPE_PERSONAL_SPACE) { //个人中心  移除用户名
+            viewHolder.nick_name_tv.setVisibility(View.GONE);
+        } else {//商务圈
+            viewHolder.nick_name_tv.setText(nickNamebuilder);
+//            viewHolder.nick_name_tv.setLinksClickable(true);
+//            viewHolder.nick_name_tv.setMovementMethod(LinkMovementClickMethod.getInstance());
+
+        }
+        // 设置头像的点击事件
+        viewHolder.avatar_img.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (getType() == AppConstant.CIRCLE_TYPE_MY_BUSINESS && (mContext instanceof BusinessCircleActivity)) {
+                    Intent intent = new Intent(mContext, BusinessCircleActivity.class);
+                    intent.putExtra(AppConstant.EXTRA_CIRCLE_TYPE, AppConstant.CIRCLE_TYPE_PERSONAL_SPACE);
+                    intent.putExtra(AppConstant.EXTRA_USER_ID, message.getUserId());
+                    intent.putExtra(AppConstant.EXTRA_NICK_NAME, mShowNameMaps.get(userId));
+                    mContext.startActivity(intent);
+                } else {
+//                    Toast.makeText(mContext,"点了也没用",Toast.LENGTH_SHORT).show();
+                    return;
+                }
+            }
+        });
+
+        // 获取消息本身的内容
+        Body body = message.getBody();
+        if (body == null) {
+            return convertView;
+        }
+
+        // 是否是转载的
+        boolean isForwarding = message.getSource() == PublicMessage.SOURCE_FORWARDING;
+
+        // 设置body_tv
+        if (TextUtils.isEmpty(body.getText().toString())) {
+            viewHolder.body_tv.setVisibility(View.GONE);
+        } else {
+            viewHolder.body_tv.setVisibility(View.VISIBLE);
+            if (body.getText().contains("我也去分享")) {
+                viewHolder.daily_share_tv.setVisibility(View.VISIBLE);
+                viewHolder.daily_share_tv.setText(MyApplication.getInstance().getString(R.string.wd_experience_title));
+
+//                viewHolder.daily_share_tv.setTextColor(mContext.getResources().getColor(R.color.link_nick_name_color));
+//                viewHolder.daily_share_tv.setOnClickListener(new View.OnClickListener() {
+//                    @Override
+//                    public void onClick(View v) {
+//                        if (finalHolder.body_tv.getText().toString().contains("(我也去分享)")) {
+//                            Intent intent = new Intent(mContext, WorkDailyAddActivity.class);
+//                            intent.putExtra("resubmit","qzoneshare");
+//                            mContext.startActivity(intent);
+//                        }
+//                    }
+//                });
+            } else {
+                viewHolder.daily_share_tv.setVisibility(View.GONE);
+                viewHolder.daily_share_tv.setText(MyApplication.getInstance().getString(R.string.qzone_out_share));
+            }
+            viewHolder.body_tv.setText(body.getText());
+
+        }
+        viewHolder.body_tv.setOnLongClickListener(new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+                showBodyTextLongClickDialog(finalHolder.body_tv.getText().toString());
+                return true;
+            }
+        });
+
+
+        // 设置发布时间 "yyy年MM月dd日 HH:mm"
+//        viewHolder.time_tv.setText(TimeUtils.getPreciseTimeDesc(message.getTime()));
+        viewHolder.time_tv.setText(DateFormatUtil.long2Str(message.getTime() * 1000, "yyyy-MM-dd HH:mm"));
+
+
+        // 设置删除按钮
+        if (userId.equals(mLoginUserId)) {// 是我发的消息
+            viewHolder.delete_tv.setVisibility(View.VISIBLE);
+            viewHolder.delete_tv.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    showDeleteMsgDialog(position);
+                }
+            });
+        } else {
+            viewHolder.delete_tv.setVisibility(View.GONE);
+            viewHolder.delete_tv.setOnClickListener(null);
+        }
+
+        viewHolder.operation_more_img.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                showOperationMorePopWindow(finalHolder.operation_more_img, position);
+            }
+        });
+
+		/* 显示多少人赞过 */
+        List<Praise> praises = message.getPraises();
+        if (praises != null && praises.size() > 0) {
+            viewHolder.multi_praise_tv.setVisibility(View.VISIBLE);
+            SpannableStringBuilder builder = new SpannableStringBuilder();
+            for (int i = 0; i < praises.size(); i++) {
+                String praiseName = getShowName(praises.get(i).getUserId(), praises.get(i).getNickName());
+                UserClickableSpan.setClickableSpan(mContext, builder, praiseName, praises.get(i).getUserId());
+                if (i < praises.size() - 1)
+                    builder.append("、");
+            }
+            if (message.getPraise() > praises.size()) {
+                builder.append("...");
+            }
+
+            viewHolder.multi_praise_tv.setText(builder);
+
+        } else {
+            viewHolder.multi_praise_tv.setVisibility(View.GONE);
+            viewHolder.multi_praise_tv.setText("");
+        }
+        viewHolder.multi_praise_tv.setLinksClickable(true);
+        viewHolder.multi_praise_tv.setMovementMethod(LinkMovementClickMethod.getInstance());
+            /* 设置回复 */
+        final List<Comment> comments = message.getComments();
+
+        if (comments != null && comments.size() > 0) {
+            viewHolder.command_listView.setVisibility(View.VISIBLE);
+            mAdapter = new CommentAdapter(position, comments);
+            viewHolder.command_listView.setAdapter(mAdapter);
+        } else {
+            viewHolder.command_listView.setVisibility(View.GONE);
+            viewHolder.command_listView.setAdapter(null);
+        }
+
+        if (viewHolder.multi_praise_tv.getVisibility() == View.VISIBLE && viewHolder.command_listView.getVisibility() == View.VISIBLE) {
+            viewHolder.img_praise_top.setVisibility(View.VISIBLE);
+            viewHolder.praise_rl.setVisibility(View.VISIBLE);
+            viewHolder.img_praise_line.setVisibility(View.VISIBLE);
+        } else if (viewHolder.command_listView.getVisibility() == View.VISIBLE || viewHolder.multi_praise_tv.getVisibility() == View.VISIBLE) {
+            viewHolder.img_praise_top.setVisibility(View.VISIBLE);
+            viewHolder.img_praise_line.setVisibility(View.GONE);
+            viewHolder.praise_rl.setVisibility(View.VISIBLE);
+        } else if (viewHolder.multi_praise_tv.getVisibility() == View.GONE && viewHolder.command_listView.getVisibility() == View.GONE) {
+            viewHolder.praise_rl.setVisibility(View.GONE);
+            viewHolder.img_praise_top.setVisibility(View.GONE);
+            viewHolder.img_praise_line.setVisibility(View.GONE);
+        }
+
+        // //////////////////上面是公用的部分,下面是每个Type不同的部分/////////////////////////////////////////
+        // 转载的消息会有一个转载人和text
+        SpannableStringBuilder forwardingBuilder = null;
+        if (isForwarding) {// 转载的那个人和说的话
+            forwardingBuilder = new SpannableStringBuilder();
+            String forwardName = getShowName(message.getFowardUserId(), message.getFowardNickname());
+            UserClickableSpan.setClickableSpan(mContext, forwardingBuilder, forwardName, message.getFowardUserId());
+            if (!TextUtils.isEmpty(message.getFowardText())) {
+                forwardingBuilder.append(" : ");
+                forwardingBuilder.append(message.getFowardText());
+            }
+        }
+        if (viewType == VIEW_TYPE_NORMAL_TEXT) {
+            viewHolder.content_fl.setVisibility(View.GONE);// 因为有个MarginTop
+            // 5dp,所以没内容的时候隐藏,免得中间间隔有点大
+        } else if (viewType == VIEW_TYPE_FW_TEXT) {
+            TextView text_tv = ((FwTextHolder) viewHolder).text_tv;
+            text_tv.setText(forwardingBuilder != null ? forwardingBuilder : "");
+        } else if (viewType == VIEW_TYPE_NORMAL_SINGLE_IMAGE) {
+            ImageView image_view = ((NormalSingleImageHolder) viewHolder).image_view;
+            String url = message.getFirstImageOriginal();
+            if (!TextUtils.isEmpty(url)) {
+                ImageLoader.getInstance().displayImage(url, image_view);
+                image_view.setOnClickListener(new SingleImageClickListener(url));
+
+                final View finalConvertView = convertView;
+            } else {
+                image_view.setImageBitmap(null);
+            }
+        } else if (viewType == VIEW_TYPE_FW_SINGLE_IMAGE) {
+            TextView text_tv = ((FwSingleImageHolder) viewHolder).text_tv;
+            ImageView image_view = ((FwSingleImageHolder) viewHolder).image_view;
+            text_tv.setText(forwardingBuilder != null ? forwardingBuilder : "");
+
+            String url = message.getFirstImageOriginal();
+            if (!TextUtils.isEmpty(url)) {
+                ImageLoader.getInstance().displayImage(url, image_view);
+                image_view.setOnClickListener(new SingleImageClickListener(url));
+            } else {
+                image_view.setImageBitmap(null);
+            }
+
+        } else if (viewType == VIEW_TYPE_NORMAL_MULTI_IMAGE) {
+            MyGridView grid_view = ((NormalMultiImageHolder) viewHolder).grid_view;
+            if (body.getImages() != null) {
+                grid_view.setAdapter(new ImagesInnerGridViewAdapter(mContext, body.getImages()));
+                grid_view.setOnItemClickListener(new MultipleImagesClickListener(body.getImages()));
+            } else {
+                grid_view.setAdapter(null);
+            }
+
+        } else if (viewType == VIEW_TYPE_FW_MULTI_IMAGE) {
+            TextView text_tv = ((FwMultiImageHolder) viewHolder).text_tv;
+            MyGridView grid_view = ((FwMultiImageHolder) viewHolder).grid_view;
+            text_tv.setText(forwardingBuilder != null ? forwardingBuilder : "");
+            if (body.getImages() != null) {
+                grid_view.setAdapter(new ImagesInnerGridViewAdapter(mContext, body.getImages()));
+                grid_view.setOnItemClickListener(new MultipleImagesClickListener(body.getImages()));
+            } else {
+                grid_view.setAdapter(null);
+            }
+        } else if (viewType == VIEW_TYPE_NORMAL_VOICE) {
+            final NormalVoiceHolder holder = (NormalVoiceHolder) viewHolder;
+            if (mVoicePlayId == null || !mVoicePlayId.equals(message.getMessageId())) {// 处于非播放状态
+                holder.voice_action_img.setImageResource(R.drawable.feed_main_player_play);
+            } else {
+                holder.voice_action_img.setImageResource(R.drawable.feed_main_player_pause);
+            }
+            holder.voice_action_img.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    play(holder, message);
+                }
+            });
+
+            String imageUrl = message.getFirstImageOriginal();
+            if (TextUtils.isEmpty(imageUrl)) {
+                AvatarHelper.getInstance().displayAvatar(message.getUserId(), holder.img_view, false);
+                holder.img_view.setOnClickListener(
+                        new SingleImageClickListener(AvatarHelper.getAvatarUrl(message.getUserId(), false)));
+            } else {
+                ImageLoader.getInstance().displayImage(imageUrl, holder.img_view);
+                holder.img_view.setOnClickListener(new SingleImageClickListener(imageUrl));
+            }
+
+        } else if (viewType == VIEW_TYPE_FW_VOICE) {
+            final FwVoiceHolder holder = (FwVoiceHolder) viewHolder;
+            holder.text_tv.setText(forwardingBuilder != null ? forwardingBuilder : "");
+
+            if (mVoicePlayId == null || !mVoicePlayId.equals(message.getMessageId())) {// 处于非播放状态
+                holder.voice_action_img.setImageResource(R.drawable.feed_main_player_play);
+            } else {
+                holder.voice_action_img.setImageResource(R.drawable.feed_main_player_pause);
+            }
+            holder.voice_action_img.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    play(holder, message);
+                }
+            });
+
+            String imageUrl = message.getFirstImageOriginal();
+            if (TextUtils.isEmpty(imageUrl)) {
+                AvatarHelper.getInstance().displayAvatar(message.getUserId(), holder.img_view, false);
+                holder.img_view.setOnClickListener(
+                        new SingleImageClickListener(AvatarHelper.getAvatarUrl(message.getUserId(), false)));
+            } else {
+                ImageLoader.getInstance().displayImage(imageUrl, holder.img_view);
+                holder.img_view.setOnClickListener(new SingleImageClickListener(imageUrl));
+            }
+
+        } else if (viewType == VIEW_TYPE_NORMAL_VIDEO) {
+            NormalVideoHolder holder = (NormalVideoHolder) viewHolder;
+
+            String imageUrl = message.getFirstImageOriginal();
+            if (TextUtils.isEmpty(imageUrl)) {
+                AvatarHelper.getInstance().displayAvatar(message.getUserId(), holder.video_thumb_img, false);
+            } else {
+                ImageLoader.getInstance().displayImage(imageUrl, holder.video_thumb_img);
+            }
+
+            // holder.video_desc_tv.setText();
+        } else if (viewType == VIEW_TYPE_FW_VIDEO) {
+            FwVideoHolder holder = (FwVideoHolder) viewHolder;
+            holder.text_tv.setText(forwardingBuilder != null ? forwardingBuilder : "");
+
+            String imageUrl = message.getFirstImageOriginal();
+            if (TextUtils.isEmpty(imageUrl)) {
+                AvatarHelper.getInstance().displayAvatar(message.getUserId(), holder.video_thumb_img, false);
+            } else {
+                ImageLoader.getInstance().displayImage(imageUrl, holder.video_thumb_img);
+            }
+        }
+
+        return convertView;
+    }
+
+    public void notifyDataSetChanged(boolean isfrish) {
+        this.isfrish = isfrish;
+        notifyDataSetChanged();
+    }
+
+    class ViewHolder {
+        ImageView avatar_img;
+        TextView nick_name_tv;
+        TextView time_tv;
+        TextView body_tv;
+        FrameLayout content_fl;
+        TextView delete_tv;
+        ImageView operation_more_img;
+        TextView multi_praise_tv;
+        ListView command_listView;
+        RelativeLayout praise_rl;
+        ImageView img_praise_top;
+        View img_praise_line;
+        TextView location_tv;//地理位置信息
+        TextView daily_share_tv; //分享
+    }
+
+    /* 普通的Text */
+    class NormalTextHolder extends ViewHolder {
+    }
+
+    /* 转载的Text */
+    class FwTextHolder extends ViewHolder {
+        TextView text_tv;
+    }
+
+    /* 普通的单张图片 */
+    class NormalSingleImageHolder extends ViewHolder {
+        ImageView image_view;
+    }
+
+    boolean isfrish = false;
+
+    /* 转载的单张图片 */
+    class FwSingleImageHolder extends ViewHolder {
+        TextView text_tv;
+        ImageView image_view;
+    }
+
+    /* 普通的多张图片 */
+    class NormalMultiImageHolder extends ViewHolder {
+        MyGridView grid_view;
+    }
+
+    /* 转载的多张图片 */
+    class FwMultiImageHolder extends ViewHolder {
+        TextView text_tv;
+        MyGridView grid_view;
+    }
+
+    /* 普通的音频 */
+    class NormalVoiceHolder extends ViewHolder {
+        ImageView img_view;
+        ImageView voice_action_img;
+        TextView voice_desc_tv;
+    }
+
+    /* 转载的音频 */
+    class FwVoiceHolder extends ViewHolder {
+        TextView text_tv;
+        ImageView img_view;
+        ImageView voice_action_img;
+        TextView voice_desc_tv;
+    }
+
+    /* 普通的视频 */
+    class NormalVideoHolder extends ViewHolder {
+        ImageView video_thumb_img;
+        TextView video_desc_tv;
+    }
+
+    /* 转载的视频 */
+    class FwVideoHolder extends ViewHolder {
+        TextView text_tv;
+        ImageView video_thumb_img;
+        TextView video_desc_tv;
+    }
+
+    public class CommentAdapter extends BaseAdapter {
+        private int messagePosition;
+        private List<Comment> datas;
+        private Map<Integer, Boolean> is;
+
+
+        public CommentAdapter(int messagePosition, List<Comment> datas) {
+            this.messagePosition = messagePosition;
+            this.datas = datas;
+
+        }
+
+        @Override
+        public int getCount() {
+            return datas.size();
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return position;
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(final int position, View convertView, ViewGroup parent) {
+            ViewHolder holder = null;
+            if (convertView == null) {
+                holder = new ViewHolder();
+                convertView = LayoutInflater.from(mContext).inflate(R.layout.p_msg_comment_list_item, null);
+                holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
+                convertView.setTag(holder);
+            } else {
+                holder = (ViewHolder) convertView.getTag();
+            }
+            final Comment comment = datas.get(position);
+            SpannableStringBuilder builder = new SpannableStringBuilder();
+            String showName = getShowName(comment.getUserId(), comment.getNickName());
+            UserClickableSpan.setClickableSpan(mContext, builder, showName, comment.getUserId());// 设置评论者的ClickSpanned
+
+            if (!TextUtils.isEmpty(comment.getToUserId()) && !TextUtils.isEmpty(comment.getToNickname())) {
+                builder.append(mContext.getString(R.string.task_reply));
+                String toShowName = getShowName(comment.getToUserId(), comment.getToNickname());
+                UserClickableSpan.setClickableSpan(mContext, builder, toShowName, comment.getToUserId());// 设置被评论者的ClickSpanned
+            }
+
+            builder.append(":");
+            // 设置评论内容
+            String commentBody = comment.getBody();
+            if (!TextUtils.isEmpty(commentBody)) {
+                commentBody = StringUtil.replaceSpecialChar(comment.getBody());
+                CharSequence charSequence = HtmlUtils.transform200SpanString(commentBody.replaceAll("\n", "\r\n"),
+                        true);
+                builder.append(charSequence);
+            }
+
+
+            holder.text_view.setText(builder);
+            holder.text_view.setLinksClickable(true);
+            holder.text_view.setMovementMethod(LinkMovementClickMethod.getInstance());
+
+            holder.text_view.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (comment.getUserId().equals(mLoginUserId)) {// 如果消息是我发的,那么就弹出删除和复制的对话框
+                        showCommentLongClickDialog(messagePosition, position, CommentAdapter.this);
+                    } else {// 弹出回复的框
+                        String toShowName = getShowName(comment.getUserId(), comment.getNickName());
+                        // 懒得写回调的,直接强转,以后如果不适用,可以写个接口回调
+                        if (mContext instanceof BusinessCircleActivity) {
+                            ((BusinessCircleActivity) mContext).showCommentEnterView(messagePosition,
+                                    comment.getUserId(), comment.getNickName(), toShowName);
+
+                        } else {
+                            ((MainActivity) mContext).getBusinessCircleFragment().showCommentEnterView(messagePosition,
+                                    comment.getUserId(), comment.getNickName(), toShowName);
+                        }
+                    }
+                }
+            });
+
+            holder.text_view.setOnLongClickListener(new View.OnLongClickListener() {
+                @Override
+                public boolean onLongClick(View v) {
+                    showCommentLongClickDialog(messagePosition, position, CommentAdapter.this);
+                    return true;
+                }
+            });
+
+            return convertView;
+        }
+
+        class ViewHolder {
+            TextView text_view;
+        }
+
+    }
+
+    /*
+     * 回调接口的编写 暂时没有用上
+     *
+     */
+    public showCEView ceView;
+
+    public void setShowCEViewListener(showCEView ceView) {
+        this.ceView = ceView;
+    }
+
+    public void show(int messagePosition, String toUserId, String toNickname, String toShowName) {
+        BusinessCircleFragment fra = new BusinessCircleFragment();
+        // BusinessCircleActivity fra=new BusinessCircleActivity();
+        setShowCEViewListener(fra);
+        if (ceView != null) {
+            ceView.showView(messagePosition, toUserId, toNickname, toShowName);
+
+        }
+    }
+
+    private class SingleImageClickListener implements View.OnClickListener {
+        private String url;
+
+        public SingleImageClickListener(String url) {
+            this.url = url;
+        }
+
+        @Override
+        public void onClick(View v) {
+            Intent intent = new Intent(mContext, SingleImagePreviewActivity.class);
+            intent.putExtra(AppConstant.EXTRA_IMAGE_URI, url);
+            mContext.startActivity(intent);
+        }
+
+    }
+
+    private class MultipleImagesClickListener implements AdapterView.OnItemClickListener {
+        private List<Resource> images;
+
+        public MultipleImagesClickListener(List<Resource> images) {
+            this.images = images;
+        }
+
+        @Override
+        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+            if (images == null || images.size() <= 0) {
+                return;
+            }
+            ArrayList<String> lists = new ArrayList<String>();
+            for (int i = 0; i < images.size(); i++) {
+                lists.add(images.get(i).getOriginalUrl());
+            }
+            Intent intent = new Intent(mContext, MultiImagePreviewActivity.class);
+            intent.putExtra(AppConstant.EXTRA_IMAGES, lists);
+            intent.putExtra(AppConstant.EXTRA_POSITION, position);
+            intent.putExtra(AppConstant.EXTRA_CHANGE_SELECTED, false);
+            mContext.startActivity(intent);
+        }
+
+    }
+
+    public static String ToDBC(String input) {
+        char[] c = input.toCharArray();
+        for (int i = 0; i < c.length; i++) {
+            if (c[i] == 12288) {
+                c[i] = (char) 32;
+                continue;
+            }
+            if (c[i] > 65280 && c[i] < 65375)
+                c[i] = (char) (c[i] - 65248);
+        }
+        return new String(c);
+    }
+
+    private String getShowName(String userId, String defaultName) {
+        String showName = null;
+        if (!mShowNameMaps.containsKey(userId)) {
+            if (userId.equals(mLoginUserId)) {
+                mShowNameMaps.put(userId, mLoginNickName);
+            } else {
+                Friend friend = FriendDao.getInstance().getFriend(mLoginUserId, userId);
+                if (friend != null) {
+                    mShowNameMaps.put(userId, friend.getShowName());
+                }
+            }
+        }
+        showName = mShowNameMaps.get(userId);
+        if (TextUtils.isEmpty(showName)) {
+            showName = defaultName;
+            mShowNameMaps.put(userId, showName);
+        }
+        return showName;
+    }
+
+    /* 操作事件 */
+    private void showDeleteMsgDialog(final int position) {
+        new AlertDialog.Builder(mContext).setTitle(R.string.common_notice).setMessage(R.string.delete_prompt)
+                .setPositiveButton(R.string.common_sure, new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        deleteMsg(position);
+                    }
+                }).setNegativeButton(R.string.common_cancel, null).create().show();
+    }
+
+    private void deleteMsg(final int position) {
+        final PublicMessage message = mMessages.get(position);
+        if (message == null) {
+            return;
+        }
+        HashMap<String, String> params = new HashMap<String, String>();
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        params.put("messageId", message.getMessageId());
+        ProgressDialogUtil.show(mProgressDialog);
+        StringJsonObjectRequest<Void> request = new StringJsonObjectRequest<Void>(
+                MyApplication.getInstance().getConfig().CIRCLE_MSG_DELETE, new ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError arg0) {
+                ProgressDialogUtil.dismiss(mProgressDialog);
+                ToastUtil.showErrorNet(mContext);
+            }
+        }, new StringJsonObjectRequest.Listener<Void>() {
+            @Override
+            public void onResponse(ObjectResult<Void> result) {
+                boolean success = Result.defaultParser(mContext, result, true);
+                if (success) {
+                    CircleMessageDao.getInstance().deleteMessage(message.getMessageId());// 删除数据库的记录(如果存在的话)
+                    mMessages.remove(position);
+                    notifyDataSetChanged();
+                }
+                ProgressDialogUtil.dismiss(mProgressDialog);
+            }
+        }, Void.class, params);
+        ((BaseActivity) mContext).addDefaultRequest(request);
+    }
+
+    private void showBodyTextLongClickDialog(final String text) {
+        CharSequence[] items = new CharSequence[]{MyApplication.getInstance().getString(R.string.qzone_copy)};
+        new AlertDialog.Builder(mContext).setItems(items, new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                switch (which) {
+                    case 0:// 复制文字
+                        SystemUtil.copyText(mContext, text);
+                        break;
+                }
+            }
+        }).setCancelable(true).create().show();
+    }
+
+    private void showCommentLongClickDialog(final int messagePosition, final int commentPosition,
+                                            final CommentAdapter adapter) {
+        if (messagePosition < 0 || messagePosition >= mMessages.size()) {
+            return;
+        }
+        final PublicMessage message = mMessages.get(messagePosition);
+        if (message == null) {
+            return;
+        }
+        final List<Comment> comments = message.getComments();
+        if (comments == null) {
+            return;
+        }
+        if (commentPosition < 0 || commentPosition >= comments.size()) {
+            return;
+        }
+        final Comment comment = comments.get(commentPosition);
+
+        CharSequence[] items;
+        if (comment.getUserId().equals(mLoginUserId) || message.getUserId().equals(mLoginUserId)) {// 我的评论,或者我的消息,那么我就可以删除
+            items = new CharSequence[]{mContext.getString(R.string.qzone_copy), mContext.getString(R.string.common_delete)};
+        } else {
+            items = new CharSequence[]{mContext.getString(R.string.qzone_copy)};
+        }
+
+        new AlertDialog.Builder(mContext).setItems(items, new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                switch (which) {
+                    case 0:// 复制文字
+                        if (TextUtils.isEmpty(comment.getBody())) {
+                            return;
+                        }
+                        SystemUtil.copyText(mContext, comment.getBody());
+                        break;
+                    case 1:
+                        deleteComment(message.getMessageId(), comment.getCommentId(), comments, commentPosition, adapter);
+                        break;
+                }
+            }
+        }).setCancelable(true).create().show();
+    }
+
+    /**
+     * 删除一条回复
+     */
+    private void deleteComment(String messageId, String commentId, final List<Comment> comments,
+                               final int commentPosition, final CommentAdapter adapter) {
+        HashMap<String, String> params = new HashMap<String, String>();
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        params.put("messageId", messageId);
+        params.put("commentId", commentId);
+        StringJsonObjectRequest<Void> request = new StringJsonObjectRequest<Void>(
+                MyApplication.getInstance().getConfig().MSG_COMMENT_DELETE, new ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError arg0) {
+                ToastUtil.showErrorNet(mContext);
+            }
+        }, new StringJsonObjectRequest.Listener<Void>() {
+            @Override
+            public void onResponse(ObjectResult<Void> result) {
+                boolean success = Result.defaultParser(mContext, result, true);
+                if (success) {
+                    comments.remove(commentPosition);
+                    adapter.notifyDataSetChanged();
+                }
+            }
+        }, Void.class, params);
+        ((BaseActivity) mContext).addDefaultRequest(request);
+    }
+
+    /* 点击更多操作弹出的对话框 */
+    private OperationMorePopWindow mOperationMorePop;
+
+    private void showOperationMorePopWindow(View anchowView, final int position) {
+        if (mOperationMorePop == null) {
+            mOperationMorePop = new OperationMorePopWindow((Activity) mContext);
+            mOperationMorePop.setOperationMoreListener(new OperationMorePopWindow.OperationMoreListener() {
+                @Override
+                public void onPraise(int messagePosition, boolean isPraise) {
+                    praiseOrCancle(messagePosition, isPraise);
+                }
+
+                @Override
+                public void onGift(int messagePosition) {
+
+                }
+
+                @Override
+                public void onComment(int messagePosition) {
+                    // 懒得写回调的,直接强转,以后如果不适用,可以写个接口回调
+                    if (mContext instanceof BusinessCircleActivity) {
+                        ((BusinessCircleActivity) mContext).showCommentEnterView(messagePosition, null, null, null);
+                    } else {
+                        // 这里当处于的是一个fragment中时,我们让他评论的时候直接跳到详情页去评论
+                        PublicMessage message = mMessages.get(messagePosition);
+                        Intent intent = new Intent(mContext, PMsgDetailActivity.class);
+                        intent.putExtra("public_message", message);
+                        //intent.putExtra("builder",builder);
+                        mContext.startActivity(intent);
+                    }
+                    // 这里有问题,所以暂不使用回调接口实现
+                    // show(messagePosition,null, null, null);
+                }
+            });
+        }
+//        PublicMessage message = mMessages.get(position);
+        PublicMessage message = mMessages.get(position);
+        if (message == null) {
+            return;
+        }
+        mOperationMorePop.show(anchowView, position, message.getIsPraise() == 1 ? false : true);
+    }
+
+    /**
+     * 赞或者取消赞
+     *
+     * @param
+     * @param isPraise
+     */
+    private void praiseOrCancle(final int position, final boolean isPraise) {
+        final PublicMessage message = mMessages.get(position);
+        if (message == null) {
+            return;
+        }
+
+        HashMap<String, String> params = new HashMap<String, String>();
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        params.put("messageId", message.getMessageId());
+        String requestUrl = null;
+        if (isPraise) {
+            requestUrl = MyApplication.getInstance().getConfig().MSG_PRAISE_ADD;
+        } else {
+            requestUrl = MyApplication.getInstance().getConfig().MSG_PRAISE_DELETE;
+        }
+
+        StringJsonObjectRequest<Void> request = new StringJsonObjectRequest<Void>(requestUrl, new ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError arg0) {
+                ToastUtil.showErrorNet(mContext);
+            }
+        }, new StringJsonObjectRequest.Listener<Void>() {
+
+            @Override
+            public void onResponse(ObjectResult<Void> result) {
+                boolean success = Result.defaultParser(mContext, result, true);
+                if (success) {
+                    message.setIsPraise(isPraise ? 1 : 0);
+                    List<Praise> praises = message.getPraises();
+                    if (praises == null) {
+                        praises = new ArrayList<Praise>();
+                        message.setPraises(praises);
+                    }
+                    int praiseCount = message.getPraise();
+                    if (isPraise) {// 代表我点赞
+                        // 消息实体的改变
+                        Praise praise = new Praise();
+                        praise.setUserId(mLoginUserId);
+                        praise.setNickName(mLoginNickName);
+                        praises.add(0, praise);
+                        praiseCount++;
+                        message.setPraise(praiseCount);
+                    } else {// 取消我的赞
+                        // 消息实体的改变
+                        for (int i = 0; i < praises.size(); i++) {
+                            if (mLoginUserId.equals(praises.get(i).getUserId())) {
+                                praises.remove(i);
+                                praiseCount--;
+                                message.setPraise(praiseCount);
+                                break;
+                            }
+                        }
+                    }
+                    notifyDataSetChanged();
+                }
+            }
+        }, Void.class, params);
+        ((BaseActivity) mContext).addDefaultRequest(request);
+    }
+
+    /**
+     * 停止播放声音
+     */
+    private void stopVoice() {
+        Log.d("wang", "stopVoice");
+        if (mAudioPalyer != null) {
+            mAudioPalyer.stop();
+        }
+    }
+
+    private void stopVoiceIDE() {
+        Log.d("wang", "stopVoiceIDE");
+        if (mAudioPalyer != null) {
+            mAudioPalyer.release();
+        }
+    }
+    /********************** 播放声音 ***********************************/
+    /**
+     * @param
+     * @param viewHolder
+     * @param
+     */
+    private void play(ViewHolder viewHolder, PublicMessage message) {
+        String voiceUrl = message.getFirstAudio();
+
+        if (mVoicePlayId == null) {// 没有在播放
+            try {
+                mAudioPalyer.play(voiceUrl);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            mVoicePlayId = message.getMessageId();
+            updateVoiceViewHolderIconStatus(true, viewHolder);
+            mVoicePlayViewHolder = viewHolder;
+        } else {
+            if (mVoicePlayId == message.getMessageId()) {
+                mAudioPalyer.stop();
+                mVoicePlayId = null;
+                updateVoiceViewHolderIconStatus(false, viewHolder);
+                mVoicePlayViewHolder = null;
+            } else {// 正在播放别的, 在播放这个
+                mAudioPalyer.stop();
+                mVoicePlayId = null;
+                if (mVoicePlayViewHolder != null) {
+                    updateVoiceViewHolderIconStatus(false, mVoicePlayViewHolder);
+                }
+                try {
+                    mAudioPalyer.play(voiceUrl);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+
+                mVoicePlayId = message.getMessageId();
+                updateVoiceViewHolderIconStatus(true, viewHolder);
+                mVoicePlayViewHolder = viewHolder;
+            }
+
+        }
+
+    }
+
+    private void updateVoiceViewHolderIconStatus(boolean play, ViewHolder viewHolder) {
+        if (viewHolder instanceof NormalVoiceHolder) {// 普通音频
+            if (play) {
+                ((NormalVoiceHolder) viewHolder).voice_action_img.setImageResource(R.drawable.feed_main_player_pause);
+            } else {
+                ((NormalVoiceHolder) viewHolder).voice_action_img.setImageResource(R.drawable.feed_main_player_play);
+            }
+        } else {// 转载音频
+            if (play) {
+                ((FwVoiceHolder) viewHolder).voice_action_img.setImageResource(R.drawable.feed_main_player_pause);
+            } else {
+                ((FwVoiceHolder) viewHolder).voice_action_img.setImageResource(R.drawable.feed_main_player_play);
+            }
+        }
+    }
+
+    /**
+     * 节口回调的方法
+     */
+    @Override
+    public void ideChange() {
+        stopVoice();
+    }
+
+    /**
+     * 节口回调的方法,
+     */
+    @Override
+    public void ideChangeFragment() {
+    }
+
+}

+ 76 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/adapter/UserClickableSpan.java

@@ -0,0 +1,76 @@
+package com.uas.appme.workcircle.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.TextPaint;
+import android.text.style.ClickableSpan;
+import android.util.Log;
+import android.view.View;
+
+import com.uas.appme.R;
+import com.uas.appme.workcircle.BusinessCircleActivity;
+import com.uas.appme.workcircle.xmpp.AppConstant;
+
+
+public class UserClickableSpan extends ClickableSpan {
+
+	int color = -1;
+	private Context context;
+	private String userId;
+	private String nickName;// 可能也是备注名字,但是不影响,传递到BusinessCircleActivity页面,一样的会查询出备注名
+
+	public UserClickableSpan(Context context, String userId, String nickName) {
+		this(-1, context, userId, nickName);
+	}
+
+	/**
+	 * constructor
+	 * 
+	 * @param color
+	 *            the link color
+	 * @param context
+	 * @param
+	 */
+	public UserClickableSpan(int color, Context context, String userId, String nickName) {
+		if (color != -1) {
+			this.color = color;
+		}
+		this.context = context;
+		this.userId = userId;
+		this.nickName = nickName;
+	}
+
+	/**
+	 * Performs the click action associated with this span.
+	 */
+	public void onClick(View widget) {
+		Log.d("wang","跳到我的空间去");
+		Intent intent = new Intent(context, BusinessCircleActivity.class);
+		intent.putExtra(AppConstant.EXTRA_CIRCLE_TYPE, AppConstant.CIRCLE_TYPE_PERSONAL_SPACE);
+		intent.putExtra(AppConstant.EXTRA_USER_ID, userId);
+		intent.putExtra(AppConstant.EXTRA_NICK_NAME, nickName);
+		context.startActivity(intent);
+	}
+
+	/**
+	 * Makes the text without underline.
+	 */
+	@Override
+	public void updateDrawState(TextPaint ds) {
+		if (color == -1) {
+			ds.setColor(context.getResources().getColor(R.color.link_nick_name_color));
+		} else {
+			ds.setColor(color);
+		}
+		ds.setUnderlineText(false);
+	}
+
+	public static void setClickableSpan(Context context, SpannableStringBuilder builder, String appendData, String userId) {
+		builder.append(appendData);
+		int end = builder.length();
+		int length = appendData.length();
+		builder.setSpan(new UserClickableSpan(context, userId, appendData), end - length, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+	}
+}

+ 305 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/audio/AudioPalyer.java

@@ -0,0 +1,305 @@
+package com.uas.appme.workcircle.audio;
+
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.media.MediaPlayer.OnBufferingUpdateListener;
+import android.media.MediaPlayer.OnCompletionListener;
+import android.media.MediaPlayer.OnErrorListener;
+import android.media.MediaPlayer.OnPreparedListener;
+import android.media.MediaPlayer.OnSeekCompleteListener;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.util.Log;
+
+public class AudioPalyer {
+
+	private static final int IDLE = 0;// 空闲状态
+	private static final int INITIALIZED = 1;// 初始化状态,即设置了数据源
+	private static final int PREPARING = 2;// 正在准备
+	private static final int PREPARED = 3;// 准备完毕
+	private static final int STARED = 4;// 开始播放
+	private static final int PAUSED = 5;// 暂停
+	private static final int STOPED = 6;// 停止
+
+	private int mState = IDLE;
+
+	private MediaPlayer mMediaPlayer;
+	private PlayerActionHandler mHandler;
+	private AudioPlayListener mAudioPlayListener;
+
+	private String mPlayingUrl;
+	private boolean isLooping;
+	private boolean mPauseAccident = false;// 意外事件导致音频停止播放,比如Home到后台,来电等等
+
+	public AudioPalyer() {
+		mMediaPlayer = new MediaPlayer();
+		mHandler = new PlayerActionHandler();
+		mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
+		// 设置回调
+		mMediaPlayer.setOnPreparedListener(mInnerOnPreparedListener);
+		mMediaPlayer.setOnBufferingUpdateListener(mInnerOnBufferingUpdateListener);
+		mMediaPlayer.setOnCompletionListener(mInnerOnCompletionListener);
+		mMediaPlayer.setOnErrorListener(mInnerOnErrorListener);
+		mMediaPlayer.setOnSeekCompleteListener(mInnerOnSeekCompleteListener);
+	}
+
+	public void setAudioPlayListener(AudioPlayListener listener) {
+		mAudioPlayListener = listener;
+	}
+
+	public void play(String url) {
+		play(url, false);
+	}
+
+	public void play(String url, boolean looping) {
+		if (TextUtils.isEmpty(url)) {
+			return;
+		}
+		if (isLooping != looping) {
+			mMediaPlayer.setLooping(looping);
+			isLooping = looping;
+		}
+		try {
+			if (mState == IDLE || mPlayingUrl == null || !mPlayingUrl.equals(url)) {
+				mMediaPlayer.reset();
+				mState = IDLE;
+				mPlayingUrl = url;
+				mMediaPlayer.setDataSource(url);
+				mState = INITIALIZED;
+				mMediaPlayer.prepareAsync();
+				if (mAudioPlayListener != null) {
+					mAudioPlayListener.onPreparing();
+				}
+				mState = PREPARING;
+			} else {
+				reuse();
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void reuse() {
+		Log.d("roamer", "AudioPlayer reuse:" + mState);
+		if (mState == INITIALIZED || mState == STOPED) {
+			mMediaPlayer.prepareAsync();
+			if (mAudioPlayListener != null) {
+				mAudioPlayListener.onPreparing();
+			}
+			mState = PREPARING;
+		} else if (mState == PREPARING || mState == STARED) {
+			return;
+		} else if (mState == PREPARED || mState == PAUSED) {
+			mMediaPlayer.start();
+			mState = STARED;
+		}
+	}
+
+	/**
+	 * 时候可以直接播放或者正在播放
+	 * 
+	 * @return
+	 */
+	private boolean canPlay() {
+		if (isPlaying() || mState == PREPARED || mState == PAUSED) {
+			return true;
+		}
+		return false;
+	}
+
+	public boolean needPrepare(String url) {
+		if (mState == IDLE || mPlayingUrl == null || !mPlayingUrl.equals(url)) {
+			return true;
+		} else {
+			if (mState == INITIALIZED || mState == STOPED) {
+				return true;
+			} else {
+				return false;
+			}
+		}
+	}
+
+	public boolean isPlaying() {
+		return mState == STARED && mMediaPlayer.isPlaying();
+	}
+
+	public void stop() {
+		if (canPlay()) {
+			mMediaPlayer.stop();
+			mState = STOPED;
+		}
+	}
+
+	public void pause() {
+		if (isPlaying()) {
+			mMediaPlayer.pause();
+			mState = PAUSED;
+		}
+	}
+
+	public int getCurrentPosition() {
+		if (canPlay()) {
+			return mMediaPlayer.getCurrentPosition();
+		}
+		return 0;
+	}
+
+	public int getDuration() {
+		if (canPlay()) {
+			return mMediaPlayer.getDuration();
+		}
+		return 0;
+	}
+
+	public void seekTo(int position) {
+		if (canPlay()) {
+			mMediaPlayer.seekTo(position);
+		}
+	}
+
+	/**
+	 * 在onPuase方法中调用
+	 * 
+	 * @return true表示确实意外暂停了,UI需要更新界面
+	 */
+	public boolean accidentPause() {
+		if (isPlaying()) {
+			mMediaPlayer.pause();
+			mState = PAUSED;
+			mPauseAccident = true;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * 在onResume方法中调用
+	 * 
+	 * @return true表示确实回复了上次的意外暂停,UI需要更新界面
+	 */
+	public boolean accidentResume() {
+		if (mState == PAUSED && mPauseAccident) {
+			mMediaPlayer.start();
+			mState = STARED;
+			return true;
+		}
+		return false;
+	}
+
+	public void release() {
+		mMediaPlayer.release();
+		mState = IDLE;
+	}
+
+	@SuppressWarnings("unused")
+	private boolean mTimeChangeEnable = false;
+
+	public void enableTimeChange(boolean enable) {
+		mTimeChangeEnable = enable;
+	}
+
+	private static final int MESSAGE_ON_PREPARED = 0x1;
+	private static final int MESSAGE_ON_BUFFERING_UPDATE = 0x2;
+	private static final int MESSAGE_ON_ERROE = 0x3;
+	private static final int MESSAGE_ON_COMPLETION = 0x4;
+	private static final int MESSAGE_ON_SEEK_COOMPLETE = 0x5;
+
+	private class PlayerActionHandler extends Handler {
+		@Override
+		public void handleMessage(Message msg) {
+			if (mAudioPlayListener == null) {
+				return;
+			}
+			switch (msg.what) {
+			case MESSAGE_ON_PREPARED:
+				mAudioPlayListener.onPrepared();
+				break;
+			case MESSAGE_ON_BUFFERING_UPDATE:
+				mAudioPlayListener.onBufferingUpdate(msg.arg1);
+				break;
+			case MESSAGE_ON_ERROE:
+				mAudioPlayListener.onError();
+				break;
+			case MESSAGE_ON_COMPLETION:
+				mAudioPlayListener.onCompletion();
+				break;
+			case MESSAGE_ON_SEEK_COOMPLETE:
+				mAudioPlayListener.onSeekComplete();
+				break;
+			default:
+				break;
+			}
+		}
+	}
+
+	public static interface AudioPlayListener {
+		void onPreparing();
+
+		void onPrepared();
+
+		void onBufferingUpdate(int percent);
+
+		void onError();
+
+		void onCompletion();
+
+		void onSeekComplete();
+	}
+
+	private OnPreparedListener mInnerOnPreparedListener = new OnPreparedListener() {
+		@Override
+		public void onPrepared(MediaPlayer mp) {
+			mState = PREPARED;
+			mMediaPlayer.start();
+			mState = STARED;
+			if (mAudioPlayListener != null) {
+				mHandler.obtainMessage(MESSAGE_ON_PREPARED).sendToTarget();
+			}
+
+		}
+	};
+
+	private OnBufferingUpdateListener mInnerOnBufferingUpdateListener = new OnBufferingUpdateListener() {
+		@Override
+		public void onBufferingUpdate(MediaPlayer mp, int percent) {
+			if (mAudioPlayListener != null) {
+				Message message = mHandler.obtainMessage(MESSAGE_ON_BUFFERING_UPDATE);
+				message.arg1 = percent;
+				message.sendToTarget();
+			}
+		}
+	};
+
+	private OnErrorListener mInnerOnErrorListener = new OnErrorListener() {
+		@Override
+		public boolean onError(MediaPlayer mp, int what, int extra) {
+			mState = IDLE;
+			if (mAudioPlayListener != null) {
+				mHandler.obtainMessage(MESSAGE_ON_ERROE).sendToTarget();
+			}
+			return false;
+		}
+	};
+
+	private OnCompletionListener mInnerOnCompletionListener = new OnCompletionListener() {
+		@Override
+		public void onCompletion(MediaPlayer mp) {
+			Log.d("roamer", "AudioPlayer onCompletion");
+			mState = PAUSED;// 实际上应该是PlaybackCompleted 但是这个状态和Paused差不多 当做同样的处理
+			if (mAudioPlayListener != null) {
+				mHandler.obtainMessage(MESSAGE_ON_COMPLETION).sendToTarget();
+			}
+		}
+	};
+
+	private OnSeekCompleteListener mInnerOnSeekCompleteListener = new OnSeekCompleteListener() {
+		@Override
+		public void onSeekComplete(MediaPlayer mp) {
+			if (mAudioPlayListener != null) {
+				mHandler.obtainMessage(MESSAGE_ON_SEEK_COOMPLETE).sendToTarget();
+			}
+		}
+	};
+
+}

+ 64 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/CircleMessage.java

@@ -0,0 +1,64 @@
+package com.uas.appme.workcircle.bean;
+
+
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+
+/**
+ * 商务圈消息本地Id缓存
+ * 
+ * 
+ */
+@DatabaseTable
+public class CircleMessage {
+
+	// objectId,fromUserId(转发人或创建人),timeSend(发布时间),content(转发理由,为空则不是转发)
+
+	@DatabaseField(generatedId = true)
+	private int id;
+
+	@DatabaseField(canBeNull = false)
+	private String msgId;
+
+	@DatabaseField(canBeNull = false)
+	private String ownerId;
+
+	@DatabaseField(canBeNull = false)
+	private String userId;// 转发人或创建人
+
+	@DatabaseField
+	private long time;// 发布时间
+
+	public String getOwnerId() {
+		return ownerId;
+	}
+
+	public void setOwnerId(String ownerId) {
+		this.ownerId = ownerId;
+	}
+
+	public String getMsgId() {
+		return msgId;
+	}
+
+	public void setMsgId(String msgId) {
+		this.msgId = msgId;
+	}
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+
+	public long getTime() {
+		return time;
+	}
+
+	public void setTime(long time) {
+		this.time = time;
+	}
+
+}

+ 98 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/Comment.java

@@ -0,0 +1,98 @@
+package com.uas.appme.workcircle.bean;
+
+import android.text.TextUtils;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+import java.io.Serializable;
+
+/**
+ * 评论
+ * 
+ */
+public class Comment implements Serializable {
+	private static final long serialVersionUID = -540132570820293901L;
+	private String commentId;
+	private String userId;// 评论者的id
+
+	@JSONField(name = "nickname")
+	private String nickName;// 评论者名字
+	private String toUserId;// 被评论者的Id
+	private String toNickname;// 被评论者的名字
+	private String body;// 评论内容
+	private String toBody;// 被评论内容
+	private long time;
+
+	public String getCommentId() {
+		return commentId;
+	}
+
+	public void setCommentId(String commentId) {
+		this.commentId = commentId;
+	}
+
+	public String getToUserId() {
+		return toUserId;
+	}
+
+	public void setToUserId(String toUserId) {
+		this.toUserId = toUserId;
+	}
+
+	public String getToNickname() {
+		return toNickname;
+	}
+
+	public void setToNickname(String toNickname) {
+		this.toNickname = toNickname;
+	}
+
+	public String getBody() {
+		return body;
+	}
+
+	public void setBody(String body) {
+		this.body = body;
+	}
+
+	public String getToBody() {
+		return toBody;
+	}
+
+	public void setToBody(String toBody) {
+		this.toBody = toBody;
+	}
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+
+	public String getNickName() {
+		return nickName;
+	}
+
+	public void setNickName(String nickname) {
+		this.nickName = nickname;
+	}
+
+	public long getTime() {
+		return time;
+	}
+
+	public void setTime(long time) {
+		this.time = time;
+	}
+
+	// 快捷方法,判断是不是针对某个人的回复
+	public boolean isReplaySomeBody() {
+		if (!TextUtils.isEmpty(toUserId) && !TextUtils.isEmpty(toNickname)) {
+			return true;
+		}
+		return false;
+	}
+
+}

+ 60 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/Gift.java

@@ -0,0 +1,60 @@
+package com.uas.appme.workcircle.bean;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+import java.io.Serializable;
+
+public class Gift implements Serializable{
+	private static final long serialVersionUID = -2765871913015265431L;
+	private String userId;
+	@JSONField(name="nickname")
+	private String nickName;
+	private int id;
+	private int price;
+	private int count;
+	private long time;
+	private String giftId;//礼物的id
+	public String getUserId() {
+		return userId;
+	}
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+	public String getNickName() {
+		return nickName;
+	}
+	public void setNickName(String nickname) {
+		this.nickName = nickname;
+	}
+	public int getId() {
+		return id;
+	}
+	public void setId(int id) {
+		this.id = id;
+	}
+	public int getPrice() {
+		return price;
+	}
+	public void setPrice(int price) {
+		this.price = price;
+	}
+	public int getCount() {
+		return count;
+	}
+	public void setCount(int count) {
+		this.count = count;
+	}
+	public long getTime() {
+		return time;
+	}
+	public void setTime(long time) {
+		this.time = time;
+	}
+	public String getGiftId() {
+		return giftId;
+	}
+	public void setGiftId(String giftId) {
+		this.giftId = giftId;
+	}
+	
+}

+ 63 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/Praise.java

@@ -0,0 +1,63 @@
+package com.uas.appme.workcircle.bean;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+import java.io.Serializable;
+
+/**
+ * 
+ * @项目名称: SkWeiChat-Baidu
+ * @包名: com.xzjmyk.pm.activity.bean.circle
+ * @作者:王阳
+ * @创建时间: 2015年10月15日 下午5:02:11
+ * @描述: 赞的实体
+ * @SVN版本号: $Rev$
+ * @修改人: $Author$
+ * @修改时间: $Date$
+ * @修改的内容: TODO
+ */
+public class Praise implements Serializable{
+	private static final long serialVersionUID = -7269886584765396602L;
+	
+	private String praiseId;
+	private String userId;//赞的人的id
+	@JSONField(name="nickname")
+	private String nickName;//赞的人的昵称
+	public String getPraiseId() {
+		return praiseId;
+	}
+	public void setPraiseId(String praiseId) {
+		this.praiseId = praiseId;
+	}
+	public String getUserId() {
+		return userId;
+	}
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+	public String getNickName() {
+		return nickName;
+	}
+	public void setNickName(String nickname) {
+		this.nickName = nickname;
+	}
+
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) return true;
+		if (o == null || getClass() != o.getClass()) return false;
+
+		Praise praise = (Praise) o;
+
+		if (!userId.equals(praise.userId)) return false;
+		return !(nickName != null ? !nickName.equals(praise.nickName) : praise.nickName != null);
+
+	}
+
+	@Override
+	public int hashCode() {
+		int result = userId.hashCode();
+		result = 31 * result + (nickName != null ? nickName.hashCode() : 0);
+		return result;
+	}
+}

+ 570 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/bean/PublicMessage.java

@@ -0,0 +1,570 @@
+package com.uas.appme.workcircle.bean;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @项目名称: SkWeiChat-Baidu
+ * @包名: com.xzjmyk.pm.activity.bean.circle
+ * @作者:王阳
+ * @创建时间: 2015年10月15日 下午5:02:33
+ * @描述: 普通消息bean
+ * @SVN版本号: $Rev$
+ * @修改人: $Author$
+ * @修改时间: $Date$
+ * @修改的内容: TODO
+ */
+public class PublicMessage implements Serializable {
+    private static final long serialVersionUID = -2853687308018351618L;
+
+    public static class Resource implements Serializable{
+        private static final long serialVersionUID = 1665607875044805022L;
+
+        @JSONField(name = "oUrl")
+        private String originalUrl;
+
+        @JSONField(name = "tUrl")
+        private String thumbnailUrl;
+
+        private long size;
+        private long length;
+
+        public String getOriginalUrl() {
+            return originalUrl;
+        }
+
+        public void setOriginalUrl(String originalUrl) {
+            this.originalUrl = originalUrl;
+        }
+
+        public String getThumbnailUrl() {
+            return thumbnailUrl;
+        }
+
+        public void setThumbnailUrl(String thumbnailUrl) {
+            this.thumbnailUrl = thumbnailUrl;
+        }
+
+        public long getSize() {
+            return size;
+        }
+
+        public void setSize(long size) {
+            this.size = size;
+        }
+
+        public long getLength() {
+            return length;
+        }
+
+        public void setLength(long length) {
+            this.length = length;
+        }
+
+    }
+
+    public static class Body implements Serializable {
+        private static final long serialVersionUID = -7082197369330985229L;
+        private int type;
+        private String title;// 标题
+        private String text;// 文字
+        private List<Resource> images;
+        private List<Resource> audios;
+        private List<Resource> videos;
+        private long time;// 时间
+        private String address;// 地址
+        private String remark;// 备注
+
+        public int getType() {
+            return type;
+        }
+
+        public void setType(int type) {
+            this.type = type;
+        }
+
+        public String getText() {
+            return text;
+        }
+
+        public void setText(String text) {
+            this.text = text;
+        }
+
+        public String getTitle() {
+            return title;
+        }
+
+        public void setTitle(String title) {
+            this.title = title;
+        }
+
+        public List<Resource> getImages() {
+            return images;
+        }
+
+        public void setImages(List<Resource> images) {
+            this.images = images;
+        }
+
+        public List<Resource> getAudios() {
+            return audios;
+        }
+
+        public void setAudios(List<Resource> audios) {
+            this.audios = audios;
+        }
+
+        public List<Resource> getVideos() {
+            return videos;
+        }
+
+        public void setVideos(List<Resource> videos) {
+            this.videos = videos;
+        }
+
+        public long getTime() {
+            return time;
+        }
+
+        public void setTime(long time) {
+            this.time = time;
+        }
+
+        public String getAddress() {
+            return address;
+        }
+
+        public void setAddress(String address) {
+            this.address = address;
+        }
+
+        public String getRemark() {
+            return remark;
+        }
+
+        public void setRemark(String remark) {
+            this.remark = remark;
+        }
+
+    }
+
+    public static class Count implements Serializable {
+        private static final long serialVersionUID = 5424006468612181115L;
+
+        private int play;// 播放次数
+        private int forward;// 转载次数
+        private int share;// 分享次数
+        private int collect;// 收藏次数
+        private int praise;// 赞次数
+        private int commnet;// 评论数
+        private int money;// 金钱树
+        private int total;// 上面所有值加起来的值
+
+        public int getPlay() {
+            return play;
+        }
+
+        public void setPlay(int play) {
+            this.play = play;
+        }
+
+        public int getForward() {
+            return forward;
+        }
+
+        public void setForward(int forward) {
+            this.forward = forward;
+        }
+
+        public int getShare() {
+            return share;
+        }
+
+        public void setShare(int share) {
+            this.share = share;
+        }
+
+        public int getCollect() {
+            return collect;
+        }
+
+        public void setCollect(int collect) {
+            this.collect = collect;
+        }
+
+        public int getPraise() {
+            return praise;
+        }
+
+        public void setPraise(int praise) {
+            this.praise = praise;
+        }
+
+        public int getCommnet() {
+            return commnet;
+        }
+
+        public void setCommnet(int commnet) {
+            this.commnet = commnet;
+        }
+
+        public int getMoney() {
+            return money;
+        }
+
+        public void setMoney(int money) {
+            this.money = money;
+        }
+
+        public int getTotal() {
+            return total;
+        }
+
+        public void setTotal(int total) {
+            this.total = total;
+        }
+
+    }
+
+    /**
+     * 消息类型
+     */
+    public static final int TYPE_TEXT = 1;// 文字类型
+    public static final int TYPE_IMG = 2;// 图片类型
+    public static final int TYPE_VOICE = 3;// 语音
+    public static final int TYPE_VIDEO = 4;// 视频
+
+    /**
+     * 消息来源
+     */
+    public static final int SOURCE_SELF = 0;// 0=自己的
+    public static final int SOURCE_FORWARDING = 1;// 1=转载的
+
+    /**
+     * 消息标志
+     */
+    public static final int FLAG_APPLY_JOB = 1;// 1 求职
+    public static final int FLAG_RECRUIT = 2;// 2招聘
+    public static final int FLAG_NORMAL = 3;// 3 普通
+    public static final int FLAG_WORK_LOG = 0;// 0 工作日志
+
+    /**
+     * 消息可见范围
+     */
+    public static final int VISIBLE_NO = 0;// 0 不可见
+    public static final int VISIBLE_FRIEND = 1;// 1朋友可见
+    public static final int VISIBLE_FANS = 2;// 2 粉丝可见
+    public static final int VISIBLE_ALL = 3;// 3 广场可见(所有人可见)
+
+    @JSONField(name = "msgId")
+    private String messageId;// 公共消息Id
+
+    private String userId;// 发消息的人Id
+
+    @JSONField(name = "nickname")
+    private String nickName;// 发消息的人的昵称
+
+    /**
+     * 消息标志 {@link #FLAG_APPLY_JOB}{@link #FLAG_RECRUIT}{@link #FLAG_NORMAL}
+     */
+    private int flag;
+
+    private int visible;// 可见范围 0=不可见;1=朋友可见;2=粉丝可见;3=广场
+
+    private Body body;// 消息的内容
+
+    private Count count;// 次数节点
+
+    private long time;// 发布的时间
+
+    private String model;// 手机设备信息
+    private double latitude;// 发布的经纬度
+    private double longitude;// 发布的经纬度
+    private String location;// 发这条消息是在什么位置
+
+    private int isPraise;// 0没赞过 1赞过
+
+    private List<Comment> comments;// 回复数组
+    private List<Praise> praises;// 赞的列表
+    private List<Gift> gifts;// 收到的礼物列表
+
+    /**
+     * 消息来源 {@link #SOURCE_SELF}{@link #SOURCE_FORWARDING}
+     */
+    private int source;
+
+    private String fowardText;// 转载的附加Text
+    private String fowardUserId;
+    private String fowardNickname;
+
+    public String getFowardText() {
+        return fowardText;
+    }
+
+    public void setFowardText(String fowardText) {
+        this.fowardText = fowardText;
+    }
+
+    public String getFowardUserId() {
+        return fowardUserId;
+    }
+
+    public void setFowardUserId(String fowardUserId) {
+        this.fowardUserId = fowardUserId;
+    }
+
+    public String getFowardNickname() {
+        return fowardNickname;
+    }
+
+    public void setFowardNickname(String fowardNickname) {
+        this.fowardNickname = fowardNickname;
+    }
+
+    public Count getCount() {
+        return count;
+    }
+
+    public void setCount(Count count) {
+        this.count = count;
+    }
+
+    public long getTime() {
+        return time;
+    }
+
+    public void setTime(long time) {
+        this.time = time;
+    }
+
+    public int getVisible() {
+        return visible;
+    }
+
+    public void setVisible(int visible) {
+        this.visible = visible;
+    }
+
+    public int getIsPraise() {
+        return isPraise;
+    }
+
+    public void setIsPraise(int isPraise) {
+        this.isPraise = isPraise;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickname) {
+        this.nickName = nickname;
+    }
+
+    public int getSource() {
+        return source;
+    }
+
+    public void setSource(int source) {
+        this.source = source;
+    }
+
+    public int getFlag() {
+        return flag;
+    }
+
+    public void setFlag(int flag) {
+        this.flag = flag;
+    }
+
+    public Body getBody() {
+        return body;
+    }
+
+    public void setBody(Body body) {
+        this.body = body;
+    }
+
+    public List<Comment> getComments() {
+        return comments;
+    }
+
+    public void setComments(List<Comment> comments) {
+        this.comments = comments;
+    }
+
+    public List<Praise> getPraises() {
+        return praises;
+    }
+
+    public void setPraises(List<Praise> praises) {
+        this.praises = praises;
+    }
+
+    public List<Gift> getGifts() {
+        return gifts;
+    }
+
+    public void setGifts(List<Gift> gifts) {
+        this.gifts = gifts;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getMessageId() {
+        return messageId;
+    }
+
+    public void setMessageId(String messageId) {
+        this.messageId = messageId;
+    }
+
+    public String getModel() {
+        return model;
+    }
+
+    public void setModel(String model) {
+        this.model = model;
+    }
+
+    public double getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(double latitude) {
+        this.latitude = latitude;
+    }
+
+    public double getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(double longitude) {
+        this.longitude = longitude;
+    }
+
+    // /////////////////////快捷方法///////////////////////////
+    public int getType() {
+        if (body != null) {
+            return body.getType();
+        }
+        return TYPE_TEXT;
+    }
+
+    public String getFirstImageThumbnail() {
+        if (body != null && body.getImages() != null && body.getImages().size() > 0) {
+            return body.getImages().get(0).getThumbnailUrl();
+        }
+        return null;
+    }
+
+    public String getFirstImageOriginal() {
+        if (body != null && body.getImages() != null && body.getImages().size() > 0) {
+            return body.getImages().get(0).getOriginalUrl();
+        }
+        return null;
+    }
+
+    public String getFirstVideo() {
+        if (body != null && body.getVideos() != null && body.getVideos().size() > 0) {
+            return body.getVideos().get(0).getOriginalUrl();
+        }
+        return null;
+    }
+
+    public String getFirstAudio() {
+        if (body != null && body.getAudios() != null && body.getAudios().size() > 0) {
+            return body.getAudios().get(0).getOriginalUrl();
+        }
+        return null;
+    }
+
+    // 获取次数的快捷方法
+    public int getPlay() {
+        if (count != null) {
+            return count.getPlay();
+        }
+        return 0;
+    }
+
+    public int getForward() {
+        if (count != null) {
+            return count.getForward();
+        }
+        return 0;
+    }
+
+    public int getShare() {
+        if (count != null) {
+            return count.getShare();
+        }
+        return 0;
+    }
+
+    public int getCollect() {
+        if (count != null) {
+            return count.getCollect();
+        }
+        return 0;
+    }
+
+    public int getPraise() {
+        if (count != null) {
+            return count.getPraise();
+        }
+        return 0;
+    }
+
+    public void setPraise(int praiseCount) {
+        if (count == null) {
+            count = new Count();
+        }
+        count.setPraise(praiseCount);
+    }
+
+    public int getCommnet() {
+        if (count != null) {
+            return count.getCommnet();
+        }
+        return 0;
+    }
+
+    public void setCommnet(int commentCount) {
+        if (count == null) {
+            count = new Count();
+        }
+        count.setCommnet(commentCount);
+    }
+
+    public int getMoney() {
+        if (count != null) {
+            return count.getMoney();
+        }
+        return 0;
+    }
+
+    public int getTotal() {
+        if (count != null) {
+            return count.getTotal();
+        }
+        return 0;
+    }
+
+}

+ 31 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/cusview/MyGridView.java

@@ -0,0 +1,31 @@
+package com.uas.appme.workcircle.cusview;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.GridView;
+
+/**
+ * 自定义gridview,解决ListView中嵌套gridview显示不正常的问题(1行半)
+ * 
+ * @author wangyx
+ * @version 1.0.0 2012-9-14
+ */
+public class MyGridView extends GridView {
+	public MyGridView(Context context, AttributeSet attrs) {
+		super(context, attrs);
+	}
+
+	public MyGridView(Context context) {
+		super(context);
+	}
+
+	public MyGridView(Context context, AttributeSet attrs, int defStyle) {
+		super(context, attrs, defStyle);
+	}
+
+	@Override
+	public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
+		super.onMeasure(widthMeasureSpec, expandSpec);
+	}
+}

+ 189 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/cusview/PMsgBottomView.java

@@ -0,0 +1,189 @@
+package com.uas.appme.workcircle.cusview;
+
+import android.content.Context;
+import android.os.Handler;
+import android.text.SpannableString;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.LinearLayout;
+
+import com.uas.appme.R;
+
+
+/**
+ * 公共消息的输入消息框
+ * 
+ */
+public class PMsgBottomView extends LinearLayout implements View.OnClickListener {
+
+	private Context mContext;
+	private ImageButton mEmotionBtn;
+	private EditText mChatEdit;
+	private Button mSendBtn;
+
+	private ChatFaceView mChatFaceView;
+
+	private InputMethodManager mInputManager;
+	private Handler mHandler = new Handler();
+
+	private int mDelayTime = 0;
+
+	private PMsgBottomListener mListener;
+
+	public PMsgBottomView(Context context) {
+		super(context);
+		init(context);
+	}
+
+	public PMsgBottomView(Context context, AttributeSet attrs) {
+		super(context, attrs);
+		init(context);
+	}
+
+	public PMsgBottomView(Context context, AttributeSet attrs, int defStyle) {
+		super(context, attrs, defStyle);
+		init(context);
+	}
+
+	private void init(Context context) {
+		mContext = context;
+		mInputManager = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
+		mDelayTime = mContext.getResources().getInteger(android.R.integer.config_shortAnimTime);
+		LayoutInflater.from(mContext).inflate(R.layout.p_msg_bottom_view, this);
+		mChatEdit = (EditText) findViewById(R.id.chat_edit);
+		mEmotionBtn = (ImageButton) findViewById(R.id.emotion_btn);
+		mSendBtn = (Button) findViewById(R.id.send_btn);
+		mChatFaceView = (ChatFaceView) findViewById(R.id.chat_face_view);
+
+		// mChatVoiceBtn
+		mEmotionBtn.setOnClickListener(this);
+		mSendBtn.setOnClickListener(this);
+		mChatEdit.setOnClickListener(this);
+
+		mChatEdit.setOnTouchListener(new OnTouchListener() {
+			@Override
+			public boolean onTouch(View v, MotionEvent event) {
+				mChatEdit.requestFocus();
+				return false;
+			}
+		});
+
+		mChatFaceView.setEmotionClickListener(new ChatFaceView.EmotionClickListener() {
+			@Override
+			public void onNormalFaceClick(SpannableString ss) {
+				if (mChatEdit.hasFocus()) {
+					mChatEdit.getText().insert(mChatEdit.getSelectionStart(), ss);
+				} else {
+					mChatEdit.getText().insert(mChatEdit.getText().toString().length(), ss);
+				}
+			}
+
+			@Override
+			public void onGifFaceClick(String resName) {
+			}
+		});
+
+	}
+
+	@Override
+	public void onWindowFocusChanged(boolean hasWindowFocus) {
+		mChatEdit.setFocusable(hasWindowFocus);
+		mChatEdit.setFocusableInTouchMode(hasWindowFocus);
+		super.onWindowFocusChanged(hasWindowFocus);
+	}
+
+	/**
+	 * 显示或隐藏表情布局
+	 * 
+	 * @param show
+	 */
+	private void changeChatFaceView(boolean show) {
+		boolean isShowing = mChatFaceView.getVisibility() != View.GONE;
+		if (isShowing == show) {
+			return;
+		}
+		if (show) {
+			mChatFaceView.setVisibility(View.VISIBLE);
+			mEmotionBtn.setBackgroundResource(R.drawable.im_btn_keyboard_bg);
+		} else {
+			mChatFaceView.setVisibility(View.GONE);
+			mEmotionBtn.setBackgroundResource(R.drawable.im_btn_emotion_bg);
+		}
+	}
+
+	@Override
+	public void onClick(View v) {
+		switch (v.getId()) {
+		/*************************** 控制底部栏状态变化 **************************/
+		case R.id.emotion_btn:
+			if (mChatFaceView.getVisibility() != View.GONE) {// 表情布局在显示,那么点击则是隐藏表情,显示键盘
+				mInputManager.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
+				changeChatFaceView(false);
+			} else {// 表情布局没有显示,那么点击则是显示表情,隐藏键盘
+				mInputManager.hideSoftInputFromWindow(mChatEdit.getApplicationWindowToken(), 0);
+				mHandler.postDelayed(new Runnable() {
+					@Override
+					public void run() {
+						changeChatFaceView(true);
+					}
+				}, mDelayTime);
+			}
+			break;
+		case R.id.chat_edit:
+			changeChatFaceView(false);
+			break;
+		case R.id.send_btn:
+			if (mListener != null) {
+				String msg = mChatEdit.getText().toString();
+				if (TextUtils.isEmpty(msg)) {
+					return;
+				}
+				mListener.sendText(msg);
+				mChatEdit.setText("");
+			}
+			break;
+		}
+	}
+
+	public void reset() {
+		changeChatFaceView(false);
+		mInputManager.hideSoftInputFromWindow(mChatEdit.getApplicationWindowToken(), 0);
+	}
+
+	public void show() {
+		setVisibility(View.VISIBLE);
+		//必须延迟显示,不延迟的话不会显示
+		mHandler.postDelayed(new Runnable() {
+			@Override
+			public void run() {
+				mChatEdit.requestFocus();
+				mInputManager.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
+			}
+		}, mDelayTime);
+	}
+
+	public void hide() {
+		reset();
+		setVisibility(View.GONE);
+	}
+
+	public void setPMsgBottomListener(PMsgBottomListener listener) {
+		mListener = listener;
+	}
+
+	public void setHintText(String text) {
+		mChatEdit.setHint(text);
+	}
+
+	public static interface PMsgBottomListener {
+		public void sendText(String text);
+	}
+
+}

+ 31 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/cusview/ResizeLayout.java

@@ -0,0 +1,31 @@
+package com.uas.appme.workcircle.cusview;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.RelativeLayout;
+
+public class ResizeLayout extends RelativeLayout {
+	private OnResizeListener mListener;
+
+	public interface OnResizeListener {
+		void OnResize(int w, int h, int oldw, int oldh);
+	}
+
+	public void setOnResizeListener(OnResizeListener l) {
+		mListener = l;
+	}
+
+	public ResizeLayout(Context context, AttributeSet attrs) {
+		super(context, attrs);
+	}
+
+	@Override
+	protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+		super.onSizeChanged(w, h, oldw, oldh);
+		if (mListener != null) {
+			mListener.OnResize(w, h, oldw, oldh);
+		}
+	}
+	
+	
+}

+ 5 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/cusview/showCEView.java

@@ -0,0 +1,5 @@
+package com.uas.appme.workcircle.cusview;
+
+public interface showCEView {
+	void showView(int messagePosition, String toUserId, String toNickname, String toShowName);
+}

+ 31 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/view/PMsgTypeView.java

@@ -0,0 +1,31 @@
+package com.uas.appme.workcircle.view;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.LinearLayout;
+
+import com.uas.appme.workcircle.bean.PublicMessage;
+
+
+public abstract class PMsgTypeView extends LinearLayout {
+
+	public PMsgTypeView(Context context) {
+		super(context);
+	}
+
+	public PMsgTypeView(Context context, AttributeSet attrs) {
+		super(context, attrs);
+	}
+
+	public PMsgTypeView(Context context, AttributeSet attrs, int defStyle) {
+		super(context, attrs, defStyle);
+	}
+
+	public abstract void attachPublicMessage(PublicMessage message);
+
+	public abstract void onPause();
+
+	public abstract void onResume();
+	
+	public abstract void onDestory();
+}

+ 53 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/xmpp/AppConstant.java

@@ -0,0 +1,53 @@
+package com.uas.appme.workcircle.xmpp;
+
+public class AppConstant {
+    /**
+     * 某些地方选择数据使用的常量
+     */
+    public static final String EXTRA_ACTION = "action";// 进入这个类的执行的操作
+    public static final int ACTION_NONE = 0;// 不执行操作
+    public static final int ACTION_SELECT = 1;// 执行选择操作
+    public static final String EXTRA_SELECT_IDS = "select_ids";// 选择对应项目的ids
+    public static final String EXTRA_SELECT_ID = "select_id";// 选择对应项目的id
+    public static final String EXTRA_SELECT_NAME = "select_name";// 选择的对应项目的名称
+    /**
+     * 某些地方需要传递如ListView Position的数据
+     */
+    public static final String EXTRA_POSITION = "position";
+    public static final int INVALID_POSITION = -1;
+
+    // 用户信息参数,很多地方需要
+    public static final String EXTRA_USER_ID = "userId";// userId
+    public static final String EXTRA_NICK_NAME = "nickName";// nickName
+    public static final String EXTRA_NICK_CODE = "usercode";// nickName
+    public static final String EXTRA_EM_CODE = "usercode";// nickName
+    public static final String EXTRA_IS_GROUP_CHAT = "isGroupChat";// 是否是群聊
+
+    // BusinessCircleActivity需要的
+    public static final String EXTRA_CIRCLE_TYPE = "circle_type";// 看的商务圈类型
+    public static final int CIRCLE_TYPE_MY_BUSINESS = 0;// 看的商务圈类型,是我的商务圈
+    public static final int CIRCLE_TYPE_PERSONAL_SPACE = 1;// 看的商务圈类型,是个人空间
+
+    /**
+     * 商务圈发布的常量
+     */
+    /* 发说说(图文) */
+    public static final String EXTRA_IMAGES = "images";// 预览的那组图片
+    public static final String EXTRA_CHANGE_SELECTED = "change_selected";// 是否可以改变选择,这样在ActivityResult中会回传重新选择的结果
+
+    public static final String EXTRA_MSG_ID = "msg_id";// 公共消息id
+    public static final String EXTRA_FILE_PATH = "file_path";// 语音、视频文件路径
+    public static final String FILE_PAT_NAME = "file_name";//文件的名字
+    public static final String EXTRA_IMAGE_FILE_PATH = "image_file_path";// 图片文件路径
+    public static final String EXTRA_TIME_LEN = "time_len";// 语音、视频文件时长
+    //位置经纬度
+    public static final String EXTRA_LATITUDE = "latitude";
+    public static final String EXTRA_LONGITUDE = "longitude";
+
+    /* IM */
+    public static final String EXTRA_FRIEND = "friend";
+
+    /* 进入SingleImagePreviewActivity需要带上的参数 */
+    public static final String EXTRA_IMAGE_URI = "image_uri";
+
+}

+ 243 - 0
app_modular/appme/src/main/java/com/uas/appme/workcircle/xmpp/SmileyParser.java

@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.uas.appme.workcircle.xmpp;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.text.Html.ImageGetter;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.text.style.URLSpan;
+
+import com.xzjmyk.pm.activity.R;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * A class for annotating a CharSequence with spans to convert textual emoticons to graphical ones.
+ */
+public class SmileyParser {
+    private static SmileyParser sInstance;
+
+    public static SmileyParser getInstance(Context context) {
+        if (sInstance == null) {
+            synchronized (SmileyParser.class) {
+                if (sInstance == null) {
+                    sInstance = new SmileyParser(context);
+                }
+            }
+        }
+        return sInstance;
+    }
+
+    private final Context mContext;
+    private final Pattern mPattern;
+    private final Pattern mHtmlPattern;
+
+    private SmileyParser(Context context) {
+        mContext = context;
+        mPattern = buildPattern();
+        mHtmlPattern = buildHtmlPattern();
+    }
+
+    public static class Smilies {
+        public static int[][] getIds() {
+            return IDS;
+        }
+
+        public static String[][] getTexts() {
+            return TEXTS;
+        }
+
+        public static int textMapId(String text) {
+            if (MAPS.containsKey(text)) {
+                return MAPS.get(text);
+            } else {
+                return -1;
+            }
+        }
+
+
+        private static final int[][] IDS = {
+                {R.drawable.f_static_000, R.drawable.f_static_001, R.drawable.f_static_002, R.drawable.f_static_003, R.drawable.f_static_004,
+                        R.drawable.f_static_005, R.drawable.f_static_006, R.drawable.f_static_007, R.drawable.f_static_008, R.drawable.f_static_009,
+                        R.drawable.f_static_010, R.drawable.f_static_011, R.drawable.f_static_012, R.drawable.f_static_013, R.drawable.f_static_014,
+                        R.drawable.f_static_015, R.drawable.f_static_016, R.drawable.f_static_017},
+
+
+                {R.drawable.f_static_018, R.drawable.f_static_019, R.drawable.f_static_020, R.drawable.f_static_021, R.drawable.f_static_022,
+                        R.drawable.f_static_023, R.drawable.f_static_024, R.drawable.f_static_025, R.drawable.f_static_026,
+                        R.drawable.f_static_027, R.drawable.f_static_028, R.drawable.f_static_029, R.drawable.f_static_030,
+                        R.drawable.f_static_031, R.drawable.f_static_032, R.drawable.f_static_033, R.drawable.f_static_034, R.drawable.f_static_035}
+                , {
+                R.drawable.f_static_036, R.drawable.f_static_037, R.drawable.f_static_038
+        }
+        };
+
+        private static final String[][] TEXTS = {
+                {"[龇牙笑]", "[顽皮]", "[流汗]", "[偷笑]", "[拜拜]",
+                        "[敲头]", "[擦汗]", "[我晕]", "[鄙视]", "[大哭]",
+                        "[笑哭]", "[嘘嘘]", "[酷]", "[狂笑]", "[委屈]",
+                        "[便便]", "[可怜]", "[砍人]"},
+                {"[可爱]", "[色]", "[害羞]", "[得意]", "[呕吐]",
+                        "[微笑]", "[抱抱]", "[尴尬]", "[惊恐]", "[抽烟]",
+                        "[坏笑]", "[嘴唇]", "[白眼]", "[傲慢]", "[奋斗]",
+                        "[吃惊]", "[疑问]", "[睡觉]"},
+                {"[邪恶]", "[哈哈]", "[吓]"}};
+
+        private static final Map<String, Integer> MAPS = new HashMap<String, Integer>();
+
+        static {
+            // 取最小的长度,防止长度不一致出错
+            int length = IDS.length > TEXTS.length ? TEXTS.length : IDS.length;
+            for (int i = 0; i < length; i++) {
+                int[] subIds = IDS[i];
+                String[] subTexts = TEXTS[i];
+                if (subIds == null || subTexts == null) {
+                    continue;
+                }
+                int subLength = subIds.length > subTexts.length ? subTexts.length : subIds.length;
+                for (int j = 0; j < subLength; j++) {
+                    MAPS.put(TEXTS[i][j], IDS[i][j]);
+                }
+            }
+        }
+    }
+
+    public static class Gifs {
+        public static int[][] getIds() {
+            return IDS;
+        }
+
+        public static String[][] getTexts() {
+            return TEXTS;
+        }
+
+        public static int textMapId(String text) {
+            if (MAPS.containsKey(text)) {
+                return MAPS.get(text);
+            } else {
+                return -1;
+            }
+        }
+
+        //动态表情
+        private static final int[][] IDS = {
+                {R.drawable.gif1, R.drawable.gif2, R.drawable.gif3, R.drawable.gif4, R.drawable.gif5, R.drawable.gif6,
+                        R.drawable.gif7, R.drawable.gif8}, {R.drawable.gif9, R.drawable.gif10, R.drawable.gif11, R.drawable.gif12, R.drawable.gif13, R.drawable.gif14,
+                R.drawable.gif15, R.drawable.gif16}
+        };
+        private static final String[][] TEXTS = {
+                {"01.gif", "02.gif", "03.gif", "04.gif", "05.gif", "06.gif", "07.gif", "08.gif"},
+                {"09.gif", "10.gif", "11.gif", "12.gif", "13.gif", "14.gif", "15.gif", "16.gif"}};
+        private static final Map<String, Integer> MAPS = new HashMap<String, Integer>();
+
+        static {
+            // 取最小的长度,防止长度不一致出错
+            int length = IDS.length > TEXTS.length ? TEXTS.length : IDS.length;
+            for (int i = 0; i < length; i++) {
+                int[] subIds = IDS[i];
+                String[] subTexts = TEXTS[i];
+                if (subIds == null || subTexts == null) {
+                    continue;
+                }
+                int subLength = subIds.length > subTexts.length ? subTexts.length : subIds.length;
+                for (int j = 0; j < subLength; j++) {
+                    MAPS.put(TEXTS[i][j], IDS[i][j]);
+                }
+            }
+        }
+    }
+
+    /**
+     * Builds the regular expression we use to find smileys in {@link #addSmileySpans}.
+     */
+    private Pattern buildPattern() {
+        // Set the StringBuilder capacity with the assumption that the average
+        // smiley is 3 characters long.
+        StringBuilder patternString = new StringBuilder();
+
+        // Build a regex that looks like (:-)|:-(|...), but escaping the smilies
+        // properly so they will be interpreted literally by the regex matcher.
+        patternString.append('(');
+        for (int i = 0; i < Smilies.TEXTS.length; i++) {
+            for (int j = 0; j < Smilies.TEXTS[i].length; j++) {
+                patternString.append(Pattern.quote(Smilies.TEXTS[i][j]));
+                patternString.append('|');
+            }
+        }
+
+        // Replace the extra '|' with a ')'
+        patternString.replace(patternString.length() - 1, patternString.length(), ")");
+
+        return Pattern.compile(patternString.toString());
+    }
+
+    private Pattern buildHtmlPattern() {
+        // Set the StringBuilder capacity with the assumption that the average
+        // smiley is 3 characters long.
+        // StringBuilder patternString = new StringBuilder();
+
+        // Build a regex that looks like (:-)|:-(|...), but escaping the smilies
+        // properly so they will be interpreted literally by the regex matcher.
+        // patternString.append('(');
+        // patternString.append(Pattern.quote("(<a)(\\w)+(?=</a>)"));
+        // // Replace the extra '|' with a ')'
+        // patternString.replace(patternString.length() - 1,
+        // patternString.length(), ")");
+
+        return Pattern.compile("(http://(\\S+?)(\\s))|(www.(\\S+?)(\\s))");
+    }
+
+    /**
+     * Adds ImageSpans to a CharSequence that replace textual emoticons such as :-) with a graphical version.
+     *
+     * @param text A CharSequence possibly containing emoticons
+     * @return A CharSequence annotated with ImageSpans covering any recognized emoticons.
+     */
+    public CharSequence addSmileySpans(CharSequence text, boolean canClick) {
+
+        SpannableStringBuilder builder = new SpannableStringBuilder(text);
+        Matcher matcher = mPattern.matcher(text);
+        while (matcher.find()) {
+            int resId = Smilies.textMapId(matcher.group());
+            if (resId != -1) {
+                builder.setSpan(new MyImageSpan(mContext, resId), matcher.start(), matcher.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            }
+        }
+        if (canClick) {
+            Matcher htmlmatcher = mHtmlPattern.matcher(text);
+            while (htmlmatcher.find()) {
+                builder.setSpan(new URLSpan(htmlmatcher.group()), htmlmatcher.start(), htmlmatcher.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            }
+        }
+        return builder;
+    }
+
+    ImageGetter imgGetter = new ImageGetter() {
+        public Drawable getDrawable(String source) {
+            Drawable drawable = null;
+            drawable = Drawable.createFromPath(source); // 显示本地图片
+            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
+            return drawable;
+        }
+    };
+
+}

BIN
app_modular/appme/src/main/res/drawable-hdpi/uuu.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/ic_blue_round_bg.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/ic_small_blue_rectangular.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/im_input_bar_bg.9.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/im_input_bg.9.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/im_input_expression_nor_u.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/im_input_expression_press.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/im_photo_button_normal.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/im_send_button_disabled.9.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/im_send_button_normal.9.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/im_send_button_pressed.9.png


BIN
app_modular/appme/src/main/res/drawable-xhdpi/uustephistory.png


BIN
app_modular/appme/src/main/res/drawable-xxhdpi/start_splash1.jpg


BIN
app_modular/appme/src/main/res/drawable-xxhdpi/uuu.png


+ 8 - 0
app_modular/appme/src/main/res/drawable/im_btn_emotion_bg.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector
+  xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_focused="true" android:drawable="@drawable/im_input_expression_nor_u" />
+    <item android:state_selected="true" android:drawable="@drawable/im_input_expression_nor_u" />
+    <item android:state_pressed="true" android:drawable="@drawable/im_input_expression_nor_u" />
+    <item android:drawable="@drawable/im_input_expression_press" />
+</selector>

+ 9 - 0
app_modular/appme/src/main/res/drawable/im_btn_send_bg.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:drawable="@drawable/im_send_button_disabled" android:state_enabled="false"></item>
+    <item android:drawable="@drawable/im_send_button_pressed" android:state_pressed="true"/>
+    <item android:drawable="@drawable/im_send_button_pressed" android:state_focused="true"/>
+    <item android:drawable="@drawable/im_send_button_normal"/>
+
+</selector>

+ 33 - 0
app_modular/appme/src/main/res/layout/activity_business_circle.xml

@@ -0,0 +1,33 @@
+<com.xzjmyk.pm.activity.view.ResizeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/resize_layout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white"
+    android:orientation="vertical" >
+
+    <com.handmark.pulltorefresh.library.PullToRefreshListView
+        xmlns:ptr="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/pull_refresh_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_above="@+id/bottom_view"
+        android:scrollingCache="false"
+        ptr:ptrAnimationStyle="flip"
+        ptr:ptrDrawableEnd="@drawable/default_ptr_rotate"
+        ptr:ptrDrawableStart="@drawable/default_ptr_flip"
+        ptr:ptrHeaderTextColor="@color/black"
+        ptr:ptrMode="both"
+        ptr:ptrOverScroll="false"
+        ptr:ptrScrollingWhileRefreshingEnabled="true"
+        ptr:ptrShowIndicator="false" />
+
+    <com.xzjmyk.pm.activity.view.PMsgBottomView
+        android:id="@+id/bottom_view"
+        android:visibility="gone"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true" />
+
+
+</com.xzjmyk.pm.activity.view.ResizeLayout>

+ 204 - 0
app_modular/appme/src/main/res/layout/activity_newstep.xml

@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/activity_main"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    >
+
+    <LinearLayout
+        android:orientation="horizontal"
+        android:id="@+id/movement_records_calender_ll"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+    </LinearLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/light_blue"/>
+
+    <LinearLayout
+        android:layout_marginLeft="20dp"
+        android:layout_marginRight="20dp"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="15sp"
+            android:layout_marginTop="15dp"
+            android:layout_marginBottom="15dp"
+            android:textColor="@color/main_text_color"
+            android:text="@string/sports_recode"/>
+
+        <RelativeLayout
+            android:background="@drawable/ic_small_blue_rectangular"
+            android:layout_width="match_parent"
+            android:layout_height="100dp">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/white"
+                android:textSize="18sp"
+                android:layout_margin="10dp"
+                android:text="@string/sports_recode_distance"/>
+
+            <LinearLayout
+                android:layout_margin="10dp"
+                android:layout_alignParentRight="true"
+                android:layout_alignParentBottom="true"
+                android:orientation="vertical"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:layout_gravity="end"
+                    android:orientation="horizontal"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content">
+
+                    <TextView
+                        android:id="@+id/movement_total_km_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="30sp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:textColor="@color/white" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="16sp"
+                        android:textColor="@color/white"
+                        android:text="@string/sports_kilometre"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_gravity="end"
+                    android:orientation="horizontal"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content">
+
+                    <TextView
+                        android:id="@+id/movement_total_km_time_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="end"
+                        android:textSize="12sp"
+                        android:textColor="@color/white"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp" />
+
+
+                </LinearLayout>
+            </LinearLayout>
+        </RelativeLayout>
+
+        <RelativeLayout
+            android:layout_marginTop="10dp"
+            android:background="@drawable/ic_small_blue_rectangular"
+            android:layout_width="match_parent"
+            android:layout_height="100dp">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/white"
+                android:textSize="18sp"
+                android:layout_margin="10dp"
+                android:text="@string/sports_step_tody"/>
+
+            <LinearLayout
+                android:layout_margin="10dp"
+                android:layout_alignParentRight="true"
+                android:layout_alignParentBottom="true"
+                android:orientation="vertical"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:layout_gravity="end"
+                    android:orientation="horizontal"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content">
+
+                    <TextView
+                        android:id="@+id/movement_total_steps_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="30sp"
+                        android:layout_marginLeft="5dp"
+                        android:layout_marginRight="5dp"
+                        android:textColor="@color/white"/>
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="16sp"
+                        android:textColor="@color/white"
+                        android:text="@string/sports_step"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_gravity="end"
+                    android:orientation="horizontal"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content">
+
+                    <TextView
+                        android:id="@+id/movement_total_steps_time_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="end"
+                        android:textSize="12sp"
+                        android:textColor="@color/white"
+                        android:layout_marginLeft="5dp"
+                        android:layout_marginRight="5dp" />
+
+                </LinearLayout>
+            </LinearLayout>
+        </RelativeLayout>
+
+        <TextView
+            android:id="@+id/is_support_tv"
+            android:textSize="15sp"
+            android:layout_marginTop="25dp"
+            android:layout_gravity="center_horizontal"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/device_nosupport_step"
+            android:textColor="@color/red"/>
+
+    </LinearLayout>
+    <LinearLayout
+        android:id="@+id/steps_history_ll"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_marginTop="50dp"
+        >
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/uustephistory"/>
+
+        <TextView
+            android:id="@+id/steps_history_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:text="@string/sports_recode_more"
+            android:textColor="#288af8"
+            android:textSize="16sp"
+            android:layout_marginLeft="10dp"
+            />
+    </LinearLayout>
+</LinearLayout>

+ 14 - 0
app_modular/appme/src/main/res/layout/before_or_after_calendar_layout.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="80dp">
+
+    <LinearLayout
+        android:id="@+id/boa_calender_view_ll"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="horizontal">
+    </LinearLayout>
+
+</LinearLayout>

+ 61 - 0
app_modular/appme/src/main/res/layout/p_msg_bottom_view.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:layout_alignParentBottom="true"
+    android:orientation="vertical" >
+
+    <RelativeLayout
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:background="@drawable/im_input_bar_bg"
+        android:orientation="horizontal"
+        android:paddingBottom="3dip" >
+
+        <ImageButton
+            android:id="@+id/emotion_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentLeft="true"
+            android:layout_centerVertical="true"
+            android:background="@drawable/im_btn_emotion_bg"
+            android:contentDescription="@string/app_name" />
+
+        <EditText
+            android:id="@+id/chat_edit"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_gravity="center_vertical"
+            android:layout_marginLeft="5dp"
+            android:layout_marginRight="5dp"
+            android:layout_toLeftOf="@+id/send_btn"
+            android:layout_toRightOf="@+id/emotion_btn"
+            android:background="@drawable/im_input_bg"
+            android:inputType="textMultiLine"
+            android:maxLines="3"
+            android:longClickable="true"
+            android:padding="3dp" />
+
+        <Button
+            android:id="@+id/send_btn"
+            android:layout_width="55dp"
+            android:layout_height="30dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:background="@drawable/im_btn_send_bg"
+            android:gravity="center"
+            android:text="@string/send"
+            android:textColor="@color/white" />
+    </RelativeLayout>
+
+    <com.xzjmyk.pm.activity.view.ChatFaceView
+        xmlns:chatface="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/chat_face_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:visibility="gone"
+        chatface:hasGif="false" />
+
+</LinearLayout>

+ 58 - 0
app_modular/appme/src/main/res/layout/records_calender_item_view.xml

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <LinearLayout
+        android:gravity="center_horizontal"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <LinearLayout
+            android:id="@+id/records_calender_item_ll"
+            android:paddingTop="15dp"
+            android:gravity="center"
+            android:layout_marginBottom="10dp"
+            android:orientation="vertical"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:id="@+id/records_calender_item_week_tv"
+                android:gravity="center"
+                android:textSize="15sp"
+                android:layout_marginBottom="2dp"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"/>
+
+            <View
+                android:id="@+id/calendar_item_line_view"
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:visibility="gone"
+                android:background="@color/gray_default_dark"/>
+
+            <RelativeLayout
+                android:layout_marginTop="5dp"
+                android:id="@+id/records_calender_item_date_rl"
+                android:layout_gravity="center"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/records_calender_item_date_tv"
+                    android:padding="3dp"
+                    android:textSize="16sp"
+                    android:gravity="center"
+                    android:layout_centerInParent="true"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+            </RelativeLayout>
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</LinearLayout>

+ 14 - 0
app_modular/appme/src/main/res/layout/step_splash.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_gravity="center_vertical">
+
+    <ImageView
+        android:id="@+id/iv_start"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:adjustViewBounds="true"
+        android:scaleType="fitXY" />
+
+</RelativeLayout>

+ 249 - 0
app_modular/appme/src/main/res/values/attrs.xml

@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <declare-styleable name="StickyListHeadersListView">
+        <attr name="stickyListHeadersListViewStyle" format="reference"/>
+
+        <!-- View attributes -->
+        <attr name="android:clipToPadding" />
+        <attr name="android:scrollbars" />
+        <attr name="android:overScrollMode" />
+        <attr name="android:padding" />
+        <attr name="android:paddingLeft" />
+        <attr name="android:paddingTop" />
+        <attr name="android:paddingRight" />
+        <attr name="android:paddingBottom" />
+
+        <!-- ListView attributes -->
+        <attr name="android:fadingEdgeLength" />
+        <attr name="android:requiresFadingEdge" />
+        <attr name="android:cacheColorHint" />
+        <attr name="android:choiceMode" />
+        <attr name="android:drawSelectorOnTop" />
+        <attr name="android:fastScrollEnabled" />
+        <attr name="android:fastScrollAlwaysVisible" />
+        <attr name="android:listSelector" />
+        <attr name="android:scrollingCache" />
+        <attr name="android:scrollbarStyle" />
+        <attr name="android:divider" />
+        <attr name="android:dividerHeight" />
+        <attr name="android:transcriptMode" />
+        <attr name="android:stackFromBottom" />
+
+        <!-- StickyListHeaders attributes -->
+        <attr name="hasStickyHeaders" format="boolean" />
+        <attr name="isDrawingListUnderStickyHeader" format="boolean" />
+    </declare-styleable>
+    
+    
+    <!--shadow Arison-->
+    <declare-styleable name="ShadowLayout">
+        <attr name="sl_cornerRadius" format="dimension"/>
+        <attr name="sl_shadowRadius" format="dimension"/>
+        <attr name="sl_shadowColor" format="color"/>
+        <attr name="sl_dx" format="dimension"/>
+        <attr name="sl_dy" format="dimension"/>
+    </declare-styleable>
+    <!--steps Airsono-->
+    <declare-styleable name="StepsViewIndicator">
+        <attr name="numOfSteps" format="integer" />
+    </declare-styleable>
+    <!-- Defines the custom XML attributes supported for a ChatFaceView(表情布局) -->
+    <declare-styleable name="ChatFaceView">
+        <attr name="hasGif" format="boolean" />
+    </declare-styleable>
+
+    <declare-styleable name="HorizontalListView">
+        <attr name="dividerWidth" format="dimension" />
+        <attr name="android:divider" />
+        <attr name="android:requiresFadingEdge" />
+        <attr name="android:fadingEdgeLength" />
+    </declare-styleable>
+
+
+    <declare-styleable name="TagGroup">
+        <!-- Whether the tag group is in append mode. -->
+        <attr name="atg_isAppendMode" format="boolean" />
+        <!-- If the tag group is in append mode, what the hint of input tag. -->
+        <attr name="atg_inputHint" format="string" />
+
+        <!-- The tag view outline border color. -->
+        <attr name="atg_borderColor" format="color" />
+        <!-- The tag view text color. -->
+        <attr name="atg_textColor" format="color" />
+        <!-- The tag view background color. -->
+        <attr name="atg_backgroundColor" format="color" />
+
+        <!-- The dash outline border color, when in append mode. -->
+        <attr name="atg_dashBorderColor" format="color" />
+        <!-- The input tag hint text color, when in append mode. -->
+        <attr name="atg_inputHintColor" format="color" />
+        <!-- The input tag type text color, when in append mode. -->
+        <attr name="atg_inputTextColor" format="color" />
+
+        <!-- The checked tag view outline border color. -->
+        <attr name="atg_checkedBorderColor" format="color" />
+        <!-- The checked text color. -->
+        <attr name="atg_checkedTextColor" format="color" />
+        <!-- The checked marker color. -->
+        <attr name="atg_checkedMarkerColor" format="color" />
+        <!-- The checked tag view background color. -->
+        <attr name="atg_checkedBackgroundColor" format="color" />
+
+        <!-- The tag view background color, when the tag view is being pressed. -->
+        <attr name="atg_pressedBackgroundColor" format="color" />
+
+        <!-- The tag view outline border stroke width. -->
+        <attr name="atg_borderStrokeWidth" format="dimension" />
+        <!-- The tag view text size. -->
+        <attr name="atg_textSize" format="dimension" />
+
+        <attr name="atg_horizontalSpacing" format="dimension" />
+        <attr name="atg_verticalSpacing" format="dimension" />
+        <attr name="atg_horizontalPadding" format="dimension" />
+        <attr name="atg_verticalPadding" format="dimension" />
+    </declare-styleable>
+
+    <declare-styleable name="Themes">
+        <attr name="tagGroupStyle" format="reference" />
+    </declare-styleable>
+
+
+    <!--end gongpengming-->
+
+    <!--SmoothCheckBox-->
+    <declare-styleable name="SmoothCheckBox">
+        <attr name="duration" format="integer" />
+        <attr name="stroke_width" format="dimension" />
+        <attr name="color_tick" format="color" />
+        <attr name="color_checked" format="color" />
+        <attr name="color_unchecked" format="color" />
+        <attr name="color_unchecked_stroke" format="color" />
+    </declare-styleable>
+    <declare-styleable name="SlidingUpPanelLayout">
+        <attr name="umanoPanelHeight" format="dimension" />
+        <attr name="umanoShadowHeight" format="dimension" />
+        <attr name="umanoParallaxOffset" format="dimension" />
+        <attr name="umanoFadeColor" format="color" />
+        <attr name="umanoFlingVelocity" format="integer" />
+        <attr name="umanoDragView" format="reference" />
+        <attr name="umanoScrollableView" format="reference" />
+        <attr name="umanoOverlay" format="boolean"/>
+        <attr name="umanoClipPanel" format="boolean"/>
+        <attr name="umanoAnchorPoint" format="float" />
+        <attr name="umanoInitialState" format="enum">
+            <enum name="expanded" value="0" />
+            <enum name="collapsed" value="1" />
+            <enum name="anchored" value="2" />
+            <enum name="hidden" value="3" />
+        </attr>
+        <attr name="umanoScrollInterpolator" format="reference" />
+    </declare-styleable>
+    <!-- 圆形图片-->
+    <declare-styleable name="CircleImageView">
+        <attr name="border_width" format="dimension" />
+        <attr name="border_color" format="color" />
+    </declare-styleable>
+
+
+    <declare-styleable name="WeekBarView">
+        <attr name="week_text_color" format="color"/>
+        <attr name="week_text_size" format="integer"/>
+    </declare-styleable>
+
+    <declare-styleable name="MonthCalendarView">
+        <attr name="month_selected_text_color" format="color"/>
+        <attr name="month_selected_circle_color" format="color"/>
+        <attr name="month_selected_circle_today_color" format="color"/>
+        <attr name="month_normal_text_color" format="color"/>
+        <attr name="month_today_text_color" format="color"/>
+        <attr name="month_lunar_text_color" format="color"/>
+        <attr name="month_hint_circle_color" format="color"/>
+        <attr name="month_holiday_color" format="color"/>
+        <attr name="month_last_or_next_month_text_color" format="color"/>
+        <attr name="month_day_text_size" format="integer"/>
+        <attr name="month_day_lunar_text_size" format="integer"/>
+        <attr name="month_show_task_hint" format="boolean"/>
+        <attr name="month_show_lunar" format="boolean"/>
+        <attr name="month_show_holiday_hint" format="boolean"/>
+        <attr name="month_count" format="integer"/>
+    </declare-styleable>
+
+    <declare-styleable name="WeekCalendarView">
+        <attr name="week_selected_text_color" format="color"/>
+        <attr name="week_selected_circle_color" format="color"/>
+        <attr name="week_selected_circle_today_color" format="color"/>
+        <attr name="week_normal_text_color" format="color"/>
+        <attr name="week_today_text_color" format="color"/>
+        <attr name="week_hint_circle_color" format="color"/>
+        <attr name="week_holiday_color" format="color"/>
+        <attr name="week_lunar_text_color" format="color"/>
+        <attr name="week_day_text_size" format="integer"/>
+        <attr name="week_day_lunar_text_size" format="integer"/>
+        <attr name="week_show_task_hint" format="boolean"/>
+        <attr name="week_show_lunar" format="boolean"/>
+        <attr name="week_show_holiday_hint" format="boolean"/>
+        <attr name="week_count" format="integer"/>
+    </declare-styleable>
+
+    <declare-styleable name="ScheduleLayout">
+        <attr name="default_view">
+            <enum name="month" value="0"/>
+            <enum name="week" value="1"/>
+        </attr>
+        <attr name="auto_change_month_row" format="boolean"/>
+    </declare-styleable>
+
+    <declare-styleable name="DragDisplayBoard">
+        <attr name="board_select_circle_color" format="color"/>
+        <attr name="board_select_border_color" format="color"/>
+    </declare-styleable>
+
+    <declare-styleable name="DayPickerView">
+        <attr name="colorCurrentDay" format="color"/>
+        <attr name="colorSelectedDayBackground" format="color"/>
+        <attr name="colorSelectedDayText" format="color"/>
+        <attr name="colorPreviousDay" format="color"/>
+        <attr name="colorNormalDay" format="color" />
+        <attr name="colorMonthName" format="color" />
+        <attr name="colorDayName" format="color" />
+        <attr name="textSizeDay" format="dimension"/>
+        <attr name="textSizeMonth" format="dimension" />
+        <attr name="textSizeDayName" format="dimension" />
+        <attr name="headerMonthHeight" format="dimension" />
+        <attr name="selectedDayRadius" format="dimension" />
+        <attr name="calendarHeight" format="dimension" />
+        <attr name="enablePreviousDay" format="boolean" />
+        <attr name="currentDaySelected" format="boolean" />
+        <attr name="drawRoundRect" format="boolean" />
+        <attr name="firstMonth" format="enum">
+            <enum name="january" value="0" />
+            <enum name="february" value="1" />
+            <enum name="march" value="2" />
+            <enum name="april" value="3" />
+            <enum name="may" value="4" />
+            <enum name="june" value="5" />
+            <enum name="july" value="6" />
+            <enum name="august" value="7" />
+            <enum name="september" value="8" />
+            <enum name="october" value="9" />
+            <enum name="november" value="10" />
+            <enum name="december" value="11" />
+        </attr>
+        <attr name="lastMonth" format="enum">
+            <enum name="january" value="0" />
+            <enum name="february" value="1" />
+            <enum name="march" value="2" />
+            <enum name="april" value="3" />
+            <enum name="may" value="4" />
+            <enum name="june" value="5" />
+            <enum name="july" value="6" />
+            <enum name="august" value="7" />
+            <enum name="september" value="8" />
+            <enum name="october" value="9" />
+            <enum name="november" value="10" />
+            <enum name="december" value="11" />
+        </attr>
+    </declare-styleable>
+
+</resources>

+ 329 - 0
app_modular/appme/src/main/res/values/colors.xml

@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="no_approval">#f10813</color>
+    <color name="approval">#268509</color>
+    <color name="done_approval">#969595</color>
+    <color name="calendar_bg_color">#EBE9E9</color>
+    <color name="week_text_color">#FF000000</color>
+    <color name="select_circle_color">#FF8594</color>
+    <!--umeng-->
+    <color name="umeng_socialize_comments_bg">#F4F4F4</color>
+    <color name="umeng_socialize_color_group">#2c3035</color>
+    <color name="umeng_socialize_list_item_textcolor">#333333</color>
+    <color name="umeng_socialize_list_item_bgcolor">#FFFFFF</color>
+    <color name="umeng_socialize_divider">#E6E6E6</color>
+    <color name="umeng_socialize_text_time">#999999</color>
+    <color name="umeng_socialize_text_title">#464f61</color>
+    <color name="umeng_socialize_text_friends_list">#959696</color>
+    <color name="umeng_socialize_text_share_content">#666666</color>
+    <color name="umeng_socialize_ucenter_bg">#EEEEEE</color>
+    <color name="umeng_socialize_text_ucenter">#595959</color>
+    <color name="umeng_socialize_edit_bg">#C4C4C4</color>
+    <color name="umeng_socialize_grid_divider_line">#F8F8F8</color>
+    <color name="crm_title_task">#D0A233</color>
+    <!--by gongpengming-->
+    <color name="load_submit">#11CD6E</color><!--下拉成功、提交成功-->
+    <color name="load_error">#A6ff4444</color><!--下拉失败、提交成功-->
+    <color name="load_warning">#D0A233</color>
+    <color name="load_message">#A6454A4B</color>
+
+    <color name="oa_outoffice">#3ac29e</color>
+    <color name="meeting">#d79147</color>
+    <color name="signin">#7292f8</color>
+    <color name="subscrip_text">#60a0a0a0</color>
+    <color name="subscrip_text1">#809b9797</color>
+    <!--#30a0a0a0-->
+    <color name="item_color1">#30F5F5F5</color>
+    <color name="pop_bg">#aeaeae</color>
+    <color name="item_color2">@color/white</color>
+    <color name="item_text">#cca0a0a0</color>
+    <color name="item_line">#BFD3D3D3</color>
+    <color name="antionbarcolor">#646464</color>
+    <color name="base_bg">#EBE9E9</color>
+    <color name="antionbaritemcolor">#a3b2cf</color>
+    <color name="wirtehine">#a3b2cf</color>
+    <color name="text_main">#3c3c3c</color>
+    <color name="text_hine">#575757</color>
+
+    <color name="bar_pass">#0096e6</color>
+    <color name="bar_color">#e6e6e6</color>
+    <color name="bg_main">@color/white</color>
+    <color name="refresh">@color/black</color>
+
+    <color name="btn_login_nomarl">#7BB4DC</color>
+    <color name="btn_login_press">#B9D2E3</color>
+
+    <color name="btn_orange_normal">#DD9C57</color>
+    <color name="btn_orange_press">#908f8f</color>
+    <!--end gongpengming-->
+    <color name="shadow">#AA000000</color>
+    <color name="default_shadow_color">#88757575</color>
+    <color name="default_fill_color">#ffffff</color>
+    <color name="crm_basic_bg">#4B4B57</color>
+    <color name="indexnormal">#98FB98</color>
+    <color name="indexpress">#3ACF6C</color>
+    <color name="blend_item_theme_color">#ff005092</color>
+    <color name="yellow_home">#FF8200</color>
+    <color name="light_green">#11CD6E</color> <!-- 绿色 -->
+    <!-- 黄色 tabhost -->
+    <color name="normal_bg">#fff0eff4</color>
+    <color name="main_tab_text_normal_grey">#ff83888e</color>
+    <color name="sub_tab_text_normal_black">#ff2d2f32</color>
+    <color name="actionbar_selector_color">#4d000000</color>
+    <color name="action_bar_tittle_color">#ffcfcfcf</color>
+    <color name="hint_text_color">#ff999999</color>
+    <color name="dark_grey">#ff7a7a7a</color>
+    <color name="dark_dark_grey">#ff505050</color>
+    <color name="black_trans_33">#33000000</color>
+    <color name="black_trans_99">#99000000</color>
+    <color name="chat_black_alpa">#88000000</color>
+    <color name="light_grey">#ffcccccc</color>
+    <color name="dark_orange">#ffd24d0c</color>
+    <color name="text_black">#ff2d2f32</color>
+    <color name="text_select">#fffa6015</color>
+    <color name="light_gray">#ff84828f</color>
+    <color name="circle_add_item_bg">#ffe2e1e6</color>
+    <color name="fade_black">#44000000</color>
+    <color name="replay_text_color_select">#ff352828</color>
+    <color name="operation_more_text_bg_normal">#ff363b3d</color>
+    <color name="operation_more_text_bg_press">#ff282c2e</color>
+    <color name="link_nick_name_color">#ff576b95</color>
+    <color name="dialog_normal">#0079FF</color>
+
+    <!-- PickDialog -->
+    <color name="lightgray">#F7F7F7</color>
+    <color name="lightblack">#696969</color>
+    <color name="blend_item_divider_color">#ffededed</color>
+    <!-- 内容条目按下时的样式 -->
+    <drawable name="pressed_bg">#f2f2f2</drawable>
+    <drawable name="nopressed_bg">#fff</drawable>
+    <!-- 警示性按钮的背景颜色 -->
+    <drawable name="button_caution_pressed">#d1337b</drawable>
+    <drawable name="button_caution_normal">#f559b1</drawable>
+    <!-- 程序主色调 -->
+    <color name="background">#f2f2f2</color>
+    <color name="hine_bg">#ebe9e9</color>
+    <color name="table_background">#cbcbcb</color>
+    <color name="light_white">#fcfcfc</color>
+    <color name="tab_main_color">#1e1d1d</color>
+    <color name="transparent">#00000000</color>
+    <color name="gray_light">#CCCCCC</color>
+    <color name="black_gray">#F5F5F5</color>
+
+    <color name="white">#FFFFFF</color> <!-- 白色 -->
+    <color name="ivory">#FFFFF0</color> <!-- 象牙色 -->
+    <color name="lightyellow">#FFFFE0</color> <!-- 亮黄色 -->
+    <color name="yellow">#FFFF00</color> <!-- 黄色 -->
+    <color name="snow">#FFFAFA</color> <!-- 雪白色 -->
+    <color name="floralwhite">#FFFAF0</color> <!-- 花白色 -->
+    <color name="lemonchiffon">#FFFACD</color> <!-- 柠檬绸色 -->
+    <color name="cornsilk">#FFF8DC</color> <!-- 米绸色 -->
+    <color name="seashell">#FFF5EE</color> <!-- 海贝色 -->
+    <color name="lavenderblush">#FFF0F5</color> <!-- 淡紫红 -->
+    <color name="papayawhip">#FFEFD5</color> <!-- 番木色 -->
+    <color name="blanchedalmond">#FFEBCD</color> <!-- 白杏色 -->
+    <color name="mistyrose">#FFE4E1</color> <!-- 浅玫瑰色 -->
+    <color name="text_color">#717171</color> <!-- 浅玫瑰色 -->
+    <color name="bisque">#FFE4C4</color> <!-- 桔黄色 -->
+    <color name="moccasin">#FFE4B5</color> <!-- 鹿皮色 -->
+    <color name="navajowhite">#FFDEAD</color> <!-- 纳瓦白 -->
+    <color name="peachpuff">#FFDAB9</color> <!-- 桃色 -->
+    <color name="gold">#FFD700</color> <!-- 金色 -->
+    <color name="pink">#FFC0CB</color> <!-- 粉红色 -->
+    <color name="lightpink">#FFB6C1</color> <!-- 亮粉红色 -->
+    <color name="orange">#FFA500</color> <!-- 橙色 -->
+    <color name="lightsalmon">#FFA07A</color> <!-- 亮肉色 -->
+    <color name="darkorange">#FF8C00</color> <!-- 暗桔黄色 -->
+    <color name="coral">#FF7F50</color> <!-- 珊瑚色 -->
+    <color name="hotpink">#FF69B4</color> <!-- 热粉红色 -->
+    <color name="tomato">#FF6347</color> <!-- 西红柿色 -->
+    <color name="orangered">#FF4500</color> <!-- 红橙色 -->
+    <color name="deeppink">#FF1493</color> <!-- 深粉红色 -->
+    <color name="fuchsia">#FF00FF</color> <!-- 紫红色 -->
+    <color name="magenta">#FF00FF</color> <!-- 红紫色 -->
+    <color name="red">#FF0000</color> <!-- 红色 -->
+    <color name="oldlace">#FDF5E6</color> <!-- 老花色 -->
+    <color name="lightgoldenrodyellow">#FAFAD2</color> <!-- 亮金黄色 -->
+    <color name="linen">#FAF0E6</color> <!-- 亚麻色 -->
+    <color name="antiquewhite">#FAEBD7</color> <!-- 古董白 -->
+    <color name="salmon">#FA8072</color> <!-- 鲜肉色 -->
+    <color name="ghostwhite">#F8F8FF</color> <!-- 幽灵白 -->
+    <color name="mintcream">#F5FFFA</color> <!-- 薄荷色 -->
+    <color name="whitesmoke">#F5F5F5</color> <!-- 烟白色 -->
+    <color name="beige">#F5F5DC</color> <!-- 米色 -->
+    <color name="wheat">#F5DEB3</color> <!-- 浅黄色 -->
+    <color name="sandybrown">#F4A460</color> <!-- 沙褐色 -->
+    <color name="azure">#F0FFFF</color> <!-- 天蓝色 -->
+    <color name="honeydew">#F0FFF0</color> <!-- 蜜色 -->
+    <color name="aliceblue">#F0F8FF</color> <!-- 艾利斯兰 -->
+    <color name="khaki">#F0E68C</color> <!-- 黄褐色 -->
+    <color name="lightcoral">#F08080</color> <!-- 亮珊瑚色 -->
+    <color name="palegoldenrod">#EEE8AA</color> <!-- 苍麒麟色 -->
+    <color name="violet">#EE82EE</color> <!-- 紫罗兰色 -->
+    <color name="darksalmon">#E9967A</color> <!-- 暗肉色 -->
+    <color name="lavender">#E6E6FA</color> <!-- 淡紫色 -->
+    <color name="lightcyan">#E0FFFF</color> <!-- 亮青色 -->
+    <color name="burlywood">#DEB887</color> <!-- 实木色 -->
+    <color name="plum">#DDA0DD</color> <!-- 洋李色 -->
+    <color name="gainsboro">#DCDCDC</color> <!-- 淡灰色 -->
+    <color name="crimson">#DC143C</color> <!-- 暗深红色 -->
+    <color name="palevioletred">#DB7093</color>
+    <!-- 苍紫罗兰色 -->
+    <color name="goldenrod">#DAA520</color> <!-- 金麒麟色 -->
+    <color name="orchid">#DA70D6</color> <!-- 淡紫色 -->
+    <color name="thistle">#D8BFD8</color> <!-- 蓟色 -->
+    <color name="lightgrey">#D3D3D3</color> <!-- 亮灰色 -->
+    <color name="tan">#D2B48C</color> <!-- 茶色 -->
+    <color name="chocolate">#D2691E</color> <!-- 巧可力色 -->
+    <color name="peru">#CD853F</color> <!-- 秘鲁色 -->
+    <color name="indianred">#CD5C5C</color> <!-- 印第安红 -->
+    <color name="mediumvioletred">#C71585</color> <!-- 中紫罗兰色 -->
+    <color name="silver">#C0C0C0</color> <!-- 银色 -->
+    <color name="darkkhaki">#BDB76B</color> <!-- 暗黄褐色 -->
+    <color name="rosybrown">#BC8F8F</color> <!-- 褐玫瑰红 -->
+    <color name="mediumorchid">#BA55D3</color> <!-- 中粉紫色 -->
+    <color name="darkgoldenrod">#B8860B</color> <!-- 暗金黄色 -->
+    <color name="firebrick">#B22222</color> <!-- 火砖色 -->
+    <color name="powderblue">#B0E0E6</color> <!-- 粉蓝色 -->
+    <color name="lightsteelblue">#B0C4DE</color> <!-- 亮钢兰色 -->
+    <color name="paleturquoise">#AFEEEE</color> <!-- 苍宝石绿 -->
+    <color name="greenyellow">#ADFF2F</color> <!-- 黄绿色 -->
+    <color name="lightblue">#ADD8E6</color> <!-- 亮蓝色 -->
+    <color name="darkgray">#A9A9A9</color> <!-- 暗灰色 -->
+    <color name="darkgrey">#A9A9A9</color> <!-- 暗灰色 -->
+    <color name="brown">#A52A2A</color> <!-- 褐色 -->
+    <color name="sienna">#A0522D</color> <!-- 赭色 -->
+    <color name="darkorchid">#9932CC</color> <!-- 暗紫色 -->
+    <color name="palegreen">#98FB98</color> <!-- 苍绿色 -->
+    <color name="darkviolet">#9400D3</color> <!-- 暗紫罗兰色 -->
+    <color name="mediumpurple">#9370DB</color> <!-- 中紫色 -->
+    <color name="lightgreen">#90EE90</color> <!-- 亮绿色 -->
+    <color name="darkseagreen">#8FBC8F</color> <!-- 暗海兰色 -->
+    <color name="saddlebrown">#8B4513</color> <!-- 重褐色 -->
+    <color name="darkmagenta">#8B008B</color> <!-- 暗洋红 -->
+    <color name="darkred">#8B0000</color> <!-- 暗红色 -->
+    <color name="blueviolet">#8A2BE2</color> <!-- 紫罗兰蓝色 -->
+    <color name="lightskyblue">#87CEFA</color> <!-- 亮天蓝色 -->
+    <color name="skyblue">#87CEEB</color> <!-- 天蓝色 -->
+    <color name="gray">#808080</color> <!-- 灰色 -->
+    <color name="grey">#808080</color> <!-- 灰色 -->
+    <color name="olive">#808000</color> <!-- 橄榄色 -->
+    <color name="purple">#800080</color> <!-- 紫色 -->
+    <color name="maroon">#800000</color> <!-- 粟色 -->
+    <color name="aquamarine">#7FFFD4</color> <!-- 碧绿色 -->
+    <color name="chartreuse">#7FFF00</color> <!-- 黄绿色 -->
+    <color name="lawngreen">#7CFC00</color> <!-- 草绿色 -->
+    <color name="mediumslateblue">#7B68EE</color> <!-- 中暗蓝色 -->
+    <color name="lightslategray">#778899</color> <!-- 亮蓝灰 -->
+    <color name="lightslategrey">#778899</color> <!-- 亮蓝灰 -->
+    <color name="slategray">#708090</color> <!-- 灰石色 -->
+    <color name="slategrey">#708090</color> <!-- 灰石色 -->
+    <color name="olivedrab">#6B8E23</color> <!-- 深绿褐色 -->
+    <color name="slateblue">#6A5ACD</color> <!-- 石蓝色 -->
+    <color name="dimgray">#696969</color> <!-- 暗灰色 -->
+    <color name="dimgrey">#696969</color> <!-- 暗灰色 -->
+    <color name="mediumaquamarine">#66CDAA</color>
+    <!-- 中绿色 -->
+    <color name="cornflowerblue">#6495ED</color> <!-- 菊兰色 -->
+    <color name="cadetblue">#5F9EA0</color> <!-- 军兰色 -->
+    <color name="darkolivegreen">#556B2F</color>
+    <!-- 暗橄榄绿 -->
+    <color name="indigo">#4B0082</color> <!-- 靛青色 -->
+    <color name="mediumturquoise">#48D1CC</color> <!-- 中绿宝石 -->
+    <color name="darkslateblue">#483D8B</color> <!-- 暗灰蓝色 -->
+    <color name="steelblue">#4682B4</color> <!-- 钢兰色 -->
+    <color name="royalblue">#4169E1</color> <!-- 皇家蓝 -->
+    <color name="turquoise">#40E0D0</color> <!-- 青绿色 -->
+    <color name="mediumseagreen">#3CB371</color> <!-- 中海蓝 -->
+    <color name="limegreen">#32CD32</color> <!-- 橙绿色 -->
+    <color name="darkslategray">#2F4F4F</color> <!-- 暗瓦灰色 -->
+    <color name="darkslategrey">#2F4F4F</color> <!-- 暗瓦灰色 -->
+    <color name="seagreen">#2E8B57</color> <!-- 海绿色 -->
+    <color name="forestgreen">#228B22</color> <!-- 森林绿 -->
+    <color name="lightseagreen">#20B2AA</color> <!-- 亮海蓝色 -->
+    <color name="dodgerblue">#1E90FF</color> <!-- 闪兰色 -->
+    <color name="midnightblue">#191970</color> <!-- 中灰兰色 -->
+    <color name="aqua">#00FFFF</color> <!-- 浅绿色 -->
+    <color name="cyan">#00FFFF</color> <!-- 青色 -->
+    <color name="springgreen">#00FF7F</color> <!-- 春绿色 -->
+    <color name="lime">#00FF00</color> <!-- 酸橙色 -->
+    <color name="mediumspringgreen">#00FA9A</color> <!-- 中春绿色 -->
+    <color name="darkturquoise">#00CED1</color> <!-- 暗宝石绿 -->
+    <color name="deepskyblue">#00BFFF</color> <!-- 深天蓝色 -->
+    <color name="darkcyan">#008B8B</color> <!-- 暗青色 -->
+    <color name="teal">#008080</color> <!-- 水鸭色 -->
+    <color name="green">#008000</color> <!-- 绿色 -->
+    <color name="darkgreen">#006400</color> <!-- 暗绿色 -->
+    <color name="blue">#0000FF</color> <!-- 蓝色 -->
+    <!--标题栏颜色-->
+    <color name="titleBlue">#BF2F95DD</color> <!-- 青蓝色 -->
+    <color name="titleCustomer">#DF8339</color>
+    <color name="titleVisit">#6FB660</color>
+    <color name="titleTask">#D0A233</color>
+    <color name="titleRank">#D0A233</color>
+
+
+    <color name="mediumblue">#0000CD</color> <!-- 中兰色 -->
+    <color name="darkblue">#00008B</color> <!-- 暗蓝色 -->
+    <color name="navy">#000080</color> <!-- 海军色 -->
+    <!-- WHI defined colors -->
+    <color name="dark_red">#F2837B</color>
+    <color name="dark_red_select">#ffa02d38</color>
+    <color name="black">#000000</color> <!-- 黑色 -->
+    <color name="GhostWhite">#fff8f8ff</color>
+    <color name="Transpant">#00000000</color>
+    <color name="HalfBlack">#aa000000</color>
+    <color name="LightGreen">#ff002200</color>
+    <color name="LightBlue">#ff0000ff</color>
+    <color name="TextRed">#ffc68753</color>
+    <color name="calendar_topbg">#ff836244</color>
+    <color name="calendar_cellbg">#ff373737</color>
+    <color name="hintColor">#969595</color>
+    <color name="approvaling">#B99400</color>
+    <color name="main_red">#ffbe2e15</color>
+    <color name="main_grey">#ff5f5f5f</color>
+    <color name="huangTuSe">#ff995e2d</color>
+    <color name="sc_transparent_background">#00111111</color>
+    <color name="dark">#ff494949</color>
+    <color name="ash">#ff78736d</color>
+    <color name="mainList1">#fff46e64</color>
+    <color name="mainList2">#fffeb355</color>
+    <color name="mainList3">#ff7daee8</color>
+    <color name="mainList4">#ff7fd373</color>
+    <color name="mainList5">#ffde7ab8</color>
+    <color name="bright_foreground_light">#ff000000</color>
+    <color name="bright_foreground_light_inverse">#ffffffff</color>
+    <color name="bright_foreground_light_disabled">#80000000</color>
+    <color name="dim_foreground_light">#808080</color>
+    <color name="dim_foreground_light_disabled">#80323232</color>
+    <color name="dim_foreground_light_inverse">#ff006eaa</color>
+    <color name="dim_foreground_light_inverse_disabled">#80bebebe</color>
+
+    <color name="replay_text_color_normal">#ffa19992</color>
+    <color name="oa_background_orange">#DC9A54</color>
+
+    <color name="toast_bg">#60808080</color><!--自定义toast背景色-->
+
+    <color name="button_normal">#7AB9EE</color>
+    <color name="button_invalid">#C0C0C0</color>
+    <color name="button_focus">#2475FB</color>
+    <color name="text_normal">#808A87</color>
+
+    <color name="me_menu_item_normal">#FAF9F9</color>
+    <color name="me_menu_item_press">#DFDEDE</color>
+    <color name="bg_underlying">#ebe9e9</color>
+    <color name="orange_text">#f17e21</color>
+    <color name="oa_bg">#EBE9E9</color>
+    <color name="oa_item_bg">#f9f9f9</color>
+    <color name="colorPrimary">#3F51B5</color>
+    <color name="colorPrimaryDark">#303F9F</color>
+    <color name="colorAccent">#FF4081</color>
+    <color name="light_blue">#44CDC5</color>
+    <color name="main_text_color">#333333</color>
+    <color name="gray_default_dark">#666666</color>
+
+    <color name="normal_day">#ff999999</color>
+    <color name="selected_day_background">#E75F49</color>
+    <color name="selected_day_text">#fff2f2f2</color>
+    <color name="new_waitting_approvel">#F4A460</color>
+</resources>

+ 1872 - 3
app_modular/appme/src/main/res/values/strings.xml

@@ -1,3 +1,1872 @@
-<resources>
-    <string name="app_name">appme</string>
-</resources>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <!--登录-->
+    <string name="login_button">登  录</string>
+    <string name="login_account">账号    |</string>
+    <string name="login_password">密码    |</string>
+    <string name="login_losspwd">忘记密码</string>
+    <string name="login_getpwd">密码找回</string>
+    <string name="login_register">新用户注册</string>
+
+    <string-array name="calendar_week">
+        <item>日</item>
+        <item>一</item>
+        <item>二</item>
+        <item>三</item>
+        <item>四</item>
+        <item>五</item>
+        <item>六</item>
+    </string-array>
+
+
+    <string-array name="alarm_time">
+        <item>1分钟</item>
+        <item>2分钟</item>
+        <item>5分钟</item>
+        <item>10分钟</item>
+        <item>20分钟</item>
+        <item>30分钟</item>
+    </string-array>
+    <string-array name="sign_distance">
+        <item>200米</item>
+        <item>300米</item>
+        <item>500米</item>
+        <item>1000米</item>
+        <item>1500米</item>
+    </string-array>
+    <string-array name="work_distance">
+        <item>200米</item>
+        <item>300米</item>
+        <item>500米</item>
+        <item>1000米</item>
+        <item>1500米</item>
+    </string-array>
+
+    <string name="open_location">定位失败,请确认允许程序使用定位权限</string>
+    <string name="end_less_start">截止时间不能小于或等于开始时间</string>
+    <string name="delete_item">确定要删除吗</string>
+    <string name="select_must">选择(必填)</string>
+    <string name="select_nomust">选择(非必填)</string>
+    <string name="input_must">输入(必填)</string>
+    <string name="too_long_signin">当前位置距离考勤地点太远或没有获取到办公地址,打卡失败</string>
+    <string name="add_company_name">请选择或输入公司名称</string>
+    <string name="add_company_addr">请选择或输入公司地址</string>
+    <string name="updata">更新</string>
+    <string name="select_location">选择地址</string>
+
+    <string name="signin_alert">打卡提醒</string>
+    <string name="too_long_to_http">网络请求超时,请检查网络或稍后重试</string>
+    <string name="other_map">使用其他地图</string>
+    <string name="current_time">当前时间</string>
+
+
+    <string name="click_finds"><u>点击查看</u></string>
+    <string name="add_summed">请添加工作总结(必填项)!</string>
+    <string name="change_mobile_ok">申请变更成功,待系统审批完即可正常打卡!</string>
+    <string name="change_signin_ok">申诉成功!</string>
+    <string name="change_mobile">打卡设备变更单</string>
+    <string name="supple_signin">申诉申请</string>
+    <string name="play_phone">拨打电话</string>
+    <string name="send_mail">发送短信</string>
+    <string name="add_plan">请添加工作计划!</string>
+    <string name="add_learned">请添加心得体会!</string>
+    <string name="session_out">会话已断开</string>
+    <string name="crm_sale_num">****元  (第**名)</string>
+    <string name="not_format_phone">手机格式不正确!</string>
+    <string name="not_phone">当前用户没有公开手机号</string>
+    <string name="crm_ranking">我的排名</string>
+    <string name="crm_sale_msg">本月销售简报</string>
+    <string name="crm_branch">我的下属</string>
+    <string name="crm_target">我的指标</string>
+    <string name="crm_customer_forget">遗忘的客户</string>
+    <string name="crm_customer_forget_num">__个</string>
+
+    <string name="crm_business">商机</string>
+    <string name="crm_customer">客户</string>
+    <string name="crm_customer_visit">客户拜访</string>
+    <string name="crm_waller">荣誉墙</string>
+    <!--View empty-->
+    <string name="empty_message">暂无记录</string>
+    <string name="loading_message">请等待!</string>
+    <string name="error_message">很抱歉! 系统发现未知错误</string>
+    <string name="empty_button">再次尝试</string>
+    <string name="loading_button">取消</string>
+    <string name="error_button">再次尝试</string>
+
+    <string name="app_name">UU互联</string>
+    <string name="data_exception">数据异常,请稍后重试</string>
+    <string name="net_exception">网络异常,请稍后重试</string>
+    <string name="please_wait">请稍等&#8230;</string>
+    <string name="load_failed_click_again">加载失败,点击重新加载</string>
+    <string name="yes">是</string>
+    <string name="no">否</string>
+    <string name="close">关闭</string>
+    <string name="save">保存</string>
+    <string name="prompt_title">提示</string>
+    <string name="search">搜索</string>
+    <string name="temporarily_no_data">暂时没有数据</string>
+    <string name="sure">确定</string>
+    <string name="cancel">取消</string>
+    <string name="saveing">保存中&#8230;</string>
+    <string name="save_success">保存成功</string>
+    <string name="save_failed">保存失败</string>
+    <string name="delete">删除</string>
+    <string name="add">新增</string>
+    <string name="next_step">下一步</string>
+
+    <!-- 调用系统拍照的字符串 -->
+    <string name="c_take_picture">拍照</string>
+    <string name="c_take_picture_failed">拍照失败</string>
+    <string name="c_photo_album">相册</string>
+    <string name="c_photo_album_failed">选择失败</string>
+    <string name="c_crop_failed">裁减失败</string>
+    <!-- 城市选择 -->
+    <string name="locationing">正在定位</string>
+    <string name="current_location">当前位置</string>
+    <string name="hot_city">热门城市</string>
+    <string name="select_city_by_province">按省份选择城市</string>
+    <string name="location_failed">定位失败</string>
+
+    <string name="select">选择</string>
+    <string name="country">国家</string>
+    <string name="province">省份</string>
+    <string name="city">城市</string>
+    <string name="county">县区</string>
+    <!-- 时间显示 -->
+    <string name="to_this_day">至今</string>
+    <string name="friendly_time_just_now">刚刚</string>
+    <string name="friendly_time_before_seconds">秒前</string>
+    <string name="friendly_time_before_minute">分钟前</string>
+    <string name="friendly_time_yesterday">昨天</string>
+    <string name="friendly_time_before_yesterday">前天</string>
+
+    <!-- //////////////// EditText hint text ////////////////////// -->
+    <string name="please_input_phone_number">请输入手机号码</string>
+    <string name="please_input_auth_code">请输入验证码</string>
+    <string name="please_input_password">请输入密码</string>
+    <string name="please_confirm_password">请确认密码</string>
+    <string name="please_input_name">请输入昵称</string>
+    <string name="please_input_new_password">请输入新密码</string>
+    <string name="please_confirm_new_password">请确认新密码</string>
+    <string name="please_input_keyword">请输入关键字</string>
+
+    <!-- SpalshActivity -->
+    <string name="login">登录</string>
+    <string name="register">注册</string>
+    <!-- LoginActivity -->
+    <string name="user_telphone_login">使用手机号登录</string>
+    <string name="register_account">注册用户</string>
+    <string name="forget_password">忘记密码</string>
+    <string name="login_failed">登陆失败</string>
+    <!-- LoginHistoryActivity -->
+    <string name="switch_account">切换账号</string>
+    <!-- DataDownloadActivity -->
+    <string name="data_update">数据更新</string>
+    <string name="data_not_update_exit">用户数据尚未更新完毕,退出将放弃登陆,您是否要退出?</string>
+
+    <!-- RegisterActivity -->
+    <string name="register_step_one">1、输入手机号</string>
+    <string name="phone_number_format_error">手机号码格式错误</string>
+    <string name="telphone_already_rigister">手机号已经被注册</string>
+    <string name="get_auth_code_failed">获取验证码失败,请重新发送</string>
+    <string name="auth_code_error">验证码错误</string>
+    <string name="auth_code_overdue">验证码失效</string>
+
+    <!-- RegisterPasswordActivity -->
+    <string name="register_step_two">2、填写密码</string>
+    <string name="password_empty_error">密码不允许为空,且长度大于6个字符</string>
+    <string name="confirm_password_empty_error">确认密码不允许为空,且长度大于6个字符</string>
+    <string name="password_confirm_password_not_match">密码和确认密码不一致</string>
+    <string name="cancel_register_prompt">是否退出该次注册?</string>
+    <!-- RegisterUserBasicInfoActivity (3、基本资料) -->
+    <string name="register_step_three">3、基本资料</string>
+    <string name="register_error">注册出错,请重试</string>
+    <string name="register_success">注册成功</string>
+    <!-- UserCheckedActivity -->
+    <string name="exit">退出</string>
+    <string name="login_again">重新登陆</string>
+    <string name="overdue_title">过期通知</string>
+    <string name="token_overdue_des">本地访问令牌已过期,是否立即重新登陆?</string>
+    <string name="deficiency_data_des">本地数据已过期,是否立即重新登陆?</string>
+    <string name="logout_title">下线通知</string>
+    <string name="logout_des">您的账号在另外一台设备上登录,是否立即重新登陆?</string>
+
+    <!-- MainActivity -->
+    <string name="message">消息</string>
+    <string name="find">通讯录</string>
+    <string name="nearby">工作</string>
+    <string name="group_chat">群聊</string>
+    <string name="me">我</string>
+
+    <!-- MessageFragment -->
+    <string name="welcome_user_software">欢迎使用UAS系统</string>
+    <string name="msg_picture">[图片]</string>
+    <string name="msg_voice">[语音]</string>
+    <string name="msg_location">[位置]</string>
+    <string name="msg_animation">[动画]</string>
+    <string name="msg_video">[视频]</string>
+    <string name="msg_file">[文件]</string>
+    <string name="msg_online">消息</string>
+    <string name="msg_offline">消息(离线)</string>
+    <string name="msg_connect">消息(连接中)</string>
+    <string name="msg_be_add_attention">有人关注了你</string>
+    <string name="msg_be_say_hello">有人给你打招呼</string>
+    <string name="msg_be_passed">你通过了好友验证</string>
+    <string name="msg_has_new_friend">你有新朋友了</string>
+    <string name="msg_has_new_recommend_friend">你有新的推荐朋友</string>
+    <string name="chat_poto">照片</string>
+    <string name="chat_camera">拍照</string>
+    <string name="chat_video">录像</string>
+    <string name="chat_audio">语音通话</string>
+    <string name="chat_loc">位置</string>
+    <string name="chat_file">文件</string>
+    <string name="chat_card">名片</string>
+    <string name="send">发送 </string>
+    <string name="motalk_voice_chat_tip_1">按住说话</string>
+    <string name="motalk_voice_chat_tip_2">松开发送</string>
+    <string name="motalk_voice_chat_tip_3">上滑取消发送</string>
+    <string name="motalk_voice_chat_tip_4">松开取消发送</string>
+    <string name="motalk_voice_chat_tip_5">重新录制</string>
+    <string name="motalk_voice_chat_tip_6">松开结束</string>
+
+    <!-- 发现模块 -->
+    <string name="newest">互相关注</string>
+    <string name="hotest">单向关注</string>
+    <string name="nearest">关注群</string>
+    <string name="bisniss">我的朋友</string>
+    <string name="share">分享</string>
+    <string name="work_home">工作主界面</string>
+    <!-- 加好友 -->
+    <string name="remark_name_format_error">备注名不合法,只允许中文、英文、字母和下划线,且长度为3至10个字符</string>
+    <string name="unilateral_attention">单向关注</string>
+    <string name="focus_on_each_other">互相关注</string>
+    <string name="focus_room">关注群</string>
+    <string name="set_remark_name">设置备注名称</string>
+    <string name="remove_blacklist">移出黑名单</string>
+    <string name="remove_blacklist_succ">移出黑名单成功</string>
+    <string name="add_blacklist">加入黑名单</string>
+    <string name="add_blacklist_succ">加入黑名单成功</string>
+    <string name="add_blacklist_prompt">确定要加入黑名单吗?</string>
+    <string name="remove_blacklist_prompt">确定要移出黑名单吗</string>
+    <string name="his_in_the_blacklist">已将对方加入黑名单</string>
+    <string name="more_attention">添加到特别关注</string>
+    <string name="cancel_attention">取消关注</string>
+    <string name="delete_all">彻底删除</string>
+    <string name="cancel_attention_prompt">确定要取消关注吗?</string>
+    <string name="delete_all_prompt">彻底删除操作,如果对方也关注了你,那么也将取消对方对你的关注,确定要彻底删除吗?</string>
+    <string name="cancel_attention_succ">取消关注成功</string>
+    <string name="delete_all_succ">删除成功</string>
+    <string name="new_friend">新的朋友</string>
+    <string name="add_attention">加为好友</string>
+    <string name="wait_verification">等待验证</string>
+    <string name="add_attention_succ">加关注成功</string>
+    <string name="add_attention_failed">加关注失败,你已被对方加入黑名单</string>
+    <string name="passed">已通过</string>
+    <string name="agreed">已同意</string>
+    <string name="is_the_friend">已互为好友</string>
+    <string name="say_hello">打招呼</string>
+    <string name="say_hello_again">再打招呼</string>
+    <string name="send_msg">发消息</string>
+    <string name="say_hello_succ">打招呼成功</string>
+    <string name="add_friend_succ">加好友成功</string>
+    <string name="agree">同意</string>
+    <string name="feedback_succ">回话成功</string>
+    <string name="feedback">回话</string>
+    <string name="simple_data_error">数据错误</string>
+    <string name="send_failed">发送失败,请稍后重试</string>
+    <string name="say_hello_dialog_title">验证消息</string>
+    <string name="say_hello_dialog_hint">亲,给我个加你的理由吧!</string>
+    <string name="say_hello_default">嘿,你好!</string>
+    <!-- 附近模块 -->
+    <string name="keyword">关键字</string>
+    <string name="sex">性    别</string>
+    <string name="min_age">最小年龄</string>
+    <string name="max_age">最大年龄</string>
+    <string name="show_time">出现时间</string>
+    <string name="all_date">所有日期</string>
+    <string name="all">全部</string>
+    <string name="reset">重置</string>
+    <string name="select_date">选择日期</string>
+
+    <!-- 商务圈 -->
+    <string name="send_myspace">发表到朋友圈</string>
+    <string name="send_text">发表文字</string>
+    <string name="send_image">发图片</string>
+    <string name="send_audio">发语音</string>
+    <string name="send_video">发视频</string>
+    <string name="delete_prompt">确定要删除吗?</string>
+    <string name="copy">复制</string>
+    <string name="praise">赞</string>
+    <string name="cancel_praise">取消</string>
+    <string name="comment">评论</string>
+    <string name="send_gift">送礼物</string>
+    <string name="replay_text">回复<xliff:g id="nick_name">%1$s</xliff:g>:</string>
+    <string name="replay"> 回复 </string>
+    <string name="upload_failed">上传失败</string>
+    <string name="look_over">查看</string>
+    <string name="pictures">图片</string>
+    <string name="level_inner"><xliff:g id="level">%1$d</xliff:g>级</string>
+    <string name="give_gift">送礼物</string>
+    <string name="my_business_circle">我的朋友圈</string>
+    <!-- 商务圈发布界面 -->
+    <string name="play_failed">播放失败</string>
+    <string name="audio_file_not_exist">录音文件不存在</string>
+    <string name="circle_release">发布</string>
+    <string name="circle_now_think">这一刻的想法&#8230;</string>
+    <string name="circle_add_voice">添加录音</string>
+    <string name="circle_select_voice">选择录音,最多1个</string>
+    <string name="circle_add_image">添加图片</string>
+    <string name="circle_select_image">选择图片,最多9个</string>
+    <string name="circle_select_video">选择视频,最多1个</string>
+    <string name="circle_add_video">添加视频</string>
+    <!-- 消息详情界面 -->
+    <string name="message_detail">说说详情</string>
+    <string name="comment_count">评论数(<xliff:g id="count">%1$d</xliff:g>)</string>
+
+    <!-- 群聊 -->
+    <string name="add_chat_ok_btn">确定(<xliff:g id="count">%1$s</xliff:g>)</string>
+    <string name="select_contacts">选择联系人</string>
+    <string name="please_input_room_name">请输入群名</string>
+    <string name="please_input_room_desc">请输入群描述</string>
+    <string name="service_start_failed">您当前处于离线状态,请检查网络或重新登陆</string>
+    <string name="create_room">创建群</string>
+    <string name="room_name_empty_error">群名不能为空</string>
+    <string name="room_des_empty_error">群描述不能为空</string>
+    <string name="create_room_failed">创建群失败</string>
+    <string name="uustep_service">com.xzjmyk.pm.basepedo.service.StepService</string>
+    <!-- MeFragment -->
+    <string name="my_uas">UAS账户</string>\
+    <string name="my_b2b">B2B平台</string>
+
+    <string name="my_data">我的资料</string>
+    <string name="my_friend">我的朋友</string>
+    <string name="my_space">我的空间</string>
+    <string name="personal_qzone">个人中心</string>
+    <string name="local_video">本地视频</string>
+    <string name="setting">设置</string>
+
+    <!-- RoomInfoActivity -->
+    <string name="room_info">群信息</string>
+    <string name="room_name">群名称</string>
+    <string name="notice">群内公告</string>
+    <string name="room_desc">群说明</string>
+    <string name="creator">创建者</string>
+    <string name="people_count">成员上限</string>
+    <string name="my_nick_name">我的群昵称</string>
+    <string name="can_not_remove_self">你不能移除你自己</string>
+    <string name="can_not_banned_self">你不能禁言你自己</string>
+    <string name="banned_voice">禁言</string>
+    <string name="banned_exit_room">退出群</string>
+    <string name="banned_delete_room">解散群</string>
+    <string name="create_chat_time">创建时间</string>
+    <string name="shield_chat">屏蔽群消息</string>
+    <string name="update_success">更新成功</string>
+    <string name="change_room_name">修改群名</string>
+    <string name="change_room_des">修改群说明</string>
+    <string name="change_my_nickname">修改我的群昵称</string>
+    <string name="add_notice">添加公告</string>
+    <!-- SettingActivity -->
+    <string name="change_master">账套</string>
+    <string name="change_company">公司</string>
+    <string name="uas_website_address">UAS地址</string>
+    <string name="uas_callback">建议反馈</string>
+
+    <string name="clear_cache">清除缓存</string>
+    <string name="push_setting">允许推送</string>
+    <string name="use_help">用户反馈</string>
+    <string name="about_us">关于UU互联</string>
+    <string name="app_version">当前版本</string>
+    <string name="exit_tips">确定要退出此账号吗?</string>
+    <string name="exit_current_account">退出登录</string>
+    <string name="deleteing">删除中&#8230;</string>
+    <string name="clear_completed">清除完毕</string>
+    <!-- AboutActivity -->
+    <string name="about_us_company">深圳市优软科技有限公司 版权所有</string>
+    <string name="about_us_copyright">Copyright @ 2014&#8211;2016 UAS.All Rights Reserved</string>
+    <!-- LocalVideoActivity -->
+    <string name="size">大小</string>
+    <string name="time_len">时长</string>
+    <string name="create_time">创建时间</string>
+    <string name="des">描述</string>
+    <string name="hour">小时</string>
+    <string name="minute">分</string>
+    <string name="second">秒</string>
+    <string name="video_file_not_exist">视频文件不存在</string>
+    <string name="delete_failed">删除失败</string>
+    <string name="select_failed">选取失败</string>
+    <!-- BasicInfo -->
+    <string name="basic_info">个人资料</string>
+    <string name="name_align">昵&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;称</string>
+    <string name="sex_align">性&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;别</string>
+    <string name="birthday">出生日期</string>
+    <string name="residence_align">居&#160;&#160;住&#160;&#160;地</string>
+    <string name="telephone">手机号码</string>
+    <string name="email">邮箱地址</string>
+    <string name="select_avatar">选择头像</string>
+    <string name="sex_man">男</string>
+    <string name="sex_woman">女</string>
+    <string name="name_empty_error">昵称不能为空</string>
+    <string name="live_address_empty_error">居住地不能为空</string>
+    <string name="nick_name_format_error">昵称不合法,只允许中文、英文、字母和下划线,且长度为3至10个字符</string>
+    <string name="cancel_edit_prompt">你还没有保存当前内容,确定要退出吗?</string>
+    <string name="upload_avataring">上传头像&#8230;</string>
+    <string name="upload_avatar_success">上传头像成功</string>
+    <string name="upload_avatar_failed">上传头像失败,请稍后重试</string>
+    <string name="look_friend_location"> 发送任务</string>
+
+    <!-- VideoRecordActivity -->
+    <string name="start_failed">启动失败</string>
+    <string name="record_failed">录制失败</string>
+    <string name="record_succ">录制成功</string>
+    <string name="failed_to_open_camera_1">打开相机失败</string>
+    <string name="failed_to_open_camera_2">相机可能正在被</string>
+    <string name="failed_to_open_camera_3">其他应用占用?</string>
+
+
+    <string name="chooser_title">选择发送文件</string>
+    <string name="empty_directory">Empty Directory</string>
+    <string name="storage_removed">Storage was removed or unmounted.</string>
+    <string name="choose_file">Select a file</string>
+    <string name="error_selecting_file">Error selecting File</string>
+    <string name="internal_storage">Internal storage</string>
+    <string name="person_card_title">我的名片,点击查看哦</string>
+    <string name="create_new_chat">创建新聊天</string>
+    <string name="recent_chat">最近聊天</string>
+    <string name="select_group_chat_instant">选择一个群</string>
+
+
+    <string name="add_tag">Add Tag</string>
+
+    <string name="pull_to_refresh_pull_label" translatable="false">向下拉动可以刷新</string>
+    <string name="pull_to_refresh_release_label" translatable="false">松开可以刷新</string>
+    <string name="pull_to_refresh_refreshing_label" translatable="false">加载中&#8230;</string>
+    <string name="pull_to_refresh_tap_label" translatable="false">点击刷新</string>
+    <!--umeng-->
+    <string name="umeng_socialize_network_break_alert" translatable="false">请连接网络后再尝试!</string>
+    <string name="umeng_socialize_comment" translatable="false">评论</string>
+    <string name="umeng_socialize_comment_detail" translatable="false">评论详情</string>
+    <string name="umeng_socialize_back" translatable="false">返回</string>
+    <string name="umeng_socialize_near_At" translatable="false">最近\@的好友</string>
+    <string name="umeng_socialize_friends" translatable="false">关注的好友</string>
+    <string name="umeng_socialize_send" translatable="false">发布</string>
+    <string name="umeng_socialize_tip_blacklist" translatable="false">对不起,因为违反了用户协议您已被禁言.</string>
+    <string name="umeng_socialize_tip_loginfailed" translatable="false">登录失败&#8230;</string>
+    <string name="umeng_socialize_msg_sec" translatable="false">秒前</string>
+    <string name="umeng_socialize_msg_min" translatable="false">分钟前</string>
+    <string name="umeng_socialize_msg_hor" translatable="false">小时前</string>
+    <string name="umeng_socialize_ucenter_login_title_guide" translatable="false">游客登录</string>
+    <string name="umeng_socialize_ucenter_login_title_platform" translatable="false">登录帐号</string>
+
+    <dimen name="alphabet_size">12dip</dimen>
+    <dimen name="umeng_socialize_pad_window_height">350dip</dimen>
+    <dimen name="umeng_socialize_pad_window_width">580dip</dimen>
+
+    <string name="umeng_socialize_share_content">友盟社会化组件(SDK)让移动应用快速整合社交分享功能,我们简化了社交平台的接入,为开发者提供坚实的基础服务。(一)支持各大主流社交平台,
+												(二)支持图片、文字、gif动图、音频、视频;@好友,关注官方微博等功能。
+												(三)提供详尽的后台用户社交行为分析。www.umeng.com/social</string>
+    <string name="umeng_socialize_login_qq">QQ空间</string>
+    <string name="umeng_socialize_login">登录</string>
+    <string name="umeng_socialize_text_choose_account">选择已有帐号登录</string>
+    <string name="umeng_socialize_text_authorize">授权</string>
+    <string name="umeng_socialize_text_unauthorize">未授权</string>
+    <string name="umeng_socialize_text_ucenter">个人中心</string>
+    <string name="umeng_socialize_text_login_fail">登录失败了,请重试</string>
+    <string name="umeng_socialize_text_comment_hint">说点什么吧&#8230;</string>
+    <string name="umeng_socialize_text_friend_list">好友列表</string>
+    <string name="umeng_socialize_text_visitor">游客</string>
+    <string name="umeng_socialize_text_tencent_no_connection">无法连接到腾讯微博客户端</string>
+    <string name="umeng_socialize_text_tencent_oauth_login_fail">授权登录失败</string>
+    <string name="umeng_socialize_text_tencent_version_no_match">版本不匹配,SSO只对微博客户端V3.8.1及以上的版本提供支持</string>
+    <string name="umeng_socialize_text_tencent_no_install">未安装腾讯微博客户端</string>
+    <string name="umeng_socialize_text_waitting">请稍候...</string>
+    <string name="umeng_socialize_text_waitting_weixin">跳转微信中,请稍候...</string>
+    <string name="umeng_socialize_text_waitting_weixin_circle">跳转朋友圈中,请稍候...</string>
+    <string name="umeng_socialize_text_waitting_yixin">跳转易信中,请稍候...</string>
+    <string name="umeng_socialize_text_waitting_yixin_circle">跳转易信朋友圈中,请稍候...</string>
+    <string name="umeng_socialize_text_waitting_qq">跳转QQ中,请稍候...</string>
+    <string name="umeng_socialize_text_waitting_qzone">跳转QZone中,请稍候...</string>
+    <string name="umeng_socialize_text_waitting_redirect">跳转</string>
+    <string name="umeng_socialize_text_waitting_message">,请稍候...</string>
+    <string name="umeng_socialize_text_loading_message">载入中,请稍候...</string>
+    <!-- 平台名称 -->
+    <string name="umeng_socialize_text_tencent_key">腾讯微博</string>
+    <string name="umeng_socialize_text_wenxin_fav">微信收藏</string>
+    <string name="umeng_socialize_text_sina_key">微博</string>
+    <string name="umeng_socialize_text_qq_key">QQ</string>
+    <string name="umeng_socialize_text_qq_zone_key">QQ空间</string>
+    <string name="umeng_socialize_text_renren_key">人人网</string>
+    <string name="umeng_socialize_text_douban_key">豆瓣网</string>
+    <string name="umeng_socialize_text_weixin_key">微信</string>
+    <string name="umeng_socialize_text_weixin_circle_key">微信朋友圈</string>
+    <string name="umeng_socialize_text_weixin_fav_key">微信收藏</string>
+    <string name="umeng_socialize_text_add_custom_platform">请配置用户平台</string>
+    <string name="umeng_example_home_btn_plus">社交分享</string>
+    <string name="umeng_socialize_text_waitting_share">分享中&#8230;</string>
+    <string name="umeng_socialize_content_hint">说点啥&#8230;</string>
+    <string name="umeng_socialize_cancel_btn_str">取消</string>
+    <string name="umeng_socialize_send_btn_str">发送</string>
+    <string name="umeng_socialize_img_des"></string>
+    <string name="umeng_socialize_share">分享</string>
+
+    <string name="umeng_socialize_mail">邮件</string>
+    <string name="umeng_socialize_sms">短信</string>
+    <string name="umeng_socialize_sina">新浪</string>
+    <string name="umeng_socialize_text_yixin_key">易信</string>
+    <string name="umeng_socialize_text_yixincircle_key">易信朋友圈</string>
+
+    <string name="umeng_socialize_text_laiwangdynamic_key">来往动态</string>
+    <string name="umeng_socialize_text_evernote_key">印象笔记</string>
+    <string name="umeng_socialize_text_ydnote_key">有道云笔记</string>
+    <string name="umeng_socialize_text_facebook_key">facebook</string>
+    <string name="umeng_socialize_text_twitter_key">twitter</string>
+    <string name="umeng_socialize_text_instagram_key">instagram</string>
+    <string name="umeng_socialize_text_pinterest_key">pinterest</string>
+    <string name="umeng_socialize_text_pocket_key">pocket</string>
+    <string name="umeng_socialize_text_linkedin_key">Linkedin</string>
+    <string name="umeng_socialize_text_foursquare_key">Foursquare</string>
+    <string name="umeng_socialize_text_whatsapp_key">WhatsApp</string>
+    <string name="umeng_socialize_text_line_key">LINE</string>
+    <string name="umeng_socialize_text_flickr_key">Flickr</string>
+    <string name="umeng_socialize_text_tumblr_key">Tumblr</string>
+    <string name="umeng_socialize_text_alipay_key">支付宝</string>
+    <string name="umeng_socialize_text_kakao_key">Kakao Talk</string>
+    <string name="umeng_socialize_text_googleplus_key">GooglePlus</string>
+    <string name="umeng_socialize_text_more_key">更多</string>
+    <!--友盟结束-->
+    <string name="title_activity_process_msg">ProcessMsgActivity</string>
+    <string name="title_activity_select_calendar">按时间请假</string>
+
+    <!-- TODO: Remove or change this placeholder text -->
+    <string name="hello_blank_fragment">Hello blank fragment</string>
+    <string name="sans_serif" translatable="false">sans-serif</string>
+
+
+    <!-- 翻译备份-->
+
+    <!-- start公用部分-->
+    <string name="uas_company_name">Shenzhen You soft Technology Co., Ltd</string>
+    <string name="common_save_button">保存</string>
+    <string name="common_dialog_title">UU提示</string>
+    <string name="common_update_button">更新</string>
+    <string name="common_submit_button">提交</string>
+    <string name="common_reset">重置</string>
+    <string name="common_select_all">全部</string>
+    <string name="common_resubmit_button">重新提交</string>
+    <string name="common_search">搜索</string>
+    <string name="common_input">请输入(必填)</string>
+    <string name="common_input1">请输入(非必填)</string>
+    <string name="common_input2">请输入</string>
+    <string name="common_select">请选择(必选)</string>
+    <string name="common_select_not_must">请选择(非必选)</string>
+
+    <string name="common_input_or_select_much">请输入或选择(必选)</string>
+    <string name="common_sure">确定</string>
+    <string name="common_cancel">取消</string>
+    <string name="common_date">日期</string>
+    <string name="common_year">年</string>
+    <string name="common_month">月</string>
+    <string name="common_day">日</string>
+    <string name="common_basicinfo">基本信息</string>
+    <string name="common_Contact_information">联系方式</string>
+    <string name="common_Contact_person">联系人</string>
+    <string name="common_tel">电话</string>
+    <string name="common_department">部门</string>
+    <string name="common_post">岗位</string>
+    <string name="common_up_finish">加载完毕</string>
+    <string name="common_down_finish">刷新完成</string>
+    <string name="common_refresh_finish">刷新成功</string>
+    <string name="common_agree">同意</string>
+    <string name="common_disagree">不同意</string>
+    <string name="common_changedealman">变更处理人</string>
+    <string name="common_noinput">未填写</string>
+    <string name="common_camera">拍照</string>
+    <string name="common_photo">从相册选择</string>
+    <string name="common_notlinknet">网络未连接</string>
+    <string name="common_notice">温馨提示</string>
+    <string name="common_save_failed">保存失败</string>
+    <string name="common_save_success">保存成功</string>
+
+    <string name="common_list_empty">暂无记录</string>
+
+    <!-- end公用部分-->
+
+    <!-- start行政办公OA界面-->
+    <string name="oamain_title">行政办公</string>
+    <string name="oasign_title">打卡签到</string>
+    <string name="oaoutplan_title">外勤签到</string>
+    <string name="oaworkdaily_title">工作日报</string>
+    <string name="oapackup_title">收起</string>
+    <string name="oamore_tltle">更多</string>
+    <string name="oametting_title">会议管理</string>
+    <string name="oavacation_apply">请假申请</string>
+    <string name="oaovertime_apply">加班申请</string>
+    <string name="oatravel_apply">出差申请</string>
+    <string name="oaspecial_attendance_apply">特殊考勤</string>
+    <string name="oasubordinate_work_calendar">下属工作日历</string>
+    <string name="oamy_work_calender">我的工作日历</string>
+    <string name="oamaterials_apply">物料申请单</string>
+    <string name="oaservice_apply">维修申请单</string>
+    <string name="oaStandby_machine_apply">备用机申请单</string>
+    <!-- end 行政办公OA界面-->
+
+    <!-- start 打卡签到 oasign_title-->
+    <string name="super_setting">高级设置</string>
+    <string name="work_setting">排班设置</string>
+    <string name="office_addr_setting">办公地址设置</string>
+    <string name="my_rule_setting">我的考勤规则</string>
+    <string name="sm_cancel_title">取消</string>
+    <!-- end 打卡签到 -->
+
+    <!-- start -高级设置 seniorsettings-->
+    <string name="ss_autosign_switch">自动打卡</string>
+    <string name="ss_signnotice_switch">打卡提醒</string>
+    <string name="ss_autosign_description">上班后超过多久打卡分别计算为迟到、严重迟到、早退、旷工</string>
+    <string name="ss_latetime_settings">设置迟到时间</string>
+    <string name="ss_seniouslatetime_settings">设置严重迟到时间</string>
+    <string name="ss_leaveearlytime_settings">设置早退时间</string>
+    <string name="ss_absenteeismtime_settings">设置旷工时间</string>
+    <string name="close_sign_notice1">关闭自动打卡,保存后系统将无法帮您自动打卡</string>
+    <string name="open_sign_notice1">开启自动打卡,保存后系统将帮您自动打卡</string>
+    <string name="ss_select_time">选择时间</string>
+    <string name="ss_sign_seted">已设置自动打卡</string>
+    <string name="ss_sign_closed">您已关闭自动打卡,系统将无法帮您自动打卡</string>
+    <string name="ss_sign_close_notice2">关闭后系统无法帮您自动打卡,确认关闭?</string>
+    <string name="ss_time_notice1">迟到时间必须小于严重迟到时间!</string>
+    <string name="ss_time_notice2">严重迟到时间必须小于旷工时间!</string>
+    <string name="ss_time_notice3">早退时间必须小于旷工时间!</string>
+
+
+    <string-array name="late_time">
+        <item>0分钟</item>
+        <item>1分钟</item>
+        <item>2分钟</item>
+        <item>3分钟</item>
+        <item>4分钟</item>
+        <item>5分钟</item>
+        <item>6分钟</item>
+        <item>7分钟</item>
+        <item>8分钟</item>
+        <item>9分钟</item>
+        <item>10分钟</item>
+        <item>11分钟</item>
+        <item>12分钟</item>
+        <item>13分钟</item>
+        <item>14分钟</item>
+        <item>15分钟</item>
+        <item>16分钟</item>
+        <item>17分钟</item>
+        <item>18分钟</item>
+        <item>19分钟</item>
+        <item>20分钟</item>
+        <item>21分钟</item>
+        <item>22分钟</item>
+        <item>23分钟</item>
+        <item>24分钟</item>
+        <item>25分钟</item>
+        <item>26分钟</item>
+        <item>27分钟</item>
+        <item>28分钟</item>
+        <item>29分钟</item>
+        <item>30分钟</item>
+    </string-array>
+    <string-array name="serious_late_time">
+        <item>10分钟</item>
+        <item>15分钟</item>
+        <item>20分钟</item>
+        <item>25分钟</item>
+        <item>30分钟</item>
+        <item>35分钟</item>
+        <item>40分钟</item>
+        <item>45分钟</item>
+        <item>50分钟</item>
+        <item>55分钟</item>
+        <item>60分钟</item>
+    </string-array>
+    <string-array name="serious_leave_early_time">
+        <item>10分钟</item>
+        <item>15分钟</item>
+        <item>20分钟</item>
+        <item>25分钟</item>
+        <item>30分钟</item>
+        <item>35分钟</item>
+        <item>40分钟</item>
+        <item>45分钟</item>
+        <item>50分钟</item>
+        <item>55分钟</item>
+        <item>60分钟</item>
+    </string-array>
+    <string-array name="absenteeism_time">
+        <item>30分钟</item>
+        <item>40分钟</item>
+        <item>50分钟</item>
+        <item>60分钟</item>
+        <item>70分钟</item>
+        <item>80分钟</item>
+        <item>90分钟</item>
+        <item>100分钟</item>
+        <item>110分钟</item>
+        <item>120分钟</item>
+    </string-array>
+    <!-- end -高级设置-->
+
+
+    <!-- start 办公地址设置 office_settings_title-->
+    <string name="os_headerdescription1">您可设置多办公地址</string>
+    <string name="os_headerdescription2">员工在以下任意地址有效范围内均可打卡</string>
+    <string name="os_signrange">打卡范围</string>
+    <string name="os_workrange">办公范围</string>
+    <string name="os_add_address">+添加办公地址</string>
+    <string name="os_range_notice1">地址距离更新成功</string>
+    <string name="os_address_notice1">办公地址保存成功</string>
+    <string name="delete_succeed_notice1">删除成功</string>
+    <string name="delete_failed_notice1">删除失败</string>
+    <string name="add_address_first">请先添加办公地址</string>
+    <string name="add_office_address">添加办公地址</string>
+    <string name="select_range">选择范围</string>
+    <string name="edit_office_address_name">完善办公地址名称</string>
+    <string name="detail_address">详细地址</string>
+    <string name="delete_address_notice1">确认删除该条办公地址?</string>
+    <!-- end 办公地址设置 -->
+
+    <!-- start工作日报 oaworkdaily-->
+    <string name="wd_summary_title">工作总结</string>
+    <string name="wd_summary_descrition">请输入今日工作总结(必填,限500字)</string>
+    <string name="wd_summary_error">"字数超限500了喔,亲!</string>
+    <string name="wd_plan_title">工作计划</string>
+    <string name="wd_plan_descrition">请输入明日工作计划(非必填,限300字)</string>
+    <string name="wd_plan_error">字数超限300了喔,亲!</string>
+    <string name="wd_experience_title">工作心得</string>
+    <string name="wd_experience_descrition">点击分享按钮可将工作心得分享到工作圈(非必填,限300字)</string>
+    <string name="wd_experience_error">字数超限300了喔,亲!</string>
+    <string name="wd_recording_title">日报记录</string>
+    <string name="daily_submit_success">工作日报提交成功</string>
+    <string name="daily_submit_failed">工作日报提交失败</string>
+    <string name="daily_update_success">工作日报更新成功</string>
+    <string name="daily_update_failed">工作日报更新失败</string>
+    <string name="daily_resubmit_success">工作日报重新提交成功</string>
+    <string name="daily_resubmit_failed">工作日报重新提交失败</string>
+    <string name="workcontext_grap_success">工作内容抓取成功</string>
+    <string name="submit_success">提交成功</string>
+    <string name="select_approvel_people">选择审批人</string>
+    <string name="submited">已提交</string>
+    <string name="daily_exit_notice">您当前页面存在未提交数据,退出数据将被清空,是否继续退出?</string>
+    <string name="share_experience_notice">请先填写工作心得再分享</string>
+    <string name="daily_submit_notice">确认提交工作日报</string>
+    <string name="daily_delate_success">工作日报删除成功</string>
+    <string name="delete_notice1">确认删除该条已保存单据?</string>
+    <string name="daily_detaily">日报详情</string>
+    <string name="delete_sumited_notice1">确认删除该条已提交单据?</string>
+    <string name="daily_resumit_success">工作日报反提交成功</string>
+    <string name="daily_resubmit_notice1">确认反提交该条单据?</string>
+    <string name="daily_approve_notice1">请输入审批意见,或者跳过此步直接进行审批操作</string>
+    <string name="select_doman">选择执行人</string>
+    <string name="doc_detaily_deleted">单据详情已被删除</string>
+    <string name="make_adeal_success">操作成功</string>
+    <string name="delete_doc_notice2">确认删除该条在录入单据</string>
+    <!-- end工作日报 oaworkdaily-->
+
+    <!-- start 考勤单据、详情  -->
+    <string name="status_approved">已审批</string>
+    <string name="status_pending">待审批</string>
+    <string name="status_unsubmit">在录入</string>
+    <string name="wd_completed_task">已完成任务</string>
+    <string name="wd_undone_task">未完成任务</string>
+    <string name="common_resubmit">重新提交</string>
+    <string name="common_delete">删除</string>
+    <string name="vacation_doc">请假单</string>
+    <string name="travel_doc">出差单</string>
+    <string name="overtime_doc">加班单</string>
+    <!-- end 考勤单据、详情 -->
+
+    <!-- start 客户关系管理界面CRM -->
+    <string name="crmmain_business">商机</string>
+    <string name="crmmain_client">客户</string>
+    <string name="crmmain_customer_visit">客户拜访</string>
+    <string name="crmmain_wall_of_fame">荣誉墙</string>
+    <string name="crmmain_dayasale">日销售额</string>
+    <string name="sz_zong">深圳总部</string>
+    <string name="zong">总经理</string>
+
+    <!-- 我的排名-->
+    <string name="crm_myranking">我的排名</string>
+    <string name="crm_filter">筛选</string>
+    <string name="crm_sales">销售额</string>
+    <string name="crm_Gross_profit">毛利润</string>
+    <string name="crm_Numberofcustome_visits">客户拜访数</string>
+    <string name="crm_Excessive_receivable">超额应收</string>
+    <string name="crm_di">第</string>
+    <string name="crm_ming">名</string>
+    <string name="crm_wyuan">万元</string>
+    <string name="crm_ge">个</string>
+    <string name="crm_extra_get">超期应收</string>
+    <string name="crm_newadd_c">_个新增客户</string>
+    <string name="crm_visit_record">拜访记录</string>
+    <string name="crm_out_doc">出货单</string>
+    <string name="crm_plansales_dec1">计划销售额/毛利润\n(万元)</string>
+    <string name="crm_realsales_dec2">实际销售额/毛利润\n(万元)</string>
+    <string name="crm_di_ming">第_名</string>
+    <string name="crm_nodatas">暂时没有数据</string>
+    <string name="crm_wwyuan">万元</string>
+    <string name="crm_back0wyuan">回款0万元</string>
+    <string name="crm_out0wyuan">出货0万元</string>
+
+    <string-array name="month_list">
+        <item>实际销售额</item>
+        <item>计划销售额</item>
+        <item>实际毛利润</item>
+        <item>计划毛利润</item>
+    </string-array>
+
+    <string-array name="sale_list">
+        <item>客户</item>
+        <item>联系人</item>
+        <item>商机数</item>
+        <item>商机变更</item>
+        <item>销售订单</item>
+        <item>拜访客户数</item>
+        <item>拜访次数</item>
+        <item>Aug</item>
+        <item>Sep</item>
+        <item>Okt</item>
+        <item>Nov</item>
+        <item>Dec</item>
+    </string-array>
+    <!-- 本月销售简报-->
+    <string name="crm_Sales_briefing_this_month">本月销售简报</string>
+    <string name="crm_Back_money">回款</string>
+    <string name="crm_Shipments">出货</string>
+    <string name="crm_Numberofbusiness">商机数</string>
+    <string name="crm_change_business">商机变更</string>
+    <string name="crm_Sales_order">销售订单</string>
+    <string name="crm_Numberofvisitors">拜访客户数</string>
+    <string name="crm_Numberofvisited">拜访次数</string>
+    <string name="crm_unit_one">数量(单位:个)</string>
+
+    <!--我的指标 -->
+    <string name="crm_My_indicators">我的指标</string>
+    <string name="crm_Actual_sales">实际销售额</string>
+    <string name="crm_Plan_sales">计划销售额</string>
+    <string name="crm_Actual_gross_profit">实际毛利润</string>
+    <string name="crm_Plan_gross_profit">计划毛利润</string>
+    <string name="crm_Monthly_sales_unit">月销售额(单位:人民币 万元)</string>
+    <string name="crm_Forgotten_customers">遗忘的客户</string>
+
+    <string name="crm_creat_business">创建商机</string>
+    <string name="crm_add_business">新增客户</string>
+    <string name="crm_add_visitrecord">新增拜访报告</string>
+    <!-- end 客户关系管理界面CRM -->
+
+    <!-- start 商机界面-->
+    <string name="business_get_split">可领取可分配</string>
+    <string name="business_common">公有</string>
+    <string name="business_Selling_funnel">销售漏斗</string>
+    <string name="business_seize">抢占商机</string>
+    <string name="business_distribution">商机分配</string>
+    <string name="business_followup">我的商机</string>
+    <string name="business_followup_people">商机跟进人</string>
+    <string name="color_text">颜色</string>
+    <string name="business_number">商机数量</string>
+    <string name="business_Conversion_rate">商机转化率</string>
+
+    <string name="business_stage">商机阶段</string>
+    <string name="First_communication">初次沟通</string>
+    <string name="Product_show">产品演示</string>
+    <string name="Project_evaluation">立项评估</string>
+    <string name="demand_analysis">需求分析</string>
+    <string name="Sample_offer">样品报价</string>
+    <string name="Business_negotiation">商务谈判</string>
+    <string name="Contract_signing">合同签约</string>
+    <string name="Seal_the_deal">完成交易</string>
+    <string name="Many_transactions">多次交易</string>
+    <string name="click_more">以上显示排名前三的下属,点击显示更多</string>
+    <string name="length_last_gj">距离上次跟进</string>
+    <!-- end 商机界面-->
+
+    <!-- start 创建商机-->
+    <string name="no_">无</string>
+    <string name="business_add_success">添加商机成功</string>
+    <string name="business_name">商机名称</string>
+    <string name="business_id">商机编号</string>
+    <string name="business_from">商机来源</string>
+    <string name="business_Library">商机库</string>
+    <string name="current_stage">当前阶段</string>
+    <string name="Company_Name">企业名称</string>
+    <string name="business_license">营业执照</string>
+    <string name="Estimated_cost">预计成本金额</string>
+    <string name="Expected_transaction_time">预计成交时间</string>
+    <string name="Follow_up_person">跟进人</string>
+    <string name="Remarks">备注</string>
+    <string name="this_month">本月</string>
+    <string name="last_month">上月</string>
+    <string name="this_Quarterly">本季度</string>
+    <string name="last_Quarterly">上季度</string>
+    <string name="this_year">本年度</string>
+    <string name="last_year">上年度</string>
+    <string name="enterprise_address">企业地址</string>
+    <string name="Unscheduled_schedule">未排日程</string>
+    <string name="Has_been_scheduled">已排日程</string>
+    <string name="Will_time_out">即将超时</string>
+    <string name="Has_switched_customers">已转客户</string>
+    <string name="qiang_business_success">成功抢得此商机</string>
+    <string name="split_business_success">成功分配商机</string>
+    <string name="business_limit">您已超出最大获取商机数</string>
+    <string name="business_notice1">请到商机跟进中查看商机</string>
+
+    <!-- start 商机来源-->
+    <string name="Come_to_visit">上门拜访</string>
+    <string name="tel_to_visit">电话拜访</string>
+    <string name="Others_introduced">他人介绍</string>
+    <string name="Internet_advertising">互联网广告</string>
+    <string name="Print_Ads">平面广告</string>
+    <string name="others">其他</string>
+    <!-- end 商机来源-->
+
+    <!-- start 商机库-->
+    <string name="UAS_public_business_library">UAS公共商机库</string>
+    <string name="yf_Department_private_business_library">研发部私有商机库</string>
+    <string name="UAS_private_business_library">UAS私有商机库</string>
+    <string name="Test_Department_Private_Business_Library">测试部私有商机库</string>
+    <!-- end 商机库-->
+
+    <string name="business_detail">商机详情</string>
+    <string name="creat_time">创建时间</string>
+    <string name="last_followup_time">最后跟进时间</string>
+    <string name="Stage_requirements">阶段要求</string>
+    <string name="grab">抢</string>
+    <!-- start 创建商机-->
+
+    <!-- start 客户-->
+    <string name="client_search">查询</string>
+    <string name="client_myself">我自己</string>
+    <string name="client_subordinate">我下属</string>
+    <string name="client_Not_traded">未成交</string>
+    <string name="client_Deal_done">已成交</string>
+    <string name="client_All_customers">全部客户</string>
+    <string name="client_current_stage">当前阶段</string>
+    <string name="client_Clerk">业务员</string>
+    <string name="client_status">审核状态</string>
+    <string name="client_Switch">切换</string>
+    <string name="un_deal">0\n未成交</string>
+    <string name="dealed">0\n已成交</string>
+    <string name="all_client">0\n全部客户</string>
+    <string name="client_Number">编号:</string>
+    <string name="thismonth_prediction">本月预测(元):</string>
+    <string name="client_Customer_Number">客户编号</string>
+    <string name="client_Customer_name">客户名称</string>
+    <string name="client_Referred_to">简称</string>
+    <string name="client_customer_address">客户地址</string>
+    <string name="client_district_belong_to">所属地区</string>
+    <string name="client_payment_method">收款方式</string>
+    <string name="client_Currency">币别</string>
+    <string name="client_tax_rate">税率</string>
+    <!-- start 所属地区-->
+    <string name="client_Huadong_Region">华东地区</string>
+    <string name="client_Huanan_Region">华南地区</string>
+    <string name="client_Huabei_Region">华北地区</string>
+    <string name="client_Huazhong_Region">华中地区</string>
+    <string name="client_Southwest_Region">西南地区</string>
+    <string name="client_North_west_region">西北地区</string>
+    <string name="client_North_east_area">东北地区</string>
+    <string name="client_HongKong_Macao_and_Taiwan_regions">港澳台地区</string>
+    <string name="client_other_areas">其他地区</string>
+    <!-- end 所属地区-->
+    <!-- end 客户-->
+
+    <string name="Wall_of_Fame_description">这里展示的是当月表现突出的员工,荣誉墙每个月都会更新,若这个月还没上榜,请多加努力,还有机会哟!</string>
+
+
+    <!--start Bitliker-->
+    <string name="not_addr_to_select">没有可以选择的地址</string>
+    <string name="unoffice"><u>地点微调</u></string>
+    <string name="rice">米</string>
+    <string name="not_addr_message">系统尚未找到您的打卡地址信息,请联系管理员</string>
+    <string name="not_work_message">系统尚未找到您的班次,请联系管理员设置班次</string>
+    <string name="not_find_work">系统尚未找到您的班次</string>
+    <string name="not_signin_agin">请不要频繁打卡</string>
+    <string name="too_long">您当前位置距离考勤地点太远,请移往目标或重新定位</string>
+    <string name="signin_ok">签到成功</string>
+    <string name="signin_error">签到失败</string>
+    <string name="mac_changing">正在变更常用设备中,请勿打卡</string>
+    <string name="mac_other">该设备已被他人绑定</string>
+    <string name="activity_signing">打卡签到</string>
+    <string name="other_phone_error">请在常用手机签到!若手机更换请先填写手机变更单再来签到</string>
+    <string name="not_today">当前所在日期无法签到</string>
+    <string name="show_frist_mac">本次打卡会将本机设为常用签到手机,是否继续签到?</string>
+    <string name="allow_location">打开"定位服务"来允许"UU互联"确定你的位置</string>
+    <string name="free_work">自由打卡</string>
+    <string name="this_position">当前位置</string>
+    <string name="long_company">距离公司</string>
+    <string name="meet_position">会议地点</string>
+    <string name="meet_details">会议纪要</string>
+    <string name="recorder">发起人</string>
+    <string name="doing">进行中</string>
+    <string name="not_bigan">未开始</string>
+    <string name="meet_manage">会议管理</string>
+    <string name="meet_detail">会议详情</string>
+    <string name="meet_success_end">会议结束成功</string>
+    <string name="ended">已结束</string>
+    <string name="meet_signin_success">会议签到成功</string>
+    <string name="signin_number">当前签到人数</string>
+    <string name="signined">已签到</string>
+    <string name="already_signined">您已经签到过了</string>
+    <string name="to_end_meet">确定要结束会议吗?</string>
+    <string name="not_power_edit_tag">你不是会议管理员,没有权限编写会议纪要</string>
+    <string name="not_power_end_meet">你不是会议管理员,没有权限结束会议</string>
+    <string name="meet_ended_not_signin">会议已经结束,不能再签到</string>
+    <string name="push_task">发起任务</string>
+    <string name="meet_show">会议介绍</string>
+    <string name="meet_tag">会议标签</string>
+    <string name="signin_new">立即签到</string>
+    <string name="agare"><u>重新定位</u></string>
+    <string name="new_meet">新建会议</string>
+    <string name="add_meet_success_adding_task">添加会议成功,正在为会议成员创建日程</string>
+    <string name="add_meet_success">添加会议成功!</string>
+    <string name="error_try_agen">内部错误,请稍后再试或联系工作人员</string>
+    <string name="meet_add_task_success">为与会人员添加日程成功</string>
+    <string name="not_time_start_biger_end">开始时间不能大于或等于截止时间</string>
+    <string name="please_input_start_time">请填写开始时间</string>
+    <string name="meet_name_error">会议名为空或格式不正确</string>
+    <string name="start_time_error">开始时间为空或格式不正确</string>
+    <string name="end_time_error">截止时间为空或格式不正确</string>
+    <string name="position_error">地点为空或格式不正确</string>
+    <string name="meet_manager_error">会议管理员为空或格式不正确</string>
+    <string name="join_numer_error">参会人员不符要求</string>
+
+    <string name="not_power_check_bill">您没有查看单据的权限</string>
+    <string name="resourcer">执行人</string>
+    <string name="networks_out">当前网络不可用,请稍后重试!</string>
+    <string name="half_day">半天</string>
+    <string name="all_day">全天</string>
+    <string name="not_save_illegal_bill">当前单号地址非法,无法保存</string>
+    <string name="you_destination">您的目的地</string>
+    <string name="not_edit">未填写</string>
+    <string name="visit_company">拜访单位</string>
+    <string name="visit_address">拜访地址</string>
+    <string name="visit_aim">拜访目的</string>
+    <string name="expected_arrival_time">预计到达时间</string>
+    <string name="location_error_try_agen">位置信息不正确,请重新选择地址</string>
+    <string name="save_ok">保存成功</string>
+    <string name="sure_delete_mission">你确定删除该外勤计划吗</string>
+    <string name="maintain_customers">客情维护</string>
+    <string name="business_process">业务办理</string>
+    <string name="other_vivit">其它拜访</string>
+    <string name="sure_input_valid">请输入有效数据</string>
+    <string name="too_long_edit_twenty">字数长度不能超过20个字符</string>
+    <string name="activity_select_aims">选择目的地</string>
+    <string name="activity_flights">排班设置</string>
+    <string name="activity_visit_aims">拜访目的</string>
+    <string name="activity_mission_set">外勤设置</string>
+    <string name="activity_mission_plan">外勤计划</string>
+    <string name="effective_range">有效距离</string>
+    <string name="reserve_time">预留时间</string>
+    <string name="auto_mission">自动外勤</string>
+    <string name="remind_time">提醒时间</string>
+    <string name="neer_submit_able">是否需要审批</string>
+    <string name="meet_signin">会议签到</string>
+    <string name="signin_setting">签到设置</string>
+    <string name="signin_detail">签到详情</string>
+    <string name="select_user">选择人员</string>
+    <string name="meet_task">会议任务</string>
+    <string name="my_mission">我的外勤</string>
+    <string name="add_mission_plan">+增加外勤计划</string>
+    <string name="perfect_company_name">完善单位名称</string>
+    <string name="company_name">公司名称</string>
+    <string name="skip_operation">跳过此步</string>
+
+
+    <string name="delete_back_default_work">删除班次后成员自动回到默认排班中,是否继续?</string>
+    <string name="a_person">个人</string>
+    <string name="a">个</string>
+    <string name="a_department">个部门</string>
+    <string name="department">部门</string>
+    <string name="default_work">默认排版</string>
+    <string name="member">成员</string>
+    <string name="fixed_shift">固定班次</string>
+    <string name="user_work">使用本班次</string>
+    <string name="conflict_personnel">冲突人员</string>
+    <string name="conflict_department">冲突部门</string>
+    <string name="default_not_edit_department">默认班次不能修改部门</string>
+    <string name="default_not_edit_member">默认班次不能修改人员</string>
+    <string name="not_null_name">规则名称不能为空</string>
+    <string name="not_null_work_time">考勤时间不能为空</string>
+    <string name="not_null_work_day">考勤日期不能为空</string>
+    <string name="will_save_conflict">保存本班次会将冲突的部门人员加入本班次,是否继续?</string>
+    <string name="add_flihts">新增班次</string>
+    <string name="edit_flihts">修改班次</string>
+    <string name="work_name">班次名称</string>
+    <string name="work_time">考勤时间</string>
+    <string name="work_day">考勤日期</string>
+    <string name="work_department">参与部门</string>
+    <string name="and_join_member">或参与人员</string>
+    <string name="earliest_work_time">最早上班时间</string>
+    <string name="most_input_three_time">最多添加三个时间</string>
+    <string name="select_earliest_work_time">请选择最早上班时间</string>
+    <string name="work_not_complete">上班时间未填写完整</string>
+    <string name="off_not_complete">下班时间未填写完整</string>
+    <string name="work_up_time">上班时间</string>
+    <string name="selected">已选择</string>
+    <string name="cancel_select_all">取消全选</string>
+    <string name="not_load_ok_fefresh">没有获取到数据,请尝试刷新通讯录</string>
+    <string name="select_all">全选</string>
+    <string name="not_data_to_select_number">数据为空,没有可选择人员</string>
+    <string name="time_include_time">选择的时间有交叉,请重新检查后提交</string>
+    <string name="work_time_setting">时间设置</string>
+    <string name="work_day_setting">日期设置</string>
+    <string name="holidays">法定节假日</string>
+    <string name="work_statistics">考勤统计</string>
+    <string name="select_join_department">选择参与部门</string>
+    <string name="select_join_number">选择参与人员</string>
+    <string name="navigation">导航</string>
+    <string name="outoff_work_alert">离开办公范围提醒</string>
+    <string name="not_allowed_name">规则名称为空或是包含特殊字符,请检查后提交</string>
+    <string name="outoff_work">系统检测到您已离开办公区域</string>
+    <string name="work_up_alert">上班时间快到了,请及时打卡</string>
+    <string name="work_off_alert">下班时间已到了,请及时打卡</string>
+    <string name="out_net_signin">网络未连接,无法自动为您签到</string>
+    <string name="auto_mission_signinup">自动外勤签到</string>
+    <string name="auto_mission_alert">自动外勤提醒</string>
+    <string name="uu_auto_signined_down">UU已经帮你自动签退</string>
+    <string name="uu_auto_signined_up">UU已经帮你自动外勤签到</string>
+    <string name="visit">拜访</string>
+    <string name="auto_mission_signindown">自动外勤签退</string>
+    <string name="auto_work_signin_log">自动打卡记录</string>
+    <string name="auto_signin">系统已为你自动打卡成功</string>
+    <string name="success_signin_down_mission">外勤签退成功</string>
+    <string name="success_signin_up_mission">自动外勤签到成功</string>
+    <string name="success_signin_down">签退成功</string>
+    <string name="success_signin_up">签到成功</string>
+    <string name="is_not_common_device">该设备不是考勤打卡常用设备</string>
+    <string name="is_not_common_device_not_signin">该设备不是考勤打卡常用设备,无法为您自动打卡</string>
+    <string name="is_changeing_not_signin">设备正处于申请变更绑定阶段,无法为您自动打卡</string>
+    <string name="is_binded_other_not_signin">该设备已被他人绑定,无法为您自动打卡</string>
+    <string name="to">对</string>
+    <string name="auto_work_signin_alert">自动打卡提醒</string>
+    <string name="uu_auto_work_signined_up">UU已经帮你自动打卡</string>
+    <string name="success_signin_down_can_back">外勤签退成功,您还有时间返回公司,请回公司签到</string>
+    <string name="success_signin_down_task_ok">外勤签退成功,当天任务已结束</string>
+    <string name="add_contacts">添加联系人</string>
+    <string name="name">姓名</string>
+    <string name="position">岗位</string>
+    <string name="company_address">公司地址</string>
+    <string name="add_card">添加名片</string>
+    <string name="detailed_address">详细地址</string>
+
+    <string name="more_operation">更多操作</string>
+    <string name="add_mission">添加外勤</string>
+    <string name="stage_follow">阶段跟进</string>
+    <string name="add_schedule">添加日程</string>
+    <string name="seletc_business">请选择商机库</string>
+    <string name="visit_date">拜访日期</string>
+    <string name="visitrecord">拜访报告</string>
+    <string name="sure_delete_bc">确认删除此商机?</string>
+    <string-array name="crm_dialog_followup">
+        <item>商机释放</item>
+        <item>商机失效</item>
+        <item>转为新客户</item>
+        <item>关联已有客户</item>
+    </string-array>
+
+    <string-array name="one_five_hour">
+        <item>上班前1个小时</item>
+        <item>上班前2个小时</item>
+        <item>上班前3个小时</item>
+        <item>上班前4个小时</item>
+        <item>上班前5个小时</item>
+    </string-array>
+
+
+    <!--end by Bitliker-->
+
+    <!--start by Arison-->
+    <!--对话框-->
+    <string name="app_dialog_title">系统提示</string>
+    <string name="app_dialog_ok">确认</string>
+    <string name="app_dialog_cancle">取消</string>
+    <string name="app_dialog_close">关闭</string>
+    <!--按钮-->
+    <string name="app_button_commit">提交</string>
+    <string name="app_button_save">保存</string>
+
+    <string name="login_account_empty"> 账号不能为空</string>
+    <string name="login_pwd_empty">密码不能为空</string>
+    <string name="login_exit">登出</string>
+    <!--数据更新-->
+
+    <string name="msg_title">消息</string>
+    <string name="msg_approval">我的审批</string>
+    <string name="msg_work">待办工作</string>
+    <string name="msg_subscribe">我的订阅</string>
+    <string name="mark_readed">标为未读</string>
+    <string name="mark_unread">标为已读</string>
+    <!--通讯录-->
+    <string name="contact_title">通讯录</string>
+    <string name="contact_company">企业架构</string>
+    <string name="contact_business">商务群</string>
+    <string name="contact_friend">UU好友</string>
+    <string name="contact_often">常用联系人</string>
+    <!--工作-->
+    <string name="work_title">工作</string>
+    <string name="work_customer">客户关系管理</string>
+    <string name="work_oa">行政办公</string>
+    <string name="work_business_manage">商务管理</string>
+    <string name="work_business_mall">优软商城</string>
+    <!--我-->
+    <string name="user_title">我</string>
+    <string name="user_firend_cirle">我的工作圈</string>
+    <string name="user_company">公司</string>
+    <string name="user_account">账套</string>
+    <string name="user_setting">设置</string>
+    <string name="user_scan">扫描</string>
+    <string name="user_dialog_company">选择登录的UAS账套</string>
+    <string name="user_dialog_master">切换账套</string>
+    <string name="user_master_success">账套切换成功</string>
+    <string name="user_master_fai">账套切换失败</string>
+
+    <!--设置-->
+    <string name="set_sport">UU运动</string>
+    <string name="set_push">允许推送</string>
+    <string name="set_clear">清除缓存</string>
+    <string name="set_sigin">打卡设置</string>
+    <string name="set_suggest">问题反馈</string>
+    <string name="set_about">关于UU互联</string>
+    <string name="set_version">当前版本</string>
+    <string name="set_login_out">退出登录</string>
+    <!--更新版本检测-->
+    <string name="update_load">当前版本</string>
+    <string name="update_msg">已经是最新版,不需要更新</string>
+    <!--关于-->
+    <string name="about_remark">去评价</string>
+    <string name="about_function">新功能介绍</string>
+    <string name="about_qcode">二维码</string>
+    <string name="about_qcode_msg">UU互联最新版二维码长按可识别</string>
+    <string name="about_share">分享</string>
+    <!--用户反馈-->
+    <string name="suggest_hink">请输入您的问题...(400字以内)</string>
+    <!--清除缓存-->
+    <string name="cache_msg">是否确定清除本地缓存</string>
+    <!--UU运动-->
+    <string name="sports_recode">运动记录</string>
+    <string name="sports_recode_distance">步行+跑步距离(估算)</string>
+    <string name="sports_kilometre">公里</string>
+    <string name="sports_tody">今天</string>
+    <string name="sports_step">步</string>
+    <string name="sports_step_tody">今日步数</string>
+    <string name="sports_recode_more">更多历史记录</string>
+    <string name="sports_dialog_content">更多历史记录</string>
+    <!--个人资料-->
+    <string name="user_info_title">个人资料</string>
+    <string name="user_birthday">生日</string>
+    <string name="user_sex">性别</string>
+    <string name="user_nickname">昵称</string>
+    <string name="user_images">头像</string>
+    <string name="user_area">地区</string>
+    <string name="user_body">男</string>
+    <string name="user_girl">女</string>
+    <string name="user_position">职位</string>
+    <string name="user_conpany_info">企业信息</string>
+
+    <!--通讯录 功能模块-->
+    <!--通讯录添加好友-->
+    <string name="title_friend_add">添加好友</string>
+    <string name="user_minage">最小年龄</string>
+    <string name="user_maxage">最大年龄</string>
+    <string name="user_appear">出现时间</string>
+    <string name="select_sex_title">选择性别</string>
+    <string name="select_date_title">选择日期</string>
+    <string-array name="array_select_date">
+        <item>所有日期</item>
+        <item>近一天</item>
+        <item>近两天</item>
+        <item>近三天</item>
+        <item>近一周</item>
+        <item>近两周</item>
+        <item>近一个月</item>
+        <item>近六周</item>
+        <item>近两个月</item>
+    </string-array>
+    <string name="user_phone">手机</string>
+    <string name="user_email">邮箱</string>
+    <string name="dialog_confim_phone">确认是否拨打电话</string>
+    <string name="dialog_phone">手机号码</string>
+    <string name="dialog_phone_action">拨打</string>
+    <string name="friend_add">加为好友</string>
+    <!--通讯录个人详情-->
+
+    <!--消息功能模块-->
+    <!--我的审批-->
+    <string name="task_unconfim">待审批</string>
+    <string name="task_confimed">已审批</string>
+    <string name="task_request_me">我发起的</string>
+    <!--待办工作-->
+    <!--添加任务-->
+    <string name="task_add">新增任务</string>
+    <string name="task_send">发送</string>
+    <string name="task_title">任务标题</string>
+    <string name="task_detail">任务详情</string>
+    <string name="task_executor">执行人</string>
+    <string name="task_starttime">开始时间</string>
+    <string name="task_endtime">截止时间</string>
+    <!--任务详情-->
+    <string name="taskdetail_title">任务处理</string>
+    <string name="taskdetail_info">任务信息</string>
+    <string name="taskdetail_name">任务名称</string>
+    <string name="taskdetail_sponsor">提出人</string>
+    <string name="taskdetail_executor">执行人</string>
+    <string name="taskdetail_startime">开始时间</string>
+    <string name="taskdetail_endtime">结束时间</string>
+    <string name="taskdetail_state">状态</string>
+    <string name="taskdetail_desc">任务描述</string>
+    <string name="taskdetail_content_title">回复内容</string>
+    <string name="taskdetail_inputman">录入人</string>
+    <string name="taskdetail_time">时间</string>
+    <string name="taskdetail_content">内容</string>
+    <!--我的订阅-->
+    <string name="subscribe_title">订阅号</string>
+    <string name="subscribe_manager">订阅管理</string>
+    <string name="subscribe_unsure">未订阅</string>
+    <string name="subscribe_confirmed">已订阅</string>
+    <string name="subscribe_setting">设置</string>
+    <string name="subscribe_unsetting">未订阅设置</string>
+    <string name="subscribe_hide_nodata">您没有隐藏的订阅号</string>
+    <string name="subscribe_detail_commit">+订阅</string>
+    <string name="subscribe_detail_title">订阅号详情</string>
+    <string name="subscribe_requested">已申请</string>
+    <string name="subscribe_cancled">取消订阅成功!</string>
+    <string name="subscribe_nodata">您没有任何订阅号</string>
+    <!--end by Arison-->
+
+
+    <!--TODO PLAT 部分:写在下面-->
+    <!-- start平台考勤单据部分-->
+    <string-array name="platLeave_type_list">
+        <item>病假</item>
+        <item>产假</item>
+        <item>事假</item>
+        <item>婚假</item>
+        <item>丧假</item>
+        <item>年假</item>
+        <item>产检假</item>
+        <item>陪产假</item>
+        <item>产前假</item>
+        <item>调休</item>
+        <item>哺乳假</item>
+    </string-array>
+    <string name="add_new_people">新增人员</string>
+    <string name="leave_type">请假类型</string>
+    <string name="leave_reason">请假原因</string>
+    <string name="start_time">起始时间</string>
+    <string name="end_time">截止时间</string>
+    <string name="endT_large_startT">结束时间必须大于开始时间</string>
+    <string name="doc_detail">详情</string>
+    <string name="travel_reason">出差事由</string>
+    <string name="travel_destination">出差目的地</string>
+    <string name="ming_detail">明细</string>
+    <string name="doc_resubmit_success">重新提交成功</string>
+    <string name="doc_id">单据编号</string>
+    <string name="doc_record_time">录入时间</string>
+    <string name="doc_status">单据状态</string>
+    <string name="Expected_startT">预计开始时间</string>
+    <string name="Expected_endT">预计结束时间</string>
+    <string name="overwork_purpose">加班目的</string>
+    <string name="overwork_hours">加班时数</string>
+    <string name="overwork_detail">加班明细</string>
+    <string name="travel_detail">出差明细</string>
+    <string name="overwork_detail1">加班明细一</string>
+    <string name="travel_detail1">出差明细一</string>
+    <string name="complaint_doc">申诉单</string>
+    <string name="complaint_hour_T">申诉班次时间</string>
+    <string name="complaint_reson">申诉理由</string>
+    <string name="complaint_photo">申诉手机</string>
+    <string name="complaint_addres">申诉地址</string>
+    <string name="approvel_detail">审批语详情</string>
+    <string name="update_failed">更新失败</string>
+    <string name="Subordinates_visit">下属拜访</string>
+    <string name="my_visit">我的拜访</string>
+    <string name="talking_lost">会话已断开</string>
+    <string name="Program_error">程序错误</string>
+    <string name="error_notice1">数据获取失败,请稍后重试</string>
+    <string name="outplan_undone">外勤计划尚未完成</string>
+    <string name="work_calender">工作日历</string>
+    <string name="done">已完成</string>
+    <string name="undone">未完成</string>
+    <string name="oacreat_task">创建任务</string>
+    <string name="oacreat_calender">创建日程</string>
+    <string name="account_notice1">当前账号没有下属,如有问题请联系系统管理员</string>
+    <string name="nothing_now">暂无更多</string>
+    <string name="set_close_step_notice1">您已预关闭UU运动,下次重启应用时将不再开启UU运动</string>
+    <string name="set_close_step_notice2">尚未开启UU运动,或已预关闭</string>
+    <string name="close_step_notice3">小提示:UU在关闭后无法继续统计您的步数数据</string>
+    <string name="set_check_update_wait">正在检查更新,请稍等...</string>
+    <string name="set_isnewVersion">已经是最新版,不需要更新</string>
+    <string name="set_share_to">分享到</string>
+    <string name="device_nosupport_step">设该备不支持UU计步,抱歉</string>
+    <string name="uu_step_Running_in_the_background">UU运动正在后台运行</string>
+    <string name="comeon_more_sport">加油,要记得勤加运动</string>
+    <string name="uu_friend_notice">小UU友情提示</string>
+    <string name="uu_love_notice">如果想要我和微信一样准确的记录您的运动步数,请保持我和微信一样一直在后台运行哦,主人,O_O!</string>
+    <string name="i_known">我知道了</string>
+    <string name="send_words">发表文字</string>
+    <string name="please_waitting">请稍等</string>
+    <string name="ask_submit_success">问题提交成功</string>
+    <!-- 调用系统拍照的字符串 -->
+    <string name="watting">等待</string>
+    <string name="approvel">审批</string>
+    <string name="Did_not_pass">未通过</string>
+    <string name="task_done_deal">已处理</string>
+    <string name="task_wait_todo">待处理</string>
+    <string name="task_refresh_again">请刷新重试</string>
+    <string name="new_add">新增</string>
+    <string name="task_sended">发起的</string>
+    <string name="task_Reply_to_your_task_completiong">回复您的任务完成情况...</string>
+    <string name="task_reply">回复</string>
+    <string name="task_turn_down">驳回</string>
+    <string name="task_go_on_time">持续时间</string>
+    <string name="task_input_detail_info">输入完整信息</string>
+    <string name="task_title_must_input">任务标题为必填项</string>
+    <string name="task_detail_must_input">任务详情为必填项</string>
+    <string name="task_doman_must_input">执行人为必选项</string>
+    <string name="task_limit_doman">执行人数量过多,超限1000字符了</string>
+    <string name="task_startT_must_input">开始时间为必选项</string>
+    <string name="task_endT_must_input">结束时间为必选项</string>
+    <string name="task_send_success">发送成功</string>
+    <string name="common_send">发送</string>
+    <string name="make_adeal_failed">操作失败</string>
+    <string name="rest">休息</string>
+    <string name="sign_flights">班次</string>
+    <string name="select_department_first">请先选择部门</string>
+    <string name="select_jobs">选择岗位</string>
+    <string name="select_department">选择部门</string>
+    <string name="Please_imput_the_correct_email_format">请输入正确的邮箱格式</string>
+    <string name="people_add_success">人员添加成功</string>
+    <string name="add_success">新增成功</string>
+    <string-array name="plat_department_list">
+        <item>总经办</item>
+        <item>采购部</item>
+        <item>销售部</item>
+        <item>财务部</item>
+        <item>人事行政部</item>
+        <item>研发部</item>
+    </string-array>
+    <!-- end平台考勤单据部分-->
+    <string name="plat_department1">总经办</string>
+    <string name="plat_department2">采购部</string>
+    <string name="plat_department3">销售部</string>
+    <string name="plat_department4">财务部</string>
+    <string name="plat_department5">人事行政部</string>
+    <string name="plat_department6">研发部</string>
+    <string-array name="plat_job1">
+        <item>总经理</item>
+        <item>副总经理</item>
+        <item>秘书</item>
+    </string-array>
+    <string-array name="plat_job2">
+        <item>经理</item>
+        <item>采购员</item>
+    </string-array>
+    <string-array name="plat_job3">
+        <item>经理</item>
+        <item>业务员</item>
+    </string-array>
+    <string-array name="plat_job4">
+        <item>经理</item>
+        <item>会计</item>
+        <item>出纳</item>
+    </string-array>
+    <string-array name="plat_job5">
+        <item>经理</item>
+        <item>人事专员</item>
+        <item>行政专员</item>
+    </string-array>
+    <string-array name="plat_job6">
+        <item>经理</item>
+        <item>工程师</item>
+    </string-array>
+    <!-- end平台部分-->
+
+    <!-- 工作圈部分-->
+    <string name="qzone_send_word">发文字</string>
+    <string name="qzone_send_picture">发图片</string>
+    <string name="qzone_send_video">发视频</string>
+    <string name="qzone_location_city">所在城市</string>
+    <string name="qzone_out_share">外部分享</string>
+    <string name="qzone_praise">赞</string>
+    <string name="qzone_comment">评论</string>
+    <string name="qzone_change_picture"></string>
+    <string name="qzone_copy">复制</string>
+    <string name="qzone_message_detail">说‘说详情</string>
+    <string name="qzone_saveto_phone">保 存 到 手 机</string>
+    <string name="qzone_cancel">取 消</string>
+    <string name="qzone_send_notice1">您未输入任何内容</string>
+    <string name="qzone_notshow_location">不显示位置</string>
+    <string name="qzone_ishare_too">我也去分享</string>
+    <string name="qzone_share_success">分享成功</string>
+    <string name="qzone_enter_qzone_now">是否立即进入朋友圈查看</string>
+    <string name="qzone_edit_daily">编写日报</string>
+    <string name="qzone_enter_atnow">立即进入</string>
+    <string name="qzone_upload_failed">上传失败</string>
+    <string name="qzone_add_picture">添加图片</string>
+    <string name="qzone_sendshuo_now_think">这一刻的想法&#8230;</string>
+    <string name="qzone_now_location">所在位置</string>
+    <string name="qzone_say_something">说点什么..</string>
+    <string name="qzone_select_image">选择图片,最多9个</string>
+    <string name="qzone_select_video">选择视频,最多1个</string>
+    <string name="qzone_addd_nothing_video">您未添加任何视频文件</string>
+    <string name="qzone_add_video">添加视频</string>
+    <string name="qzone_select_failed">选择失败</string>
+    <string name="qzone_video_file_not_exist">视频文件不存在</string>
+    <string name="qzone_send">发动态</string>
+
+    <string name="sign_teams">团队考勤</string>
+    <string name="my_sign">我的考勤</string>
+    <string name="sign_late">迟到</string>
+    <string name="sign_leave">早退</string>
+    <string name="sign_Absenteeism">旷工</string>
+    <string name="sign_actualtime">实际工时</string>
+    <string name="sign_Times">次</string>
+    <string name="sign_hour_day">小时/天</string>
+    <string name="sign_look_alldatas">查看完整表单</string>
+    <string name="sign_the_first">第一名</string>
+    <string name="sign_the_second">第二名</string>
+    <string name="sign_the_third">第三名</string>
+    <string name="sign_teams_rank">团队勤奋榜</string>
+    <string name="sign_calendar">日历</string>
+    <string name="sign_Average_hours">平均工时</string>
+    <string name="work_business_me">我的商务</string>
+    <string name="auto_sign_failed">Android自动打卡失败</string>
+    <string name="auto_outplan_failed">Android自动外勤签到失败</string>
+    <string name="app_start_log">APP启动</string>
+    <string name="app_monitor_log">AndroidAPP监控</string>
+    <string name="app_outplan_running">APP外勤任务进行中</string>
+
+    <string name="create_business">创建商机</string>
+    <string name="describe">描述</string>
+    <string name="visit_content">拜访内容</string>
+    <string name="is_must_input">为必填项</string>
+    <string name="times">时段</string>
+    <string name="longs">距离</string>
+    <string name="create_addree">创建地点</string>
+    <string name="realtime_distance">实时距离</string>
+    <string name="real_arrival_time">实际到达时间</string>
+    <string name="recent_record_time">最近记录时间</string>
+    <string name="select_client">选择客户</string>
+    <string name="work_business_find">商品查询</string>
+    <string name="app_trytoget_outplan">获取外勤计划失败</string>
+    <string name="set_language">切换语言</string>
+    <string name="select_form_phoneablum">从手机相册选择</string>
+    <string name="please_unput_yourP">请输入您的问题...(400字以内)</string>
+    <string name="Business_license_number">营业执照号</string>
+    <string name="crm_niche_notice1">默认显示一个遗忘客户,点击显示更多</string>
+
+    <!--翻译补漏-->
+    <string name="language_sys">跟随系统</string>
+    <string name="language_rCN">简体中文</string>
+    <string name="language_rTW">繁体中文</string>
+    <string name="language_en">英文</string>
+    <string name="create_date">创建日期</string>
+    <string name="select_contact">选择联系人</string>
+    <string name="delete_business_ok">删除商机成功</string>
+    <string name="input_visit_remark">输入拜访目的</string>
+    <string name="input_contact">输入联系人</string>
+
+    <string name="Rated_UU">为UU评分</string>
+    <string name="Rated_notice1">请您为UU评一个分数吧,只需要花费您很少的时间,感谢您的支持!</string>
+    <string name="Rated_now">现在去评分</string>
+    <string name="Rated_suggest">问题反馈</string>
+    <string name="Rated_next">下次再说</string>
+    <string name="fangkui_success">"提交成功,我们会在第一时间查看您的问题,谢谢您的配合!</string>
+    <string name="Uploaded_successfully">上传成功</string>
+    <string name="contect_is_much">联系人为必填项</string>
+    <string name="context_is_much">拜访内容为必填项</string>
+    <string name="sign_to">至</string>
+    <string name="shorthand_year">年</string>
+    <string name="sShorthand_month">月</string>
+    <string name="shorthand_day">日</string>
+    <string name="address">地址</string>
+    <string name="assign">分配</string>
+    <string name="transfer">转移</string>
+    <string name="over_latetime">严重迟到</string>
+    <string name="work_signin">上班打卡</string>
+    <string name="unwork_signin">下班打卡</string>
+    <string name="add_work_times">+新增上班时段</string>
+    <string name="all_work_time">合计工时</string>
+    <string name="two_hour_before">上班前2个小时</string>
+    <string name="earliest_work_signin_time">最早上班签到时间</string>
+    <string name="mobile_signcard">申诉班次</string>
+    <string name="mobile_mac">手机mac地址</string>
+    <string name="mobile_change_name">变更理由</string>
+    <string name="input_reason">请填写理由</string>
+    <string name="personnel">人员</string>
+    <string name="CRM_grabBusinessFaild">抢占商机失败</string>
+    <string name="CRM_sorryYouHaveOverTheBiggestBusinessQuantity">对不起,您已超过最大拥有的商机数量!</string>
+    <string name="CRM_addDate_sorryThisBusinessHaveAdd">对不起,此商机已添加过日程!</string>
+    <string name="CRM_businessLose_leaderGetFaild">获取直属领导数据失败</string>
+    <string name="CRM_businessLose_treatmentTime">处理时间</string>
+    <string name="CRM_businessLose_leader">直属领导</string>
+    <string name="CRM_sorryOnlyPickOneClient">对不起,只能选择一个客户</string>
+    <string name="CRM_pleasePickClientFirst">请先选择客户</string>
+    <string name="CRM_current_page_change_ecet">当前页数据已更改,请先更新,然后提交</string>
+    <string name="CRM_unable_ecet">无法访问服务器,请稍后再试</string>
+    <string name="MyAttendanceRules_legalHoliday">遵循法定节假日</string>
+    <string name="MyAttendanceRules_newYearsDay">元旦</string>
+    <string name="MyAttendanceRules_SpringFestival">春节</string>
+    <string name="MyAttendanceRules_QingmingFestival">清明节</string>
+    <string name="MyAttendanceRules_LaborDay">劳动节</string>
+    <string name="MyAttendanceRules_TheDragonBoatFestival">端午节</string>
+    <string name="MyAttendanceRules_nationalDay">国庆节</string>
+    <string name="MyAttendanceRules_MidAutumnFestival">中秋节</string>
+    <string name="SchedulingSetting_DeleteTitle">是否删除该班次</string>
+    <string name="SchedulingSetting_ConflictDepartment">有冲突部门1个,查看设置</string>
+    <string name="SchedulingSetting_ConflictPerson1">有冲突人员</string>
+    <string name="SchedulingSetting_ConflictPerson2">个,查看设置</string>
+    <string name="WorkingTime1">上班时间1</string>
+    <string name="WorkingTime2">上班时间2</string>
+    <string name="WorkingTime3">上班时间3</string>
+    <string name="SchedulingTime_SelectReminder">选择时间超出时间</string>
+    <string name="SchedulingTime_SelectBestWorking1">提前1小时</string>
+    <string name="SchedulingTime_SelectBestWorking2">提前2小时</string>
+    <string name="SchedulingTime_SelectBestWorking3">提前3小时</string>
+    <string name="SchedulingTime_SelectBestWorking4">提前4小时</string>
+    <string name="SchedulingTime_SelectBestWorking5">提前5小时</string>
+    <string name="SchedulingTime_SelectBestWorking6">提前6小时</string>
+    <string name="SchedulingTime_SelectBestWorking7">提前7小时</string>
+    <string name="ParticipatingPerson_selectedPerson2">个人员</string>
+    <string name="rule_name">规则名称</string>
+    <string name="Set_Scheduling">排班</string>
+    <string name="Scheduling_type">排班类型</string>
+    <string name="Normal_frequency">正常班次</string>
+    <string name="no_flights">无班次,联系管理员</string>
+    <string name="Monday">周一</string>
+    <string name="Tuesday">周二</string>
+    <string name="Wednesday">周三</string>
+    <string name="Thursday">周四</string>
+    <string name="Friday">周五</string>
+    <string name="Saturday">周六</string>
+    <string name="Sunday">周日</string>
+    <string name="holiday_date1">12月31日~1月2日  共3天</string>
+    <string name="holiday_date2">1月27日~2月2日 共7天 调休;2月4日上班</string>
+    <string name="holiday_date3">4月2日~4月4日 共3天  调休;4月1日上班</string>
+    <string name="holiday_date4">4月29日~5月1日   共3天</string>
+    <string name="holiday_date5">5月28日~5月30日  共3天  调休;5月27日上班</string>
+    <string name="holiday_date6">10月1日~10月8日  共8天  调休;9月30日上班</string>
+    <string name="not_message_and_add">没有找到数据,请点击右上角的+进行添加</string>
+    <string name="unsubmit">反提交</string>
+    <string name="Operation_succeeded">反提交成功</string>
+
+    <string name="bc_factoryAdd">工厂地址</string>
+    <string name="bc_tel">公司总机</string>
+    <string name="last_visit">上次拜访</string>
+    <string name="visit_num">总拜访</string>
+    <string name="search_address_input_company">请搜索地址后完善单位名称</string>
+    <string name="enterprise">企业</string>
+    <string name="map">地图</string>
+    <string name="unsignined">未签到</string>
+    <string name="input_meeting_note">会议纪要未按要求填写</string>
+    <string name="input_meeting_resolution">会议决议未按要求填写</string>
+    <string name="input_meeting_left">遗留问题未按要求填写</string>
+    <string name="input_meeting_next">后续工作未按要求填写</string>
+    <string name="crm_icon1">我的排名</string>
+    <string name="crm_icon2">本月销售简报</string>
+    <string name="crm_icon3">我的下属</string>
+    <string name="crm_icon4">我的指标</string>
+    <string name="crm_icon5">遗忘的客户</string>
+    <string name="leave">请假</string>
+    <string name="overtime">加班</string>
+    <string name="ychuqin">应该出勤</string>
+    <string name="achuqin">实际出勤</string>
+    <string name="nday">正常打卡</string>
+    <string name="outdays">出差</string>
+    <string name="signcard">补卡</string>
+    <string name="sure_delete_content">你确定删除该联系人吗</string>
+    <string name="info_2dcode">二维码名片</string>
+    <string name="scan_2dcode_addme">扫一扫上面的二维码图案,加我好友</string>
+    <string name="share_2code">分享二维码</string>
+    <string name="change_style">换个样式</string>
+    <string name="save_to_MBphone">保存到手机</string>
+    <string name="scan_2dcode">扫描二维码</string>
+    <string name="error_system_findunknow_error">很抱歉! 系统发现未知错误!</string>
+    <string name="not_find_company_search">未找到公司位置,请搜索地址</string>
+    <string name="visited">已拜访</string>
+    <string name="create_meet_task">创建会议任务</string>
+    <string name="meeting_name">会议名称</string>
+    <string name="join_numer">参会人员</string>
+    <string name="administrators">管理员</string>
+    <string name="add_schedule_for_meeter">为参会人员创建日程</string>
+    <string name="select_locaton">选择位置</string>
+    <string name="friend_to_chat">你们已经是好友了,开始聊天吧</string>
+    <string name="not_system_permission">应用没有获取到权限</string>
+    <string name="room_description">群说明</string>
+    <string name="room_number">人&#160;&#160;&#160;&#160;数</string>
+    <string name="new_join_son_to_chating">新加入的小伙伴们,快来聊天吧!</string>
+    <string name="no_notice">暂时无公告</string>
+    <string name="no_block_room_message">取消屏蔽群消息</string>
+    <string name="block_room_message">屏蔽群消息</string>
+    <string name="delete_room">删除商务群</string>
+    <string name="exit_room">退出商务群</string>
+    <string name="add_administrators">添加管理员</string>
+    <string name="remove_administrators">移除管理员</string>
+    <string name="gag_success">禁言成功</string>
+    <string name="no_gag_success">取消禁言成功</string>
+    <string name="forward">转&#160;&#160;发</string>
+    <string name="more">更&#160;&#160;多</string>
+    <string-array name="gags_select">
+        <item>不禁言</item>
+        <item>禁言一天</item>
+        <item>禁言3天</item>
+        <item>禁言一周</item>
+        <item>禁言半个月</item>
+        <item>禁言一个月</item>
+    </string-array>
+    <string name="missing_card">缺卡</string>
+    <string name="before_work">上班前</string>
+    <string name="search1">查找</string>
+    <string name="formal_customer">正式客户</string>
+    <string name="client_type">客户类型</string>
+    <string name="common_select1">请选择</string>
+    <string name="update_business">修改商机</string>
+    <string name="confirmed">待确认</string>
+    <string name="readed">已读</string>
+    <string name="unreaded">未读</string>
+    <string name="web_next_tv">下一条></string>
+    <string name="web_previous_tv"><上一条</string>
+    <string name="subscription_number">隐藏该订阅号</string>
+    <string name="subscription_class">隐藏该订阅类</string>
+    <string name="unsubscribe">-退订</string>
+    <string name="not_unsubscribe_able">该订阅号不可退订</string>
+    <string name="unsubscribe_able">不可退订</string>
+    <string name="client_yu_luru">客户预录入</string>
+    <string name="common_title">标题</string>
+    <string name="Reimbursement_type">报销类型</string>
+    <string name="Consumer_details">消费明细</string>
+    <string name="Add_invoice">添加发票</string>
+    <string name="Results_of_scan">扫描结果</string>
+    <string name="Expense_reimbursement">费用报销</string>
+    <string name="RMB">人民币</string>
+    <string name="currency">币种</string>
+    <string name="search_select_hint">搜索项目、品牌、物料、型号等</string>
+    <string name="sure_business_release">确定释放这个商机?</string>
+    <string name="more_length">超过最大允许长度</string>
+    <string name="work_name_not_be_null">班次名称不能为空</string>
+    <string name="calculator_name">计算器</string>
+    <string name="action_settings">Settings</string>
+    <string name="c_ce">CE</string>
+    <string name="c_c">C</string>
+    <string name="c_xx">Xx</string>
+    <string name="c_div">÷</string>
+
+    <string name="c_7">7</string>
+    <string name="c_8">8</string>
+    <string name="c_9">9</string>
+    <string name="c_X">X</string>
+
+    <string name="c_4">4</string>
+    <string name="c_5">5</string>
+    <string name="c_6">6</string>
+    <string name="c_delete">-</string>
+
+    <string name="c_1">1</string>
+    <string name="c_2">2</string>
+    <string name="c_3">3</string>
+    <string name="c_add">+</string>
+
+    <string name="c_aord">±</string>
+    <string name="c_0">0</string>
+    <string name="c_point">·</string>
+    <string name="c_equal">完成</string>
+
+
+    <!--login-->
+    <string name="login_success_erp">UAS验证成功!</string>
+    <string name="login_success_b2b">验证B2B成功!</string>
+    <string name="login_error_b2b">平台登录失败!</string>
+    <string name="login_error_erp">UAS验证失败!</string>
+    <string name="login_error_info">手机号或者密码错误!</string>
+    <string name="login_progress_b2b">正在验证B2B...</string>
+    <string name="login_progress_erp">正在验证UAS...</string>
+    <string name="login_company_select">选择公司</string>
+
+    <string name="Amount_of_money">金额</string>
+    <string name="all_Amount_of_money">总金额</string>
+    <string name="type">类型</string>
+    <string name="not_search_message">没有符合条件的结果</string>
+    <string name="invoice_submitted_successfully">发票提交成功</string>
+    <string name="sending_picture">正在上传图片</string>
+
+    <string name="select_cost_type">请选择报销类型</string>
+    <string name="select_money_type">请选择币种</string>
+    <string name="add_cost_details">请增加消费明细</string>
+    <string name="sure_delete_this_details">确定删除该条消费明细?</string>
+    <string name="app_id">59311ec1</string>
+    <string name="enter_details_money">请输入明细金额</string>
+
+    <string name="count_down">倒计时:</string>
+    <string name="recording_completed">录制完成</string>
+    <string name="input_cost_name">请输入消费明细名称</string>
+    <string name="add_cost_details1">添加消费明细</string>
+    <string name="invoice">发票</string>
+    <string name="please_add_image">请添加图片</string>
+
+    <string name="selector_folder_all">所有图片</string>
+    <string name="selector_caption">选择图片</string>
+    <!--http://stackoverflow.com/questions/17502824/whats-wrong-with-this-format-string-->
+    <string name="selector_action_done">完成(%1$d/%2$d)</string>
+    <string name="selector_preview">预览</string>
+
+    <string name="selector_reach_max_image_hint">您已经选择%d张图片了!</string>
+    <string name="tip_take_photo">拍摄照片</string>
+    <string name="msg_no_camera">无法启动相机!</string>
+    <string name="camera_temp_file_error">图片错误</string>
+
+    <string name="selector_permission_error">权限错误,无法正常工作!</string>
+    <string name="ablum_list">相册列表</string>
+
+    <!--本地通讯录-->
+    <string name="app_local_contacts">手机通讯录</string>
+    <!--UU小秘书-->
+    <string name="booking_menu">预约小秘书</string>
+    <string name="booking_title">预约详情</string>
+    <string name="booking_time">时间</string>
+    <string name="booking_address">地址</string>
+    <string name="booking_topic">主题</string>
+    <string name="booking_content">内容</string>
+    <string name="booking_change">变更</string>
+    <string name="booking_object">对象</string>
+    <string name="booking_object_name">预约对象</string>
+    <string name="booking_me">我的预约</string>
+    <string name="booking_shared">共享预约</string>
+    <string name="booking_time_set">预约时间段设置</string>
+    <string name="booking_times">时间段:</string>
+
+    <string name="booking_add">预约计划</string>
+    <string name="select_share_friend">分享好友</string>
+
+    <!--关于新审批流的,后期会添加到四个文件中-->
+    <string name="title_approval">审批单据</string>
+    <string name="take_over">接管</string>
+    <string name="load_next_approval">操作完成,正在跳往下一条</string>
+    <string name="loadtonext_approval">正在跳往下一条</string>
+    <string name="load_not_next_data">没有下一条数据</string>
+    <string name="serial_number">单据序号</string>
+    <string name="load_take_over_ok">接管人为自己时默认为同意该审批</string>
+    <string name="load_take_over_error">接管失败</string>
+    <string name="approval_points">审批要点</string>
+    <string name="must_input_key">必填字段</string>
+    <string name="end_approval">流程异常,结束当前流程</string>
+    <string name="approval_opinion_error">审批意见未填写或填写不正确</string>
+    <string name="enclosure">附件</string>
+    <string name="subtabulation">副表</string>
+    <string name="not_data_from_formandgrid">没有获取到明细表数据</string>
+    <string name="submit_cannot_submit_again">正在提交请求,请不要重复提交</string>
+
+    <string name="person_register">个人注册</string>
+    <string name="phone_number">手机号</string>
+    <string name="rpassword">密码</string>
+    <string name="input_person_sign">请输入个性签名</string>
+    <string name="to_login">已有账户?登录</string>
+    <string name="input_phone_number">请输入手机号</string>
+    <string name="input_name">请输入姓名</string>
+
+    <!--工作->数据查询-->
+    <string name="common_service_query">常用业务查询</string>
+    <string name="more_queries">更多查询</string>
+    <string name="select_query_service">选择查询业务</string>
+</resources>

+ 3 - 0
app_modular/appworks/build.gradle

@@ -23,4 +23,7 @@ dependencies {
     testCompile deps.junit
     compile deps.appcompatV7
     compile deps.fastjson
+
+    //project
+    compile project(':common')
 }