Переглянути джерело

Merge branch 'developer' of https://gitlab.com/Arisono/SkWeiChat-Baidu into feature_raomeng

# Conflicts:
#	WeiChat/src/main/res/layout/activity_expense_reimbursement.xml
#	app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/MeetDetailsActivity.java
RaoMeng 7 роки тому
батько
коміт
071ede0bff
100 змінених файлів з 2081 додано та 1606 видалено
  1. 0 1
      WeiChat/build.gradle
  2. 1 4
      WeiChat/src/main/AndroidManifest.xml
  3. 1 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  4. 4 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/SplashActivity.java
  5. 3 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/LoginHistoryActivity.java
  6. 5 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/RegisterUserBasicInfoActivity.java
  7. 12 11
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendAudioActivity.java
  8. 3 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendBaiDuLocate.java
  9. 10 19
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java
  10. 14 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendVideoActivity.java
  11. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DestinationActivity.java
  12. 36 29
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/LocationMapActivity.java
  13. 3 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/NavigationActivity.java
  14. 3 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutLogListActivity.java
  15. 2 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutofficeSetActivity.java
  16. 4 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectAimActivity.java
  17. 6 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java
  18. 0 204
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SearchPresenter.java
  19. 20 19
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/SelectContactsActivity.java
  20. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/ChatActivity.java
  21. 3 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  22. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MucChatActivity.java
  23. 12 11
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/im/CreateRoomUtil.java
  24. 284 284
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/AutoErpService.java
  25. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/CommonUtil.java
  26. 0 52
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/DepositNoticeUtil.java
  27. 45 28
      WeiChat/src/main/res/layout/activity_expense_reimbursement.xml
  28. 9 7
      WeiChat/src/main/res/layout/item_mission.xml
  29. 1 0
      app_core/common/build.gradle
  30. 8 16
      app_core/common/src/main/java/com/core/app/MyApplication.java
  31. 0 240
      app_core/common/src/main/java/com/core/net/location/BdLocationHelper.java
  32. 3 2
      app_core/common/src/main/java/com/core/net/volley/Result.java
  33. 0 336
      app_core/common/src/main/java/com/core/utils/BaiduMapUtil.java
  34. 2 1
      app_core/common/src/main/java/com/core/utils/CommonUtil.java
  35. 3 2
      app_core/common/src/main/java/com/core/utils/helper/LoginHelper.java
  36. 7 11
      app_core/common/src/main/java/com/core/widget/view/Activity/SearchLocationActivity.java
  37. 181 182
      app_core/common/src/main/java/com/core/widget/view/imp/SearchPresenter.java
  38. 2 2
      app_core/common/src/main/java/com/core/widget/view/model/SearchPoiParam.java
  39. 4 4
      app_core/common/src/main/java/com/core/xmpp/model/Area.java
  40. 2 1
      app_core/common/src/main/java/com/core/xmpp/widget/ChatContentView.java
  41. 10 0
      app_core/common/src/main/res/drawable/bg_edit_shape_10dp.xml
  42. 2 2
      app_core/common/src/main/res/layout/activity_oamain.xml
  43. 2 2
      app_core/common/src/main/res/layout/item_approval_node.xml
  44. 1 1
      app_core/common/src/main/res/layout/item_approval_rv.xml
  45. 1 1
      app_core/common/src/main/res/layout/item_approval_title.xml
  46. 2 2
      app_core/common/src/main/res/layout/plat_oamain.xml
  47. 4 3
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceListActivity.java
  48. 2 2
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceSearchActivity.java
  49. 6 5
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServicesActivity.java
  50. 1 2
      app_modular/appcontact/build.gradle
  51. 4 4
      app_modular/appcontact/src/main/java/com/uas/appcontact/adapter/UserAdapter.java
  52. 5 3
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/AutoCreateChatFragment.java
  53. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactsFragment.java
  54. 1 0
      app_modular/applocation/.gitignore
  55. 2 0
      app_modular/applocation/README.md
  56. 25 0
      app_modular/applocation/build.gradle
  57. 0 0
      app_modular/applocation/libs/BaiduLBS_Android.jar
  58. 21 0
      app_modular/applocation/proguard-rules.pro
  59. 8 0
      app_modular/applocation/src/main/AndroidManifest.xml
  60. 19 0
      app_modular/applocation/src/main/java/com/uas/applocation/Interface/OnBaiduPoiListener.java
  61. 7 0
      app_modular/applocation/src/main/java/com/uas/applocation/Interface/OnLocationListener.java
  62. 9 0
      app_modular/applocation/src/main/java/com/uas/applocation/Interface/OnSearchLocationListener.java
  63. 95 0
      app_modular/applocation/src/main/java/com/uas/applocation/UasLocationHelper.java
  64. 166 0
      app_modular/applocation/src/main/java/com/uas/applocation/base/BDLocationManager.java
  65. 33 0
      app_modular/applocation/src/main/java/com/uas/applocation/base/BaseLocationManager.java
  66. 370 0
      app_modular/applocation/src/main/java/com/uas/applocation/base/NativeLocationManager.java
  67. 203 0
      app_modular/applocation/src/main/java/com/uas/applocation/model/UASLocation.java
  68. 16 0
      app_modular/applocation/src/main/java/com/uas/applocation/utils/AreaUtils.java
  69. 40 0
      app_modular/applocation/src/main/java/com/uas/applocation/utils/CoordinateUtils.java
  70. 96 0
      app_modular/applocation/src/main/java/com/uas/applocation/utils/LocationDistanceUtils.java
  71. 169 0
      app_modular/applocation/src/main/java/com/uas/applocation/utils/LocationNeerUtils.java
  72. 45 0
      app_modular/applocation/src/main/java/com/uas/applocation/utils/ModelChangeUtils.java
  73. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_base_v4_0_0.so
  74. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_cloud_v4_0_0.so
  75. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_map_v4_0_0.so
  76. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_radar_v4_0_0.so
  77. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_search_v4_0_0.so
  78. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_util_v4_0_0.so
  79. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_base_v4_0_0.so
  80. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_cloud_v4_0_0.so
  81. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_map_v4_0_0.so
  82. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_radar_v4_0_0.so
  83. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_search_v4_0_0.so
  84. 0 0
      app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_util_v4_0_0.so
  85. 0 0
      app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_base_v4_0_0.so
  86. 0 0
      app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_cloud_v4_0_0.so
  87. 0 0
      app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_map_v4_0_0.so
  88. 0 0
      app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_radar_v4_0_0.so
  89. 0 0
      app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_search_v4_0_0.so
  90. 0 0
      app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_util_v4_0_0.so
  91. 0 0
      app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_base_v4_0_0.so
  92. 0 0
      app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_cloud_v4_0_0.so
  93. 0 0
      app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_map_v4_0_0.so
  94. 0 0
      app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_radar_v4_0_0.so
  95. 0 0
      app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_search_v4_0_0.so
  96. 0 0
      app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_util_v4_0_0.so
  97. 5 0
      app_modular/applocation/src/main/res/values/strings.xml
  98. 5 4
      app_modular/applogin/src/main/java/com/modular/login/activity/LoginActivity.java
  99. 4 4
      app_modular/appme/src/main/java/com/uas/appme/other/activity/SelectAreaActivity.java
  100. 0 51
      app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/TrackUtils.java

+ 0 - 1
WeiChat/build.gradle

@@ -167,7 +167,6 @@ dependencies {
     androidTestCompile deps.leakcanaryNp
     debugCompile deps.leakcanary
     releaseCompile deps.leakcanaryNp
-
     compile project(':common')
     compile project(':appmessages')
     compile project(':network')

+ 1 - 4
WeiChat/src/main/AndroidManifest.xml

@@ -822,10 +822,7 @@
         <!-- 动态表单 -->
 
 
-        <service
-            android:name=".util.oa.AutoErpService"
-            android:enabled="true"
-            android:exported="true" />
+
 
         <activity android:name=".ui.me.SpeechrecognitionActivity" />
         <activity android:name=".ui.erp.activity.oa.ErpActivity" />

+ 1 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java

@@ -43,7 +43,6 @@ import com.baidu.android.pushservice.PushConstants;
 import com.baidu.android.pushservice.PushManager;
 import com.baidu.autoupdatesdk.BDAutoUpdateSDK;
 import com.baidu.autoupdatesdk.UICheckUpdateCallback;
-import com.baidu.idl.face.platform.ui.config.FaceConfig;
 import com.common.LogUtil;
 import com.common.data.DateFormatUtil;
 import com.common.data.ListUtils;
@@ -634,7 +633,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
         LogUtil.d("OnCreate end:" + DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
 
         //初始化面部识别
-        FaceConfig.initFace(ct);
+        com.baidu.aip.excep.utils.FaceConfig.initFace(ct);
 
     }
 

+ 4 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/SplashActivity.java

@@ -46,6 +46,7 @@ import com.me.network.app.http.HttpRequest;
 import com.me.network.app.http.Method;
 import com.modular.apputils.service.CommonIntentService;
 import com.modular.login.activity.LoginActivity;
+import com.uas.applocation.UasLocationHelper;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.ADActivity;
 import com.xzjmyk.pm.activity.ui.me.TimeStatisticsActivity;
@@ -368,8 +369,8 @@ public class SplashActivity extends BaseActivity {
         params.put("osVersion", SystemUtil.getOsVersion());
         params.put("serial", SystemUtil.getDeviceId(mContext));
         // 地址信息
-        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+        double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
         if (latitude != 0)
             params.put("latitude", String.valueOf(latitude));
         if (longitude != 0)
@@ -431,7 +432,7 @@ public class SplashActivity extends BaseActivity {
         Runnable runnable = new Runnable() {
             @Override
             public void run() {
-                MyApplication.getInstance().getBdLocationHelper().requestLocation();
+                UasLocationHelper.getInstance().requestLocation();
                 trun2NextPage2(type);
             }
         };

+ 3 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/LoginHistoryActivity.java

@@ -33,6 +33,7 @@ import com.core.utils.helper.AvatarHelper;
 import com.core.utils.helper.LoginHelper;
 import com.core.utils.sp.UserSp;
 import com.modular.login.activity.LoginActivity;
+import com.uas.applocation.UasLocationHelper;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.MainActivity;
 
@@ -135,8 +136,8 @@ public class LoginHistoryActivity extends BaseActivity implements View.OnClickLi
 		params.put("osVersion", SystemUtil.getOsVersion());
 		params.put("serial", SystemUtil.getDeviceId(mContext));
 		// 地址信息
-		double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-		double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+		double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+		double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
 		if (latitude != 0)
 			params.put("latitude", String.valueOf(latitude));
 		if (longitude != 0)

+ 5 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/RegisterUserBasicInfoActivity.java

@@ -39,8 +39,9 @@ import com.core.xmpp.model.Area;
 import com.loopj.android.http.AsyncHttpClient;
 import com.loopj.android.http.AsyncHttpResponseHandler;
 import com.loopj.android.http.RequestParams;
-import com.uas.appme.other.activity.SelectAreaActivity;
 import com.nostra13.universalimageloader.core.ImageLoader;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.appme.other.activity.SelectAreaActivity;
 import com.xzjmyk.pm.activity.R;
 
 import org.apache.http.Header;
@@ -309,9 +310,9 @@ public class RegisterUserBasicInfoActivity extends BaseActivity implements View.
 		params.put("osVersion", SystemUtil.getOsVersion());
 		params.put("serial", SystemUtil.getDeviceId(mContext));
 		// 地址信息
-		double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-		double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
-		String location = MyApplication.getInstance().getBdLocationHelper().getAddress();
+		double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+		double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
+		String location = UasLocationHelper.getInstance().getUASLocation().getAddress();
 		if (latitude != 0)
 			params.put("latitude", String.valueOf(latitude));
 		if (longitude != 0)

+ 12 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendAudioActivity.java

@@ -19,20 +19,21 @@ import com.android.volley.Response;
 import com.android.volley.VolleyError;
 import com.common.system.SystemUtil;
 import com.common.ui.ProgressDialogUtil;
-import com.nostra13.universalimageloader.core.ImageLoader;
 import com.core.app.AppConstant;
 import com.core.app.MyApplication;
-import com.xzjmyk.pm.activity.R;
-import com.core.xmpp.model.Area;
-import com.core.model.UploadFileResult;
-import com.core.utils.helper.LoginHelper;
-import com.xzjmyk.pm.activity.util.im.helper.UploadService;
-import com.modular.login.activity.LoginActivity;
 import com.core.base.BaseActivity;
-import com.core.utils.ToastUtil;
+import com.core.model.UploadFileResult;
 import com.core.net.volley.ObjectResult;
 import com.core.net.volley.Result;
 import com.core.net.volley.StringJsonObjectRequest;
+import com.core.utils.ToastUtil;
+import com.core.utils.helper.LoginHelper;
+import com.core.xmpp.model.Area;
+import com.modular.login.activity.LoginActivity;
+import com.nostra13.universalimageloader.core.ImageLoader;
+import com.uas.applocation.UasLocationHelper;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.util.im.helper.UploadService;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -250,15 +251,15 @@ public class SendAudioActivity extends BaseActivity {
 		params.put("osVersion", SystemUtil.getOsVersion());
 		params.put("serialNumber", SystemUtil.getDeviceId(mContext));
 
-		double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-		double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+		double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+		double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
 
 		if (latitude != 0)
 			params.put("latitude", String.valueOf(latitude));
 		if (longitude != 0)
 			params.put("longitude", String.valueOf(longitude));
 
-		String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
+		String address = UasLocationHelper.getInstance().getUASLocation().getAddress();
 		if (!TextUtils.isEmpty(address))
 			params.put("location", address);
 

+ 3 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendBaiDuLocate.java

@@ -22,6 +22,7 @@ import com.baidu.mapapi.map.OverlayOptions;
 import com.baidu.mapapi.model.LatLng;
 import com.core.app.AppConstant;
 import com.core.app.MyApplication;
+import com.uas.applocation.UasLocationHelper;
 import com.xzjmyk.pm.activity.R;
 
 public class SendBaiDuLocate extends FragmentActivity {
@@ -39,8 +40,8 @@ public class SendBaiDuLocate extends FragmentActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_baidu_map_locate);
 
-        latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+        longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
         userName = MyApplication.getInstance().mLoginUser.getNickName();
         textView = (TextView) findViewById(R.id.sendbd_send);
         mMapView = (MapView) findViewById(R.id.bmapView);

+ 10 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java

@@ -46,6 +46,7 @@ import com.core.widget.view.Activity.MultiImagePreviewActivity;
 import com.core.widget.view.MyGridView;
 import com.core.xmpp.model.Area;
 import com.modular.login.activity.LoginActivity;
+import com.uas.applocation.UasLocationHelper;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.LocationMapActivity;
 import com.xzjmyk.pm.activity.util.im.helper.UploadService;
@@ -104,8 +105,6 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
 		findViewById(R.id.location_rl).setOnClickListener(this);
 		findViewById(R.id.display_rl).setOnClickListener(this);
 
-		String name = MyApplication.getInstance().getBdLocationHelper().getName();
-		String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
 
 		if (mType == 0) {
 			setTitle(R.string.qzone_send_word);
@@ -113,17 +112,9 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
 			setTitle(R.string.qzone_send_picture);
 		}
 
-//        if (!TextUtils.isEmpty(MyApplication.getInstance().getBdLocationHelper().getCityName())
-//        && !TextUtils.isEmpty((MyApplication.getInstance().getBdLocationHelper().getName()))){
-//            location_tv.setText((MyApplication.getInstance().getBdLocationHelper().getCityName()+"•"+
-//                    MyApplication.getInstance().getBdLocationHelper().getName()));
-//        }
-
 		mTextEdit = (EditText) findViewById(R.id.text_edit);
 		mSelectImgLayout = findViewById(R.id.select_img_layout);
 		mGridView = (MyGridView) findViewById(R.id.grid_view);
-
-//       ToastUtil.addEditTextNumChanged(SendShuoshuoActivity.this, mTextEdit, 200);//这里复制粘贴过多字数会在有些机型上出现bug
 		mGridView.setAdapter(mAdapter);
 
 
@@ -328,7 +319,7 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
 			PoiInfo info = data.getParcelableExtra(LocationMapActivity.REQUESTNAME);
 			if (info != null) {
 //                out_add_name_tv.setText(info.name);
-				location_tv.setText(MyApplication.getInstance().getBdLocationHelper().getCityName() + "•" + info.name);
+				location_tv.setText(UasLocationHelper.getInstance().getUASLocation().getCityName() + "•" + info.name);
 				last_address = info.address;
 				last_location = info.name;
 			}
@@ -376,18 +367,18 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
 		params.put("osVersion", SystemUtil.getOsVersion());
 		params.put("serialNumber", SystemUtil.getDeviceId(getApplicationContext()));
 
-		double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-		double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+		double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+		double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
 
 		if (latitude != 0)
 			params.put("latitude", String.valueOf(latitude));
 		if (longitude != 0)
 			params.put("longitude", String.valueOf(longitude));
 
-		String cityname = MyApplication.getInstance().getBdLocationHelper().getCityName();
-		String name = MyApplication.getInstance().getBdLocationHelper().getName();
-		String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
-		String location = MyApplication.getInstance().getBdLocationHelper().getName();
+		String cityname = UasLocationHelper.getInstance().getUASLocation().getCityName();
+		String name = UasLocationHelper.getInstance().getUASLocation().getName();
+		String address = UasLocationHelper.getInstance().getUASLocation().getAddress();
+		String location = UasLocationHelper.getInstance().getUASLocation().getName();
 		baseAddr = StringUtil.isEmail(name) ? address : name;
 
 		Log.i("flhname", name);
@@ -465,8 +456,8 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
 	public void onClick(View view) {
 		switch (view.getId()) {
 			case R.id.location_rl:
-				String name = MyApplication.getInstance().getBdLocationHelper().getName();
-				String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
+				String name = UasLocationHelper.getInstance().getUASLocation().getName();
+				String address = UasLocationHelper.getInstance().getUASLocation().getAddress();
 				baseAddr = StringUtil.isEmail(name) ? address : name;
 
 				Intent i = new Intent(activity, LocationMapActivity.class);

+ 14 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendVideoActivity.java

@@ -40,6 +40,7 @@ import com.core.utils.helper.LoginHelper;
 import com.core.xmpp.model.Area;
 import com.modular.login.activity.LoginActivity;
 import com.nostra13.universalimageloader.core.ImageLoader;
+import com.uas.applocation.UasLocationHelper;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.LocationMapActivity;
 import com.xzjmyk.pm.activity.ui.me.LocalVideoActivity;
@@ -92,10 +93,10 @@ public class SendVideoActivity extends BaseActivity {
 		mlocationrl = (RelativeLayout) findViewById(R.id.location_rl);
 		mlocationtv = (TextView) findViewById(R.id.location_tv);
 
-//        if (!TextUtils.isEmpty(MyApplication.getInstance().getBdLocationHelper().getCityName())
-//                && !TextUtils.isEmpty((MyApplication.getInstance().getBdLocationHelper().getName()))){
-//            mlocationtv.setText((MyApplication.getInstance().getBdLocationHelper().getCityName()+"•"+
-//                    MyApplication.getInstance().getBdLocationHelper().getName()));
+//        if (!TextUtils.isEmpty(UasLocationHelper.getInstance().getUASLocation().getCityName())
+//                && !TextUtils.isEmpty((UasLocationHelper.getInstance().getUASLocation().getName()))){
+//            mlocationtv.setText((UasLocationHelper.getInstance().getUASLocation().getCityName()+"•"+
+//                    UasLocationHelper.getInstance().getUASLocation().getName()));
 //        }
 
 		// init status
@@ -131,8 +132,8 @@ public class SendVideoActivity extends BaseActivity {
 		mlocationrl.setOnClickListener(new View.OnClickListener() {
 			@Override
 			public void onClick(View v) {
-				String name = MyApplication.getInstance().getBdLocationHelper().getName();
-				String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
+				String name = UasLocationHelper.getInstance().getUASLocation().getName();
+				String address = UasLocationHelper.getInstance().getUASLocation().getAddress();
 				baseAddr = StringUtil.isEmail(name) ? address : name;
 				Intent i = new Intent(activity, LocationMapActivity.class);
 				i.putExtra("qzoneaddr", baseAddr == null ? "" : baseAddr);
@@ -212,7 +213,7 @@ public class SendVideoActivity extends BaseActivity {
 			PoiInfo info = data.getParcelableExtra(LocationMapActivity.REQUESTNAME);
 			if (info != null) {
 //                out_add_name_tv.setText(info.name);
-				mlocationtv.setText(MyApplication.getInstance().getBdLocationHelper().getCityName() + "•" + info.name);
+				mlocationtv.setText(UasLocationHelper.getInstance().getUASLocation().getCityName() + "•" + info.name);
 				last_address = info.address;
 				last_location = info.name;
 			}
@@ -363,18 +364,18 @@ public class SendVideoActivity extends BaseActivity {
 		params.put("osVersion", SystemUtil.getOsVersion());
 		params.put("serialNumber", SystemUtil.getDeviceId(getApplicationContext()));
 
-		double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-		double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+		double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+		double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
 
 		if (latitude != 0)
 			params.put("latitude", String.valueOf(latitude));
 		if (longitude != 0)
 			params.put("longitude", String.valueOf(longitude));
 
-		String cityname = MyApplication.getInstance().getBdLocationHelper().getCityName();
-		String name = MyApplication.getInstance().getBdLocationHelper().getName();
-		String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
-		String location = MyApplication.getInstance().getBdLocationHelper().getName();
+		String cityname = UasLocationHelper.getInstance().getUASLocation().getCityName();
+		String name = UasLocationHelper.getInstance().getUASLocation().getName();
+		String address = UasLocationHelper.getInstance().getUASLocation().getAddress();
+		String location = UasLocationHelper.getInstance().getUASLocation().getName();
 		baseAddr = StringUtil.isEmail(name) ? address : name;
 
 		// 是否显示定位

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DestinationActivity.java

@@ -37,8 +37,8 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.uas.applocation.utils.LocationDistanceUtils;
 import com.xzjmyk.pm.activity.R;
-import com.core.utils.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 import com.xzjmyk.pm.activity.view.crouton.Style;
 
@@ -304,7 +304,7 @@ public class DestinationActivity extends BaseActivity {
                 holder.companyaddr_tv.setText(getNotNull(entity.getCompanyAddr()));
                 holder.visit_num_tv.setText("总拜访 " + entity.getVisitcount() + "次");
                 holder.last_time_tv.setText("上次拜访 " + getLastime(entity.getVisitTime()));
-                holder.long_tv.setText(getKm(BaiduMapUtil.getInstence().getDistance(entity.getLatLng())) + "km");
+                holder.long_tv.setText(getKm(LocationDistanceUtils.distanceMeStr(entity.getLatLng())) + "km");
             }
             return view;
         }

+ 36 - 29
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/LocationMapActivity.java

@@ -17,19 +17,24 @@ import android.widget.TextView;
 import com.baidu.mapapi.map.MapView;
 import com.baidu.mapapi.model.LatLng;
 import com.baidu.mapapi.search.core.PoiInfo;
-import com.baidu.mapapi.search.core.SearchResult;
 import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
 import com.baidu.mapapi.search.poi.PoiDetailResult;
 import com.baidu.mapapi.search.poi.PoiIndoorResult;
 import com.baidu.mapapi.search.poi.PoiResult;
+import com.common.data.ListUtils;
 import com.common.data.StringUtil;
-import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
-import com.core.net.location.BdLocationHelper;
+import com.core.utils.BaiduMapUtil;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.uas.applocation.Interface.OnSearchLocationListener;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.model.UASLocation;
+import com.uas.applocation.utils.LocationDistanceUtils;
+import com.uas.applocation.utils.LocationNeerUtils;
+import com.uas.applocation.utils.ModelChangeUtils;
 import com.xzjmyk.pm.activity.R;
-import com.core.utils.BaiduMapUtil;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -69,14 +74,14 @@ public class LocationMapActivity extends BaseActivity implements OnGetPoiSearchR
         }
         init();
         initView();
-        BaiduMapUtil.getInstence().getNearInfo(location, 0, point,
-                "公司", new BaiduMapUtil.OnSearchPoiListener() {
-                    @Override
-                    public void result(SearchResult result) {
-                        if (result instanceof PoiResult)
-                            updataByHandle((PoiResult) result);
-                    }
-                });
+        LocationNeerUtils.loadDataByNeer(ct, location, 0, point, new OnSearchLocationListener() {
+            @Override
+            public void onCallBack(boolean isSuccess, List<UASLocation> locations) {
+                if (isSuccess){
+                    updataByHandle(locations);
+                }
+            }
+        });
     }
 
     //设置主题
@@ -137,17 +142,21 @@ public class LocationMapActivity extends BaseActivity implements OnGetPoiSearchR
 
     }
 
-    private void updataByHandle(PoiResult poiResult) {
-        if (poiResult != null) {
-            listData = poiResult.getAllPoi();
-            if (listData != null && listData.size() > 0) {
+    private void updataByHandle(List<UASLocation> mUASLocations) {
+        if (listData==null){
+            listData=new ArrayList<>();
+        }else{
+            listData.clear();
+        }
+        for (UASLocation e:mUASLocations)
+        {
+            listData.add(ModelChangeUtils.location2PoiInfo(e));
+        }
+            if (!ListUtils.isEmpty(listData)) {
                 listData.add(0, myPoInfo);
-
-                // for (int i=0;i<listData.size();i++)
                 adapter.notifyDataSetChanged();
             }
 
-        }
     }
 
     private void init() {
@@ -161,19 +170,19 @@ public class LocationMapActivity extends BaseActivity implements OnGetPoiSearchR
             qzone_map_ll.setVisibility(View.VISIBLE);
 
             Log.i("qzoneaddr", getIntent().getStringExtra("qzoneaddr"));
-            if (!TextUtils.isEmpty(MyApplication.getInstance().getBdLocationHelper().getCityName())) {
-                location_city_tv.setText(MyApplication.getInstance().getBdLocationHelper().getCityName());
+            if (!TextUtils.isEmpty(UasLocationHelper.getInstance().getUASLocation().getCityName())) {
+                location_city_tv.setText(UasLocationHelper.getInstance().getUASLocation().getCityName());
             }
         } else if (!TextUtils.isEmpty(getIntent().getStringExtra("addr"))) {
             addr = getIntent().getStringExtra("addr");
 //            qzone_map_ll.setVisibility(View.GONE);
         }
-        String addr2 = MyApplication.getInstance().getBdLocationHelper().getName();
-        BdLocationHelper locationHelper = MyApplication.getInstance().getBdLocationHelper();
-        point = new LatLng(locationHelper.getLatitude(), locationHelper.getLongitude());
+        String addr2 = UasLocationHelper.getInstance().getUASLocation().getName();
+        UASLocation mUasLocation = UasLocationHelper.getInstance().getUASLocation();
+        point = new LatLng(mUasLocation.getLatitude(), mUasLocation.getLongitude());
         myPoInfo = new PoiInfo();
         myPoInfo.location = point;
-        myPoInfo.address = locationHelper.getAddress();
+        myPoInfo.address = mUasLocation.getAddress();
         myPoInfo.name = StringUtil.isEmpty(addr) ? (StringUtil.isEmpty(addr2) ? "我的位置" : addr2) : addr;
 
     }
@@ -237,12 +246,10 @@ public class LocationMapActivity extends BaseActivity implements OnGetPoiSearchR
             }
             holder.address_tv.setText(listData.get(i).address);
             holder.name_tv.setText(listData.get(i).name);
-            if (".0".equals(BaiduMapUtil.getInstence().
-                    getDistance(listData.get(i).location)))
+            if (".0".equals(LocationDistanceUtils.distanceMeStr(listData.get(i).location)))
                 holder.distance_tv.setText( "0m");
             else
-                holder.distance_tv.setText(BaiduMapUtil.getInstence().
-                    getDistance(listData.get(i).location) + "m");
+                holder.distance_tv.setText(LocationDistanceUtils.distanceMe(listData.get(i).location) + "m");
             return view;
         }
 

+ 3 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/NavigationActivity.java

@@ -22,12 +22,12 @@ import com.baidu.mapapi.search.route.RoutePlanSearch;
 import com.common.LogUtil;
 import com.common.data.ListUtils;
 import com.core.app.Constants;
-import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
+import com.core.utils.BaiduMapUtil;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.uas.applocation.UasLocationHelper;
 import com.xzjmyk.pm.activity.R;
-import com.core.utils.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.baidu.DrivingRouteOverlay;
 import com.xzjmyk.pm.activity.util.baidu.OnGetRoutePlanResult;
 
@@ -92,7 +92,7 @@ public class NavigationActivity extends BaseActivity {
     private void initView() {
         if (toLocation == null && getIntent() != null)
             toLocation = getIntent().getParcelableExtra("toLocation");
-        LatLng location = MyApplication.getInstance().getBdLocationHelper().getLocation();
+        LatLng location = UasLocationHelper.getInstance().getUASLocation().getLocation();
         BaiduMapUtil.getInstence().setMapViewPoint(baiduMap, location);
         drawDriving(location, toLocation);
     }

+ 3 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutLogListActivity.java

@@ -33,6 +33,7 @@ import com.core.widget.EmptyLayout;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.nostra13.universalimageloader.core.ImageLoader;
+import com.uas.applocation.UasLocationHelper;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 
@@ -95,8 +96,8 @@ public class OutLogListActivity extends BaseActivity {
             name = MyApplication.getInstance().mLoginUser.getNickName();
         name_tv.setText(StringUtil.isEmpty(name) ? "" : name);
         prot_tv.setText("");
-        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+        double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
         BaiduMapUtil.getInstence().setMapViewPoint(mapView, new LatLng(latitude, longitude), true);
         AvatarHelper.getInstance().displayAvatar(MyApplication.getInstance().mLoginUser.getUserId(), head_img, true);
         JSONArray array = getIntent().getParcelableExtra("data");

+ 2 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutofficeSetActivity.java

@@ -25,7 +25,6 @@ import com.lidroid.xutils.view.annotation.ViewInject;
 import com.uas.appworks.OA.erp.activity.MissionActivity;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
-import com.xzjmyk.pm.activity.view.crouton.Crouton;
 
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -61,9 +60,9 @@ public class OutofficeSetActivity extends BaseActivity {
                 case 0x11:
                     object = JSON.parseObject(message);
                     if (object.containsKey("success") && object.getBoolean("success"))
-                        Crouton.makeText(ct, "保存成功");
+                        ToastMessage( "保存成功");
                     else
-                        Crouton.makeText(ct, "保存失败");
+                        ToastMessage( "保存失败");
                     break;
             }
         }

+ 4 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectAimActivity.java

@@ -13,19 +13,19 @@ import com.baidu.mapapi.map.MapView;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.common.system.InputMethodUtil;
-import com.core.app.MyApplication;
 import com.core.base.OABaseActivity;
+import com.core.utils.BaiduMapUtil;
 import com.core.widget.VoiceSearchView;
 import com.core.widget.listener.EditChangeListener;
 import com.core.widget.view.model.SelectAimModel;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.modular.apputils.widget.RecycleViewDivider;
+import com.uas.applocation.UasLocationHelper;
 import com.uas.appworks.CRM.erp.adapter.SelectAimAdapter;
 import com.uas.appworks.CRM.erp.imp.ISelectAim;
 import com.uas.appworks.CRM.erp.presenter.SelectAimPresenter;
 import com.xzjmyk.pm.activity.R;
-import com.core.utils.BaiduMapUtil;
-import com.modular.apputils.widget.RecycleViewDivider;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -115,7 +115,7 @@ public class SelectAimActivity extends OABaseActivity implements ISelectAim {
 
     private void initView() {
       setTitle(R.string.activity_select_aims);
-        BaiduMapUtil.getInstence().setMapViewPoint(mapView, MyApplication.getInstance().getBdLocationHelper().getLocation());
+        BaiduMapUtil.getInstence().setMapViewPoint(mapView, UasLocationHelper.getInstance().getUASLocation().getLocation());
         listview.setLayoutManager(new LinearLayoutManager(this));
         RecycleViewDivider viewDivider = new RecycleViewDivider(this, LinearLayout.HORIZONTAL, 1, getResources().getColor(R.color.gray_light));
         adapter = new SelectAimAdapter();

+ 6 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java

@@ -31,7 +31,6 @@ import com.core.app.AppConfig;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.net.http.ViewUtil;
-import com.core.net.location.BdLocationHelper;
 import com.core.utils.BaiduMapUtil;
 import com.core.utils.TimeUtils;
 import com.core.utils.helper.AvatarHelper;
@@ -39,6 +38,7 @@ import com.core.widget.view.Activity.SearchLocationActivity;
 import com.core.widget.view.model.SearchPoiParam;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.uas.applocation.UasLocationHelper;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.OutLogListActivity;
@@ -269,15 +269,14 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
             do_trim.setVisibility(View.VISIBLE);
         else
             do_trim.setVisibility(View.GONE);
-        BdLocationHelper locationHelper = MyApplication.getInstance().getBdLocationHelper();
-        locationHelper.requestLocation();
+         UasLocationHelper.getInstance().requestLocation();
     }
 
     private void setLocation() {
-        String name = MyApplication.getInstance().getBdLocationHelper().getName();
-        String addr = MyApplication.getInstance().getBdLocationHelper().getAddress();
-        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        String name = UasLocationHelper.getInstance().getUASLocation().getName();
+        String addr = UasLocationHelper.getInstance().getUASLocation().getAddress();
+        double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+        double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
         out_add_name_tv.setText(name);
         out_add_t_tv.setText(addr);
         point = new LatLng(latitude, longitude);

+ 0 - 204
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SearchPresenter.java

@@ -1,204 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.presenter;
-
-import android.content.Intent;
-
-import com.baidu.mapapi.model.LatLng;
-import com.baidu.mapapi.search.core.PoiInfo;
-import com.baidu.mapapi.search.core.SearchResult;
-import com.baidu.mapapi.search.poi.PoiResult;
-import com.common.data.ListUtils;
-import com.common.data.StringUtil;
-import com.core.app.MyApplication;
-import com.core.base.BaseActivity;
-import com.core.net.location.BdLocationHelper;
-import com.core.widget.view.model.SearchPoiParam;
-import com.xzjmyk.pm.activity.ui.erp.model.oa.SearchLocationModel;
-import com.xzjmyk.pm.activity.ui.erp.presenter.imp.ISearchView;
-import com.core.utils.BaiduMapUtil;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-/**
- * 地址搜索
- * Created by Bitliker on 2017/2/6.
- * 参数
- * type(搜索方式int 1.搜索附近 2.搜索地名)
- * 1.radius(范围 int)
- * 2.keyWork(搜索值)
- * <p>
- * 公共:
- * 1、title(标题String)
- * 2、style(主题 int)
- * 3、latlng(对比距离的位置,如没有则表示当前位置)
- * 4、resultCode(返回码 int)
- * 5、resultName(返回key String )
- * 6、isKm(是否使用km距离计算 boolean)
- */
-
-public class SearchPresenter {
-    private final int PAGESIZE = 20;
-    private List<SearchLocationModel> neerList;  //周围地址主体;列表,只有在搜索周围的时候存在
-    private BdLocationHelper locationHelper;
-    private int pageNum = 0;
-
-
-    private ISearchView iSearchView;
-
-    private int radius = 200;//范围 默认200米
-    private SearchPoiParam param;
-    private LatLng location;//所在的位置
-    private boolean isLoadChina;//当前搜索为搜索全国
-
-
-    public SearchPresenter(ISearchView iSearchView) {
-        if (iSearchView == null)//防止传入一个为空的isearchview
-            new NullPointerException("ISearchView 不能为null");
-        this.iSearchView = iSearchView;
-    }
-
-
-    /**
-     * 监听数据返回
-     */
-    private BaiduMapUtil.OnSearchPoiListener listener = new BaiduMapUtil.OnSearchPoiListener() {
-        @Override
-        public void result(SearchResult result) {
-            List<SearchLocationModel> listData = new ArrayList<>();
-            if (result == null || ListUtils.isEmpty(((PoiResult) result).getAllPoi())) {
-                if (isLoadChina) {
-                    isLoadChina = false;
-                    BaiduMapUtil.getInstence().searchByInput(param.getKeyWork(), pageNum, listener);
-                }
-            } else {
-                PoiResult poiResult = (PoiResult) result;
-                List<PoiInfo> chches = poiResult.getAllPoi();
-                iSearchView.showPoiPoint(chches.get(0).location);
-                for (int i = 0; i < chches.size(); i++) {
-                    if (StringUtil.isEmpty(chches.get(i).name) || StringUtil.isEmpty(chches.get(i).address)) {
-                        chches.remove(i);
-                        i--;
-                    } else
-                        listData.add(new SearchLocationModel(chches.get(i)));
-                }
-            }
-            if (param.getType() == 1) {
-                if (neerList == null) neerList = new ArrayList<>();
-                neerList.addAll(listData);
-            }
-            showData(listData);
-        }
-    };
-
-
-    /**
-     * 初始化数据
-     *
-     * @param intent 转入的控制参数
-     */
-    public void init(Intent intent) {
-        locationHelper = MyApplication.getInstance().getBdLocationHelper();
-        if (intent == null) return;
-        param = intent.getParcelableExtra("data");
-        if (param == null)
-            new NullPointerException("param is Null");
-        if (!StringUtil.isEmpty(param.getTitle())) {
-            iSearchView.setTitle(param.getTitle());
-        }
-        initData();
-    }
-
-    public void search(String keyWork) {
-        if (StringUtil.isEmpty(keyWork)) {
-            if (param.getType() == 2 || ListUtils.isEmpty(neerList))
-                loadDataByNeer();
-            else
-                showData(neerList);
-            return;
-        }
-        param.setKeyWork(keyWork);
-        if (param.getType() == 1) {//附近搜索
-            List<SearchLocationModel> chche = new ArrayList<>();
-            if (!ListUtils.isEmpty(neerList)) {
-                for (SearchLocationModel e : neerList) {
-                    String text = e.getPoiInfo().city + e.getPoiInfo().name + e.getPoiInfo().address;
-                    boolean isOK = StringUtil.isInclude(text, param.getKeyWork());
-                    if (isOK)
-                        chche.add(e);
-                }
-            }
-            showData(chche);
-        } else {
-            loadDataByChina();
-        }
-    }
-
-    public void endActivity(BaseActivity ct, PoiInfo poi) {
-        Intent intent = new Intent();
-        intent.putExtra(param.getResultKey(), poi);
-        ct.setResult(param.getResultCode(), intent);
-        ct.finish();
-    }
-
-
-    private void initData() {
-        if (!MyApplication.getInstance().isNetworkActive()){
-            iSearchView.showNotNetWork();
-            return;
-        }
-        switch (param.getType()) {
-            case 1:
-                loadDataByNeer();
-                break;
-            case 2:
-                if (StringUtil.isEmpty(param.getKeyWork())) {
-                    loadDataByNeer();
-                } else
-                    loadDataByChina();
-                break;
-            default:
-                break;
-        }
-    }
-
-    private void loadDataByChina() {
-        isLoadChina = true;
-        BaiduMapUtil.getInstence().searchByInputOnChina(StringUtil.isEmpty(param.getKeyWork()) ? "" : param.getKeyWork(), pageNum, listener);
-    }
-
-    private void loadDataByNeer() {
-        neerList = new ArrayList<>();
-        location = new LatLng(locationHelper.getLatitude(), locationHelper.getLongitude());
-        PoiInfo thisInfo = new PoiInfo();
-        thisInfo.location = location;
-        thisInfo.name = locationHelper.getName();
-        thisInfo.city = locationHelper.getCityName();
-        thisInfo.address = locationHelper.getAddress();
-        neerList.add(new SearchLocationModel(thisInfo));
-        BaiduMapUtil.getInstence().getNearInfo(radius, pageNum, location, listener);
-    }
-
-    /**
-     * 获取完数据后进入显示,先进行排序
-     *
-     * @param chche
-     */
-    private void showData(List<SearchLocationModel> chche) {
-        if (!ListUtils.isEmpty(chche)) {
-            for (int i = 0; i < chche.size(); i++) {
-                float distance = Float.valueOf(BaiduMapUtil.getInstence().getDistance(chche.get(i).getPoiInfo().location, param.getContrastLatLng()));
-                chche.get(i).setDistance(distance);
-            }
-            Comparator<SearchLocationModel> comparator = new Comparator<SearchLocationModel>() {
-                public int compare(SearchLocationModel s1, SearchLocationModel s2) {
-                    if (s1.getDistance() == s2.getDistance()) return 0;
-                    return s1.getDistance() > s2.getDistance() ? 1 : -1;
-                }
-            };
-            Collections.sort(chche, comparator);
-        }
-        iSearchView.showPoiList(chche, param.getDistanceTag());
-    }
-}

+ 20 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/SelectContactsActivity.java

@@ -32,38 +32,39 @@ import com.android.volley.VolleyError;
 import com.common.data.CalendarUtil;
 import com.common.data.ListUtils;
 import com.common.data.NumberUtils;
+import com.common.file.PropertiesUtil;
 import com.common.system.DisplayUtil;
 import com.common.ui.ImageUtil;
 import com.common.ui.ProgressDialogUtil;
-import com.loopj.android.http.AsyncHttpClient;
-import com.loopj.android.http.AsyncHttpResponseHandler;
-import com.loopj.android.http.RequestParams;
 import com.core.app.AppConstant;
 import com.core.app.MyApplication;
-import com.xzjmyk.pm.activity.R;
-import com.core.xmpp.model.Area;
+import com.core.base.BaseActivity;
+import com.core.dao.UserDao;
 import com.core.model.Friend;
-import com.core.xmpp.model.MucRoomSimple;
 import com.core.model.User;
+import com.core.net.volley.ObjectResult;
+import com.core.net.volley.Result;
+import com.core.net.volley.StringJsonObjectRequest;
+import com.core.utils.ToastUtil;
+import com.core.utils.helper.AvatarHelper;
+import com.core.widget.ClearEditText;
+import com.core.xmpp.CoreService;
+import com.core.xmpp.dao.FriendDao;
+import com.core.xmpp.model.Area;
 import com.core.xmpp.model.MucRoom;
+import com.core.xmpp.model.MucRoomSimple;
 import com.core.xmpp.utils.CardcastUiUpdateUtil;
+import com.loopj.android.http.AsyncHttpClient;
+import com.loopj.android.http.AsyncHttpResponseHandler;
+import com.loopj.android.http.RequestParams;
+import com.uas.applocation.UasLocationHelper;
+import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.broadcast.MucgroupUpdateUtil;
-import com.core.xmpp.dao.FriendDao;
-import com.core.dao.UserDao;
-import com.core.utils.helper.AvatarHelper;
-import com.core.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.HttpUtil;
-import com.common.file.PropertiesUtil;
 import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
-import com.core.utils.ToastUtil;
 import com.xzjmyk.pm.activity.util.im.Constants;
 import com.xzjmyk.pm.activity.util.imageloader.BitmapUtil;
-import com.core.widget.ClearEditText;
 import com.xzjmyk.pm.activity.view.HorizontalListView;
-import com.core.net.volley.ObjectResult;
-import com.core.net.volley.Result;
-import com.core.net.volley.StringJsonObjectRequest;
-import com.core.xmpp.CoreService;
 
 import org.apache.http.Header;
 
@@ -424,8 +425,8 @@ public class SelectContactsActivity extends BaseActivity {
             }
         }
 
-        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+        double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
         if (latitude != 0)
             params.put("latitude", String.valueOf(latitude));
         if (longitude != 0)

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/ChatActivity.java

@@ -74,6 +74,7 @@ import com.core.xmpp.widget.PullDownListView;
 import com.nostra13.universalimageloader.core.ImageLoader;
 import com.uas.appcontact.R;
 import com.uas.appcontact.db.TopContactsDao;
+import com.uas.applocation.UasLocationHelper;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -953,7 +954,7 @@ public class ChatActivity extends SupportToolBarActivity
         } else if (requestCode == REQUEST_CODE_SELECT_Locate && resultCode == Activity.RESULT_OK) {
             double latitude = data.getDoubleExtra(AppConstant.EXTRA_LATITUDE, 0);
             double longitude = data.getDoubleExtra(AppConstant.EXTRA_LONGITUDE, 0);
-            String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
+            String address = UasLocationHelper.getInstance().getUASLocation().getAddress();
             if (latitude != 0 && longitude != 0 && !TextUtils.isEmpty(address)) {
                 sendLocate(latitude, longitude, address);
             } else {

+ 3 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -22,7 +22,7 @@ import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.PopupWindow;
 
-import com.baidu.idl.face.platform.ui.FaceVeriftyActivity;
+import com.baidu.aip.excep.activity.RealTimeDetectFaceActivty;
 import com.common.data.DateFormatUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
@@ -351,7 +351,7 @@ public class MessageFragment extends SupportToolBarFragment implements IMessageV
                         requestPermissions(permissions, PermissionUtil.DEFAULT_REQUEST);
                     } else {
                         if (presenter.isCanPaly()) {
-                            startActivityForResult(new Intent(ct, FaceVeriftyActivity.class), 0x223);
+                            startActivityForResult(new Intent(ct, RealTimeDetectFaceActivty.class), 0x223);
                         }
                     }
                 } else {
@@ -370,7 +370,7 @@ public class MessageFragment extends SupportToolBarFragment implements IMessageV
                 ToastUtil.showToast(ct, com.uas.appworks.R.string.not_camera_permission);
             } else {
                 if (presenter.isCanPaly()) {
-                    startActivityForResult(new Intent(ct, FaceVeriftyActivity.class), 0x223);
+                    startActivityForResult(new Intent(ct, RealTimeDetectFaceActivty.class), 0x223);
                 }
             }
         }

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MucChatActivity.java

@@ -60,6 +60,7 @@ import com.core.xmpp.widget.ChatContentView;
 import com.core.xmpp.widget.PullDownListView;
 import com.ipaulpro.afilechooser.FileUtils;
 import com.nostra13.universalimageloader.core.ImageLoader;
+import com.uas.applocation.UasLocationHelper;
 import com.uas.appme.other.activity.BasicInfoActivity;
 import com.uas.appme.other.activity.RoomInfoActivity;
 import com.xzjmyk.pm.activity.R;
@@ -986,7 +987,7 @@ public class MucChatActivity extends SupportToolBarActivity
         } else if (requestCode == REQUEST_CODE_SELECT_Locate && resultCode == RESULT_OK) {
             double latitude = data.getDoubleExtra(AppConstant.EXTRA_LATITUDE, 0);
             double longitude = data.getDoubleExtra(AppConstant.EXTRA_LONGITUDE, 0);
-            String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
+            String address = UasLocationHelper.getInstance().getUASLocation().getAddress();
             if (latitude != 0 && longitude != 0 && !TextUtils.isEmpty(address)) {
                 sendLocate(latitude, longitude, address);
             } else {

+ 12 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/im/CreateRoomUtil.java

@@ -13,23 +13,24 @@ import com.common.data.CalendarUtil;
 import com.common.data.StringUtil;
 import com.core.app.AppConfig;
 import com.core.app.MyApplication;
-import com.xzjmyk.pm.activity.R;
-import com.core.xmpp.model.Area;
 import com.core.model.Friend;
-import com.core.xmpp.model.ChatMessage;
-import com.core.xmpp.model.MucRoom;
 import com.core.model.XmppMessage;
-import com.xzjmyk.pm.activity.bean.oa.MeetUserEntity;
-import com.core.xmpp.dao.ChatMessageDao;
-import com.core.xmpp.dao.FriendDao;
-import com.xzjmyk.pm.activity.util.im.helper.UploadEngine;
-import com.core.utils.ToastUtil;
 import com.core.net.volley.ArrayResult;
 import com.core.net.volley.ObjectResult;
 import com.core.net.volley.Result;
 import com.core.net.volley.StringJsonArrayRequest;
 import com.core.net.volley.StringJsonObjectRequest;
+import com.core.utils.ToastUtil;
 import com.core.xmpp.CoreService;
+import com.core.xmpp.dao.ChatMessageDao;
+import com.core.xmpp.dao.FriendDao;
+import com.core.xmpp.model.Area;
+import com.core.xmpp.model.ChatMessage;
+import com.core.xmpp.model.MucRoom;
+import com.uas.applocation.UasLocationHelper;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.oa.MeetUserEntity;
+import com.xzjmyk.pm.activity.util.im.helper.UploadEngine;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -128,8 +129,8 @@ public class CreateRoomUtil {
                 params.put("areaId", String.valueOf(area.getId()));// 城市Id
             }
         }
-        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+        double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
         if (latitude != 0)
             params.put("latitude", String.valueOf(latitude));
         if (longitude != 0)

+ 284 - 284
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/AutoErpService.java

@@ -1,284 +1,284 @@
-package com.xzjmyk.pm.activity.util.oa;
-
-import android.app.Service;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.support.v4.content.LocalBroadcastManager;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.alibaba.fastjson.JSON;
-import com.common.LogUtil;
-import com.common.data.StringUtil;
-import com.common.preferences.PreferenceUtils;
-import com.common.thread.ThreadUtil;
-import com.core.app.AppConfig;
-import com.core.app.AppConstant;
-import com.core.app.MyApplication;
-import com.core.broadcast.MsgBroadcast;
-import com.core.dao.work.WorkModelDao;
-import com.core.net.http.http.OAHttpHelper;
-import com.core.utils.NotificationManage;
-import com.core.utils.TimeUtils;
-import com.uas.appme.pedometer.service.StepService;
-import com.uas.appworks.OA.erp.utils.AutoErpSigninUitl;
-import com.uas.appworks.dao.MissionDao;
-import com.xzjmyk.pm.activity.ui.MainActivity;
-import com.xzjmyk.pm.activity.ui.erp.model.book.SureBookModel;
-import com.xzjmyk.pm.activity.ui.me.TimeStatisticsActivity;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-
-/**
- * 自动Erp服务,开启线程
- */
-public class AutoErpService extends Service {
-
-	private NotificationManage notificationManage;//通知管理器
-
-	private final long INTERVAL = 2 * 60 * 1000;//每两分钟回来一次,防止时间太久出现回不来情况 通过 iter来判断是否进入判断
-	private final int DNOTICE_ITER = 10; //TODO 测试用1 ,之后改为10
-
-	private AutoErpSigninUitl signinUitl;
-	private DepositNoticeUtil dnoticeUtil;
-	private boolean canDNotice = false;
-
-	private final String[] flags = {
-			AppConstant.CHANGE_WORK_TASK,//
-			AppConstant.CHANGE_MISSION_TASK,//
-			AppConstant.INIT_MISSION_TASK,//初始化外勤签到任务
-			AppConstant.UPDATA_ERP_CHANGE,//更换公司
-			AppConstant.DEPOSIT_NOTICE_TASK,//预约计划提醒任务
-			MsgBroadcast.ACTION_MSG_COMPANY_UPDATE//切换账套
-	};
-
-
-	private BroadcastReceiver updateReceiver = new BroadcastReceiver() {
-		@Override
-		public void onReceive(Context context, Intent intent) {
-			try {
-				if (intent == null || StringUtil.isEmpty(intent.getAction())) return;
-				else if (intent.getAction().equals(AppConstant.UPDATA_ERP_CHANGE)
-						|| intent.getAction().equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)) {//账套变更,重新刷新数据,初始化任务
-					String falg = intent.getStringExtra("falg");
-					if (StringUtil.isEmpty(falg) || falg.equals("home")) {
-
-						init();
-					}
-				} else if (intent.getAction().equals(AppConstant.DEPOSIT_NOTICE_TASK)) {
-					canDNotice = intent.getBooleanExtra(AppConstant.DEPOSIT_NOTICE_TASK, true);
-					log("canDNotice=" + canDNotice);
-					if (canDNotice && !isDNoticeRuning) {
-						startDNoticeTask();  //进行预约计划提醒操作
-					} else {
-						dnoticeIter = 0;
-					}
-				}
-			} catch (Exception e) {
-				if (e != null) log("BroadcastReceiver Exception=" + e.getMessage());
-			}
-			//记住上次状态,开启计步服务
-			if (PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.UU_STEP) == 1 && intent.getAction().equals("uu.step.destory")) {
-				Intent i = new Intent(context, StepService.class);
-				context.startService(i);
-			}
-		}
-	};
-
-
-	@Override
-	public IBinder onBind(Intent intent) {
-		throw new UnsupportedOperationException("Not yet implemented");
-	}
-
-	@Override
-	public int onStartCommand(Intent intent, int flags, int startId) {
-		try {
-			initBroadcast();//初始化广播接受器
-			initDB();//初始化数据库数据,1.删除昨天数据   2.下拉当天数据
-			init();//初始化
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return super.onStartCommand(intent, flags, startId);
-	}
-
-	@Override
-	public void onDestroy() {
-		super.onDestroy();
-		LocalBroadcastManager.getInstance(MyApplication.getInstance()).unregisterReceiver(updateReceiver);
-		//TODO 获取此刻精确时间并转换为yyyy-MM-dd HH:mm:ss
-		String nowtime = TimeUtils.f_long_2_str(System.currentTimeMillis());
-		String saved_time = PreferenceUtils.getString(MyApplication.getInstance(), TimeStatisticsActivity.Killed);
-
-		if (!TextUtils.isEmpty(saved_time)) {
-			PreferenceUtils.putString(TimeStatisticsActivity.Killed, saved_time + "," + nowtime);
-		} else {
-			PreferenceUtils.putString(TimeStatisticsActivity.Killed, nowtime);
-
-		}
-	}
-
-
-	/**
-	 * 初始化广播
-	 */
-	private void initBroadcast() throws Exception {
-		IntentFilter filter = new IntentFilter();
-		if (flags != null && flags.length > 0) {
-			for (String e : flags)
-				filter.addAction(e);
-		}
-		LocalBroadcastManager.getInstance(MyApplication.getInstance()).registerReceiver(updateReceiver, filter);
-		registerReceiver(updateReceiver, filter);
-	}
-
-
-	private int dnoticeIter;
-	private Boolean isDNoticeRuning = false;
-	private boolean dnotice = false;
-
-	/**
-	 * 当天已确认的预约计划通知
-	 *
-	 * @throws Exception
-	 */
-	private void startDNoticeTask() throws Exception {
-		Log.i("startDNoticeTask", "startDNoticeTask");
-		dnoticeIter = 0;
-		isDNoticeRuning = true;
-		ThreadUtil.getInstance().addLoopTask(new Runnable() {
-			@Override
-			public void run() {
-				while (true) {
-					try {
-						if (!isCanDNotice()) {
-							isDNoticeRuning = false;
-							break;
-						}
-						dnotice = true;
-						isDNoticeRuning = true;
-						int i = DNOTICE_ITER - 1;
-						Log.i("dnoticeIter", dnoticeIter + "");
-
-						if (dnoticeIter == i) {
-//                            MyApplication.getInstance().getBdLocationHelper().requestLocation();   // 暂时去掉定位
-						}
-						if (dnoticeIter == 0 || dnoticeIter == DNOTICE_ITER) {
-							dnoticeIter = 0;
-							//TODO 修改
-							DepositNoticeUtil.isNoticeTime(mSureBookModel);
-
-						}
-						dnoticeIter++;
-						dnotice = false;
-						Thread.sleep(INTERVAL);
-					} catch (InterruptedException e) {
-						if (e != null)
-							log("startDNoticeTask InterruptedException=" + e.getMessage());
-					} catch (Exception e) {
-						if (e != null)
-							log("startDNoticeTask Exception=" + e.getMessage());
-					}
-				}
-			}
-		});
-
-	}
-
-
-	/**
-	 * 初始化数据库,1.清空昨天数据  2.缓存当天数据
-	 */
-	private void initDB() {
-		//  刚进来时候清空昨天数据
-		try {
-			WorkModelDao.getInstance().clearByDate(System.currentTimeMillis() - 24 * 60 * 60 * 1000);
-			MissionDao.getInstance().clearAll(System.currentTimeMillis() - 24 * 60 * 60 * 1000);
-		} catch (Exception e) {
-			if (e != null)
-				log("initDB Exception=" + e.getMessage());
-		}
-		try {//TODO 缓存数据
-
-		} catch (Exception e) {
-
-		}
-	}
-
-	private void init() throws Exception {
-		MyApplication.getInstance().getBdLocationHelper().requestLocation();
-		if (dnoticeUtil == null)
-			dnoticeUtil = new DepositNoticeUtil();
-		if (signinUitl == null)
-			signinUitl = new AutoErpSigninUitl();
-		OAHttpHelper.getInstance().postDelayed(new Runnable() {
-			@Override
-			public void run() {
-				try {
-					initDNotice();
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-			}
-		}, 5000);
-
-	}
-
-	/**
-	 * 获取已确认预约
-	 */
-	private List<SureBookModel> mSureBookModel;
-
-	private void initDNotice() {
-		DepositNoticeUtil m = new DepositNoticeUtil();
-		m.loadDepostNotice();
-		mSureBookModel = new ArrayList<>();
-		new Handler().postDelayed(new Runnable() {
-			@Override
-			public void run() {
-				mSureBookModel = DepositNoticeUtil.getsureBookData();
-				LogUtil.prinlnLongMsg("mSureBookModel", JSON.toJSONString(mSureBookModel));
-			}
-		}, 5000);
-	}
-
-
-	private boolean isCanDNotice() {
-		return canDNotice;
-	}
-
-
-	/**
-	 * start handler date
-	 */
-	//防止空值
-	private NotificationManage getNotificationManage() {
-		if (notificationManage == null)
-			notificationManage = new NotificationManage();
-		return notificationManage;
-	}
-
-	/**
-	 * 打印信息方法
-	 *
-	 * @param message 信息内容
-	 */
-	private void log(String message) {
-		try {
-			if (!AppConfig.DEBUG || StringUtil.isEmpty(message)) return;
-			Log.i("gongpengming", message);
-		} catch (Exception e) {
-			if (e != null)
-				Log.i("gongpengming", "log Exception=" + e.getMessage());
-		}
-	}
-}
+//package com.xzjmyk.pm.activity.util.oa;
+//
+//import android.app.Service;
+//import android.content.BroadcastReceiver;
+//import android.content.Context;
+//import android.content.Intent;
+//import android.content.IntentFilter;
+//import android.os.Bundle;
+//import android.os.Handler;
+//import android.os.IBinder;
+//import android.support.v4.content.LocalBroadcastManager;
+//import android.text.TextUtils;
+//import android.util.Log;
+//
+//import com.alibaba.fastjson.JSON;
+//import com.common.LogUtil;
+//import com.common.data.StringUtil;
+//import com.common.preferences.PreferenceUtils;
+//import com.common.thread.ThreadUtil;
+//import com.core.app.AppConfig;
+//import com.core.app.AppConstant;
+//import com.core.app.MyApplication;
+//import com.core.broadcast.MsgBroadcast;
+//import com.core.dao.work.WorkModelDao;
+//import com.core.net.http.http.OAHttpHelper;
+//import com.core.utils.NotificationManage;
+//import com.core.utils.TimeUtils;
+//import com.uas.appme.pedometer.service.StepService;
+//import com.uas.appworks.OA.erp.utils.AutoErpSigninUitl;
+//import com.uas.appworks.dao.MissionDao;
+//import com.xzjmyk.pm.activity.ui.MainActivity;
+//import com.xzjmyk.pm.activity.ui.erp.model.book.SureBookModel;
+//import com.xzjmyk.pm.activity.ui.me.TimeStatisticsActivity;
+//
+//import java.util.ArrayList;
+//import java.util.List;
+//
+//
+//
+///**
+// * 自动Erp服务,开启线程
+// */
+//public class AutoErpService extends Service {
+//
+//	private NotificationManage notificationManage;//通知管理器
+//
+//	private final long INTERVAL = 2 * 60 * 1000;//每两分钟回来一次,防止时间太久出现回不来情况 通过 iter来判断是否进入判断
+//	private final int DNOTICE_ITER = 10; //TODO 测试用1 ,之后改为10
+//
+//	private AutoErpSigninUitl signinUitl;
+//	private DepositNoticeUtil dnoticeUtil;
+//	private boolean canDNotice = false;
+//
+//	private final String[] flags = {
+//			AppConstant.CHANGE_WORK_TASK,//
+//			AppConstant.CHANGE_MISSION_TASK,//
+//			AppConstant.INIT_MISSION_TASK,//初始化外勤签到任务
+//			AppConstant.UPDATA_ERP_CHANGE,//更换公司
+//			AppConstant.DEPOSIT_NOTICE_TASK,//预约计划提醒任务
+//			MsgBroadcast.ACTION_MSG_COMPANY_UPDATE//切换账套
+//	};
+//
+//
+//	private BroadcastReceiver updateReceiver = new BroadcastReceiver() {
+//		@Override
+//		public void onReceive(Context context, Intent intent) {
+//			try {
+//				if (intent == null || StringUtil.isEmpty(intent.getAction())) return;
+//				else if (intent.getAction().equals(AppConstant.UPDATA_ERP_CHANGE)
+//						|| intent.getAction().equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)) {//账套变更,重新刷新数据,初始化任务
+//					String falg = intent.getStringExtra("falg");
+//					if (StringUtil.isEmpty(falg) || falg.equals("home")) {
+//
+//						init();
+//					}
+//				} else if (intent.getAction().equals(AppConstant.DEPOSIT_NOTICE_TASK)) {
+//					canDNotice = intent.getBooleanExtra(AppConstant.DEPOSIT_NOTICE_TASK, true);
+//					log("canDNotice=" + canDNotice);
+//					if (canDNotice && !isDNoticeRuning) {
+//						startDNoticeTask();  //进行预约计划提醒操作
+//					} else {
+//						dnoticeIter = 0;
+//					}
+//				}
+//			} catch (Exception e) {
+//				if (e != null) log("BroadcastReceiver Exception=" + e.getMessage());
+//			}
+//			//记住上次状态,开启计步服务
+//			if (PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.UU_STEP) == 1 && intent.getAction().equals("uu.step.destory")) {
+//				Intent i = new Intent(context, StepService.class);
+//				context.startService(i);
+//			}
+//		}
+//	};
+//
+//
+//	@Override
+//	public IBinder onBind(Intent intent) {
+//		throw new UnsupportedOperationException("Not yet implemented");
+//	}
+//
+//	@Override
+//	public int onStartCommand(Intent intent, int flags, int startId) {
+//		try {
+//			initBroadcast();//初始化广播接受器
+//			initDB();//初始化数据库数据,1.删除昨天数据   2.下拉当天数据
+//			init();//初始化
+//		} catch (Exception e) {
+//			e.printStackTrace();
+//		}
+//		return super.onStartCommand(intent, flags, startId);
+//	}
+//
+//	@Override
+//	public void onDestroy() {
+//		super.onDestroy();
+//		LocalBroadcastManager.getInstance(MyApplication.getInstance()).unregisterReceiver(updateReceiver);
+//		//TODO 获取此刻精确时间并转换为yyyy-MM-dd HH:mm:ss
+//		String nowtime = TimeUtils.f_long_2_str(System.currentTimeMillis());
+//		String saved_time = PreferenceUtils.getString(MyApplication.getInstance(), TimeStatisticsActivity.Killed);
+//
+//		if (!TextUtils.isEmpty(saved_time)) {
+//			PreferenceUtils.putString(TimeStatisticsActivity.Killed, saved_time + "," + nowtime);
+//		} else {
+//			PreferenceUtils.putString(TimeStatisticsActivity.Killed, nowtime);
+//
+//		}
+//	}
+//
+//
+//	/**
+//	 * 初始化广播
+//	 */
+//	private void initBroadcast() throws Exception {
+//		IntentFilter filter = new IntentFilter();
+//		if (flags != null && flags.length > 0) {
+//			for (String e : flags)
+//				filter.addAction(e);
+//		}
+//		LocalBroadcastManager.getInstance(MyApplication.getInstance()).registerReceiver(updateReceiver, filter);
+//		registerReceiver(updateReceiver, filter);
+//	}
+//
+//
+//	private int dnoticeIter;
+//	private Boolean isDNoticeRuning = false;
+//	private boolean dnotice = false;
+//
+//	/**
+//	 * 当天已确认的预约计划通知
+//	 *
+//	 * @throws Exception
+//	 */
+//	private void startDNoticeTask() throws Exception {
+//		Log.i("startDNoticeTask", "startDNoticeTask");
+//		dnoticeIter = 0;
+//		isDNoticeRuning = true;
+//		ThreadUtil.getInstance().addLoopTask(new Runnable() {
+//			@Override
+//			public void run() {
+//				while (true) {
+//					try {
+//						if (!isCanDNotice()) {
+//							isDNoticeRuning = false;
+//							break;
+//						}
+//						dnotice = true;
+//						isDNoticeRuning = true;
+//						int i = DNOTICE_ITER - 1;
+//						Log.i("dnoticeIter", dnoticeIter + "");
+//
+//						if (dnoticeIter == i) {
+////                            MyApplication.getInstance().getBdLocationHelper().requestLocation();   // 暂时去掉定位
+//						}
+//						if (dnoticeIter == 0 || dnoticeIter == DNOTICE_ITER) {
+//							dnoticeIter = 0;
+//							//TODO 修改
+//							DepositNoticeUtil.isNoticeTime(mSureBookModel);
+//
+//						}
+//						dnoticeIter++;
+//						dnotice = false;
+//						Thread.sleep(INTERVAL);
+//					} catch (InterruptedException e) {
+//						if (e != null)
+//							log("startDNoticeTask InterruptedException=" + e.getMessage());
+//					} catch (Exception e) {
+//						if (e != null)
+//							log("startDNoticeTask Exception=" + e.getMessage());
+//					}
+//				}
+//			}
+//		});
+//
+//	}
+//
+//
+//	/**
+//	 * 初始化数据库,1.清空昨天数据  2.缓存当天数据
+//	 */
+//	private void initDB() {
+//		//  刚进来时候清空昨天数据
+//		try {
+//			WorkModelDao.getInstance().clearByDate(System.currentTimeMillis() - 24 * 60 * 60 * 1000);
+//			MissionDao.getInstance().clearAll(System.currentTimeMillis() - 24 * 60 * 60 * 1000);
+//		} catch (Exception e) {
+//			if (e != null)
+//				log("initDB Exception=" + e.getMessage());
+//		}
+//		try {//TODO 缓存数据
+//
+//		} catch (Exception e) {
+//
+//		}
+//	}
+//
+//	private void init() throws Exception {
+//		MyApplication.getInstance().getBdLocationHelper().requestLocation();
+//		if (dnoticeUtil == null)
+//			dnoticeUtil = new DepositNoticeUtil();
+//		if (signinUitl == null)
+//			signinUitl = new AutoErpSigninUitl();
+//		OAHttpHelper.getInstance().postDelayed(new Runnable() {
+//			@Override
+//			public void run() {
+//				try {
+//					initDNotice();
+//				} catch (Exception e) {
+//					e.printStackTrace();
+//				}
+//			}
+//		}, 5000);
+//
+//	}
+//
+//	/**
+//	 * 获取已确认预约
+//	 */
+//	private List<SureBookModel> mSureBookModel;
+//
+//	private void initDNotice() {
+//		DepositNoticeUtil m = new DepositNoticeUtil();
+//		m.loadDepostNotice();
+//		mSureBookModel = new ArrayList<>();
+//		new Handler().postDelayed(new Runnable() {
+//			@Override
+//			public void run() {
+//				mSureBookModel = DepositNoticeUtil.getsureBookData();
+//				LogUtil.prinlnLongMsg("mSureBookModel", JSON.toJSONString(mSureBookModel));
+//			}
+//		}, 5000);
+//	}
+//
+//
+//	private boolean isCanDNotice() {
+//		return canDNotice;
+//	}
+//
+//
+//	/**
+//	 * start handler date
+//	 */
+//	//防止空值
+//	private NotificationManage getNotificationManage() {
+//		if (notificationManage == null)
+//			notificationManage = new NotificationManage();
+//		return notificationManage;
+//	}
+//
+//	/**
+//	 * 打印信息方法
+//	 *
+//	 * @param message 信息内容
+//	 */
+//	private void log(String message) {
+//		try {
+//			if (!AppConfig.DEBUG || StringUtil.isEmpty(message)) return;
+//			Log.i("gongpengming", message);
+//		} catch (Exception e) {
+//			if (e != null)
+//				Log.i("gongpengming", "log Exception=" + e.getMessage());
+//		}
+//	}
+//}

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/CommonUtil.java

@@ -68,6 +68,7 @@ import com.core.xmpp.model.ChatMessage;
 import com.core.xmpp.model.SignAutoLogEntity;
 import com.nostra13.universalimageloader.core.DisplayImageOptions;
 import com.nostra13.universalimageloader.core.assist.ImageScaleType;
+import com.uas.applocation.UasLocationHelper;
 import com.umeng.socialize.UMShareListener;
 import com.umeng.socialize.bean.SHARE_MEDIA;
 import com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity;
@@ -1488,7 +1489,7 @@ public class CommonUtil {
 
     public static void saveAutoLogtoLocal(String aa_type, String aa_remark) {
         String aa_date = TimeUtils.f_long_2_str(System.currentTimeMillis());
-        String aa_location = MyApplication.getInstance().getBdLocationHelper().getAddress();
+        String aa_location = UasLocationHelper.getInstance().getUASLocation().getAddress();
         String aa_telephone = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "user_phone");
         Log.i("aa_date,aa_tel", aa_date + "," + aa_telephone);
 

+ 0 - 52
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/DepositNoticeUtil.java

@@ -9,9 +9,6 @@ import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-import com.baidu.mapapi.model.LatLng;
-import com.baidu.mapapi.search.route.DrivingRouteLine;
-import com.baidu.mapapi.search.route.DrivingRouteResult;
 import com.common.LogUtil;
 import com.common.data.DateFormatUtil;
 import com.common.data.JSONUtil;
@@ -26,7 +23,6 @@ import com.core.broadcast.MsgBroadcast;
 import com.core.net.http.ViewUtil;
 import com.core.net.http.http.OAHttpHelper;
 import com.core.utils.NotificationManage;
-import com.core.utils.OnGetDrivingRouteResult;
 import com.core.utils.TimeUtils;
 import com.uas.appme.pedometer.utils.TimeUtil;
 import com.xzjmyk.pm.activity.ui.erp.activity.secretary.BookingListActivity;
@@ -38,8 +34,6 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import static com.core.utils.BaiduMapUtil.getInstence;
-
 /**
  * Created by ${FANGLH} on 2017/7/18.
  * Function: 预约计划,定时提醒:
@@ -160,51 +154,5 @@ public class DepositNoticeUtil {
         return mSureBookModel;
     }
 
-    /**
-     * 对于符合当前条件的预约,进行提前预约时间计算得出:开始提醒的具体时间点startNoticeTime
-     * 然后:startNoticeTime <= 当前时间则开始进行通知提醒
-     *
-     * @param startTime
-     * @param location
-     * @param dis
-     */
-    private static void setNoticeTime(final String startTime, LatLng location, final double dis) {
-        getInstence().getDrivingRoute(MyApplication.getInstance().getBdLocationHelper().getLocation(), location,
-                new OnGetDrivingRouteResult() {
-                    @Override
-                    public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
-                        try {
-                            List<DrivingRouteLine> list = drivingRouteResult.getRouteLines();
-                            int minTime = 0;
-
-                            if (ListUtils.isEmpty(list)) {
-                                if (dis != 0) {
-                                    minTime = (int) (TimeUtils.f_str_2_long(startTime) - (dis / 3) * 1000 - 15 * 60 * 1000);
-                                } else {
-                                    minTime = (int) (TimeUtils.f_str_2_long(startTime) - 800 * 1000 - 15 * 60 * 1000);
-                                }
-                            } else {
-                                for (DrivingRouteLine e : list) {
-                                    if (minTime == 0 || minTime > e.getDuration()) {
-                                        minTime = e.getDuration();
-                                    }
-                                }
-                            }
-                            long startNoticeTime = TimeUtils.f_str_2_long(startTime) - minTime * 1000 - 15 * 60 * 1000;
-                            if (startNoticeTime <= System.currentTimeMillis()) {
-                                //TODO 提醒
-                                Log.i("notificationManage", "开始提醒");
-                                notificationManage.sendNotification(MyApplication.getInstance(),
-                                        "您有预约计划即将开始!", BookingListActivity.class);
-                            } else {
-                                Log.i("notificationManage", "提醒时间不符合");
-                            }
-                        } catch (Exception e) {
-                            if (e != null)
-                                Log.i("setStartime Exception=", e.getMessage() + "");
-                        }
-                    }
-                });
 
-    }
 }

+ 45 - 28
WeiChat/src/main/res/layout/activity_expense_reimbursement.xml

@@ -34,17 +34,28 @@
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
 
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="1dp"
+                    android:layout_marginTop="19dp"
+                    android:layout_toRightOf="@id/name_tv"
+                    android:text="*"
+                    android:textColor="@color/red" />
+
                 <com.andreabaccega.widget.FormEditText
                     android:id="@+id/reimbursement_title_fet"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:layout_alignBaseline="@+id/name_tv"
+                    android:layout_alignBottom="@+id/name_tv"
                     android:layout_alignParentEnd="true"
                     android:layout_alignParentRight="true"
                     android:layout_centerVertical="true"
                     android:layout_toRightOf="@id/name_tv"
                     android:background="@null"
                     android:gravity="center_vertical|right"
-                    android:hint="@string/common_input"
+                    android:hint="@string/common_input2"
                     android:maxLength="30"
                     android:textColor="@color/dark_dark_grey"
                     android:textSize="15sp"
@@ -72,7 +83,16 @@
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
 
-                <com.andreabaccega.widget.FormEditText
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="1dp"
+                    android:layout_marginTop="8dp"
+                    android:layout_toRightOf="@id/type_left"
+                    android:text="*"
+                    android:textColor="@color/red" />
+
+                <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:id="@+id/reimbursement_type_fet"
                     xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:layout_width="wrap_content"
@@ -82,7 +102,7 @@
                     android:background="@null"
                     android:ellipsize="end"
                     android:gravity="center_vertical|right"
-                    android:hint="@string/common_select"
+                    android:hint="@string/common_select1"
                     android:singleLine="true"
                     android:textColor="@color/dark_dark_grey"
                     android:textSize="15sp" />
@@ -108,13 +128,23 @@
 
 
                 <TextView
+                    android:id="@+id/reimbursement_type"
                     style="@style/form_relative_left_text"
                     android:layout_marginLeft="0dp"
                     android:text="@string/currency"
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
 
-                <com.andreabaccega.widget.FormEditText
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="1dp"
+                    android:layout_marginTop="8dp"
+                    android:layout_toRightOf="@id/reimbursement_type"
+                    android:text="*"
+                    android:textColor="@color/red" />
+
+                <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:id="@+id/reimbursement_currency_fet"
                     android:layout_width="100dp"
                     android:layout_height="wrap_content"
@@ -144,8 +174,7 @@
 
             <RelativeLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                >
+                android:layout_height="wrap_content">
 
                 <TextView
                     android:layout_width="wrap_content"
@@ -185,16 +214,14 @@
                     android:layout_marginRight="10dp"
                     android:orientation="vertical">
 
-                    <View
-                        style="@style/expense_table_h_1dp" />
+                    <View style="@style/expense_table_h_1dp" />
 
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:orientation="horizontal">
 
-                        <View
-                            style="@style/expense_table_v_1dp" />
+                        <View style="@style/expense_table_v_1dp" />
 
                         <TextView
                             android:layout_width="0dp"
@@ -204,8 +231,7 @@
                             android:paddingLeft="10dp"
                             android:text="@string/type" />
 
-                        <View
-                            style="@style/expense_table_v_1dp" />
+                        <View style="@style/expense_table_v_1dp" />
 
                         <TextView
                             android:layout_width="0dp"
@@ -213,11 +239,9 @@
                             android:layout_gravity="center_vertical"
                             android:layout_weight="2"
                             android:paddingLeft="10dp"
-                            android:text="@string/Amount_of_money"
-                            />
+                            android:text="@string/Amount_of_money" />
 
-                        <View
-                            style="@style/expense_table_v_1dp" />
+                        <View style="@style/expense_table_v_1dp" />
 
                         <TextView
                             android:layout_width="0dp"
@@ -227,13 +251,10 @@
                             android:gravity="center"
                             android:text="@string/common_delete" />
 
-                        <View
-                            style="@style/expense_table_v_1dp"
-                            />
+                        <View style="@style/expense_table_v_1dp" />
                     </LinearLayout>
 
-                    <View
-                        style="@style/expense_table_h_1dp" />
+                    <View style="@style/expense_table_h_1dp" />
                 </LinearLayout>
 
                 <com.core.widget.MyListView
@@ -241,9 +262,7 @@
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginLeft="10dp"
-                    android:layout_marginRight="10dp"
-                    >
-                </com.core.widget.MyListView>
+                    android:layout_marginRight="10dp"></com.core.widget.MyListView>
 
                 <LinearLayout
                     android:id="@+id/detail_table_bottom_ll"
@@ -286,8 +305,7 @@
                             android:layout_toRightOf="@id/automatic_calculation_tv"
                             android:text="@string/calculator_name"
                             android:textColor="@color/blue"
-                            android:visibility="gone"
-                            />
+                            android:visibility="gone" />
 
                         <TextView
                             android:id="@+id/sum_money_tv"
@@ -309,8 +327,7 @@
                             android:textColor="@color/text_main" />
                     </RelativeLayout>
 
-                    <View
-                        style="@style/expense_table_h_1dp" />
+                    <View style="@style/expense_table_h_1dp" />
                 </LinearLayout>
 
             </LinearLayout>

+ 9 - 7
WeiChat/src/main/res/layout/item_mission.xml

@@ -46,7 +46,7 @@
             android:id="@+id/company_tag"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:layout_marginRight="20dp"
+            android:layout_marginRight="10dp"
             android:gravity="center"
             android:text="@string/visit_company"
             android:textColor="@color/text_main"
@@ -55,7 +55,7 @@
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:layout_marginLeft="65dp"
+            android:layout_toRightOf="@id/company_tag"
             android:layout_marginTop="7dp"
             android:text="*"
             android:textColor="@color/red"/>
@@ -93,7 +93,7 @@
             android:layout_alignParentLeft="true"
             android:layout_alignParentStart="true"
             android:layout_alignParentTop="true"
-            android:layout_marginRight="20dp"
+            android:layout_marginRight="10dp"
             android:gravity="center"
             android:text="@string/visit_address"
             android:textColor="@color/text_main"
@@ -102,7 +102,7 @@
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:layout_marginLeft="65dp"
+            android:layout_toRightOf="@id/item_companyaddr_tag"
             android:layout_marginTop="7dp"
             android:text="*"
             android:textColor="@color/red"/>
@@ -137,7 +137,7 @@
             android:id="@+id/remark_tag"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginRight="20dp"
+            android:layout_marginRight="10dp"
             android:gravity="center"
             android:minHeight="@dimen/misson_item_height"
             android:text="@string/visit_aim"
@@ -146,7 +146,7 @@
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:layout_marginLeft="65dp"
+            android:layout_toRightOf="@id/remark_tag"
             android:layout_marginTop="7dp"
             android:text="*"
             android:textColor="@color/red"/>
@@ -385,16 +385,18 @@
         android:paddingRight="@dimen/misson_item_pr">
 
         <TextView
+            android:id="@+id/item_reckontime_tag"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:gravity="center"
             android:text="@string/expected_arrival_time"
+            android:layout_marginRight="10dp"
             android:textColor="@color/text_main"
             android:textSize="@dimen/text_main" />
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:layout_marginLeft="96dp"
+            android:layout_toRightOf="@id/item_reckontime_tag"
             android:layout_marginTop="7dp"
             android:text="*"
             android:textColor="@color/red"/>

+ 1 - 0
app_core/common/build.gradle

@@ -47,6 +47,7 @@ dependencies {
     compile deps.smartRefreshHeader
 
     compile project(':network')
+    compile project(':applocation')
     compile project(':pullToRefershLibraryMy')
     compile project(':MPAndroidChart')
     compile project(':libedittextformlibrary')

+ 8 - 16
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -20,7 +20,6 @@ import com.core.db.DatabaseManager;
 import com.core.model.ConfigBean;
 import com.core.model.User;
 import com.core.net.NetWorkObservable;
-import com.core.net.location.BdLocationHelper;
 import com.core.net.ssl.AuthImageDownloader;
 import com.core.net.utils.NetUtils;
 import com.core.net.volley.FastVolley;
@@ -39,6 +38,7 @@ import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
 import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
+import com.uas.applocation.UasLocationHelper;
 import com.umeng.analytics.MobclickAgent;
 import com.umeng.socialize.Config;
 import com.umeng.socialize.PlatformConfig;
@@ -94,17 +94,8 @@ public class MyApplication extends BaseApplication {
      * 提供网络全局监听
      ************************/
     private NetWorkObservable mNetWorkObservable;
-    /*********************
-     * 百度地图定位服务
-     ************************/
-    private BdLocationHelper mBdLocationHelper;
 
-    public BdLocationHelper getBdLocationHelper() {
-        if (mBdLocationHelper == null)
-            mBdLocationHelper = new BdLocationHelper(this);
-        mBdLocationHelper.requestLocation();
-        return mBdLocationHelper;
-    }
+
 
 
     @Override
@@ -116,12 +107,11 @@ public class MyApplication extends BaseApplication {
         mRequestQueue = Volley.newRequestQueue(this);
         mHttpUtils = new HttpUtils();
         configHttpUtils();
-
         new Handler().postDelayed(new Runnable() {
             @Override
             public void run() {
                 // 初始化定位
-                getBdLocationHelper();
+                initLocation();
                 // 初始化App目录
                 initAppDir();
                 // 初始化图片加载
@@ -169,9 +159,7 @@ public class MyApplication extends BaseApplication {
             Log.d(AppConfig.TAG, "MyApplication destory");
         }
         // 结束百度定位
-        if (mBdLocationHelper != null) {
-            mBdLocationHelper.release();
-        }
+        UasLocationHelper.getInstance().release();
         // 关闭网络状态的监听
         if (mNetWorkObservable != null) {
             mNetWorkObservable.release();
@@ -180,8 +168,12 @@ public class MyApplication extends BaseApplication {
 //		ImageLoader.getInstance().destroy();
         releaseFastVolley();
         android.os.Process.killProcess(android.os.Process.myPid());
+        UasLocationHelper.getInstance().release();
     }
 
+    private void initLocation(){
+        UasLocationHelper.getInstance().initConfig(this);
+    }
     public void initShareAPI() {
 //        PlatformConfig.setWeixin("wx2539cc96bf158e00", "b057aa3e807ba7c505a2f03cc541bbf6");
         PlatformConfig.setWeixin(Constants.WXPAY_APPID, Constants.WEIXIN_SECRET);

+ 0 - 240
app_core/common/src/main/java/com/core/net/location/BdLocationHelper.java

@@ -1,240 +0,0 @@
-package com.core.net.location;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.v4.content.LocalBroadcastManager;
-
-import com.baidu.location.BDLocation;
-import com.baidu.location.BDLocationListener;
-import com.baidu.location.LocationClient;
-import com.baidu.location.LocationClientOption;
-import com.baidu.mapapi.model.LatLng;
-import com.common.config.BaseConfig;
-import com.common.data.StringUtil;
-import com.common.preferences.PreferenceUtils;
-import com.core.app.Constants;
-
-public class BdLocationHelper {
-	public final int SCAN_SPAN = 0;//0表示只执行一次( 单位:ms)
-
-	private boolean locationOk;//是否定位成功
-	private LatLng latLng;
-	private String location;//位置信息
-	private String address;//详细地址
-	private String province;// 省份
-	private String cityName;// 城市
-	private String district;// 街道
-	private String errorMessage;//定位错误信息
-
-	private final Intent broadcast = new Intent(Constants.ACTION_LOCATION_CHANGE);//更新后广播
-	private LocationClient mLocationClient = null;
-	private int mFaildCount = 0;//失败次数
-
-	public BdLocationHelper(Context ct) {
-		initLocation(ct);
-	}
-
-	private void initLocation(Context ct) {
-		mLocationClient = new LocationClient(ct); // 声明LocationClient类
-		mLocationClient.registerLocationListener(mLocationListener); // 注册监听函数
-		mLocationClient.setLocOption(getOptionNotGPS());
-//        requestLocation();
-	}
-
-	/**
-	 * 获取配置
-	 *
-	 * @return
-	 */
-	private LocationClientOption getOptionByGPS() {
-		LocationClientOption option = new LocationClientOption();
-		option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
-		option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
-		option.setScanSpan(SCAN_SPAN);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
-		option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
-		option.setOpenGps(true);//可选,默认false,设置是否使用gps
-		option.setLocationNotify(false);//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果
-		option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
-		option.setIsNeedLocationPoiList(false);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
-		option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
-		option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
-		option.setEnableSimulateGps(true);//可选,默认false,设置是否需要过滤GPS仿真结果,默认需要
-		option.setNeedDeviceDirect(false);
-		return option;
-	}
-
-	/**
-	 * 获取配置
-	 *
-	 * @return
-	 */
-	private LocationClientOption getOptionNotGPS() {
-		LocationClientOption option = getOptionByGPS();
-		option.setOpenGps(false);
-		return option;
-	}
-
-
-	/**
-	 * 关闭定位
-	 **/
-	public void release() {
-		if (mLocationClient.isStarted()) {
-			mLocationClient.stop();
-		}
-	}
-
-
-	/**
-	 * 重新定位
-	 **/
-	public void requestLocation() {
-		requestLocation(null);
-	}
-
-	public void requestLocation(OnReceiveListener onReceiveListener) {
-		if (onReceiveListener != null) {
-			this.onReceiveListener = onReceiveListener;
-		}
-		if (mLocationClient == null) return;
-		if (!mLocationClient.isStarted()) {
-			mFaildCount = 0;
-			mLocationClient.start();
-		} else {
-			mLocationClient.requestLocation();
-		}
-	}
-
-	private BDLocationListener mLocationListener = new BDLocationListener() {
-		@Override
-		public void onReceiveLocation(BDLocation location) {
-			try {
-				setLocation(location);
-			} catch (Exception e) {
-				clearLocation();
-			}
-		}
-	};
-
-
-	private void setLocation(BDLocation location) throws Exception {
-		if (location.getLocType() == BDLocation.TypeGpsLocation// GPS定位结果
-				|| location.getLocType() == BDLocation.TypeNetWorkLocation//网络定位
-				|| location.getLocType() == BDLocation.TypeOffLineLocation//离线定位(未验证离线定位的有效性)
-				) {
-			//定位成功
-			mLocationClient.stop();
-			locationOk = true;
-			latLng = new LatLng(location.getLatitude(), location.getLongitude());
-			this.location = location.getLocationDescribe();
-			province = location.getProvince();
-			cityName = location.getCity();
-			district = location.getDistrict();
-			address = location.getAddrStr();
-			if (!StringUtil.isEmpty(this.location))
-				PreferenceUtils.putString("bdlocation", this.location);
-			if (!StringUtil.isEmpty(address))
-				PreferenceUtils.putString("bdaddress", address);
-			errorMessage = "";
-			//发送广播
-			broadcast.putExtra(Constants.ACTION_LOCATION_CHANGE, locationOk);
-			LocalBroadcastManager.getInstance(BaseConfig.getContext()).sendBroadcast(broadcast);
-			if (onReceiveListener != null) {
-				onReceiveListener.receive(latLng, this.location, address);
-				onReceiveListener = null;
-			}
-		} else {
-			//统一为定位失败
-			locationOk = false;
-			if (location.getLocType() == BDLocation.TypeServerError) {
-				//服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因
-				errorMessage = "服务端网络定位失败";
-			} else if (location.getLocType() == BDLocation.TypeNetWorkException) {
-				//网络不同导致定位失败,请检查网络是否通畅
-				errorMessage = "网络不同导致定位失败,请检查网络是否通畅";
-			} else if (location.getLocType() == BDLocation.TypeCriteriaException) {
-				//无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机
-				errorMessage = "无法获取有效定位依据导致定位失败";
-			} else {
-				errorMessage = "未知错误";
-			}
-			if (mFaildCount < 3) {
-				mFaildCount++;
-				requestLocation();
-				return;
-			}
-		}
-	}
-
-
-	public String getName() {
-		return StringUtil.isEmpty(location) ? "" : location;
-	}
-
-
-	// 获取经纬度
-	public double getLongitude() {
-		return latLng == null ? 1 : latLng.longitude;
-	}
-
-	// 获取经纬度
-	public double getLatitude() {
-		return latLng == null ? 1 : latLng.latitude;
-	}
-
-	public LatLng getLatLng() {
-		return latLng;
-	}
-
-	// 获取地址详情
-	public String getAddress() {
-		return StringUtil.isEmpty(address) ? PreferenceUtils.getString("bdaddress") : address;
-	}
-
-
-	public String getProvinceName() {
-		return province;
-	}
-
-	public LatLng getLocation() {
-		return latLng==null?latLng=new LatLng(0,0):latLng;
-	}
-
-	public String getCityName() {
-		return cityName;
-	}
-
-	public String getDistrictName() {
-		return district;
-	}
-
-	public boolean locationOk() {
-		return locationOk;
-	}
-
-	public String getErrorMessage() {
-		return errorMessage;
-	}
-
-	public boolean isLocationUpdate() {
-		return true;
-	}
-
-	private void clearLocation() {
-		locationOk = false;
-		latLng = null;
-		location = null;
-		address = null;
-		province = null;
-		cityName = null;
-		district = null;
-		errorMessage = null;
-	}
-
-	private OnReceiveListener onReceiveListener;
-
-	public interface OnReceiveListener {
-		void receive(LatLng latLng, String location, String address);
-	}
-}
-

+ 3 - 2
app_core/common/src/main/java/com/core/net/volley/Result.java

@@ -18,6 +18,7 @@ import com.core.model.User;
 import com.core.utils.ToastUtil;
 import com.core.utils.helper.LoginHelper;
 import com.core.utils.sp.UserSp;
+import com.uas.applocation.UasLocationHelper;
 
 import java.util.HashMap;
 
@@ -101,8 +102,8 @@ public class Result {
         params.put("osVersion", SystemUtil.getOsVersion());
         params.put("serial", SystemUtil.getDeviceId(context));
         // 地址信息
-        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+        double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
         if (latitude != 0)
             params.put("latitude", String.valueOf(latitude));
         if (longitude != 0)

+ 0 - 336
app_core/common/src/main/java/com/core/utils/BaiduMapUtil.java

@@ -1,7 +1,5 @@
 package com.core.utils;
 
-import android.util.Log;
-
 import com.baidu.mapapi.map.BitmapDescriptor;
 import com.baidu.mapapi.map.BitmapDescriptorFactory;
 import com.baidu.mapapi.map.MapStatus;
@@ -11,36 +9,12 @@ import com.baidu.mapapi.map.MapView;
 import com.baidu.mapapi.map.MarkerOptions;
 import com.baidu.mapapi.map.OverlayOptions;
 import com.baidu.mapapi.model.LatLng;
-import com.baidu.mapapi.search.core.SearchResult;
-import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
-import com.baidu.mapapi.search.poi.PoiCitySearchOption;
-import com.baidu.mapapi.search.poi.PoiDetailResult;
-import com.baidu.mapapi.search.poi.PoiIndoorResult;
 import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
-import com.baidu.mapapi.search.poi.PoiResult;
-import com.baidu.mapapi.search.poi.PoiSearch;
-import com.baidu.mapapi.search.poi.PoiSortType;
-import com.baidu.mapapi.search.route.BikingRouteResult;
-import com.baidu.mapapi.search.route.DrivingRouteLine;
 import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
-import com.baidu.mapapi.search.route.DrivingRouteResult;
 import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
 import com.baidu.mapapi.search.route.PlanNode;
 import com.baidu.mapapi.search.route.RoutePlanSearch;
-import com.baidu.mapapi.search.route.TransitRouteResult;
-import com.baidu.mapapi.search.route.WalkingRouteResult;
-import com.baidu.mapapi.utils.DistanceUtil;
-import com.common.data.ListUtils;
-import com.common.data.StringUtil;
-import com.core.app.AppConfig;
-import com.core.app.MyApplication;
 import com.core.app.R;
-import com.core.dao.WorkLocationDao;
-import com.core.model.WorkLocationModel;
-import com.core.net.location.BdLocationHelper;
-
-import java.text.DecimalFormat;
-import java.util.List;
 
 /**
  * 百度地图工具类(重复代码过多,放在工具类中)
@@ -50,9 +24,6 @@ public class BaiduMapUtil {
     private static BaiduMapUtil instence = null;
     private PoiNearbySearchOption option;//设置搜索的条件
     private RoutePlanSearch drivingSearch;//设置查询路线的条件
-    private OnDrivingRouteListener onDrivingRouteListener;//获取路线监听器(获取耗时)
-    private OnSearchPoiListener onSearchPoiListener;//获取周围信息接口
-    private PoiSearch mPoiSearch; //输入位置检索
 
     private BaiduMapUtil() {
     }
@@ -71,121 +42,14 @@ public class BaiduMapUtil {
         try {
             if (drivingSearch != null) drivingSearch.destroy();
             if (option != null) option = null;
-            if (onDrivingRouteListener != null) onDrivingRouteListener = null;
-            if (onSearchPoiListener != null) onSearchPoiListener = null;
-            if (mPoiSearch != null) mPoiSearch.destroy();
         } catch (Exception e) {
 
         }
     }
 
 
-    public double distance(LatLng a, LatLng b) {
-        try {
-            DecimalFormat df = new DecimalFormat(".##");
-            double dis = Math.abs(DistanceUtil.getDistance(a, b));
-            return Double.valueOf(df.format(dis));
-        } catch (Exception e) {
-            return 0;
-        }
-    }
 
-    public float autoDistance(LatLng a) {
-        if (a == null) return -1f;
-        BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-        if (helper.getLatitude() == 0 || helper.getLongitude() == 0) return -1f;
-        double distance = Math.abs(DistanceUtil.getDistance(a,
-                new LatLng(helper.getLatitude(), helper.getLongitude())));
-        DecimalFormat df = new DecimalFormat(".##");
-        try {
-            return Float.valueOf(df.format(distance));
-        } catch (ClassCastException e) {
-            return -1f;
-        } catch (Exception e) {
-            return -1f;
-        }
-    }
 
-    //与当前位置的距离
-    public String getDistance(LatLng a) {
-        if (a == null) return "0";
-        BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-        double distance = Math.abs(DistanceUtil.getDistance(a,
-                new LatLng(helper.getLatitude(), helper.getLongitude())));
-        DecimalFormat df = new DecimalFormat(".##");
-        return df.format(distance);
-    }
-
-    /**
-     * 判断是否在打卡范围之内
-     *
-     * @return
-     */
-    public boolean isInWorkPlce() {
-        float dis = 0;
-        try {
-            List<WorkLocationModel> beanList = WorkLocationDao.getInstance().queryByEnCode();
-            if (ListUtils.isEmpty(beanList)) return false;
-            BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-            for (WorkLocationModel bean : beanList) {
-                String chche = BaiduMapUtil.getInstence().getDistance(bean.getLongitude(),
-                        bean.getLatitude(), helper.getLatitude(), helper.getLongitude());
-                dis = Float.valueOf(chche);
-                if (dis < bean.getValidrange()) return true;
-            }
-            return false;
-        } catch (NumberFormatException e) {
-            return false;
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-    /**
-     * 获取符合打卡的距离
-     * @return
-     */
-    public float getDistance() {
-        float dis = 0;
-        try {
-            List<WorkLocationModel> beanList = WorkLocationDao.getInstance().queryByEnCode();
-            if (ListUtils.isEmpty(beanList)) return 0;
-            BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-            for (WorkLocationModel bean : beanList) {
-                String chche = BaiduMapUtil.getInstence().getDistance(bean.getLongitude(),
-                        bean.getLatitude(), helper.getLatitude(), helper.getLongitude());
-                dis = Float.valueOf(chche);
-                if (dis < bean.getValidrange()){
-                    return dis;
-                }
-            }
-            return 0;
-        } catch (NumberFormatException e) {
-            return 0;
-        } catch (Exception e) {
-            return 0;
-        }
-    }
-
-
-    //计算距离saaa
-    public String getDistance(double a1, double a2, double b1, double b2) {
-        LatLng a = new LatLng(a1, a2);
-        LatLng b = new LatLng(b1, b2);
-        return getDistance(a, b);
-    }
-
-    /******************
-     * 计算距离
-     ******************/
-    public String getDistance(LatLng a, LatLng b) {
-        double distance = Math.abs(DistanceUtil.getDistance(a, b));
-        DecimalFormat df = new DecimalFormat(".##");
-        return df.format(distance);
-    }
-
-
-    /******************end计算距离******************/
 
     /****************** 设置在地图上显示 ******************/
     /**
@@ -198,17 +62,6 @@ public class BaiduMapUtil {
         setMapViewPoint(mapView, point, false);
     }
 
-    public void setMapViewPoint(MapView mapView, boolean isClear) {
-        try {
-            LatLng point = new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
-                    MyApplication.getInstance().getBdLocationHelper().getLongitude());
-            setMapViewPoint(mapView, point, isClear);
-        } catch (NullPointerException e) {
-
-        } catch (Exception e) {
-
-        }
-    }
 
     /**
      * 将定点显示在指定位置
@@ -236,146 +89,6 @@ public class BaiduMapUtil {
 
         }
     }
-    /******************end设置在地图上显示******************/
-
-
-    /******************
-     * 检索周围
-     ******************/
-    public void getNearInfo(int radius, int pagerNum, LatLng location, String keyword, OnSearchPoiListener onSearchPoiListener) {
-        if (option == null)
-            option = new PoiNearbySearchOption();
-        if (mPoiSearch == null)
-            mPoiSearch = PoiSearch.newInstance();
-        this.onSearchPoiListener = onSearchPoiListener;
-        option.keyword(keyword);
-        option.sortType(PoiSortType.distance_from_near_to_far);
-        option.location(location);
-        if (radius != 0) {
-            option.radius(radius);
-        } else {
-            option.radius(1000);
-        }
-        if (pagerNum != 0) {
-            option.pageNum(pagerNum);
-        } else {
-            option.pageNum(1);
-        }
-        option.pageCapacity(20);
-        mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
-        mPoiSearch.searchNearby(option);
-    }
-
-    public void getNearInfo(int radius, int pagerNum, LatLng latLng, OnSearchPoiListener onSearchPoiListener) {
-        if (latLng != null) try {
-            this.onSearchPoiListener = onSearchPoiListener;
-            if (option == null)
-                option = new PoiNearbySearchOption();
-            if (mPoiSearch == null)
-                mPoiSearch = PoiSearch.newInstance();
-            option.keyword("公司")
-                    .sortType(PoiSortType.distance_from_near_to_far)
-                    .radius(radius)
-                    .pageNum(pagerNum)
-                    .pageCapacity(1000)
-                    .location(latLng);
-            mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
-            mPoiSearch.searchNearby(option);
-        } catch (Exception e) {
-
-        }
-
-    }
-
-    /**
-     * 查询城市里的地址
-     *
-     * @param location 地址
-     */
-    public void searchByInput(String location, int pagerNum, OnSearchPoiListener onSearchPoiListener) {
-        try {
-            this.onSearchPoiListener = onSearchPoiListener;
-            mPoiSearch = PoiSearch.newInstance();
-            mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
-            mPoiSearch.searchInCity((new PoiCitySearchOption())
-                    .city(MyApplication.getInstance().getBdLocationHelper().getCityName())
-                    .keyword(location).pageNum(pagerNum).pageCapacity(1000)
-            );
-        } catch (Exception e) {
-            if (e != null)
-                Log.i("gongpengming", "e =" + e.getMessage());
-        }
-    }
-
-    public void searchByInputOnChina(String location, int pagerNum,
-                                     OnSearchPoiListener onSearchPoiListener) {
-        try {
-            this.onSearchPoiListener = onSearchPoiListener;
-            mPoiSearch = PoiSearch.newInstance();
-            mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
-            mPoiSearch.searchInCity((new PoiCitySearchOption())
-                    .city("中国")
-                    .keyword(location)
-                    .pageNum(pagerNum).pageCapacity(1000)
-            );
-        } catch (Exception e) {
-            if (e != null)
-                Log.i("gongpengming", "e =" + e.getMessage());
-        }
-    }
-
-    private OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener() {
-        public void onGetPoiResult(PoiResult result) {
-            //获取POI检索结果
-            if (onSearchPoiListener == null || result == null) {
-                return;
-            }
-            onSearchPoiListener.result(result);
-        }
-
-        public void onGetPoiDetailResult(PoiDetailResult result) {
-            //获取Place详情页检索结果
-            Log.i("gongpengming", "onGetPoiDetailResult");
-            if (onSearchPoiListener == null || result == null) return;
-            onSearchPoiListener.result(result);
-        }
-
-        @Override
-        public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
-            Log.i("gongpengming", "onGetPoiIndoorResult");
-            if (onSearchPoiListener == null || poiIndoorResult == null) return;
-            onSearchPoiListener.result(poiIndoorResult);
-        }
-    };
-
-    //获取周围位置信息接口
-    public interface OnSearchPoiListener {
-        void result(SearchResult result);
-    }
-
-    /******************end检索周围******************/
-
-
-    /********************规划路线**************************************/
-    /**
-     * 计算耗时
-     *
-     * @param city     城市
-     * @param from     从地点
-     * @param to       到地点
-     * @param listener 返回数据监听器
-     */
-    public void getDrivingRoute(String city, String from, String to, OnDrivingRouteListener listener) {
-        this.onDrivingRouteListener = listener;
-        drivingSearch = RoutePlanSearch.newInstance();
-        drivingSearch.setOnGetRoutePlanResultListener(onGetRoutePlanResultListener);
-        PlanNode stNode = PlanNode.withCityNameAndPlaceName(city, from);
-        PlanNode enNode = PlanNode.withCityNameAndPlaceName(city, to);
-        drivingSearch.drivingSearch((new DrivingRoutePlanOption())
-                .from(stNode)
-                .to(enNode));
-
-    }
 
 
     public void getDrivingRoute(LatLng from, LatLng to, OnGetRoutePlanResultListener onGetRoutePlanResultListener) {
@@ -388,56 +101,7 @@ public class BaiduMapUtil {
                 .to(enNode));
     }
 
-    //获取周围位置监听器
-    private OnGetRoutePlanResultListener onGetRoutePlanResultListener = new OnGetRoutePlanResultListener() {
-        @Override
-        public void onGetWalkingRouteResult(WalkingRouteResult result) {
-            //获取步行线路规划结果
-            DrivingRouteLine line = null;
-            if (line == null || onDrivingRouteListener == null) return;
-            onDrivingRouteListener.callBack(result, line);
-        }
-
-        @Override
-        public void onGetTransitRouteResult(TransitRouteResult result) {
-            //获取公交换乘路径规划结果
-            DrivingRouteLine line = null;
-            if (line == null || onDrivingRouteListener == null) return;
-            onDrivingRouteListener.callBack(result, line);
-        }
-
-        @Override
-        public void onGetDrivingRouteResult(DrivingRouteResult result) {
-            //获取驾车线路规划结果
-            List<DrivingRouteLine> list = result.getRouteLines();
-            if (ListUtils.isEmpty(list)) return;
-            DrivingRouteLine line = null;
-            for (DrivingRouteLine e : list) {//TODO 获取最优最快路线及时间
-                if (line == null) line = e;
-                else if (line.getDuration() > e.getDuration()) line = e;
-            }
-            if (line == null || onDrivingRouteListener == null) return;
-            onDrivingRouteListener.callBack(result, line);
-        }
-
-        @Override
-        public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {
-            //获取自行车线路规划结果
-        }
-    };
-
-    //获取规划路线监听器
-    public interface OnDrivingRouteListener {
-        void callBack(SearchResult result, DrivingRouteLine line);
-    }
 
-    /********************
-     * end 规划路线
-     **************************************/
 
-    private void show(String str) {
-        if (!AppConfig.DEBUG || StringUtil.isEmpty(str)) return;
-        Log.i("gongpengming", str);
-    }
 
 }

+ 2 - 1
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -59,6 +59,7 @@ import com.iflytek.cloud.SpeechConstant;
 import com.iflytek.cloud.SpeechError;
 import com.iflytek.cloud.ui.RecognizerDialog;
 import com.iflytek.cloud.ui.RecognizerDialogListener;
+import com.uas.applocation.UasLocationHelper;
 import com.umeng.socialize.UMShareListener;
 import com.umeng.socialize.bean.SHARE_MEDIA;
 
@@ -812,7 +813,7 @@ public class CommonUtil {
 
     public static void saveAutoLogtoLocal(String aa_type, String aa_remark) {
         String aa_date = TimeUtils.f_long_2_str(System.currentTimeMillis());
-        String aa_location = MyApplication.getInstance().getBdLocationHelper().getAddress();
+        String aa_location = UasLocationHelper.getInstance().getUASLocation().getAddress();
         String aa_telephone = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "user_phone");
         Log.i("aa_date,aa_tel", aa_date + "," + aa_telephone);
 

+ 3 - 2
app_core/common/src/main/java/com/core/utils/helper/LoginHelper.java

@@ -23,6 +23,7 @@ import com.core.net.volley.ObjectResult;
 import com.core.net.volley.Result;
 import com.core.net.volley.StringJsonObjectRequest;
 import com.core.utils.sp.UserSp;
+import com.uas.applocation.UasLocationHelper;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -285,8 +286,8 @@ public class LoginHelper {
         params.put("serial", SystemUtil.getDeviceId(activity));
 
         // 地址信息
-        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+        double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
         if (latitude != 0)
             params.put("latitude", String.valueOf(latitude));
         if (longitude != 0)

+ 7 - 11
app_core/common/src/main/java/com/core/widget/view/Activity/SearchLocationActivity.java

@@ -11,28 +11,26 @@ import android.text.Editable;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.EditText;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.baidu.mapapi.map.MapView;
 import com.baidu.mapapi.model.LatLng;
-import com.common.LogUtil;
 import com.common.config.BaseConfig;
 import com.common.data.ListUtils;
 import com.core.app.Constants;
-import com.core.app.MyApplication;
 import com.core.app.R;
 import com.core.base.OABaseActivity;
 import com.core.utils.BaiduMapUtil;
 import com.core.utils.ToastUtil;
-import com.core.widget.listener.EditChangeListener;
 import com.core.widget.EmptyLayout;
+import com.core.widget.listener.EditChangeListener;
 import com.core.widget.view.adapter.SearchLocationAdapter;
 import com.core.widget.view.imp.ISearchView;
 import com.core.widget.view.imp.SearchPresenter;
 import com.core.widget.view.model.SearchLocationModel;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
-import com.lidroid.xutils.ViewUtils;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.model.UASLocation;
 
 import java.util.List;
 
@@ -41,7 +39,6 @@ public class SearchLocationActivity extends OABaseActivity implements ISearchVie
 	private EditText search_edit;
 	private MapView bmapView;
 	private PullToRefreshListView listview;
-	private RelativeLayout search_rl;
 
 	private SearchPresenter presenter;
 	private SearchLocationAdapter mAdapter;
@@ -52,7 +49,6 @@ public class SearchLocationActivity extends OABaseActivity implements ISearchVie
 		@Override
 		public void onReceive(Context context, Intent intent) {
 			if (intent!=null&&intent.getBooleanExtra(Constants.ACTION_LOCATION_CHANGE,false)){
-				LogUtil.i("onReceive");
 				presenter.init(getIntent());
 			}
 		}
@@ -68,7 +64,6 @@ public class SearchLocationActivity extends OABaseActivity implements ISearchVie
 	protected void onCreate(Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
 		setContentView(R.layout.activity_search_location);
-		ViewUtils.inject(this);
 		initView();
 		initEvent();
 
@@ -106,7 +101,6 @@ public class SearchLocationActivity extends OABaseActivity implements ISearchVie
 		search_edit = (EditText) findViewById(R.id.search_edit);
 		bmapView = (MapView) findViewById(R.id.bmapView);
 		listview = (PullToRefreshListView) findViewById(R.id.listview);
-		search_rl = (RelativeLayout) findViewById(R.id.search_rl);
 		mEmptyLayout = new EmptyLayout(this, listview.getRefreshableView());
 		mEmptyLayout.setShowLoadingButton(false);
 		mEmptyLayout.setShowEmptyButton(false);
@@ -114,11 +108,13 @@ public class SearchLocationActivity extends OABaseActivity implements ISearchVie
 		mEmptyLayout.setEmptyViewRes(R.layout.empty_locayion);
 		messageTv = (TextView) mEmptyLayout.getEmptyView().findViewById(R.id.messageTv);
 		presenter = new SearchPresenter(this);
-		
+		UASLocation mUASLocation = UasLocationHelper.getInstance().getUASLocation();
+
+		showPoiPoint(new LatLng(mUASLocation.getLatitude(),mUASLocation.getLongitude()));
 		requestPermission(Manifest.permission.ACCESS_FINE_LOCATION, new Runnable() {
 			@Override
 			public void run() {
-				MyApplication.getInstance().getBdLocationHelper().requestLocation();
+				UasLocationHelper.getInstance().requestLocation();
 				presenter.init(getIntent());
 			}
 		}, new Runnable() {

+ 181 - 182
app_core/common/src/main/java/com/core/widget/view/imp/SearchPresenter.java

@@ -4,17 +4,18 @@ import android.content.Intent;
 
 import com.baidu.mapapi.model.LatLng;
 import com.baidu.mapapi.search.core.PoiInfo;
-import com.baidu.mapapi.search.core.SearchResult;
-import com.baidu.mapapi.search.poi.PoiResult;
-import com.common.LogUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
-import com.core.net.location.BdLocationHelper;
-import com.core.utils.BaiduMapUtil;
 import com.core.widget.view.model.SearchLocationModel;
 import com.core.widget.view.model.SearchPoiParam;
+import com.uas.applocation.Interface.OnSearchLocationListener;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.model.UASLocation;
+import com.uas.applocation.utils.LocationDistanceUtils;
+import com.uas.applocation.utils.LocationNeerUtils;
+import com.uas.applocation.utils.ModelChangeUtils;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -39,181 +40,179 @@ import java.util.List;
  */
 
 public class SearchPresenter {
-	private final int PAGESIZE = 20;
-	private List<SearchLocationModel> neerList;  //周围地址主体;列表,只有在搜索周围的时候存在
-	private BdLocationHelper locationHelper;
-	private int pageNum = 0;
-
-
-	private ISearchView iSearchView;
-
-	private int radius = 200;//范围 默认200米
-	private SearchPoiParam param;
-	private LatLng location;//所在的位置
-	private boolean isLoadChina;//当前搜索为搜索全国
-
-
-	public SearchPresenter(ISearchView iSearchView) {
-		if (iSearchView == null)//防止传入一个为空的isearchview
-			new NullPointerException("ISearchView 不能为null");
-		this.iSearchView = iSearchView;
-	}
-
-
-	/**
-	 * 监听数据返回
-	 */
-	private BaiduMapUtil.OnSearchPoiListener listener = new BaiduMapUtil.OnSearchPoiListener() {
-		@Override
-		public void result(SearchResult result) {
-			List<SearchLocationModel> listData = new ArrayList<>();
-			if (result == null || ListUtils.isEmpty(((PoiResult) result).getAllPoi())) {
-				if (isLoadChina) {
-					isLoadChina = false;
-					BaiduMapUtil.getInstence().searchByInput(param.getKeyWork(), pageNum, listener);
-				}
-			} else {
-				PoiResult poiResult = (PoiResult) result;
-				List<PoiInfo> chches = poiResult.getAllPoi();
-				iSearchView.showPoiPoint(chches.get(0).location);
-				for (int i = 0; i < chches.size(); i++) {
-					if (StringUtil.isEmpty(chches.get(i).name) || StringUtil.isEmpty(chches.get(i).address)) {
-						chches.remove(i);
-						i--;
-					} else
-						listData.add(new SearchLocationModel(chches.get(i)));
-				}
-			}
-			if (param.getType() == 1) {
-				if (neerList == null) neerList = new ArrayList<>();
-				neerList.addAll(listData);
-			}
-			showData(listData);
-		}
-	};
-
-
-	/**
-	 * 初始化数据
-	 *
-	 * @param intent 转入的控制参数
-	 */
-	public void init(Intent intent) {
-		if (locationHelper != null) {
-			LogUtil.i("locationHelper != null");
-			return;
-		}
-		LogUtil.i("init");
-		locationHelper = MyApplication.getInstance().getBdLocationHelper();
-		if (intent == null) return;
-		param = intent.getParcelableExtra("data");
-		if (param == null)
-			new NullPointerException("param is Null");
-		if (!StringUtil.isEmpty(param.getTitle())) {
-			iSearchView.setTitle(param.getTitle());
-		}
-		initData();
-	}
-
-	public void search(String keyWork) {
-		if (StringUtil.isEmpty(keyWork)) {
-			if (param.getType() == 2 || ListUtils.isEmpty(neerList))
-				loadDataByNeer();
-			else
-				showData(neerList);
-			return;
-		}
-		param.setKeyWork(keyWork);
-		if (param.getType() == 1) {//附近搜索
-			List<SearchLocationModel> chche = new ArrayList<>();
-			if (!ListUtils.isEmpty(neerList)) {
-				for (SearchLocationModel e : neerList) {
-					String text = e.getPoiInfo().city + e.getPoiInfo().name + e.getPoiInfo().address;
-					boolean isOK = StringUtil.isInclude(text, param.getKeyWork());
-					if (isOK)
-						chche.add(e);
-				}
-			}
-			showData(chche);
-		} else {
-			loadDataByChina();
-		}
-	}
-
-	public void endActivity(BaseActivity ct, PoiInfo poi) {
-		Intent intent = new Intent();
-		intent.putExtra(param.getResultKey(), poi);
-		ct.setResult(param.getResultCode(), intent);
-		ct.finish();
-	}
-
-
-	private void initData() {
-		if (!MyApplication.getInstance().isNetworkActive()) {
-			iSearchView.showNotNetWork();
-			return;
-		}
-		switch (param.getType()) {
-			case 1:
-				loadDataByNeer();
-				break;
-			case 2:
-				if (StringUtil.isEmpty(param.getKeyWork())) {
-					loadDataByNeer();
-				} else
-					loadDataByChina();
-				break;
-			default:
-				break;
-		}
-	}
-
-	private void loadDataByChina() {
-		isLoadChina = true;
-		BaiduMapUtil.getInstence().searchByInputOnChina(StringUtil.isEmpty(param.getKeyWork()) ? "" : param.getKeyWork(), pageNum, listener);
-	}
-
-	private void loadDataByNeer() {
-		neerList = new ArrayList<>();
-		location = new LatLng(locationHelper.getLatitude(), locationHelper.getLongitude());
-		PoiInfo thisInfo = new PoiInfo();
-		thisInfo.location = location;
-		thisInfo.name = locationHelper.getName();
-		thisInfo.city = locationHelper.getCityName();
-		thisInfo.address = locationHelper.getAddress();
-		neerList.add(new SearchLocationModel(thisInfo));
-		BaiduMapUtil.getInstence().getNearInfo(radius, pageNum, location, listener);
-	}
-
-
-	/**
-	 * 获取完数据后进入显示,先进行排序
-	 *
-	 * @param chche
-	 */
-	private void showData(List<SearchLocationModel> chche) {
-		List<SearchLocationModel> showModels = new ArrayList<>();
-		if (!ListUtils.isEmpty(chche)) {
-			for (int i = 0; i < chche.size(); i++) {
-				float distance = Float.valueOf(BaiduMapUtil.getInstence().getDistance(chche.get(i).getPoiInfo().location, param.getContrastLatLng()));
-
-				chche.get(i).setDistance(distance);
-				if (!param.isHineOutSize() || param.getShowRange() > distance) {
-					showModels.add(chche.get(i));
-				}
-			}
-			Comparator<SearchLocationModel> comparator = new Comparator<SearchLocationModel>() {
-				public int compare(SearchLocationModel s1, SearchLocationModel s2) {
-					if (s1.getDistance() == s2.getDistance()) return 0;
-					return s1.getDistance() > s2.getDistance() ? 1 : -1;
-				}
-			};
-			Collections.sort(showModels, comparator);
-		}
-		iSearchView.showPoiList(showModels, param.getDistanceTag());
-	}
-
-	public boolean isHineOutSize() {
-		return param.isHineOutSize();
-	}
+    private List<SearchLocationModel> neerList;  //周围地址主体;列表,只有在搜索周围的时候存在
+    private int pageNum = 0;
+
+
+    private ISearchView iSearchView;
+
+    private int radius = 200;//范围 默认200米
+    private SearchPoiParam param;
+    private LatLng location;//所在的位置
+    private boolean isLoadChina;//当前搜索为搜索全国
+
+
+    public SearchPresenter(ISearchView iSearchView) {
+        if (iSearchView == null)//防止传入一个为空的isearchview
+            new NullPointerException("ISearchView 不能为null");
+        this.iSearchView = iSearchView;
+    }
+
+
+    private OnSearchLocationListener mOnSearchLocationListener = new OnSearchLocationListener() {
+        @Override
+        public void onCallBack(boolean isSuccess, List<UASLocation> locations) {
+            List<SearchLocationModel> listData = new ArrayList<>();
+            if (!isSuccess) {
+                if (isLoadChina) {
+                    isLoadChina = false;
+                    LocationNeerUtils.searchByInput(MyApplication.getInstance(),null, param.getKeyWork(), pageNum, mOnSearchLocationListener);
+                }
+            } else {
+                if (!ListUtils.isEmpty(locations)) {
+                    UASLocation mUASLocation = locations.get(0);
+                    iSearchView.showPoiPoint(new LatLng(mUASLocation.getLatitude(), mUASLocation.getLongitude()));
+                    for (int i = 0; i < locations.size(); i++) {
+                        if (StringUtil.isEmpty(locations.get(i).getName()) || StringUtil.isEmpty(locations.get(i).getAddress())) {
+                            locations.remove(i);
+                            i--;
+                        } else {
+                            listData.add(new SearchLocationModel(ModelChangeUtils.location2PoiInfo(locations.get(i))));
+                        }
+                    }
+                }
+
+            }
+            if (param.getType() == 1) {
+                if (neerList == null) neerList = new ArrayList<>();
+                neerList.addAll(listData);
+            }
+            showData(listData);
+        }
+    };
+
+
+    /**
+     * 初始化数据
+     *
+     * @param intent 转入的控制参数
+     */
+    public void init(Intent intent) {
+        if (intent == null) return;
+        param = intent.getParcelableExtra("data");
+        if (param == null)
+            new NullPointerException("param is Null");
+        if (!StringUtil.isEmpty(param.getTitle())) {
+            iSearchView.setTitle(param.getTitle());
+        }
+        initData();
+    }
+
+    public void search(String keyWork) {
+        if (StringUtil.isEmpty(keyWork)) {
+            if (param.getType() == 2 || ListUtils.isEmpty(neerList))
+                loadDataByNeer();
+            else
+                showData(neerList);
+            return;
+        }
+        param.setKeyWork(keyWork);
+        if (param.getType() == 1) {//附近搜索
+            List<SearchLocationModel> chche = new ArrayList<>();
+            if (!ListUtils.isEmpty(neerList)) {
+                for (SearchLocationModel e : neerList) {
+                    String text = e.getPoiInfo().city + e.getPoiInfo().name + e.getPoiInfo().address;
+                    boolean isOK = StringUtil.isInclude(text, param.getKeyWork());
+                    if (isOK)
+                        chche.add(e);
+                }
+            }
+            showData(chche);
+        } else {
+            loadDataByChina();
+        }
+    }
+
+    public void endActivity(BaseActivity ct, PoiInfo poi) {
+        Intent intent = new Intent();
+        intent.putExtra(param.getResultKey(), poi);
+        ct.setResult(param.getResultCode(), intent);
+        ct.finish();
+    }
+
+
+    private void initData() {
+        if (!MyApplication.getInstance().isNetworkActive()) {
+            iSearchView.showNotNetWork();
+            return;
+        }
+        switch (param.getType()) {
+            case 1:
+                loadDataByNeer();
+                break;
+            case 2:
+                if (StringUtil.isEmpty(param.getKeyWork())) {
+                    loadDataByNeer();
+                } else {
+                    loadDataByChina();
+                }
+                break;
+            default:
+                break;
+        }
+    }
+
+
+    private void loadDataByChina() {
+        isLoadChina = true;
+        LocationNeerUtils.searchByInput(MyApplication.getInstance(),"中国", param.getKeyWork(), pageNum, mOnSearchLocationListener);
+    }
+
+    /**
+     * 获取当前位置附近位置点
+     */
+    private void loadDataByNeer() {
+        UASLocation mUASLocation = UasLocationHelper.getInstance().getUASLocation();
+        neerList = new ArrayList<>();
+        location = new LatLng(mUASLocation.getLatitude(), mUASLocation.getLongitude());
+        PoiInfo thisInfo = new PoiInfo();
+        thisInfo.location = location;
+        thisInfo.name = mUASLocation.getName();
+        thisInfo.city = mUASLocation.getCityName();
+        thisInfo.address = mUASLocation.getAddress();
+        neerList.add(new SearchLocationModel(thisInfo));
+        LocationNeerUtils.loadDataByNeer(MyApplication.getInstance(), radius, pageNum, mOnSearchLocationListener);
+
+    }
+
+
+    /**
+     * 获取完数据后进入显示,先进行排序
+     *
+     * @param chche
+     */
+    private void showData(List<SearchLocationModel> chche) {
+        List<SearchLocationModel> showModels = new ArrayList<>();
+        if (!ListUtils.isEmpty(chche)) {
+            for (int i = 0; i < chche.size(); i++) {
+                float distance = LocationDistanceUtils.getDistance(chche.get(i).getPoiInfo().location, param.getContrastLatLng());
+                chche.get(i).setDistance(distance);
+                if (!param.isHineOutSize() || param.getShowRange() > distance) {
+                    showModels.add(chche.get(i));
+                }
+            }
+            Comparator<SearchLocationModel> comparator = new Comparator<SearchLocationModel>() {
+                public int compare(SearchLocationModel s1, SearchLocationModel s2) {
+                    if (s1.getDistance() == s2.getDistance()) return 0;
+                    return s1.getDistance() > s2.getDistance() ? 1 : -1;
+                }
+            };
+            Collections.sort(showModels, comparator);
+        }
+        iSearchView.showPoiList(showModels, param.getDistanceTag());
+    }
+
+    public boolean isHineOutSize() {
+        return param.isHineOutSize();
+    }
 }

+ 2 - 2
app_core/common/src/main/java/com/core/widget/view/model/SearchPoiParam.java

@@ -9,7 +9,7 @@ import android.os.Parcel;
 import android.os.Parcelable;
 
 import com.baidu.mapapi.model.LatLng;
-import com.core.app.MyApplication;
+import com.uas.applocation.UasLocationHelper;
 
 /**
  * 调用地图显示界面,由于多处调用,所以参数太多,整理为一个参数类中
@@ -45,7 +45,7 @@ public class SearchPoiParam implements Parcelable {
         radius = 200;
         hineOutSize = false;
         showRange = 1000;
-        contrastLatLng = MyApplication.getInstance().getBdLocationHelper().getLocation();
+        contrastLatLng = UasLocationHelper.getInstance().getUASLocation().getLocation();
     }
 
     public SearchPoiParam(boolean isShowSearchEdit, int resultCode, String resultKey, int riceTimes, String distanceTag, LatLng contrastLatLng, String title, int type, int radius, String keyWork) {

+ 4 - 4
app_core/common/src/main/java/com/core/xmpp/model/Area.java

@@ -2,10 +2,10 @@ package com.core.xmpp.model;
 
 import android.text.TextUtils;
 
-import com.core.app.MyApplication;
 import com.core.dao.AreasDao;
 import com.j256.ormlite.field.DatabaseField;
 import com.j256.ormlite.table.DatabaseTable;
+import com.uas.applocation.UasLocationHelper;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -139,7 +139,7 @@ public class Area {
 
 	public static Area getDefaultProvince() {// 获取默认的省份
 		Area area = null;
-		String provinceName = MyApplication.getInstance().getBdLocationHelper().getProvinceName();
+		String provinceName = UasLocationHelper.getInstance().getUASLocation().getProvince();
 		if (!TextUtils.isEmpty(provinceName)) {
 			area = AreasDao.getInstance().searchByName(provinceName);
 		}
@@ -148,7 +148,7 @@ public class Area {
 
 	public static Area getDefaultCity() {// 获取默认的城市
 		Area area = null;
-		String cityName = MyApplication.getInstance().getBdLocationHelper().getCityName();
+		String cityName = UasLocationHelper.getInstance().getUASLocation().getCityName();
 		if (!TextUtils.isEmpty(cityName)) {
 			area = AreasDao.getInstance().searchByName(cityName);
 		}
@@ -156,7 +156,7 @@ public class Area {
 	}
 
 	public static Area getDefaultDistrict(int cityId) {// 获取默认的区县
-		String districtName = MyApplication.getInstance().getBdLocationHelper().getDistrictName();
+		String districtName = UasLocationHelper.getInstance().getUASLocation().getDistrict();
 		Area area = AreasDao.getInstance().searchByNameAndParentId(cityId, districtName);
 		return area;
 	}

+ 2 - 1
app_core/common/src/main/java/com/core/xmpp/widget/ChatContentView.java

@@ -68,6 +68,7 @@ import com.core.xmpp.utils.flie.FileOpenWays;
 import com.nostra13.universalimageloader.core.ImageLoader;
 import com.nostra13.universalimageloader.core.assist.FailReason;
 import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
+import com.uas.applocation.UasLocationHelper;
 
 import java.io.File;
 import java.net.URL;
@@ -760,7 +761,7 @@ public class ChatContentView extends PullDownListView implements VoicePlayer.OnM
                             }
                         });
                     } else {
-                        String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
+                        String address = UasLocationHelper.getInstance().getUASLocation().getAddress();
                         locationViewHolder.chat_location.setVisibility(View.VISIBLE);
                         locationViewHolder.chat_address.setText(address);
 

+ 10 - 0
app_core/common/src/main/res/drawable/bg_edit_shape_10dp.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape>
+            <solid android:color="@color/white"/>
+            <stroke android:width="0.6dp" android:color="#F2F2F2"/>
+            <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp"/>
+        </shape>
+    </item>
+</selector>

+ 2 - 2
app_core/common/src/main/res/layout/activity_oamain.xml

@@ -280,7 +280,7 @@
                         android:layout_weight="1"
                         android:gravity="center"
                         android:text="@string/oasubordinate_work_calendar"
-                        android:textSize="16dp" />
+                        android:textSize="16sp" />
 
                     <View
                         android:layout_width="2px"
@@ -296,7 +296,7 @@
                         android:gravity="center"
                         android:text="@string/oamy_work_calender"
                         android:textCursorDrawable="@color/yellow_home"
-                        android:textSize="16dp" />
+                        android:textSize="16sp" />
                 </LinearLayout>
 
                 <LinearLayout

+ 2 - 2
app_core/common/src/main/res/layout/item_approval_node.xml

@@ -11,14 +11,14 @@
 
     <RelativeLayout
         android:layout_width="match_parent"
-        android:layout_height="70dp"
+        android:layout_height="75sp"
         android:background="@color/white">
 
 
         <LinearLayout
             android:paddingTop="@dimen/padding"
             android:id="@+id/timeLl"
-            android:layout_width="45dp"
+            android:layout_width="50sp"
             android:layout_height="match_parent"
             android:layout_centerVertical="true"
             android:gravity="center|right"

+ 1 - 1
app_core/common/src/main/res/layout/item_approval_rv.xml

@@ -29,7 +29,7 @@
             style="@style/approvalItemStyle"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:background="@drawable/edit_hint_right_angle"
+            android:background="@drawable/bg_edit_shape_10dp"
             android:hint="@string/common_input2"
             android:textColor="@color/text_main" />
 

+ 1 - 1
app_core/common/src/main/res/layout/item_approval_title.xml

@@ -34,7 +34,7 @@
             android:layout_toLeftOf="@id/statusIv"
             android:layout_toRightOf="@id/handIv"
             android:ellipsize="end"
-            android:lines="1"
+            android:maxLines="2"
             android:textColor="#000000"
             android:textSize="14sp"/>
     </RelativeLayout>

+ 2 - 2
app_core/common/src/main/res/layout/plat_oamain.xml

@@ -266,7 +266,7 @@
                         android:layout_weight="1"
                         android:gravity="center"
                         android:text="下属工作日历"
-                        android:textSize="16dp" />
+                        android:textSize="16sp" />
 
                     <View
                         android:layout_width="2px"
@@ -282,7 +282,7 @@
                         android:gravity="center"
                         android:text="@string/oamy_work_calender"
                         android:textCursorDrawable="@color/yellow_home"
-                        android:textSize="16dp" />
+                        android:textSize="16sp" />
                 </LinearLayout>
 
                 <LinearLayout

+ 4 - 3
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceListActivity.java

@@ -22,7 +22,6 @@ import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.base.OABaseActivity;
 import com.core.interfac.OnVoiceCompleteListener;
-import com.core.utils.BaiduMapUtil;
 import com.core.utils.CommonUtil;
 import com.core.utils.DistanceUtils;
 import com.core.widget.ClearEditText;
@@ -37,6 +36,8 @@ import com.modular.booking.R;
 import com.modular.booking.adapter.ItemBserviceListAdapter;
 import com.modular.booking.model.SBListModel;
 import com.modular.booking.model.SBMenuModel;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.utils.LocationDistanceUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -182,7 +183,7 @@ public class BServiceListActivity extends OABaseActivity {
 
 
     public void loadListData(String type, int page) {
-        MyApplication.getInstance().getBdLocationHelper().requestLocation();
+        UasLocationHelper.getInstance().requestLocation();
         HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).isDebug(true).build();
         httpClient.Api().send(new HttpClient.Builder()
                 .url("/user/appStoreList")
@@ -215,7 +216,7 @@ public class BServiceListActivity extends OABaseActivity {
                             sbListModel.setLongitude(sc_longitude);
                             sbListModel.setIntroduce(mObject.getString("sc_introduce"));
                             LatLng latLng = new LatLng(Double.valueOf(sc_latitude), Double.valueOf(sc_longitude));
-                            float distance = BaiduMapUtil.getInstence().autoDistance(latLng);
+                            float distance = LocationDistanceUtils.distanceMe(latLng);
                             sbListModel.setDistance(String.valueOf(DistanceUtils.mToKm(distance, "#.0")));
                             sbListModel.setCash(mObject.getString("sc_telephone"));
                             sbListModel.setCompanyid(mObject.getString("sc_uu"));

+ 2 - 2
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceSearchActivity.java

@@ -23,7 +23,6 @@ import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.base.OABaseActivity;
 import com.core.interfac.OnVoiceCompleteListener;
-import com.core.utils.BaiduMapUtil;
 import com.core.utils.CommonUtil;
 import com.core.utils.DistanceUtils;
 import com.core.widget.ClearEditText;
@@ -37,6 +36,7 @@ import com.me.network.app.http.rx.ResultSubscriber;
 import com.modular.booking.R;
 import com.modular.booking.adapter.ItemBserviceListAdapter;
 import com.modular.booking.model.SBListModel;
+import com.uas.applocation.utils.LocationDistanceUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -194,7 +194,7 @@ public class BServiceSearchActivity extends OABaseActivity implements View.OnCli
                                 sbListModel.setLongitude(sc_longitude);
                                 sbListModel.setIntroduce(mObject.getString("sc_introduce"));
                                 LatLng latLng = new LatLng(Double.valueOf(sc_latitude), Double.valueOf(sc_longitude));
-                                float distance = BaiduMapUtil.getInstence().autoDistance(latLng);
+                                float distance = LocationDistanceUtils.distanceMe(latLng);
                                 sbListModel.setDistance(String.valueOf(DistanceUtils.mToKm(distance,"#.0")));
                                 sbListModel.setCash(mObject.getString("sc_telephone"));
                                 sbListModel.setImid(mObject.getString("sc_imid"));

+ 6 - 5
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServicesActivity.java

@@ -29,8 +29,6 @@ import com.common.system.DisplayUtil;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.base.OABaseActivity;
-import com.core.net.location.BdLocationHelper;
-import com.core.utils.BaiduMapUtil;
 import com.core.utils.DistanceUtils;
 import com.core.widget.DrawableCenterTextView;
 import com.core.widget.view.MyGridView;
@@ -49,6 +47,9 @@ import com.modular.booking.model.ItemsSelectType1;
 import com.modular.booking.model.SBListModel;
 import com.modular.booking.model.SBMenuModel;
 import com.modular.booking.widget.ObservableScrollView;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.model.UASLocation;
+import com.uas.applocation.utils.LocationDistanceUtils;
 import com.youth.banner.Banner;
 import com.youth.banner.loader.ImageLoader;
 
@@ -384,7 +385,7 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
 
     public void loadSeachData(String distance, final int pageSize) {
         showLoading();
-        BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
+        UASLocation helper = UasLocationHelper.getInstance().getUASLocation();
         //distance, type, longitude, latitude, pageIndex, token
         HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).isDebug(true).build();
         httpClient.Api().send(new HttpClient.Builder()
@@ -428,7 +429,7 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
                                 sbListModel.setLongitude(sc_longitude);
                                 sbListModel.setIntroduce(mObject.getString("sc_introduce"));
                                 LatLng latLng = new LatLng(Double.valueOf(sc_latitude), Double.valueOf(sc_longitude));
-                                float distance = BaiduMapUtil.getInstence().autoDistance(latLng);
+                                float distance = LocationDistanceUtils.distanceMe(latLng);
                                 sbListModel.setDistance(String.valueOf(DistanceUtils.mToKm(distance, "#.0")));
                                 sbListModel.setCash(mObject.getString("sc_telephone"));
                                 sbListModel.setImid(mObject.getString("sc_imid"));
@@ -496,7 +497,7 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
                                 sbListModel.setLongitude(sc_longitude);
                                 sbListModel.setIntroduce(mObject.getString("sc_introduce"));
                                 LatLng latLng = new LatLng(Double.valueOf(sc_latitude), Double.valueOf(sc_longitude));
-                                float distance = BaiduMapUtil.getInstence().autoDistance(latLng);
+                                float distance = LocationDistanceUtils.distanceMe(latLng);
                                 sbListModel.setDistance(String.valueOf(DistanceUtils.mToKm(distance, "#.0")));
                                 sbListModel.setCash(mObject.getString("sc_telephone"));
                                 sbListModel.setImid(mObject.getString("sc_imid"));

+ 1 - 2
app_modular/appcontact/build.gradle

@@ -22,6 +22,5 @@ dependencies {
     compile fileTree(include: ['*.jar'], dir: 'libs')
     testCompile deps.junit
     compile deps.appcompatV7
-    compile project(':common')
-    compile project(':network')
+    compile project(path: ':apputils')
 }

+ 4 - 4
app_modular/appcontact/src/main/java/com/uas/appcontact/adapter/UserAdapter.java

@@ -11,10 +11,10 @@ import android.widget.TextView;
 import com.baidu.mapapi.model.LatLng;
 import com.baidu.mapapi.utils.DistanceUtil;
 import com.common.ui.ViewHolder;
-import com.core.app.MyApplication;
 import com.core.model.User;
 import com.core.utils.helper.AvatarHelper;
 import com.uas.appcontact.R;
+import com.uas.applocation.UasLocationHelper;
 
 import java.text.DecimalFormat;
 import java.util.List;
@@ -67,9 +67,9 @@ public class UserAdapter extends BaseAdapter {
 			longitude = user.getLoginLog().getLongitude();
 		}
 		
-		if (MyApplication.getInstance().getBdLocationHelper().getLatitude() != 0 && MyApplication.getInstance().getBdLocationHelper().getLongitude() != 0) {
-			latitude_end = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-			longitude_end = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+		if (UasLocationHelper.getInstance().getUASLocation().getLatitude() != 0 && UasLocationHelper.getInstance().getUASLocation().getLongitude() != 0) {
+			latitude_end = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+			longitude_end = UasLocationHelper.getInstance().getUASLocation().getLongitude();
 		}
 		if (latitude != 0 && longitude != 0 && latitude_end != 0 && longitude_end != 0) {
 			LatLng point_start = new LatLng(latitude, longitude);

+ 5 - 3
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/AutoCreateChatFragment.java

@@ -63,6 +63,8 @@ import com.core.app.AppConstant;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.uas.appcontact.R;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.model.UASLocation;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -579,9 +581,9 @@ public class AutoCreateChatFragment extends EasyFragment {
                 params.put("areaId", String.valueOf(area.getId()));// 城市Id
             }
         }
-
-        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        UASLocation mUASLocation = UasLocationHelper.getInstance().getUASLocation();
+        double latitude = mUASLocation.getLatitude();
+        double longitude =mUASLocation.getLongitude();
         if (latitude != 0)
             params.put("latitude", String.valueOf(latitude));
         if (longitude != 0)

+ 1 - 1
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactsFragment.java

@@ -41,10 +41,10 @@ import com.core.utils.sortlist.SideBar;
 import com.core.widget.CustomProgressDialog;
 import com.core.widget.VoiceSearchView;
 import com.core.widget.listener.EditChangeListener;
+import com.modular.apputils.manager.ContactsManager;
 import com.uas.appcontact.R;
 import com.uas.appcontact.adapter.FriendSortAdapter;
 import com.uas.appcontact.listener.ImStatusListener;
-import com.uas.appcontact.manager.ContactsManager;
 import com.uas.appcontact.ui.activity.CommonFragmentActivity;
 import com.uas.appcontact.ui.activity.CompanyContactsActivity;
 import com.uas.appcontact.ui.activity.ContactsActivity;

+ 1 - 0
app_modular/applocation/.gitignore

@@ -0,0 +1 @@
+/build

+ 2 - 0
app_modular/applocation/README.md

@@ -0,0 +1,2 @@
+## AppLocation
+#### 控制定位的modular

+ 25 - 0
app_modular/applocation/build.gradle

@@ -0,0 +1,25 @@
+apply plugin: 'com.android.library'
+
+android {
+
+    compileSdkVersion rootProject.ext.android.compileSdkVersion
+    buildToolsVersion rootProject.ext.android.buildToolsVersion
+    defaultConfig {
+        minSdkVersion rootProject.ext.android.minSdkVersion
+        targetSdkVersion rootProject.ext.android.targetSdkVersion
+        versionCode rootProject.ext.android.versionCode
+        versionName rootProject.ext.android.versionName
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+}
+
+dependencies {
+    compile fileTree(include: ['*.jar'], dir: 'libs')
+    compile deps.appcompatV7
+    compile project(':network')
+}

+ 0 - 0
app_core/common/libs/BaiduLBS_Android.jar → app_modular/applocation/libs/BaiduLBS_Android.jar


+ 21 - 0
app_modular/applocation/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 8 - 0
app_modular/applocation/src/main/AndroidManifest.xml

@@ -0,0 +1,8 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    package="com.uas.applocation" >
+
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS"
+        tools:ignore="ProtectedPermissions" />
+</manifest>

+ 19 - 0
app_modular/applocation/src/main/java/com/uas/applocation/Interface/OnBaiduPoiListener.java

@@ -0,0 +1,19 @@
+package com.uas.applocation.Interface;
+
+import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
+import com.baidu.mapapi.search.poi.PoiDetailResult;
+import com.baidu.mapapi.search.poi.PoiIndoorResult;
+
+public abstract   class OnBaiduPoiListener implements OnGetPoiSearchResultListener {
+
+
+    @Override
+    public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
+
+    }
+
+    @Override
+    public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
+
+    }
+}

+ 7 - 0
app_modular/applocation/src/main/java/com/uas/applocation/Interface/OnLocationListener.java

@@ -0,0 +1,7 @@
+package com.uas.applocation.Interface;
+
+import com.uas.applocation.model.UASLocation;
+
+public interface OnLocationListener {
+    void onReceiveLocation(UASLocation mUASLocation);
+}

+ 9 - 0
app_modular/applocation/src/main/java/com/uas/applocation/Interface/OnSearchLocationListener.java

@@ -0,0 +1,9 @@
+package com.uas.applocation.Interface;
+
+import com.uas.applocation.model.UASLocation;
+
+import java.util.List;
+
+public interface OnSearchLocationListener {
+    void onCallBack(boolean isSuccess, List<UASLocation> locations);
+}

+ 95 - 0
app_modular/applocation/src/main/java/com/uas/applocation/UasLocationHelper.java

@@ -0,0 +1,95 @@
+package com.uas.applocation;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.v4.content.LocalBroadcastManager;
+
+import com.uas.applocation.Interface.OnLocationListener;
+import com.uas.applocation.base.BDLocationManager;
+import com.uas.applocation.base.BaseLocationManager;
+import com.uas.applocation.base.NativeLocationManager;
+import com.uas.applocation.model.UASLocation;
+import com.uas.applocation.utils.AreaUtils;
+
+import static com.uas.applocation.model.UASLocation.TYPE_BAIDU;
+import static com.uas.applocation.model.UASLocation.TYPE_NATIVE;
+
+public class UasLocationHelper implements BaseLocationManager {
+
+    public static final String ACTION_LOCATION_CHANGE = "action_location_Change";//位置改变发送广播
+    private static UasLocationHelper instance;
+    private final Intent broadcast = new Intent(ACTION_LOCATION_CHANGE);//更新后广播
+    private Context ct;
+    private BaseLocationManager mLocationHelper = null;
+
+    public static UasLocationHelper getInstance() {
+        if (instance == null) {
+            synchronized (UasLocationHelper.class) {
+                if (instance == null) {
+                    instance = new UasLocationHelper();
+                }
+            }
+        }
+        return instance;
+    }
+
+
+    public BaseLocationManager getLocationManager() {
+        return mLocationHelper;
+    }
+
+    public void initConfig(Context ct) {
+        if (ct != null) {
+            this.ct = ct.getApplicationContext();
+        }
+        switch (AreaUtils.getLocationServiceType()) {
+            case TYPE_BAIDU:
+                mLocationHelper = new BDLocationManager(this.ct);
+                break;
+            case TYPE_NATIVE:
+                mLocationHelper = new NativeLocationManager(this.ct);
+                break;
+        }
+    }
+
+
+    @Override
+    public void release() {
+        if (mLocationHelper != null) {
+            mLocationHelper.release();
+        }
+    }
+
+    @Override
+    public boolean isLocationUpdate() {
+        return mLocationHelper == null ? false : mLocationHelper.isLocationUpdate();
+    }
+
+    public void requestLocation() {
+        requestLocation(null);
+    }
+
+    /**
+     * @param mOnLocationListener 当外界传进来时候,不会走通用广播
+     */
+    @Override
+    public void requestLocation(OnLocationListener mOnLocationListener) {
+        if (mLocationHelper != null) {
+            mLocationHelper.requestLocation(mOnLocationListener == null ? this.mOnLocationListener : mOnLocationListener);
+        }
+    }
+
+    @Override
+    public UASLocation getUASLocation() {
+        return mLocationHelper == null ? new UASLocation(UASLocation.TYPE_BAIDU) : mLocationHelper.getUASLocation();
+    }
+
+    private OnLocationListener mOnLocationListener = new OnLocationListener() {
+        @Override
+        public void onReceiveLocation(UASLocation mUASLocation) {
+            //发送广播
+            broadcast.putExtra(ACTION_LOCATION_CHANGE, mUASLocation == null ? false : mUASLocation.isLocationOk());
+            LocalBroadcastManager.getInstance(ct).sendBroadcast(broadcast);
+        }
+    };
+}

+ 166 - 0
app_modular/applocation/src/main/java/com/uas/applocation/base/BDLocationManager.java

@@ -0,0 +1,166 @@
+package com.uas.applocation.base;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.baidu.location.BDLocation;
+import com.baidu.location.BDLocationListener;
+import com.baidu.location.LocationClient;
+import com.baidu.location.LocationClientOption;
+import com.uas.applocation.Interface.OnLocationListener;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.model.UASLocation;
+import com.uas.applocation.utils.AreaUtils;
+
+public class BDLocationManager implements BaseLocationManager {
+    private final LocationClient mLocationClient;
+    private int mFaildCount;//错误次数
+    private UASLocation mUASLocation;
+    private OnLocationListener mOnLocationListener;//临时回调器
+    private boolean isUpdateLocation;
+
+    public BDLocationManager(Context ct) {
+        // 声明LocationClient类
+        mLocationClient = new LocationClient(ct);
+        mLocationClient.registerLocationListener(mLocationListener); // 注册监听函数
+        mLocationClient.setLocOption(getOptionNotGPS());
+    }
+
+    //设置配置
+    private LocationClientOption getOptionNotGPS() {
+        LocationClientOption option = getOptionByGPS();
+        option.setOpenGps(false);
+        return option;
+    }
+
+    //设置配置
+    private LocationClientOption getOptionByGPS() {
+        LocationClientOption option = new LocationClientOption();
+        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
+        option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
+        option.setScanSpan(1);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
+        option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
+        option.setOpenGps(true);//可选,默认false,设置是否使用gps
+        option.setLocationNotify(false);//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果
+        option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
+        option.setIsNeedLocationPoiList(false);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
+        option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
+        option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
+        option.setEnableSimulateGps(true);//可选,默认false,设置是否需要过滤GPS仿真结果,默认需要
+        option.setNeedDeviceDirect(false);
+        return option;
+    }
+
+
+    private BDLocationListener mLocationListener = new BDLocationListener() {
+        @Override
+        public void onReceiveLocation(BDLocation location) {
+            try {
+                int locationWhere = location.getLocationWhere();
+                if (locationWhere == BDLocation.LOCATION_WHERE_OUT_CN) {
+                    Log.i("gong","海外定位");
+                    //判断到是海外的情况下关闭百度地图manager
+                    //当再次进行初始化的时候,ct必然是有值的
+                    release();
+                    AreaUtils.type=UASLocation.TYPE_NATIVE;
+                    UasLocationHelper.getInstance().initConfig(null);
+                } else {
+                    Log.i("gong","国内定位");
+                    setLocation(location);
+                }
+            } catch (Exception e) {
+                clearLocation();
+            }
+        }
+    };
+
+    private void clearLocation() {
+        if (mUASLocation != null) {
+            mUASLocation.clear();
+        }
+    }
+
+    private void setLocation(BDLocation location) throws Exception {
+        if (location.getLocType() == BDLocation.TypeGpsLocation// GPS定位结果
+                || location.getLocType() == BDLocation.TypeNetWorkLocation//网络定位
+                || location.getLocType() == BDLocation.TypeOffLineLocation//离线定位(未验证离线定位的有效性)
+                ) {
+            //定位成功
+            mFaildCount = 0;
+            mLocationClient.stop();
+            if (mUASLocation == null) {
+                mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU);
+            } else {
+                clearLocation();
+            }
+            mUASLocation.setLocationOk(true);
+            mUASLocation.setLatitude(location.getLatitude());
+            mUASLocation.setLongitude(location.getLongitude());
+            mUASLocation.setProvince(location.getProvince());
+            mUASLocation.setCityName(location.getCity());
+            mUASLocation.setAddress(location.getAddrStr());
+            mUASLocation.setName(location.getLocationDescribe());
+            isUpdateLocation = true;
+        } else {
+            if (mUASLocation == null) {
+                mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU);
+            } else {
+                clearLocation();
+            }
+            //统一为定位失败
+            mUASLocation.setLocationOk(false);
+            String errorMessage = null;
+            if (location.getLocType() == BDLocation.TypeServerError) {
+                //服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因
+                errorMessage = "服务端网络定位失败";
+            } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
+                //网络不同导致定位失败,请检查网络是否通畅
+                errorMessage = "网络不同导致定位失败,请检查网络是否通畅";
+            } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
+                //无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机
+                errorMessage = "无法获取有效定位依据导致定位失败";
+            } else {
+                errorMessage = "未知错误";
+            }
+            mUASLocation.setRemarks(errorMessage);
+            if (mFaildCount < 3) {
+                mFaildCount++;
+                requestLocation(mOnLocationListener);
+            }
+        }
+    }
+
+
+    @Override
+    public void release() {
+        if (mLocationClient.isStarted()) {
+            mLocationClient.stop();
+        }
+    }
+
+
+    @Override
+    public void requestLocation(OnLocationListener mOnLocationListener) {
+        if (mOnLocationListener != null) {
+            this.mOnLocationListener = mOnLocationListener;
+        }
+        if (mLocationClient == null) return;
+        isUpdateLocation = false;
+        if (!mLocationClient.isStarted()) {
+            mFaildCount = 0;
+            mLocationClient.start();
+        } else {
+            mLocationClient.requestLocation();
+        }
+    }
+
+    @Override
+    public boolean isLocationUpdate() {
+        return isUpdateLocation;
+    }
+
+    @Override
+    public UASLocation getUASLocation() {
+        return mUASLocation == null ? mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU) : mUASLocation;
+    }
+}

+ 33 - 0
app_modular/applocation/src/main/java/com/uas/applocation/base/BaseLocationManager.java

@@ -0,0 +1,33 @@
+package com.uas.applocation.base;
+
+import com.uas.applocation.Interface.OnLocationListener;
+import com.uas.applocation.model.UASLocation;
+
+public interface BaseLocationManager {
+    /**
+     *关闭定位
+     */
+    void release();
+
+    /**
+     * 是否已经更新
+     *
+     * @return
+     */
+    boolean isLocationUpdate();
+
+    /**
+     * 重新刷新定位
+     *
+     * @param mOnLocationListener
+     */
+    void requestLocation(OnLocationListener mOnLocationListener);
+
+    /**
+     * 获取位置信息
+     *
+     * @return
+     */
+    UASLocation getUASLocation();
+
+}

+ 370 - 0
app_modular/applocation/src/main/java/com/uas/applocation/base/NativeLocationManager.java

@@ -0,0 +1,370 @@
+package com.uas.applocation.base;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.location.Address;
+import android.location.Criteria;
+import android.location.Geocoder;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.LocationProvider;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.support.v4.app.ActivityCompat;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baidu.mapapi.model.LatLng;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.Result2Listener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.uas.applocation.Interface.OnLocationListener;
+import com.uas.applocation.Interface.OnSearchLocationListener;
+import com.uas.applocation.R;
+import com.uas.applocation.model.UASLocation;
+import com.uas.applocation.utils.CoordinateUtils;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * 本地定位,只负责定位
+ */
+public class NativeLocationManager implements BaseLocationManager {
+    private final Logger MLOGGER = Logger.getLogger("NativeLocationManager");
+
+    private static final String TAG = "NativeLocationManager";
+    private UASLocation mUASLocation;
+    private OnLocationListener mOnLocationListener;//临时回调器
+    private boolean isUpdateLocation;
+    private LocationManager mLocationManager;
+    private Context ct;
+    private HttpClient mHttpClient;
+
+    public NativeLocationManager(Context ct) {
+        if (ct != null) {
+            this.ct = ct.getApplicationContext();
+            mLocationManager = (LocationManager) ct.getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
+        }
+    }
+
+
+    /**
+     * 获取定位条件
+     *
+     * @param locationManager
+     * @return
+     */
+    private String getWellProvider(LocationManager locationManager) {
+        Criteria criteria = new Criteria();
+        criteria.setAccuracy(Criteria.ACCURACY_COARSE);//低精度,如果设置为高精度,依然获取不了location。
+        criteria.setAltitudeRequired(false);//不要求海拔
+        criteria.setBearingRequired(false);//不要求方位
+        criteria.setCostAllowed(true);//允许有花费流量
+        criteria.setPowerRequirement(Criteria.POWER_HIGH);//低功耗
+        String provider = locationManager.getBestProvider(criteria, true); // true 代表从打开的设备中查找
+        List<String> providerList = locationManager.getProviders(true);
+        // 测试一般都在室内,这里颠倒了书上的判断顺序
+        if (providerList.contains(LocationManager.NETWORK_PROVIDER)) {
+            provider = LocationManager.NETWORK_PROVIDER;
+        } else if (providerList.contains(LocationManager.GPS_PROVIDER)) {
+            provider = LocationManager.GPS_PROVIDER;
+        }
+        return provider;
+    }
+
+    public void setLocation(Address address) {
+        if (mUASLocation == null) {
+            mUASLocation = new UASLocation(UASLocation.TYPE_NATIVE);
+        } else {
+            clearLocation();
+        }
+        mUASLocation.setLocationOk(true);
+        mUASLocation.setProvince(address.getLocality());
+        mUASLocation.setCityName(address.getSubAdminArea());
+        mUASLocation.setCountry(address.getCountryName());
+        mUASLocation.setName(address.getFeatureName());
+        mUASLocation.setDistrict(address.getThoroughfare());
+        mUASLocation.setAddress(address.getAddressLine(0));
+        LatLng latlng = CoordinateUtils.common2Baidu(new LatLng(address.getLatitude(), address.getLongitude()));
+//         latlng = CoordinateUtils.common2Baidu(new LatLng(33.144513, 103.910688));
+        mUASLocation.setLatitude(latlng.latitude);
+        mUASLocation.setLongitude(latlng.longitude);
+        if (mOnLocationListener != null) {
+            mOnLocationListener.onReceiveLocation(mUASLocation);
+        }
+        release();
+    }
+
+    private void clearLocation() {
+        if (mUASLocation != null) {
+            mUASLocation.clear();
+        }
+    }
+
+    @Override
+    public void release() {
+        mLocationManager.removeUpdates(locationListener);
+    }
+
+
+    @Override
+    public void requestLocation(OnLocationListener mOnLocationListener) {
+        if (mLocationManager == null || ActivityCompat.checkSelfPermission(ct, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(ct, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+            return;
+        }
+        this.mOnLocationListener = mOnLocationListener;
+        isUpdateLocation = false;
+        String provider = getWellProvider(mLocationManager);
+        //获取最后一次定位
+//        Location location = locationManager.getLastKnownLocation(provider);
+        //刷新定位
+        mLocationManager.requestLocationUpdates(provider, 10000, 0, locationListener);
+    }
+
+    @Override
+    public boolean isLocationUpdate() {
+        return isUpdateLocation;
+    }
+
+    @Override
+    public UASLocation getUASLocation() {
+        return mUASLocation == null ? mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU) : mUASLocation;
+    }
+
+
+    private LocationListener locationListener = new LocationListener() {
+        //当位置改变的时候调用
+        @Override
+        public void onLocationChanged(Location location) {
+            //经度
+            double longitude = location.getLongitude();
+            //纬度
+            double latitude = location.getLatitude();
+            //海拔
+            double altitude = location.getAltitude();
+            Geocoder gc = new Geocoder(ct, Locale.getDefault());
+            List<Address> locationList = null;
+            try {
+                locationList = gc.getFromLocation(latitude, longitude, 1000);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            if (locationList != null && locationList.size() > 0) {
+                isUpdateLocation = true;
+                Address address = locationList.get(0);//得到Address实例
+                setLocation(address);
+            }
+        }
+
+        //当GPS状态发生改变的时候调用
+        @Override
+        public void onStatusChanged(String provider, int status, Bundle extras) {
+            String message = null;
+            switch (status) {
+                case LocationProvider.AVAILABLE:
+                    message = "当前GPS为可用状态!";
+                    break;
+                case LocationProvider.OUT_OF_SERVICE:
+                    message = "当前GPS不在服务内!";
+                    break;
+
+                case LocationProvider.TEMPORARILY_UNAVAILABLE:
+                    message = "当前GPS为暂停服务状态!";
+                    break;
+            }
+            Log.i(TAG, "message=" + message);
+        }
+
+        //GPS开启的时候调用
+        @Override
+        public void onProviderEnabled(String provider) {
+
+        }
+
+        //GPS关闭的时候调用
+        @Override
+        public void onProviderDisabled(String provider) {
+        }
+    };
+
+
+    private HttpClient getHttpClient() {
+        if (mHttpClient == null) {
+            mHttpClient = new HttpClient.Builder("https://maps.googleapis.com/maps/api/place/").isDebug(false)
+                    .connectTimeout(5000)
+                    .readTimeout(5000).build();
+        }
+        return mHttpClient;
+    }
+
+
+    /**
+     * 获取当前位置附近位置
+     *
+     * @param ct
+     * @param latitude
+     * @param longitude
+     * @param mOnSearchLocationListener
+     */
+    public void loadNativeByNeer(final Context ct, double latitude, double longitude, float radius, final OnSearchLocationListener mOnSearchLocationListener) {
+        HttpClient request = new HttpClient.Builder()
+                .url("nearbysearch/json")
+                .isDebug(true)
+                .add("location", latitude + "," + longitude)
+                .add("radius", radius)
+                .add("keyword", "公司")
+                .add("output", "json")
+                .method(Method.GET)
+                .add("key", ct.getString(R.string.app_google_key))
+                .build();
+        getHttpClient().Api().send(request, new ResultSubscriber<>(new Result2Listener<Object>() {
+            @Override
+            public void onResponse(Object s) {
+                try {
+                    JSONObject object = JSON.parseObject(s.toString());
+                    if (object != null
+                            && object.containsKey("status") && "OK".equals(object.getString("status").toUpperCase())
+                            && object.containsKey("results") && mOnSearchLocationListener != null) {
+                        handlerNeer(object.getJSONArray("results"), mOnSearchLocationListener);
+                    }
+                    MLOGGER.log(Level.INFO, s.toString());
+                } catch (Exception e) {
+
+                }
+            }
+
+            @Override
+            public void onFailure(Object t) {
+                MLOGGER.log(Level.INFO, t.toString());
+            }
+        }));
+    }
+
+
+    /**
+     * 由于google收费,必须限制每天使用量
+     * 流程:
+     * 1.第一次进入直接进行搜索
+     */
+    private String lastKey;
+    private boolean isWhating, isResulting = false;
+    private Handler mWhatHandler = new Handler(Looper.getMainLooper());
+
+    private void startWhat(final Context ct, final OnSearchLocationListener mOnSearchLocationListener) {
+        if (!isWhating) {
+            isWhating = true;
+            mWhatHandler.postAtTime(new Runnable() {
+                @Override
+                public void run() {
+                    isWhating = false;
+                    loadByInput(ct, null, lastKey, mOnSearchLocationListener);
+                }
+            }, 1000);
+        }
+    }
+
+    /**
+     * 通过输入进行搜索
+     *
+     * @param ct
+     * @param city
+     * @param keyWord
+     * @param mOnSearchLocationListener
+     */
+    public void loadByInput(Context ct, String city, String keyWord, final OnSearchLocationListener mOnSearchLocationListener) {
+        if (ct == null || mOnSearchLocationListener == null)
+            return;
+
+        this.lastKey = keyWord;
+        if (isWhating || isResulting) {
+            startWhat(ct, mOnSearchLocationListener);
+            return;
+        }
+        isResulting = true;
+        HttpClient.Builder requestBuilder = new HttpClient.Builder()
+                .isDebug(true)
+                .url("textsearch/json")
+                .add("query", keyWord)
+//                .add("region", city)//城市
+                .method(Method.GET)
+                .add("key", ct.getString(R.string.app_google_key));
+        HttpClient request = requestBuilder.build();
+        MLOGGER.log(Level.INFO, "发送请求");
+        getHttpClient().Api().send(request, new ResultSubscriber<>(new Result2Listener<Object>() {
+            @Override
+            public void onResponse(Object s) {
+                try {
+                    JSONObject object = JSON.parseObject(s.toString());
+                    if (object != null
+                            && object.containsKey("status") && "OK".equals(object.getString("status").toUpperCase())
+                            && object.containsKey("results") && mOnSearchLocationListener != null) {
+                        handlerNeer(object.getJSONArray("results"), mOnSearchLocationListener);
+                    }
+                    MLOGGER.log(Level.INFO, s.toString());
+                } catch (Exception e) {
+
+                } finally {
+                    isResulting = false;
+                }
+            }
+
+            @Override
+            public void onFailure(Object t) {
+                MLOGGER.log(Level.INFO, t.toString());
+            }
+        }));
+    }
+
+
+    private void handlerNeer(JSONArray array, OnSearchLocationListener mOnSearchLocationListener) throws Exception {
+        JSONObject object;
+        UASLocation mUASLocation;
+        List<UASLocation> mUASLocations = new ArrayList<>();
+        for (int i = 0; i < array.size(); i++) {
+            object = array.getJSONObject(i);
+            mUASLocation = new UASLocation(UASLocation.TYPE_NATIVE);
+            String name = object.getString("name");
+            String address = null;
+            if (object.containsKey("vicinity")) {
+                address = object.getString("vicinity");
+            }
+            if (TextUtils.isEmpty(address) && object.containsKey("formatted_address")) {
+                address = object.getString("formatted_address");
+            }
+//            String province = object.getString("province");
+            String city = object.getString("city");//TODO 城市
+//            String area = object.getString("area");
+            mUASLocation.setName(name);
+            mUASLocation.setAddress(address);
+            mUASLocation.setCityName(city);
+            JSONObject geometry = object.getJSONObject("geometry");
+            if (geometry != null) {
+                JSONObject location = geometry.getJSONObject("location");
+                if (location != null) {
+                    float lat = location.getFloat("lat");
+                    float lng = location.getFloat("lng");
+                    if (lat > 0 && lng > 0) {
+                        mUASLocation.setLatitude(lat);
+                        mUASLocation.setLongitude(lng);
+                    }
+                }
+            }
+            mUASLocations.add(mUASLocation);
+        }
+        mOnSearchLocationListener.onCallBack(true, mUASLocations);
+    }
+
+
+}

+ 203 - 0
app_modular/applocation/src/main/java/com/uas/applocation/model/UASLocation.java

@@ -0,0 +1,203 @@
+package com.uas.applocation.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.baidu.mapapi.model.LatLng;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class UASLocation implements Parcelable {
+    public static final int TYPE_BAIDU = 1;
+    public static final int TYPE_NATIVE = 2;
+
+    private boolean locationOk;
+    private int type;//采用定位类型
+    private double latitude;//纬度
+    private double longitude;//经度
+    private double gpsLatitude;//原始经纬度
+    private double gpsLongitude;//原始经纬度
+    private String country;// 国家
+    private String province;// 省份
+    private String cityName;// 城市
+    private String district;// 街道
+    private String name;//位置信息
+    private String address;//详细地址
+    private String remarks;//备注
+
+    public UASLocation(int type) {
+        this.type = type;
+    }
+
+
+    @Override
+    public String toString() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("locationOk", locationOk);
+        map.put("type", type);
+        map.put("latitude", latitude);
+        map.put("longitude", longitude);
+        map.put("gpsLatitude", gpsLatitude);
+        map.put("gpsLongitude", gpsLongitude);
+        map.put("country", country);
+        map.put("province", province);
+        map.put("cityName", cityName);
+        map.put("district", district);
+        map.put("name", name);
+        map.put("address", address);
+        map.put("remarks", remarks);
+        return map.toString();
+    }
+
+    protected UASLocation(Parcel in) {
+        locationOk = in.readInt() == 1;
+        type = in.readInt();
+        latitude = in.readDouble();
+        longitude = in.readDouble();
+        gpsLatitude = in.readDouble();
+        gpsLongitude = in.readDouble();
+        country = in.readString();
+        province = in.readString();
+        cityName = in.readString();
+        district = in.readString();
+        name = in.readString();
+        address = in.readString();
+        remarks = in.readString();
+    }
+
+    public static final Creator<UASLocation> CREATOR = new Creator<UASLocation>() {
+        @Override
+        public UASLocation createFromParcel(Parcel in) {
+            return new UASLocation(in);
+        }
+
+        @Override
+        public UASLocation[] newArray(int size) {
+            return new UASLocation[size];
+        }
+    };
+
+    public boolean isLocationOk() {
+        return locationOk;
+    }
+
+    public void setLocationOk(boolean locationOk) {
+        this.locationOk = locationOk;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    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 String getCountry() {
+        return country;
+    }
+
+    public void setCountry(String country) {
+        this.country = country;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCityName() {
+        return cityName;
+    }
+
+    public void setCityName(String cityName) {
+        this.cityName = cityName;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel parcel, int i) {
+        parcel.writeInt(locationOk ? 1 : 0);
+        parcel.writeInt(type);
+        parcel.writeDouble(latitude);
+        parcel.writeDouble(longitude);
+        parcel.writeDouble(gpsLatitude);
+        parcel.writeDouble(gpsLongitude);
+        parcel.writeString(country);
+        parcel.writeString(province);
+        parcel.writeString(cityName);
+        parcel.writeString(district);
+        parcel.writeString(name);
+        parcel.writeString(address);
+        parcel.writeString(remarks);
+    }
+
+    public void clear() {
+        locationOk = false;
+        longitude = latitude = gpsLongitude = gpsLatitude = -1;
+        remarks = name = address = district = cityName = province = country = "";
+    }
+
+    public LatLng getLocation() {
+        return new LatLng(latitude, longitude);
+    }
+}
+
+
+

+ 16 - 0
app_modular/applocation/src/main/java/com/uas/applocation/utils/AreaUtils.java

@@ -0,0 +1,16 @@
+package com.uas.applocation.utils;
+
+import com.uas.applocation.model.UASLocation;
+
+/**
+ * 判读当前所在的地区
+ */
+public class AreaUtils {
+    public static int type=UASLocation.TYPE_BAIDU;
+
+    public static int getLocationServiceType() {
+        return type;
+    }
+
+
+}

+ 40 - 0
app_modular/applocation/src/main/java/com/uas/applocation/utils/CoordinateUtils.java

@@ -0,0 +1,40 @@
+package com.uas.applocation.utils;
+
+import com.baidu.mapapi.model.LatLng;
+import com.baidu.mapapi.utils.CoordinateConverter;
+
+/**
+ * 坐标系转换
+ */
+public class CoordinateUtils {
+
+    /**
+     * 将制定坐标系经纬度转换成百度坐标
+     *
+     * @param sourceLatLng 原始经纬度
+     * @param var1         原始经纬度来源
+     * @return
+     */
+    public static LatLng common2Baidu(LatLng sourceLatLng, CoordinateConverter.CoordType var1) {
+        CoordinateConverter converter = new CoordinateConverter();
+        converter.from(var1);
+        // sourceLatLng待转换坐标
+        converter.coord(sourceLatLng);
+        return converter.convert();
+    }
+
+
+    public static LatLng gps2Baidu(LatLng sourceLatLng) {
+        return common2Baidu(sourceLatLng, CoordinateConverter.CoordType.GPS);
+    }
+
+    /**
+     * 别的地图sdk转成百度经纬度
+     *
+     * @param sourceLatLng
+     * @return
+     */
+    public static LatLng common2Baidu(LatLng sourceLatLng) {
+        return common2Baidu(sourceLatLng, CoordinateConverter.CoordType.COMMON);
+    }
+}

+ 96 - 0
app_modular/applocation/src/main/java/com/uas/applocation/utils/LocationDistanceUtils.java

@@ -0,0 +1,96 @@
+package com.uas.applocation.utils;
+
+import com.baidu.mapapi.model.LatLng;
+import com.baidu.mapapi.utils.DistanceUtil;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.model.UASLocation;
+
+import java.text.DecimalFormat;
+
+/**
+ * 计算距离工具类
+ */
+public class LocationDistanceUtils {
+
+    /**
+     * 判断两个经纬度之间的距离
+     *
+     * @param a
+     * @param b
+     * @return
+     */
+    public static float getDistance(LatLng a, LatLng b) {
+        try {
+            return Float.valueOf(getDistanceStr(a,b));
+        } catch (Exception e) {
+            return 0;
+        }
+    }
+
+    public static String getDistance(double a1, double a2, double b1, double b2) {
+        LatLng a = new LatLng(a1, a2);
+        LatLng b = new LatLng(b1, b2);
+        return getDistanceStr(a, b);
+    }
+
+
+    public static String getDistanceStr(LatLng a, LatLng b) {
+        double distance = Math.abs(DistanceUtil.getDistance(a, b));
+        DecimalFormat df = new DecimalFormat(".##");
+        return df.format(distance);
+    }
+
+
+    /**
+     * 判断距离我当前的距离
+     *
+     * @param a
+     * @return
+     */
+    public static float distanceMe(LatLng a) {
+        String distance = distanceMeStr(a);
+        try {
+            return Float.valueOf(distance);
+        } catch (ClassCastException e) {
+            return -1f;
+        } catch (Exception e) {
+            return -1f;
+        }
+    }
+
+    /**
+     * 获取距离,将第一个参数的经纬度反过来
+     * @param a
+     * @param b
+     * @return
+     */
+    public static float getDistanceBackFrist(LatLng a, LatLng b) {
+        try {
+            return Float.valueOf(getDistanceStr(new LatLng(a.longitude,a.latitude),b));
+        } catch (Exception e) {
+            return 0;
+        }
+    }
+    public static float distanceMeBack(LatLng a) {
+        String distance = distanceMeStr(new LatLng(a.longitude,a.latitude));
+        try {
+            return Float.valueOf(distance);
+        } catch (ClassCastException e) {
+            return -1f;
+        } catch (Exception e) {
+            return -1f;
+        }
+    }
+    public static String distanceMeStr(LatLng a) {
+        if (a == null) return "";
+        UASLocation mUASLocation = UasLocationHelper.getInstance().getUASLocation();
+        if (mUASLocation.getLatitude() == 0 || mUASLocation.getLongitude() == 0) return "";
+        try {
+            double distance = Math.abs(DistanceUtil.getDistance(a, mUASLocation.getLocation()));
+            DecimalFormat df = new DecimalFormat(".##");
+            return df.format(distance);
+        } catch (Exception e) {
+            return "";
+        }
+    }
+}

+ 169 - 0
app_modular/applocation/src/main/java/com/uas/applocation/utils/LocationNeerUtils.java

@@ -0,0 +1,169 @@
+package com.uas.applocation.utils;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.baidu.mapapi.model.LatLng;
+import com.baidu.mapapi.search.core.PoiInfo;
+import com.baidu.mapapi.search.poi.PoiCitySearchOption;
+import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
+import com.baidu.mapapi.search.poi.PoiResult;
+import com.baidu.mapapi.search.poi.PoiSearch;
+import com.baidu.mapapi.search.poi.PoiSortType;
+import com.uas.applocation.Interface.OnBaiduPoiListener;
+import com.uas.applocation.Interface.OnSearchLocationListener;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.base.BaseLocationManager;
+import com.uas.applocation.base.NativeLocationManager;
+import com.uas.applocation.model.UASLocation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LocationNeerUtils {
+
+    /**
+     * 获取当前位置周边位置信息
+     *
+     * @param ct
+     * @param radius                    范围
+     * @param pagerNum                  页数
+     * @param mOnSearchLocationListener
+     */
+    public static void loadDataByNeer(Context ct, int radius, int pagerNum, OnSearchLocationListener mOnSearchLocationListener) {
+        loadDataByNeer(ct, radius, pagerNum, null, mOnSearchLocationListener);
+    }
+
+    /**
+     * 获取指定位置周边位置信息
+     *
+     * @param ct
+     * @param radius                    范围
+     * @param pagerNum                  页数
+     * @param latLng                    指定位置点
+     * @param mOnSearchLocationListener
+     */
+    public static void loadDataByNeer(Context ct, int radius, int pagerNum, LatLng latLng, OnSearchLocationListener mOnSearchLocationListener) {
+        UASLocation local = UasLocationHelper.getInstance().getUASLocation();
+        if (latLng == null) {
+            latLng = local.getLocation();
+        }
+        if (AreaUtils.getLocationServiceType() == UASLocation.TYPE_NATIVE) {
+            BaseLocationManager mManager = UasLocationHelper.getInstance().getLocationManager();
+            if (mManager == null && !(mManager instanceof NativeLocationManager)) {
+                mManager = new NativeLocationManager(ct);
+            }
+            ((NativeLocationManager) mManager).loadNativeByNeer(ct, latLng.latitude, latLng.longitude,radius, mOnSearchLocationListener);
+        } else {
+            loadBaiduByNeer(radius, pagerNum, latLng, mOnSearchLocationListener);
+        }
+    }
+
+
+
+    //获取百度定位周边为位置点
+    private static void loadBaiduByNeer(int radius, int pagerNum, LatLng latLng, final OnSearchLocationListener mOnSearchLocationListener) {
+        PoiNearbySearchOption option = new PoiNearbySearchOption();
+        PoiSearch mPoiSearch = PoiSearch.newInstance();
+        option.keyword("公司")
+                .sortType(PoiSortType.distance_from_near_to_far)
+                .radius(radius)
+                .pageNum(pagerNum)
+                .pageCapacity(1000)
+                .location(latLng);
+        mPoiSearch.setOnGetPoiSearchResultListener(new OnBaiduPoiListener() {
+            @Override
+            public void onGetPoiResult(PoiResult poiResult) {
+                if (mOnSearchLocationListener != null) {
+                    if (poiResult != null) {
+                        List<PoiInfo> mPoiInfos = poiResult.getAllPoi();
+                        if (mPoiInfos != null && mPoiInfos.size() > 0) {
+                            List<UASLocation> locations = new ArrayList<>();
+                            UASLocation location = null;
+                            for (PoiInfo e : mPoiInfos) {
+                                location = new UASLocation(UASLocation.TYPE_BAIDU);
+                                location.setLongitude(e.location.longitude);
+                                location.setLatitude(e.location.latitude);
+                                location.setName(e.name);
+                                location.setAddress(e.address);
+                                locations.add(location);
+                            }
+                            mOnSearchLocationListener.onCallBack(true, locations);
+                        } else {
+                            mOnSearchLocationListener.onCallBack(false, null);
+                        }
+                    } else {
+                        mOnSearchLocationListener.onCallBack(false, null);
+                    }
+                }
+            }
+        });
+        mPoiSearch.searchNearby(option);
+    }
+
+
+    /**
+     * 根据数据的关键字搜索为位置点
+     *
+     * @param ct
+     * @param city                      城市
+     * @param keyWord
+     * @param pagerNum
+     * @param mOnSearchLocationListener
+     */
+    public static void searchByInput(Context ct, String city, String keyWord, int pagerNum, OnSearchLocationListener mOnSearchLocationListener) {
+        UASLocation local = UasLocationHelper.getInstance().getUASLocation();
+        if (local == null) {
+            local = new UASLocation(UASLocation.TYPE_BAIDU);
+        }
+        if (TextUtils.isEmpty(city)) {
+            city = local.getCityName();
+        }
+
+        if (AreaUtils.getLocationServiceType() == UASLocation.TYPE_NATIVE) {
+            BaseLocationManager mManager = UasLocationHelper.getInstance().getLocationManager();
+            if (mManager == null && !(mManager instanceof NativeLocationManager)) {
+                mManager = new NativeLocationManager(ct);
+            }
+            ((NativeLocationManager) mManager).loadByInput(ct,city,keyWord, mOnSearchLocationListener);
+
+        } else {
+            searchBaiduByInput(city, keyWord, pagerNum, mOnSearchLocationListener);
+        }
+    }
+
+    private static void searchBaiduByInput(String city, String location, int pagerNum, final OnSearchLocationListener mOnSearchLocationListener) {
+        try {
+            PoiSearch mPoiSearch = PoiSearch.newInstance();
+            mPoiSearch.setOnGetPoiSearchResultListener(new OnBaiduPoiListener() {
+                @Override
+                public void onGetPoiResult(PoiResult poiResult) {
+                    if (mOnSearchLocationListener != null) {
+                        if (poiResult != null && poiResult.getAllPoi() != null) {
+                            List<PoiInfo> poiLists = poiResult.getAllPoi();
+                            List<UASLocation> mUASLocations = new ArrayList<>();
+                            for (PoiInfo e : poiLists) {
+                                mUASLocations.add(ModelChangeUtils.poiInfo2Location(e));
+                            }
+                            mOnSearchLocationListener.onCallBack(true, mUASLocations);
+                        } else {
+                            mOnSearchLocationListener.onCallBack(false, null);
+                        }
+                    }
+                }
+            });
+            mPoiSearch.searchInCity((new PoiCitySearchOption())
+                    .city(city)
+                    .keyword(location)
+                    .pageNum(pagerNum)
+                    .pageCapacity(1000)
+            );
+        } catch (Exception e) {
+            if (e != null)
+                Log.i("gongpengming", "e =" + e.getMessage());
+        }
+    }
+
+
+}

+ 45 - 0
app_modular/applocation/src/main/java/com/uas/applocation/utils/ModelChangeUtils.java

@@ -0,0 +1,45 @@
+package com.uas.applocation.utils;
+
+import android.location.Address;
+
+import com.baidu.mapapi.model.LatLng;
+import com.baidu.mapapi.search.core.PoiInfo;
+import com.uas.applocation.model.UASLocation;
+
+/**
+ * 类转换工具
+ */
+public class ModelChangeUtils {
+
+    public static PoiInfo location2PoiInfo(UASLocation mUasLocation) {
+        PoiInfo mPoiInfo = new PoiInfo();
+        mPoiInfo.location = new LatLng(mUasLocation.getLatitude(), mUasLocation.getLongitude());
+        mPoiInfo.name = mUasLocation.getName();
+        mPoiInfo.address = mUasLocation.getAddress();
+        mPoiInfo.city = mUasLocation.getCityName();
+        return mPoiInfo;
+    }
+
+    public static UASLocation poiInfo2Location(PoiInfo mPoiInfo) {
+        UASLocation mUasLocation = new UASLocation(UASLocation.TYPE_BAIDU);
+        mUasLocation.setLatitude(mPoiInfo.location.latitude);
+        mUasLocation.setLongitude(mPoiInfo.location.longitude);
+        mUasLocation.setName(mPoiInfo.name);
+        mUasLocation.setAddress(mPoiInfo.address);
+        mUasLocation.setCityName(mPoiInfo.city);
+        return mUasLocation;
+    }
+
+    public static UASLocation address2Location(Address address) {
+        UASLocation mUASLocation = new UASLocation(UASLocation.TYPE_NATIVE);
+        mUASLocation.setLocationOk(true);
+        mUASLocation.setProvince(address.getLocality());
+        mUASLocation.setCityName(address.getSubAdminArea());
+        mUASLocation.setCountry(address.getCountryName());
+        mUASLocation.setName(address.getFeatureName());
+        mUASLocation.setDistrict(address.getThoroughfare());
+        mUASLocation.setAddress(address.getAddressLine(0));
+        return mUASLocation;
+    }
+
+}

+ 0 - 0
app_core/common/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_base_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_base_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_cloud_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_cloud_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_map_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_map_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_radar_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_radar_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_search_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_search_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_util_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_util_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi/libBaiduMapSDK_base_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_base_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi/libBaiduMapSDK_cloud_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_cloud_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi/libBaiduMapSDK_map_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_map_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi/libBaiduMapSDK_radar_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_radar_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi/libBaiduMapSDK_search_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_search_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/armeabi/libBaiduMapSDK_util_v4_0_0.so → app_modular/applocation/src/main/jniLibs/armeabi/libBaiduMapSDK_util_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86/libBaiduMapSDK_base_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_base_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86/libBaiduMapSDK_cloud_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_cloud_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86/libBaiduMapSDK_map_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_map_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86/libBaiduMapSDK_radar_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_radar_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86/libBaiduMapSDK_search_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_search_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86/libBaiduMapSDK_util_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86/libBaiduMapSDK_util_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86_64/libBaiduMapSDK_base_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_base_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86_64/libBaiduMapSDK_cloud_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_cloud_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86_64/libBaiduMapSDK_map_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_map_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86_64/libBaiduMapSDK_radar_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_radar_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86_64/libBaiduMapSDK_search_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_search_v4_0_0.so


+ 0 - 0
app_core/common/src/main/jniLibs/x86_64/libBaiduMapSDK_util_v4_0_0.so → app_modular/applocation/src/main/jniLibs/x86_64/libBaiduMapSDK_util_v4_0_0.so


+ 5 - 0
app_modular/applocation/src/main/res/values/strings.xml

@@ -0,0 +1,5 @@
+<resources>
+    <string name="app_baidu_key">KxANrz9HRWVqGGCm2cN8mXarpW0bBuYA</string>
+    <string name="app_baidu_code">68:91:E0:F4:A6:F4:04:B1:9D:BB:DF:28:01:C0:E6:BE:CF:E0:76:B6;com.xzjmyk.pm.activity</string>
+    <string name="app_google_key">AIzaSyAJoROLiGmtN55UTmZayOxZhBoxcLXL_LA</string>
+</resources>

+ 5 - 4
app_modular/applogin/src/main/java/com/modular/login/activity/LoginActivity.java

@@ -35,6 +35,7 @@ import com.core.utils.ToastUtil;
 import com.core.utils.helper.AvatarHelper;
 import com.core.utils.helper.LoginHelper;
 import com.modular.login.R;
+import com.uas.applocation.UasLocationHelper;
 
 import java.util.HashMap;
 
@@ -74,8 +75,8 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
         super.onResume();
 
         requestPermission(Manifest.permission.READ_PHONE_STATE, null, null);
-        if (!MyApplication.getInstance().getBdLocationHelper().isLocationUpdate()) {
-            MyApplication.getInstance().getBdLocationHelper().requestLocation();
+        if (!UasLocationHelper.getInstance().isLocationUpdate()) {
+            UasLocationHelper.getInstance().requestLocation();
         }
         if (ViewUtil.mdProcessDialog != null) {
             ViewUtil.mdProcessDialog.cancel();
@@ -198,8 +199,8 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
         params.put("osVersion", SystemUtil.getOsVersion());
         params.put("serial", SystemUtil.getDeviceId(MyApplication.getInstance()));
         // 地址信息
-        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        double latitude = UasLocationHelper.getInstance().getUASLocation().getLatitude();
+        double longitude = UasLocationHelper.getInstance().getUASLocation().getLongitude();
         if (latitude != 0)
             params.put("latitude", String.valueOf(latitude));
         if (longitude != 0)

+ 4 - 4
app_modular/appme/src/main/java/com/uas/appme/other/activity/SelectAreaActivity.java

@@ -14,9 +14,9 @@ import android.widget.TextView;
 import com.alibaba.fastjson.JSON;
 import com.common.LogUtil;
 import com.core.app.ActionBackActivity;
-import com.core.app.MyApplication;
 import com.core.widget.PinnedSectionListView;
 import com.core.xmpp.model.Area;
+import com.uas.applocation.UasLocationHelper;
 import com.uas.appme.R;
 import com.uas.appme.dao.AreasDao;
 
@@ -153,7 +153,7 @@ public class SelectAreaActivity extends ActionBackActivity {
 
 	private void updateLocationCity() {
 		Area area = null;
-		String cityName = MyApplication.getInstance().getBdLocationHelper().getCityName();
+		String cityName = UasLocationHelper.getInstance().getUASLocation().getCityName();
 		if (!TextUtils.isEmpty(cityName)) {
 			area = AreasDao.getInstance().searchByName(cityName);
 		}
@@ -171,10 +171,10 @@ public class SelectAreaActivity extends ActionBackActivity {
 	}
 
 	private void requestLocation() {
-		if (MyApplication.getInstance().getBdLocationHelper().isLocationUpdate() && !TextUtils.isEmpty(MyApplication.getInstance().getBdLocationHelper().getCityName())) {
+		if (UasLocationHelper.getInstance().isLocationUpdate() && !TextUtils.isEmpty(UasLocationHelper.getInstance().getUASLocation().getCityName())) {
 			updateLocationCity();
 		} else {
-			MyApplication.getInstance().getBdLocationHelper().requestLocation();
+			UasLocationHelper.getInstance().requestLocation();
 			mHandler.removeCallbacksAndMessages(null);
 			mHandler.postDelayed(new Runnable() {
 				@Override

+ 0 - 51
app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/TrackUtils.java

@@ -1,51 +0,0 @@
-package com.uas.appme.pedometer.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.baidu.mapapi.model.LatLng;
-import com.common.LogUtil;
-import com.common.data.ListUtils;
-import com.core.app.MyApplication;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by FANGlh on 2017/9/12.
- * function: 运行轨迹实时定位存贮,展示,上传服务器等工具类
- */
-
-public class TrackUtils  {
-
-
-    /**
-     * 定位点进行存贮在List中
-     *
-     */
-    public static void doSaveTrackPoint(){
-        List<LatLng> latLngsList = new ArrayList<>();
-        LatLng point = new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
-                MyApplication.getInstance().getBdLocationHelper().getLongitude());
-        if (!ListUtils.isEmpty(latLngsList)){
-            if (!TrackUtils.judgeSamePoint(latLngsList.get(latLngsList.size()-1),point))
-                latLngsList.add(point);
-        }else
-            latLngsList.add(point);
-
-        LogUtil.prinlnLongMsg("latLngsList", JSON.toJSONString(latLngsList)+"hi");
-    }
-
-    /**
-     * 定位获取两个点进行比较,得出是否是同一个点
-     * @param o
-     * @param n
-     * @return
-     */
-    public static boolean judgeSamePoint(LatLng o,LatLng n){
-
-        if (o.latitude == n.latitude && o.longitude == n.longitude)
-            return true; //同一个点
-        else
-            return false;
-    }
-
-}

Деякі файли не було показано, через те що забагато файлів було змінено