diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
deleted file mode 100644
index be56306..0000000
--- a/.idea/deploymentTargetDropDown.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index aa8e8fb..ce1724a 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -47,6 +47,20 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
+
+
+
+
+
+
-
-
+ android:screenOrientation="portrait" />
+
-->
-
@@ -382,11 +396,12 @@
+
+ android:exported="true" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/base/LoginActivity.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/base/LoginActivity.java
index 07ac267..34e90cf 100755
--- a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/base/LoginActivity.java
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/base/LoginActivity.java
@@ -22,6 +22,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.google.gson.Gson;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.constant.PermissionConstants;
+import com.sucstepsoft.cm_utils.core.GlobalProvider;
import com.sucstepsoft.cm_utils.core.network.update.CheckUpdateUtils;
import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
@@ -37,7 +38,6 @@ import com.sucstepsoft.txrealtimelocation.beans.AppTokenUser;
import com.sucstepsoft.txrealtimelocation.beans.BaseUserBean;
import com.sucstepsoft.txrealtimelocation.beans.LoginUser;
import com.sucstepsoft.txrealtimelocation.net.LocationApiService;
-import com.sucstepsoft.txrealtimelocation.services.GlobalProvider;
import com.sucstepsoft.txrealtimelocation.utils.AesUtil;
import com.sucstepsoft.txrealtimelocation.utils.ExceptionHandler;
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/base/MainActivity.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/base/MainActivity.java
index ea2a7fb..c1acacc 100755
--- a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/base/MainActivity.java
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/base/MainActivity.java
@@ -45,6 +45,7 @@ import com.sucstepsoft.txrealtimelocation.activitys.issue.IssueCheckActivity;
import com.sucstepsoft.txrealtimelocation.activitys.issue.MapActivity;
import com.sucstepsoft.txrealtimelocation.activitys.issue.PublicAreaActivity;
import com.sucstepsoft.txrealtimelocation.activitys.lawlib.LawLibActivity;
+import com.sucstepsoft.txrealtimelocation.activitys.locus.LocusMapActivity;
import com.sucstepsoft.txrealtimelocation.activitys.mine.MineMissionActivity;
import com.sucstepsoft.txrealtimelocation.activitys.mine.UserActivity;
import com.sucstepsoft.txrealtimelocation.activitys.notice.NoticeActivity;
@@ -115,24 +116,27 @@ public class MainActivity extends BaseActivity {
@BindView(R.id.ll_plan)
LinearLayout mLlPlan;
private String[] permissions = new String[]{
- PermissionConstants.STORAGE,
- PermissionConstants.PHONE,
- PermissionConstants.MICROPHONE,
- PermissionConstants.LOCATION
+ PermissionConstants.STORAGE,
+ PermissionConstants.PHONE,
+ PermissionConstants.MICROPHONE,
+ PermissionConstants.LOCATION
};
private static final int GPS_REQUEST_CODE = 1234;
private Unbinder mBind;
private List mFuncs = new ArrayList<>();
- private String[] mBtnStrs = new String[]{"我的企业\n(新增企业)", "企业检查", "隐患复查", "待办任务", "固定任务", "随机任务", "公共区域", "法律法规", "企业地图", "钉钉"};
+ private String[] mBtnStrs = new String[]{"我的企业\n(新增企业)", "企业检查", "隐患复查", "待办任务", "固定任务",
+ "随机任务", "公共区域", "法律法规", "企业地图", "工作轨迹", "钉钉"};
// private String[] mBtnStrs = new String[]{"企业信息", "隐患上报", "隐患复查", "我的任务", "历史任务", "法律法规"};
- private int[] mBtnIds = new int[]{R.drawable.ic_main_c_info, R.drawable.ic_main_report, R.drawable.ic_main_risk,
- R.drawable.ic_law,
- R.drawable.ic_main_mine,
- R.drawable.ic_main_history,
- R.drawable.ic_main_history,
- R.drawable.ic_main_law,
- R.drawable.ic_main_risk,
- R.drawable.ic_main_report};
+ private int[] mBtnIds = new int[]{R.drawable.ic_main_c_info, R.drawable.ic_main_report,
+ R.drawable.ic_main_risk,
+ R.drawable.ic_law,
+ R.drawable.ic_main_mine,
+ R.drawable.ic_main_history,
+ R.drawable.ic_main_history,
+ R.drawable.ic_main_law,
+ R.drawable.ic_main_risk,
+ R.drawable.ic_main_risk,
+ R.drawable.ic_main_report};
private Gson mGson = null;
private AlertDialog mGpsWeakDialog;
private MessageReceiver mReceiver;
@@ -185,72 +189,74 @@ public class MainActivity extends BaseActivity {
*/
private void getUserIsGrid() {
RetrofitManager.getInstance()
- .create(LocationApiService.class)
- .getGridInfo(UserLgUtils.getToken())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
+ .create(LocationApiService.class)
+ .getGridInfo(UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
- }
+ }
- @Override
- public void onNext(GirdPBean girdPBean) {
- if ("grid".equals(girdPBean.getPersonType())) {
- int isGridOperator = girdPBean.getIsGridOperator();
- UserLgUtils.setIndustryId(isGridOperator);
+ @Override
+ public void onNext(GirdPBean girdPBean) {
+ if ("grid".equals(girdPBean.getPersonType())) {
+ int isGridOperator = girdPBean.getIsGridOperator();
+ UserLgUtils.setIndustryId(isGridOperator);
- } else {
- UserLgUtils.setIndustryId(-1);
- Iterator iterator = mFuncs.iterator();
- while (iterator.hasNext()) {
- FuncBean bean = iterator.next();
- if ("隐患复查".equals(bean.getText())) {
- iterator.remove();
+ } else {
+ UserLgUtils.setIndustryId(-1);
+ Iterator iterator = mFuncs.iterator();
+ while (iterator.hasNext()) {
+ FuncBean bean = iterator.next();
+ if ("隐患复查".equals(bean.getText())) {
+ iterator.remove();
+ }
+ }
+ mFunctionNumAdapter.setData(mFuncs);
+ }
+ UserLgUtils.setPersonType(girdPBean.getPersonType());
+ String page = getIntent().getStringExtra("page");
+ String serviceId = getIntent().getStringExtra("id");
+
+ if (!TextUtils.isEmpty(page)) {
+ switch (page) {
+ case "GO_CHECK2_INFO"://历史案件页面
+ startActivity(new Intent(mActivity, HistoryListActivity.class));
+ break;
+ case "GO_CHECK2_COMPLETE"://待办任务完成
+ if (!TextUtils.isEmpty(serviceId)) {
+ String[] split = serviceId.split(":");
+ Intent intent = new Intent(mActivity,
+ CaseCheckOptionsDetailActivity.class);
+ intent.putExtra("checkId", split[1]);
+ startActivity(intent);
+ }
+ break;
+ case "GO_CHECK2_HANDLE"://待办案件未完成
+ if (!TextUtils.isEmpty(serviceId)) {
+ String[] split = serviceId.split(":");
+ Intent intent = new Intent(mActivity,
+ CaseCheckOptionsActivity.class);
+ intent.putExtra("checkId", split[1]);
+ startActivity(intent);
+ }
+ break;
}
}
- mFunctionNumAdapter.setData(mFuncs);
}
- UserLgUtils.setPersonType(girdPBean.getPersonType());
- String page = getIntent().getStringExtra("page");
- String serviceId = getIntent().getStringExtra("id");
- if (!TextUtils.isEmpty(page)) {
- switch (page) {
- case "GO_CHECK2_INFO"://历史案件页面
- startActivity(new Intent(mActivity, HistoryListActivity.class));
- break;
- case "GO_CHECK2_COMPLETE"://待办任务完成
- if (!TextUtils.isEmpty(serviceId)) {
- String[] split = serviceId.split(":");
- Intent intent = new Intent(mActivity, CaseCheckOptionsDetailActivity.class);
- intent.putExtra("checkId", split[1]);
- startActivity(intent);
- }
- break;
- case "GO_CHECK2_HANDLE"://待办案件未完成
- if (!TextUtils.isEmpty(serviceId)) {
- String[] split = serviceId.split(":");
- Intent intent = new Intent(mActivity, CaseCheckOptionsActivity.class);
- intent.putExtra("checkId", split[1]);
- startActivity(intent);
- }
- break;
- }
+ @Override
+ public void onError(Throwable e) {
+ UserLgUtils.setIndustryId(-1);
}
- }
- @Override
- public void onError(Throwable e) {
- UserLgUtils.setIndustryId(-1);
- }
+ @Override
+ public void onComplete() {
- @Override
- public void onComplete() {
-
- }
- });
+ }
+ });
}
private void startLocation() {
@@ -276,14 +282,14 @@ public class MainActivity extends BaseActivity {
*/
private void showNotifySettingPage() {
new android.app.AlertDialog.Builder(MainActivity.this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle("提示")
- .setMessage("为了您能正常接收到系统消息通知,请前往设置页面,将App通知权限开启.")
- .setNegativeButton("取消", null)
- .setPositiveButton("立即前往", (dialogInterface, i) -> {
- NotificationUtils.toSettingPage(getApplicationContext());
- })
- .show();
+ .setIcon(android.R.drawable.ic_dialog_info)
+ .setTitle("提示")
+ .setMessage("为了您能正常接收到系统消息通知,请前往设置页面,将App通知权限开启.")
+ .setNegativeButton("取消", null)
+ .setPositiveButton("立即前往", (dialogInterface, i) -> {
+ NotificationUtils.toSettingPage(getApplicationContext());
+ })
+ .show();
}
@@ -347,6 +353,9 @@ public class MainActivity extends BaseActivity {
case "随机任务":
intent = new Intent(this, RandomMissionActivity.class);
break;
+ case "工作轨迹":
+ intent= new Intent(this, LocusMapActivity.class);
+ break;
}
if (intent != null) {
startActivity(intent);
@@ -369,11 +378,11 @@ public class MainActivity extends BaseActivity {
}
mTvUserName.setText(UserLgUtils.getName() + " 个人中心");
Glide.with(mActivity)
- .load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar())
- .apply(RequestOptions.bitmapTransform(new CircleCrop())
- .error(R.drawable.ic_user_default)
- .placeholder(R.drawable.ic_user_default))
- .into(mIvUserIcon);
+ .load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar())
+ .apply(RequestOptions.bitmapTransform(new CircleCrop())
+ .error(R.drawable.ic_user_default)
+ .placeholder(R.drawable.ic_user_default))
+ .into(mIvUserIcon);
// Glide.with(mActivity)
// .load(R.drawable.ic_nomal)
// .into(mIvState);
@@ -391,147 +400,147 @@ public class MainActivity extends BaseActivity {
*/
private void getNumberByMine() {
RetrofitManager.getInstance()
- .create(LocationApiService.class)
- .getArticleCount("94d1691f-65e6-4c82-8537-98c4a318b09e", UserLgUtils.getToken())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
+ .create(LocationApiService.class)
+ .getArticleCount("94d1691f-65e6-4c82-8537-98c4a318b09e", UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
- }
-
- @Override
- public void onNext(BaseUserBean baseUserBean) {
- if (!TextUtils.isEmpty(baseUserBean.getData())) {
- int i = Integer.parseInt(baseUserBean.getData());
- if (i >= 100) {
- mTvAvisoNum.setText("99+");
- } else {
- mTvAvisoNum.setText(baseUserBean.getData() + "");
- }
}
- }
+ @Override
+ public void onNext(BaseUserBean baseUserBean) {
+ if (!TextUtils.isEmpty(baseUserBean.getData())) {
+ int i = Integer.parseInt(baseUserBean.getData());
+ if (i >= 100) {
+ mTvAvisoNum.setText("99+");
+ } else {
+ mTvAvisoNum.setText(baseUserBean.getData() + "");
+ }
+ }
- @Override
- public void onError(Throwable e) {
+ }
- }
+ @Override
+ public void onError(Throwable e) {
- @Override
- public void onComplete() {
+ }
- }
- });
+ @Override
+ public void onComplete() {
+
+ }
+ });
}
private void getMineCurrentNum() {
RetrofitManager.getInstance()
- .create(LocationApiService.class)
- .getPlanMineNum(UserLgUtils.getToken())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
+ .create(LocationApiService.class)
+ .getPlanMineNum(UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
- }
-
- @Override
- public void onNext(SuccCountBean baseUserBean) {
- refreshView(STATE_LOAD_SUCCESS);
- if (baseUserBean != null && baseUserBean.getData() != null) {
- mTvPlanNum.setText(baseUserBean.getData().getCheckPlanCount() + "");
- } else {
- mTvPlanNum.setText("0");
}
- }
- @Override
- public void onError(Throwable e) {
+ @Override
+ public void onNext(SuccCountBean baseUserBean) {
+ refreshView(STATE_LOAD_SUCCESS);
+ if (baseUserBean != null && baseUserBean.getData() != null) {
+ mTvPlanNum.setText(baseUserBean.getData().getCheckPlanCount() + "");
+ } else {
+ mTvPlanNum.setText("0");
+ }
+ }
- }
+ @Override
+ public void onError(Throwable e) {
- @Override
- public void onComplete() {
+ }
- }
- });
+ @Override
+ public void onComplete() {
+
+ }
+ });
}
private void getNumberEnter() {
RetrofitManager.getInstance()
- .create(LocationApiService.class)
- .getClaimedCount(UserLgUtils.getToken())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
+ .create(LocationApiService.class)
+ .getClaimedCount(UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
- }
-
- @Override
- public void onNext(BaseUserBean baseUserBean) {
- if (!TextUtils.isEmpty(baseUserBean.getData())) {
- int i = Integer.parseInt(baseUserBean.getData());
- if (i >= 100) {
- mTvMineIssueNum.setText("99+");
- } else {
- mTvMineIssueNum.setText(baseUserBean.getData() + "");
- }
}
- }
+ @Override
+ public void onNext(BaseUserBean baseUserBean) {
+ if (!TextUtils.isEmpty(baseUserBean.getData())) {
+ int i = Integer.parseInt(baseUserBean.getData());
+ if (i >= 100) {
+ mTvMineIssueNum.setText("99+");
+ } else {
+ mTvMineIssueNum.setText(baseUserBean.getData() + "");
+ }
+ }
- @Override
- public void onError(Throwable e) {
+ }
- }
+ @Override
+ public void onError(Throwable e) {
- @Override
- public void onComplete() {
+ }
- }
- });
+ @Override
+ public void onComplete() {
+
+ }
+ });
}
private void getNumberHistory() {
RetrofitManager.getInstance()
- .create(LocationApiService.class)
- .getHistoryCount(UserLgUtils.getToken())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
+ .create(LocationApiService.class)
+ .getHistoryCount(UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
- }
-
- @Override
- public void onNext(BaseUserBean baseUserBean) {
- if (!TextUtils.isEmpty(baseUserBean.getData())) {
- int i = Integer.parseInt(baseUserBean.getData());
- if (i >= 100) {
- mTvHistoryNum.setText("99+");
- } else {
- mTvHistoryNum.setText(baseUserBean.getData() + "");
- }
}
- }
+ @Override
+ public void onNext(BaseUserBean baseUserBean) {
+ if (!TextUtils.isEmpty(baseUserBean.getData())) {
+ int i = Integer.parseInt(baseUserBean.getData());
+ if (i >= 100) {
+ mTvHistoryNum.setText("99+");
+ } else {
+ mTvHistoryNum.setText(baseUserBean.getData() + "");
+ }
+ }
- @Override
- public void onError(Throwable e) {
+ }
- }
+ @Override
+ public void onError(Throwable e) {
- @Override
- public void onComplete() {
+ }
- }
- });
+ @Override
+ public void onComplete() {
+
+ }
+ });
}
private AlertDialog mGpsSettingDialog;
@@ -543,14 +552,14 @@ public class MainActivity extends BaseActivity {
private void openGpsSetting() {
if (mGpsSettingDialog == null) {
mGpsSettingDialog = new AlertDialog.Builder(this).setTitle("打开GPS")
- .setMessage("定位需要打开GPS,请前往设置")
- .setNegativeButton("取消", (dialogInterface, i) -> dialogInterface.dismiss())
- .setPositiveButton("前往", (dialogInterface, i) -> {
- Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- startActivityForResult(intent, GPS_REQUEST_CODE);
- })
- .setCancelable(false)
- .create();
+ .setMessage("定位需要打开GPS,请前往设置")
+ .setNegativeButton("取消", (dialogInterface, i) -> dialogInterface.dismiss())
+ .setPositiveButton("前往", (dialogInterface, i) -> {
+ Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ startActivityForResult(intent, GPS_REQUEST_CODE);
+ })
+ .setCancelable(false)
+ .create();
}
if (!mGpsSettingDialog.isShowing()) {
mGpsSettingDialog.show();
@@ -599,35 +608,36 @@ public class MainActivity extends BaseActivity {
*/
private void checkAppVersion() {
RetrofitManager.getInstance()
- .create(LocationApiService.class)
- .doCheckAppVersion(PathConfig.APP_VERSION_ID, UserLgUtils.getToken())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
+ .create(LocationApiService.class)
+ .doCheckAppVersion(PathConfig.APP_VERSION_ID, UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
- }
+ }
- @Override
- public void onNext(VersionBean successBean) {
- if (successBean != null && successBean.getData() > 0) {
- if (CheckUpdateUtils.checkcode(MainActivity.this, successBean.getData() + "")) {
- startDownloadApk();
+ @Override
+ public void onNext(VersionBean successBean) {
+ if (successBean != null && successBean.getData() > 0) {
+ if (CheckUpdateUtils.checkcode(MainActivity.this,
+ successBean.getData() + "")) {
+ startDownloadApk();
+ }
}
}
- }
- @Override
- public void onError(Throwable e) {
+ @Override
+ public void onError(Throwable e) {
- }
+ }
- @Override
- public void onComplete() {
+ @Override
+ public void onComplete() {
- }
- });
+ }
+ });
}
@@ -652,11 +662,11 @@ public class MainActivity extends BaseActivity {
* report 案件上报
*/
@OnClick({
- R.id.ll_mine_issue,
- R.id.ll_history,
- R.id.ll_plan,
- R.id.ll_user_center,
- R.id.ll_day_aviso})
+ R.id.ll_mine_issue,
+ R.id.ll_history,
+ R.id.ll_plan,
+ R.id.ll_user_center,
+ R.id.ll_day_aviso})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.ll_issue_dis://待办案件
@@ -689,11 +699,11 @@ public class MainActivity extends BaseActivity {
protected void onResume() {
super.onResume();
Glide.with(mActivity)
- .load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar())
- .apply(RequestOptions.bitmapTransform(new CircleCrop())
- .error(R.drawable.ic_user_default)
- .placeholder(R.drawable.ic_user_default))
- .into(mIvUserIcon);
+ .load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar())
+ .apply(RequestOptions.bitmapTransform(new CircleCrop())
+ .error(R.drawable.ic_user_default)
+ .placeholder(R.drawable.ic_user_default))
+ .into(mIvUserIcon);
}
@Override
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/locus/LocusMapActivity.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/locus/LocusMapActivity.java
index 21d5f00..202b817 100755
--- a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/locus/LocusMapActivity.java
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/locus/LocusMapActivity.java
@@ -1,1081 +1,1014 @@
-//package com.sucstepsoft.txrealtimelocation.activitys.locus;
-//
-//import android.app.ProgressDialog;
-//import android.content.BroadcastReceiver;
-//import android.content.Context;
-//import android.content.Intent;
-//import android.graphics.Color;
-//import android.graphics.Path;
-//import android.support.v7.widget.LinearLayoutManager;
-//import android.support.v7.widget.RecyclerView;
-//import android.text.TextUtils;
-//import android.view.View;
-//import android.widget.Button;
-//import android.widget.ImageView;
-//import android.widget.RadioGroup;
-//import android.widget.RelativeLayout;
-//import android.widget.TextView;
-//import android.widget.ZoomControls;
-//
-//import com.baidu.location.BDAbstractLocationListener;
-//import com.baidu.location.BDLocation;
-//import com.baidu.location.LocationClient;
-//import com.baidu.location.LocationClientOption;
-//import com.baidu.mapapi.map.BaiduMap;
-//import com.baidu.mapapi.map.BitmapDescriptor;
-//import com.baidu.mapapi.map.BitmapDescriptorFactory;
-//import com.baidu.mapapi.map.InfoWindow;
-//import com.baidu.mapapi.map.MapStatus;
-//import com.baidu.mapapi.map.MapStatusUpdate;
-//import com.baidu.mapapi.map.MapStatusUpdateFactory;
-//import com.baidu.mapapi.map.MapView;
-//import com.baidu.mapapi.map.MarkerOptions;
-//import com.baidu.mapapi.map.MyLocationData;
-//import com.baidu.mapapi.map.OverlayOptions;
-//import com.baidu.mapapi.map.PolygonOptions;
-//import com.baidu.mapapi.map.PolylineOptions;
-//import com.baidu.mapapi.map.Stroke;
-//import com.baidu.mapapi.model.LatLng;
-//import com.baidu.mapapi.utils.DistanceUtil;
-//import com.bigkoo.pickerview.builder.TimePickerBuilder;
-//import com.bigkoo.pickerview.view.TimePickerView;
-//import com.bumptech.glide.Glide;
-//import com.bumptech.glide.load.resource.bitmap.CircleCrop;
-//import com.bumptech.glide.request.RequestOptions;
-//import com.sucstepsoft.cm_utils.constant.PathConfig;
-//import com.sucstepsoft.cm_utils.constant.TimeConstants;
-//import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
-//import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
-//import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
-//import com.sucstepsoft.cm_utils.utils.LogUtils;
-//import com.sucstepsoft.cm_utils.utils.TimeUtils;
-//import com.sucstepsoft.cm_utils.utils.ToastUtils;
-//import com.sucstepsoft.cm_utils.utils.UIUtil;
-//import com.sucstepsoft.cm_utils.utils.UserLgUtils;
-//import com.sucstepsoft.txrealtimelocation.R;
-//import com.sucstepsoft.txrealtimelocation.adapters.LocusStepAdapter;
-//import com.sucstepsoft.txrealtimelocation.beans.LocusTextBean;
-//import com.sucstepsoft.txrealtimelocation.beans.MineLocationBean;
-//import com.sucstepsoft.txrealtimelocation.beans.PenLineBean;
-//import com.sucstepsoft.txrealtimelocation.net.LocationApiService;
-//import com.sucstepsoft.txrealtimelocation.utils.PointUtils;
-//
-//import java.text.DecimalFormat;
-//import java.text.SimpleDateFormat;
-//import java.util.ArrayList;
-//import java.util.Collections;
-//import java.util.List;
-//
-//import butterknife.BindView;
-//import butterknife.ButterKnife;
-//import butterknife.Unbinder;
-//import io.reactivex.Observable;
-//import io.reactivex.Observer;
-//import io.reactivex.android.schedulers.AndroidSchedulers;
-//import io.reactivex.disposables.Disposable;
-//import io.reactivex.schedulers.Schedulers;
-//
-///**
-// * createTime:2019-7-30
-// * 工作轨迹
-// */
-//public class LocusMapActivity extends BaseActivity {
-// @BindView(R.id.mv_map)
-// MapView mMapView;
-// @BindView(R.id.rg_type)
-// RadioGroup mRgShowType;
-// @BindView(R.id.rlv_step)
-// RecyclerView mRlvStep;
-// @BindView(R.id.iv_user_icon)
-// ImageView mIvUserIcon;
-// @BindView(R.id.tv_user_name)
-// TextView mTvUserName;
-// @BindView(R.id.tv_date)
-// TextView mTvDate;
-// @BindView(R.id.tv_distance)
-// TextView mTvDistance;
-// @BindView(R.id.btn_reload)
-// Button mBtnReload;
-// @BindView(R.id.rg_map_type)
-// RadioGroup mRgMapType;
-// @BindView(R.id.rl_map_view)
-// RelativeLayout mRlMapView;
-// // @BindView(R.id.tv_end_date)
-//// TextView mTvEndDate;
-//// @BindView(R.id.btn_search)
-//// Button mBtnSearch;
-// private Unbinder mBind;
-// private BaiduMap mBaiduMap;
-// private TimePickerView mTimePickerView;
-// private int mCurrentShowType = 1;//1是地图 2是文本
-// // private double latitude = 111.771815;
-//// private double longitude = 40.823879;
-// //109.926934,40.574501
-// private LatLng mDefaultLocation = new LatLng(PathConfig.LA, PathConfig.LO);
-// private SimpleDateFormat mDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-// private SimpleDateFormat mTimeFormat = new SimpleDateFormat("HH:mm:ss");
-// private String mChooseDate = "";
-// private String mNowDate;
-// private List mStepBeansMain;
-// private LocusStepAdapter mAdapter;
-// private BitmapDescriptor mBitMap;
-// private ProgressDialog mProgressDialog;
-// private List mPenLineBeans = new ArrayList<>();
-// private MessageReceiver mReceiver;
-// private String mCurrentDistance = "0米";
-// private DecimalFormat mFormat;
-// private String mEndTime;
-// private LocationClient mLocationClient;
-//
-// @Override
-// protected int setLayoutId() {
-// return R.layout.activity_locus_map;
-// }
-//
-// @Override
-// public void initData() {
-// mBind = ButterKnife.bind(this);
-// refreshView(STATE_LOAD_SUCCESS);
-// mTvBaseTitle.setText("工作路径");
-// mBaiduMap = mMapView.getMap();
-// MapStatus ms = new MapStatus.Builder().zoom(16).target(mDefaultLocation).build();
-// MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms);
-// mBaiduMap.animateMapStatus(u);
-// List mStep = new ArrayList<>();
-// mAdapter = new LocusStepAdapter(this, mStep);
-// mRlvStep.setLayoutManager(new LinearLayoutManager(this));
-// setCurrentShowView();
-// mRlvStep.setAdapter(mAdapter);
-// mRgShowType.setOnCheckedChangeListener((group, checkedId) -> {
-// switch (checkedId) {
-// case R.id.rb_map:
-// mCurrentShowType = 1;
-// break;
-// case R.id.rb_text:
-// mCurrentShowType = 2;
-// break;
-// }
-// setCurrentShowView();
-// });
-// mRgMapType.setOnCheckedChangeListener((group, checkedId) -> {
-// int id = 0;
-// switch (checkedId) {
-// case R.id.rb_type_map://普通的
-// id = 123;
-// break;
-// case R.id.rb_satellite://卫星地图
-// id = 1234;
-// break;
-// }
-// if (id != 0) {
-// setMapType(id);
+package com.sucstepsoft.txrealtimelocation.activitys.locus;
+
+import android.app.ProgressDialog;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.RadioGroup;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+import android.widget.ZoomControls;
+
+import com.baidu.location.BDAbstractLocationListener;
+import com.baidu.location.BDLocation;
+import com.baidu.location.LocationClient;
+import com.baidu.location.LocationClientOption;
+import com.baidu.mapapi.map.BaiduMap;
+import com.baidu.mapapi.map.BitmapDescriptor;
+import com.baidu.mapapi.map.BitmapDescriptorFactory;
+import com.baidu.mapapi.map.InfoWindow;
+import com.baidu.mapapi.map.MapStatus;
+import com.baidu.mapapi.map.MapStatusUpdate;
+import com.baidu.mapapi.map.MapStatusUpdateFactory;
+import com.baidu.mapapi.map.MapView;
+import com.baidu.mapapi.map.MarkerOptions;
+import com.baidu.mapapi.map.MyLocationData;
+import com.baidu.mapapi.map.OverlayOptions;
+import com.baidu.mapapi.map.PolygonOptions;
+import com.baidu.mapapi.map.PolylineOptions;
+import com.baidu.mapapi.map.Stroke;
+import com.baidu.mapapi.model.LatLng;
+import com.baidu.mapapi.utils.DistanceUtil;
+import com.bigkoo.pickerview.builder.TimePickerBuilder;
+import com.bigkoo.pickerview.view.TimePickerView;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.CircleCrop;
+import com.bumptech.glide.request.RequestOptions;
+import com.sucstepsoft.cm_utils.constant.PathConfig;
+import com.sucstepsoft.cm_utils.constant.TimeConstants;
+import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
+import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
+import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
+import com.sucstepsoft.cm_utils.utils.LogUtils;
+import com.sucstepsoft.cm_utils.utils.TimeUtils;
+import com.sucstepsoft.cm_utils.utils.ToastUtils;
+import com.sucstepsoft.cm_utils.utils.UIUtil;
+import com.sucstepsoft.cm_utils.utils.UserLgUtils;
+import com.sucstepsoft.txrealtimelocation.R;
+import com.sucstepsoft.txrealtimelocation.adapters.LocusStepAdapter;
+import com.sucstepsoft.txrealtimelocation.beans.DrawMapLineBean;
+import com.sucstepsoft.txrealtimelocation.beans.LocusTextBean;
+import com.sucstepsoft.txrealtimelocation.beans.MineLocationBean;
+import com.sucstepsoft.txrealtimelocation.beans.PenLineBean;
+import com.sucstepsoft.txrealtimelocation.net.LocationApiService;
+import com.sucstepsoft.txrealtimelocation.utils.PointUtils;
+
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+import io.reactivex.Observable;
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * createTime:2019-7-30
+ * 工作轨迹
+ */
+public class LocusMapActivity extends BaseActivity {
+ @BindView(R.id.mv_map)
+ MapView mMapView;
+ @BindView(R.id.rg_type)
+ RadioGroup mRgShowType;
+ @BindView(R.id.rlv_step)
+ RecyclerView mRlvStep;
+ @BindView(R.id.iv_user_icon)
+ ImageView mIvUserIcon;
+ @BindView(R.id.tv_user_name)
+ TextView mTvUserName;
+ @BindView(R.id.tv_date)
+ TextView mTvDate;
+ @BindView(R.id.tv_distance)
+ TextView mTvDistance;
+ @BindView(R.id.btn_reload)
+ Button mBtnReload;
+ @BindView(R.id.rg_map_type)
+ RadioGroup mRgMapType;
+ @BindView(R.id.rl_map_view)
+ RelativeLayout mRlMapView;
+ // @BindView(R.id.tv_end_date)
+// TextView mTvEndDate;
+// @BindView(R.id.btn_search)
+// Button mBtnSearch;
+ private Unbinder mBind;
+ private BaiduMap mBaiduMap;
+ private TimePickerView mTimePickerView;
+ private int mCurrentShowType = 1;//1是地图 2是文本
+ // private double latitude = 111.771815;
+// private double longitude = 40.823879;
+ //109.926934,40.574501
+ private LatLng mDefaultLocation = new LatLng(PathConfig.LA, PathConfig.LO);
+ private SimpleDateFormat mDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ private SimpleDateFormat mTimeFormat = new SimpleDateFormat("HH:mm:ss");
+ private String mChooseDate = "";
+ private String mNowDate;
+ private List mStepBeansMain;
+ private LocusStepAdapter mAdapter;
+ private BitmapDescriptor mBitMap;
+ private ProgressDialog mProgressDialog;
+ private List mPenLineBeans = new ArrayList<>();
+ private MessageReceiver mReceiver;
+ private String mCurrentDistance = "0米";
+ private DecimalFormat mFormat;
+ private String mEndTime;
+ private LocationClient mLocationClient;
+
+ @Override
+ protected int setLayoutId() {
+ return R.layout.activity_locus_map;
+ }
+
+ @Override
+ public void initData() {
+ mBind = ButterKnife.bind(this);
+ refreshView(STATE_LOAD_SUCCESS);
+ mTvBaseTitle.setText("工作路径");
+ mBaiduMap = mMapView.getMap();
+ MapStatus ms = new MapStatus.Builder().zoom(16).target(mDefaultLocation).build();
+ MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms);
+ mBaiduMap.animateMapStatus(u);
+ List mStep = new ArrayList<>();
+ mAdapter = new LocusStepAdapter(this, mStep);
+ mRlvStep.setLayoutManager(new LinearLayoutManager(this));
+ setCurrentShowView();
+ mRlvStep.setAdapter(mAdapter);
+ mRgShowType.setOnCheckedChangeListener((group, checkedId) -> {
+ switch (checkedId) {
+ case R.id.rb_map:
+ mCurrentShowType = 1;
+ break;
+ case R.id.rb_text:
+ mCurrentShowType = 2;
+ break;
+ }
+ setCurrentShowView();
+ });
+ mRgMapType.setOnCheckedChangeListener((group, checkedId) -> {
+ int id = 0;
+ switch (checkedId) {
+ case R.id.rb_type_map://普通的
+ id = 123;
+ break;
+ case R.id.rb_satellite://卫星地图
+ id = 1234;
+ break;
+ }
+ if (id != 0) {
+ setMapType(id);
+ }
+ });
+// mBtnSearch.setOnClickListener(v -> {
+// if (TextUtils.isEmpty(mEndTime) || TextUtils.isEmpty(mChooseDate)) {
+// ToastUtils.showShort("请选择时间");
+// } else {
+// getUserList(mChooseDate, mEndTime);
// }
// });
-//// mBtnSearch.setOnClickListener(v -> {
-//// if (TextUtils.isEmpty(mEndTime) || TextUtils.isEmpty(mChooseDate)) {
-//// ToastUtils.showShort("请选择时间");
-//// } else {
-//// getUserList(mChooseDate, mEndTime);
-//// }
-//// });
-// mFormat = new DecimalFormat("#.00");
-// mNowDate = mDateFormat.format(System.currentTimeMillis());
+ mFormat = new DecimalFormat("#.00");
+ mNowDate = mDateFormat.format(System.currentTimeMillis());
// getCurrentDataList();
-// setTouchDelegate(mTvDate, 30);
-// mTvDate.setText(mNowDate);
-// mTvDate.setOnClickListener(v -> showPickerView());
-// mTvUserName.setText("登录人:" + UserLgUtils.getName());
-// Glide.with(mActivity)
-// .load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar())
-// .apply(RequestOptions.bitmapTransform(new CircleCrop())
-// .error(R.drawable.ic_user_default)
-// .placeholder(R.drawable.ic_user_default))
-// .into(mIvUserIcon);
+ setTouchDelegate(mTvDate, 30);
+ mTvDate.setText(mNowDate);
+ mTvDate.setOnClickListener(v -> showPickerView());
+ mTvUserName.setText("登录人:" + UserLgUtils.getName());
+ Glide.with(mActivity).load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar())
+ .apply(RequestOptions.bitmapTransform(new CircleCrop())
+ .error(R.drawable.ic_user_default)
+ .placeholder(R.drawable.ic_user_default))
+ .into(mIvUserIcon);
// getUserPenList();
-//// mReceiver = new MessageReceiver();
-//// IntentFilter filter = new IntentFilter();
-//// filter.addAction(PathConfig.ACTION_LOCATION_MESSAGE);
-//// registerReceiver(mReceiver, filter);
-// mBtnReload.setOnClickListener(v -> {
-// if (mCurrent != null && mCurrent.getLatitude() != 0 && mCurrent.getLongitude() != 0) {
-// MapStatus cur = new MapStatus.Builder().zoom(16).target(new LatLng(mCurrent.getLatitude(), mCurrent.getLongitude())).build();
-// MapStatusUpdate curUpdate = MapStatusUpdateFactory.newMapStatus(cur);
-// mBaiduMap.animateMapStatus(curUpdate);
-// }
-// });
-// View child = mMapView.getChildAt(1);
-// if (child != null && (child instanceof ImageView || child instanceof ZoomControls)) {
-// child.setVisibility(View.GONE);
-// }
-// mMapView.showZoomControls(false);
-// startSignLocation();
-// }
-//
-//
-// private void setMapType(int id) {
-// if (id == 123) {
-// mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
-// } else {
-// mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
-// }
-// }
-//
-// private void getUserPenList() {
-// RetrofitManager.getInstance()
-// .create(LocationApiService.class)
-// .getUserPenList(UserLgUtils.getToken())
-// .subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(new Observer>() {
-// @Override
-// public void onSubscribe(Disposable d) {
-//
-// }
-//
-// @Override
-// public void onNext(List penLineBeans) {
-// if (penLineBeans != null && penLineBeans.size() > 0) {
-// mPenLineBeans = penLineBeans;
-// drawPenToMap(penLineBeans);
-// }
-// }
-//
-// @Override
-// public void onError(Throwable e) {
-// ToastUtils.showErrorShort("获取围栏数据失败,请稍后重试");
-// }
-//
-// @Override
-// public void onComplete() {
-//
-// }
-// });
-// }
-//
-// /**
-// * 显示时间
-// */
-// private void showPickerView() {
-// if (mTimePickerView == null) {
-// mTimePickerView = new TimePickerBuilder(mActivity, (date, v) -> {
-// boolean i = TimeUtils.compare(mNowDate, mDateFormat.format(date));
-// if (i) {
-// ToastUtils.showSuccessShort("请选择当前时间之前的日期.");
-// } else {
-// mTvDate.setText(mDateFormat.format(date));
-// mChooseDate = mDateFormat.format(date);
-// getUserList(mChooseDate);
-// }
-// })
-// .setTitleText("请选择日期")
-// .setCancelColor(Color.parseColor("#1189FF"))
-// .setSubmitColor(Color.parseColor("#1189FF"))
-// .setType(new boolean[]{true, true, true, false, false, false})
-// .setTitleColor(Color.parseColor("#1189FF"))
-// .build();
-// }
-// mTimePickerView.show();
-// }
-//
-// /**
-// * 获取当天数据
-// */
-// private void getCurrentDataList() {
-// mProgressDialog = UIUtil.initDialog(mActivity, "数据加载中...");
-// mProgressDialog.show();
-// RetrofitManager.getInstance()
-// .create(LocationApiService.class)
-// .getUserLocationList(UserLgUtils.getToken())
-// .subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(new Observer>() {
-// @Override
-// public void onSubscribe(Disposable d) {
-//
-// }
-//
-// @Override
-// public void onNext(List mineLocationBeans) {
-// LogUtils.e(mineLocationBeans.size());
-// if (mineLocationBeans != null && mineLocationBeans.size() > 0) {
-// drawLineToMap(mineLocationBeans);
-//// parserPoint(mineLocationBeans);
-// parserLocationPoint(mineLocationBeans);
-// } else {
-// mProgressDialog.dismiss();
-//// ToastUtils.showShort("暂无定位数据");
-// }
-// }
-//
-// @Override
-// public void onError(Throwable e) {
-// mProgressDialog.dismiss();
-// ToastUtils.showErrorShort("获取工作路径失败,请稍后重试.");
-// }
-//
-// @Override
-// public void onComplete() {
-//
-// }
-// });
-// }
-//
-// private List mTextBeans = new ArrayList<>();
-//
-// private void drawLine(List datas) {
-// //添加开始点
-// MineLocationBean startBean = datas.get(0);
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(startBean.getUserLocation()) || "null".equals(startBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress(startBean.getUserLocation());
-// }
-// bean.setTime(startBean.getGmtCreate());
-// bean.setStateTime("开始定位" + startBean.getGmtCreate());
-// bean.setType(LocusStepAdapter.TYPE_START);
-// bean.setCreateTime(startBean.getGmtCreate());
-// mTextBeans.add(bean);
-// for (int i = 0; i < datas.size(); i++) {
-// if (i == datas.size() - 1) {
-// break;
-// }
-// MineLocationBean bean1 = datas.get(i);
-// MineLocationBean bean2 = datas.get(i + 1);
-// draw(bean1, bean2);
-// }
-// }
-//
-// private void draw(MineLocationBean bean1, MineLocationBean bean2) {
-//
-// }
-//
-// /**
-// * 根据时间范围获取数据
-// */
-// private void getUserList(String date) {
-// mProgressDialog = UIUtil.initDialog(mActivity, "数据加载中...");
-// mProgressDialog.show();
-// String end = "23:59:59";
-// String start = "00:00:00";
-// RetrofitManager.getInstance()
-// .create(LocationApiService.class)
-// .getUserLocationList(date, start, end, UserLgUtils.getToken())
-// .subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(new Observer>() {
-// @Override
-// public void onSubscribe(Disposable d) {
-//
-// }
-//
-// @Override
-// public void onNext(List mineLocationBeans) {
-// LogUtils.e(mineLocationBeans.size());
-// if (mineLocationBeans != null && mineLocationBeans.size() > 0) {
-// drawLineToMap(mineLocationBeans);
-//// parserPoint(mineLocationBeans);
-// parserLocationPoint(mineLocationBeans);
-// } else {
-// mAdapter.setData(new ArrayList<>());
-// mBaiduMap.clear();
-// if (mPenLineBeans != null && mPenLineBeans.size() > 0) {
-// drawPenToMap(mPenLineBeans);
-// }
-// mProgressDialog.dismiss();
-// ToastUtils.showErrorShort("暂无历史工作轨迹");
-// }
-// }
-//
-// @Override
-// public void onError(Throwable e) {
-// mProgressDialog.dismiss();
-// ToastUtils.showErrorShort("获取历史工作轨迹失败,请稍后重试.");
-// }
-//
-// @Override
-// public void onComplete() {
-//
-// }
-// });
-// }
-//
-//
-// /**
-// * TODO 解析文本数据
-// *
-// * @param mineBeans
-// */
-// private void parserLocationPoint(List mineBeans) {
-// Collections.sort(mineBeans);
-// Observable.just(mineBeans)
-// .map((List mineLocationBeans) -> {
-// List mStepBeans = new ArrayList<>();
-// if (mineBeans.size() >= 2) {
-// for (int i = 0; i < mineBeans.size(); i++) {
-// if (i != mineBeans.size() - 1) {
-// //第一个
-// MineLocationBean preBean = mineBeans.get(i);
-// //下一点
-// MineLocationBean nextBean = mineBeans.get(i + 1);
-// long timeSpan = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), preBean.getGmtCreate(), TimeConstants.SEC);
-// LatLng preLatlng = new LatLng(Double.parseDouble(preBean.getUserLatitude()), Double.parseDouble(preBean.getUserLongitude()));
-// LatLng nextLatlng = new LatLng(Double.parseDouble(nextBean.getUserLatitude()), Double.parseDouble(nextBean.getUserLongitude()));
-// if (i == 0) {
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(preBean.getUserLocation()) || "null".equals(preBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress(preBean.getUserLocation());
+// mReceiver = new MessageReceiver();
+// IntentFilter filter = new IntentFilter();
+// filter.addAction(PathConfig.ACTION_LOCATION_MESSAGE);
+// registerReceiver(mReceiver, filter);
+ mBtnReload.setOnClickListener(v -> {
+ if (mCurrent != null && mCurrent.getLatitude() != 0 && mCurrent.getLongitude() != 0) {
+ MapStatus cur = new MapStatus.Builder().zoom(16).target(new LatLng(mCurrent.getLatitude(),
+ mCurrent.getLongitude())).build();
+ MapStatusUpdate curUpdate = MapStatusUpdateFactory.newMapStatus(cur);
+ mBaiduMap.animateMapStatus(curUpdate);
+ }
+ });
+ View child = mMapView.getChildAt(1);
+ if (child != null && (child instanceof ImageView || child instanceof ZoomControls)) {
+ child.setVisibility(View.GONE);
+ }
+ mMapView.showZoomControls(false);
+ startSignLocation();
+ getUserList(TimeUtils.getNowStr());
+ }
+
+
+ private void setMapType(int id) {
+ if (id == 123) {
+ mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
+ } else {
+ mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
+ }
+ }
+
+ private void getUserPenList() {
+ RetrofitManager.getInstance().create(LocationApiService.class).getUserPenList(UserLgUtils.getToken()).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(List penLineBeans) {
+ if (penLineBeans != null && penLineBeans.size() > 0) {
+ mPenLineBeans = penLineBeans;
+ drawPenToMap(penLineBeans);
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ ToastUtils.showErrorShort("获取围栏数据失败,请稍后重试");
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ /**
+ * 显示时间
+ */
+ private void showPickerView() {
+ if (mTimePickerView == null) {
+ mTimePickerView = new TimePickerBuilder(mActivity, (date, v) -> {
+ boolean i = TimeUtils.compare(mNowDate, mDateFormat.format(date));
+ if (i) {
+ ToastUtils.showSuccessShort("请选择当前时间之前的日期.");
+ } else {
+ mTvDate.setText(mDateFormat.format(date));
+ mChooseDate = mDateFormat.format(date);
+ getUserList(mChooseDate);
+ }
+ }).setTitleText("请选择日期").setCancelColor(Color.parseColor("#1189FF")).setSubmitColor(Color.parseColor(
+ "#1189FF")).setType(new boolean[]{true, true, true, false, false, false}).setTitleColor(Color.parseColor("#1189FF")).build();
+ }
+ mTimePickerView.show();
+ }
+
+ /**
+ * 获取当天数据
+ */
+ private void getCurrentDataList() {
+ mProgressDialog = UIUtil.initDialog(mActivity, "数据加载中...");
+ mProgressDialog.show();
+ RetrofitManager.getInstance().create(LocationApiService.class).getUserLocationList(UserLgUtils.getToken()).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(List mineLocationBeans) {
+ LogUtils.e(mineLocationBeans.size());
+ if (mineLocationBeans != null && mineLocationBeans.size() > 0) {
+ drawLineToMap(mineLocationBeans);
+// parserPoint(mineLocationBeans);
+ parserLocationPoint(mineLocationBeans);
+ } else {
+ mProgressDialog.dismiss();
+// ToastUtils.showShort("暂无定位数据");
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ mProgressDialog.dismiss();
+ ToastUtils.showErrorShort("获取工作路径失败,请稍后重试.");
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ private List mTextBeans = new ArrayList<>();
+
+ private void drawLine(List datas) {
+ //添加开始点
+ MineLocationBean startBean = datas.get(0);
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setTime(startBean.getGmtCreate());
+ bean.setStateTime("开始定位" + startBean.getGmtCreate());
+ bean.setType(LocusStepAdapter.TYPE_START);
+ bean.setCreateTime(startBean.getGmtCreate());
+ mTextBeans.add(bean);
+ for (int i = 0; i < datas.size(); i++) {
+ if (i == datas.size() - 1) {
+ break;
+ }
+ MineLocationBean bean1 = datas.get(i);
+ MineLocationBean bean2 = datas.get(i + 1);
+ draw(bean1, bean2);
+ }
+ }
+
+ private void draw(MineLocationBean bean1, MineLocationBean bean2) {
+
+ }
+
+ /**
+ * 根据时间范围获取数据
+ */
+ private void getUserList(String date) {
+ mProgressDialog = UIUtil.initDialog(mActivity, "数据加载中...");
+ mProgressDialog.show();
+ String end = date + " 23:59:59";
+ String start = date + " 00:00:00";
+ RetrofitManager.getInstance().create(LocationApiService.class).getUserLocationList(start, end,
+ UserLgUtils.getToken())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(List mineLocationBeans) {
+ LogUtils.e(mineLocationBeans.size());
+ if (mineLocationBeans != null && mineLocationBeans.size() > 0) {
+ drawLineToMap(mineLocationBeans);
+// parserPoint(mineLocationBeans);
+ parserLocationPoint(mineLocationBeans);
+ } else {
+ mAdapter.setData(new ArrayList<>());
+ mBaiduMap.clear();
+ if (mPenLineBeans != null && mPenLineBeans.size() > 0) {
+ drawPenToMap(mPenLineBeans);
+ }
+ mProgressDialog.dismiss();
+ ToastUtils.showErrorShort("暂无历史工作轨迹");
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ mProgressDialog.dismiss();
+ ToastUtils.showErrorShort("获取历史工作轨迹失败,请稍后重试.");
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+
+ /**
+ * TODO 解析文本数据
+ *
+ * @param mineBeans
+ */
+ private void parserLocationPoint(List mineBeans) {
+ Collections.sort(mineBeans);
+ Observable.just(mineBeans).map((List mineLocationBeans) -> {
+ List mStepBeans = new ArrayList<>();
+ if (mineBeans.size() >= 2) {
+ for (int i = 0; i < mineBeans.size(); i++) {
+ if (i != mineBeans.size() - 1) {
+ //第一个
+ MineLocationBean preBean = mineBeans.get(i);
+ //下一点
+ MineLocationBean nextBean = mineBeans.get(i + 1);
+ long timeSpan = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), preBean.getGmtCreate(),
+ TimeConstants.SEC);
+ LatLng preLatlng = new LatLng(Double.parseDouble(preBean.getLat()),
+ Double.parseDouble(preBean.getLng()));
+ LatLng nextLatlng = new LatLng(Double.parseDouble(nextBean.getLat()),
+ Double.parseDouble(nextBean.getLng()));
+ if (i == 0) {
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setTime(preBean.getGmtCreate());
+ bean.setStateTime("开始定位" + preBean.getGmtCreate());
+ bean.setType(LocusStepAdapter.TYPE_START);
+ bean.setCreateTime(preBean.getGmtCreate());
+ bean.setOrder(i);
+ mStepBeans.add(bean);
+ } else {
+ //TODO 1、距离
+ double distance = DistanceUtil.getDistance(preLatlng, nextLatlng);
+ if (timeSpan < 600) {
+ //在线
+ if (distance / timeSpan > 20) {
+ //TODO 速度大于20/s异常
+ if (mStepBeans != null && mStepBeans.size() > 0) {
+ LocusTextBean tempbean = mStepBeans.get(mStepBeans.size() - 1);
+ if (tempbean.getType() == LocusStepAdapter.TYPE_UNUSUAL) {
+ //上一条也是移动的 //将停止时间累计
+ long timeSpan2 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ tempbean.getCreateTime(), TimeConstants.SEC);
+ tempbean.setStateTime(timeSpan2 + "");
+ tempbean.setCreateTime(nextBean.getGmtCreate());
+ long l = tempbean.getSecond() + timeSpan2;
+ tempbean.setOrder(i);
+ tempbean.setSecond(l);
+ } else {
+ LocusTextBean text = mStepBeans.get(mStepBeans.size() - 1);
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setCreateTime(nextBean.getGmtCreate());
+ bean.setTime(text.getCreateTime());
+ long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ text.getCreateTime(), TimeConstants.SEC);
+ bean.setStateTime(timeSpan1 + "");
+ bean.setType(LocusStepAdapter.TYPE_UNUSUAL);
+ bean.setSecond(timeSpan1);
+ bean.setOrder(i);
+ mStepBeans.add(bean);
+ }
+ } else {
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setCreateTime(nextBean.getGmtCreate());
+ bean.setTime(preBean.getGmtCreate());
+ long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ preBean.getGmtCreate(), TimeConstants.SEC);
+ bean.setStateTime(timeSpan1 + "");
+ bean.setSecond(timeSpan1);
+ bean.setType(LocusStepAdapter.TYPE_UNUSUAL);
+ bean.setOrder(i);
+ mStepBeans.add(bean);
+ }
+ } else if (distance / timeSpan <= 0.5) {
+ //TODO 速度小于0.5m/s等待
+ if (mStepBeans != null && mStepBeans.size() > 0) {
+ LocusTextBean tempbean = mStepBeans.get(mStepBeans.size() - 1);
+ if (tempbean.getType() == LocusStepAdapter.TYPE_STAY) {
+ //上一条也是移动的 //将停止时间累计
+ long timeSpan2 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ tempbean.getCreateTime(), TimeConstants.SEC);
+ tempbean.setStateTime(timeSpan2 + "");
+ tempbean.setCreateTime(nextBean.getGmtCreate());
+ long l = tempbean.getSecond() + timeSpan2;
+ tempbean.setOrder(i);
+ tempbean.setSecond(l);
+ } else {
+ LocusTextBean text = mStepBeans.get(mStepBeans.size() - 1);
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setCreateTime(nextBean.getGmtCreate());
+ bean.setTime(text.getCreateTime());
+ long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ text.getCreateTime(), TimeConstants.SEC);
+ bean.setStateTime(timeSpan1 + "");
+ bean.setType(LocusStepAdapter.TYPE_STAY);
+ bean.setOrder(i);
+ bean.setSecond(timeSpan1);
+ mStepBeans.add(bean);
+ }
+ } else {
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setCreateTime(nextBean.getGmtCreate());
+ bean.setTime(preBean.getGmtCreate());
+ long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ preBean.getGmtCreate(), TimeConstants.SEC);
+ bean.setStateTime(timeSpan1 + "");
+ bean.setSecond(timeSpan1);
+ bean.setType(LocusStepAdapter.TYPE_STAY);
+ bean.setOrder(i);
+ mStepBeans.add(bean);
+ }
+ } else {
+ //TODO 移动
+ if (mStepBeans != null && mStepBeans.size() > 0) {
+ LocusTextBean tempbean = mStepBeans.get(mStepBeans.size() - 1);
+ if (tempbean.getType() == LocusStepAdapter.TYPE_ONLINE) {
+ //上一条也是移动的 //将停止时间累计
+ long timeSpan2 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ tempbean.getCreateTime(), TimeConstants.SEC);
+ tempbean.setStateTime(timeSpan2 + "");
+ tempbean.setCreateTime(nextBean.getGmtCreate());
+ long l = tempbean.getSecond() + timeSpan2;
+ tempbean.setSecond(l);
+ tempbean.setOrder(i);
+ } else {
+ LocusTextBean locusTextBean = mStepBeans.get(mStepBeans.size() - 1);
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setCreateTime(nextBean.getGmtCreate());
+ bean.setTime(locusTextBean.getCreateTime());
+ long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ locusTextBean.getCreateTime(), TimeConstants.SEC);
+ bean.setStateTime(timeSpan1 + "");
+ bean.setType(LocusStepAdapter.TYPE_ONLINE);
+ bean.setSecond(timeSpan1);
+ bean.setOrder(i);
+ mStepBeans.add(bean);
+ }
+ } else {
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setCreateTime(nextBean.getGmtCreate());
+ bean.setTime(preBean.getGmtCreate());
+ long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ preBean.getGmtCreate(), TimeConstants.SEC);
+ bean.setStateTime(timeSpan1 + "");
+ bean.setSecond(timeSpan1);
+ bean.setType(LocusStepAdapter.TYPE_ONLINE);
+ bean.setOrder(i);
+ mStepBeans.add(bean);
+ }
+ }
+ } else {
+ //TODO 失联
+ if (mStepBeans != null && mStepBeans.size() > 0) {
+ LocusTextBean tempbean = mStepBeans.get(mStepBeans.size() - 1);
+ if (tempbean.getType() == LocusStepAdapter.TYPE_OFFLINE) {
+ //上一条也是移动的 //将停止时间累计
+ long timeSpan2 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ tempbean.getCreateTime(), TimeConstants.SEC);
+ tempbean.setStateTime(timeSpan2 + "");
+ tempbean.setCreateTime(nextBean.getGmtCreate());
+ long l = tempbean.getSecond() + timeSpan2;
+ tempbean.setSecond(l);
+ tempbean.setOrder(i);
+ } else {
+ LocusTextBean locusTextBean = mStepBeans.get(mStepBeans.size() - 1);
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setCreateTime(nextBean.getGmtCreate());
+ bean.setTime(locusTextBean.getCreateTime());
+ long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ locusTextBean.getCreateTime(), TimeConstants.SEC);
+ bean.setStateTime(timeSpan1 + "");
+ bean.setType(LocusStepAdapter.TYPE_OFFLINE);
+ bean.setSecond(timeSpan1);
+ bean.setOrder(i);
+ mStepBeans.add(bean);
+ }
+ } else {
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setOrder(i);
+ bean.setCreateTime(nextBean.getGmtCreate());
+ bean.setTime(preBean.getGmtCreate());
+ long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(),
+ preBean.getGmtCreate(), TimeConstants.SEC);
+ bean.setStateTime(timeSpan1 + "");
+ bean.setSecond(timeSpan1);
+ bean.setType(LocusStepAdapter.TYPE_OFFLINE);
+ mStepBeans.add(bean);
+ }
+ }
+ }
+ } else {
+ //最后一个点
+ MineLocationBean mineLocationBean = mineBeans.get(mineBeans.size() - 1);
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setOrder(i);
+ bean.setTime(mineLocationBean.getGmtCreate());
+ bean.setStateTime("开始定位" + mineLocationBean.getGmtCreate());
+ bean.setType(LocusStepAdapter.TYPE_STOP);
+ bean.setCreateTime(mineLocationBean.getGmtCreate());
+ mStepBeans.add(bean);
+ }
+ }
+ } else {
+ MineLocationBean mineLocationBean = mineBeans.get(mineBeans.size() - 1);
+ LocusTextBean bean = new LocusTextBean();
+ bean.setAddress("定位地址:未知");
+ bean.setOrder(2);
+ bean.setTime(mineLocationBean.getGmtCreate());
+ bean.setStateTime("开始定位" + mineLocationBean.getGmtCreate());
+ bean.setType(LocusStepAdapter.TYPE_START);
+ bean.setCreateTime(mineLocationBean.getGmtCreate());
+ mStepBeans.add(bean);
+
+ LocusTextBean bean1 = new LocusTextBean();
+ bean1.setAddress("定位地址:未知");
+ bean1.setOrder(1);
+ bean1.setTime(mineLocationBean.getGmtCreate());
+ bean1.setStateTime("开始定位" + mineLocationBean.getGmtCreate());
+ bean1.setType(LocusStepAdapter.TYPE_STOP);
+ bean1.setCreateTime(mineLocationBean.getGmtCreate());
+ mStepBeans.add(bean1);
+ }
+ return mStepBeans;
+ }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(List locusTextBeans) {
+ if (locusTextBeans != null && locusTextBeans.size() > 0) {
+ Collections.sort(locusTextBeans);
+ mAdapter.setData(locusTextBeans);
+ }
+ if (mProgressDialog != null && mProgressDialog.isShowing()) {
+ mProgressDialog.dismiss();
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ e.printStackTrace();
+ if (mProgressDialog != null && mProgressDialog.isShowing()) {
+ mProgressDialog.dismiss();
+ }
+ ToastUtils.showErrorShort("获取历史轨迹数据失败,请稍后重试");
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ /**
+ * 视图切换
+ */
+ private void setCurrentShowView() {
+ if (mCurrentShowType == 1) {
+ //显示地图
+ mRlMapView.setVisibility(View.VISIBLE);
+ mRlvStep.setVisibility(View.GONE);
+ } else {
+ //显示文本
+ mRlvStep.setVisibility(View.VISIBLE);
+ mRlMapView.setVisibility(View.GONE);
+ }
+ }
+
+ /**
+ * 画线到地图上
+ *
+ * @param mBeas
+ */
+ private void drawLineToMap(List mBeas) {
+ //清除之前的
+ if (mBeas.size() > 2) {
+ Collections.sort(mBeas);
+ List mTempBeans = new ArrayList<>(mBeas);
+ Observable.just(mTempBeans).map(mineLocationBeans -> {
+ //坐标集合
+ //颜色集合
+ List lineDatas = new ArrayList<>();
+ for (int i = 0; i < mineLocationBeans.size(); i++) {
+ if (i != mineLocationBeans.size() - 1) {
+ //TODO 12:移动 13:等待 14:异常
+ DrawMapLineBean bean = new DrawMapLineBean();
+ //第一个
+ MineLocationBean preBean = mineLocationBeans.get(i);
+ //下一点
+ MineLocationBean nextBean = mineLocationBeans.get(i + 1);
+ long timeSpan = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), preBean.getGmtCreate(),
+ TimeConstants.SEC);
+ LatLng preLatlng = new LatLng(Double.parseDouble(preBean.getLat()),
+ Double.parseDouble(preBean.getLng()));
+ LatLng nextLatlng = new LatLng(Double.parseDouble(nextBean.getLat()),
+ Double.parseDouble(nextBean.getLng()));
+ //TODO 1、距离
+ double distance = DistanceUtil.getDistance(preLatlng, nextLatlng);
+ if (timeSpan < 600) {
+ //在线
+ if (distance / timeSpan > 20) {
+ //TODO 速度大于20/s异常
+ bean.setOnePoint(preLatlng);
+ bean.setTwoPoint(nextLatlng);
+ bean.setType(14);
+ bean.setLineColor(Integer.valueOf(Color.RED));
+ } else if (distance / timeSpan <= 0.5) {
+ //TODO 速度小于0.5m/s等待
+ bean.setOnePoint(preLatlng);
+ bean.setTwoPoint(nextLatlng);
+ bean.setType(13);
+ bean.setLineColor(Integer.valueOf(Color.YELLOW));
+ } else {
+ //TODO 移动 绿色
+ bean.setOnePoint(preLatlng);
+ bean.setTwoPoint(nextLatlng);
+ bean.setType(12);
+ bean.setLineColor(Integer.valueOf(Color.parseColor("#218868")));
+ }
+ } else {
+ //TODO 失联
+ bean.setOnePoint(preLatlng);
+ bean.setTwoPoint(nextLatlng);
+ bean.setType(12);
+ bean.setLineColor(Integer.valueOf(Color.GRAY));
+ }
+ lineDatas.add(bean);
+ }
+ }
+ return lineDatas;
+ }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(List o) {
+ mBaiduMap.clear();
+ if (o != null && o.size() > 0) {
+ for (int i = 0; i < o.size(); i++) {
+ List points = new ArrayList<>();
+ points.add(o.get(i).getOnePoint());
+ points.add(o.get(i).getTwoPoint());
+// boolean dottedLine = false;
+// if (o.get(i).getType() == 14 || o.get(i).getType() == 12) {
+// dottedLine = true;
// }
-// bean.setTime(preBean.getGmtCreate());
-// bean.setStateTime("开始定位" + preBean.getGmtCreate());
-// bean.setType(LocusStepAdapter.TYPE_START);
-// bean.setCreateTime(preBean.getGmtCreate());
-// bean.setOrder(i);
-// mStepBeans.add(bean);
-// } else {
-// //TODO 1、距离
-// double distance = DistanceUtil.getDistance(preLatlng, nextLatlng);
-// if (timeSpan < 600) {
-// //在线
-// if (distance / timeSpan > 20) {
-// //TODO 速度大于20/s异常
-// if (mStepBeans != null && mStepBeans.size() > 0) {
-// LocusTextBean tempbean = mStepBeans.get(mStepBeans.size() - 1);
-// if (tempbean.getType() == LocusStepAdapter.TYPE_UNUSUAL) {
-// //上一条也是移动的 //将停止时间累计
-// long timeSpan2 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), tempbean.getCreateTime(), TimeConstants.SEC);
-// tempbean.setStateTime(timeSpan2 + "");
-// tempbean.setCreateTime(nextBean.getGmtCreate());
-// long l = tempbean.getSecond() + timeSpan2;
-// tempbean.setOrder(i);
-// tempbean.setSecond(l);
-// } else {
-// LocusTextBean text = mStepBeans.get(mStepBeans.size() - 1);
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(preBean.getUserLocation()) || "null".equals(preBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress("定位地址:" + preBean.getUserLocation());
-// }
-// bean.setCreateTime(nextBean.getGmtCreate());
-// bean.setTime(text.getCreateTime());
-// long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), text.getCreateTime(), TimeConstants.SEC);
-// bean.setStateTime(timeSpan1 + "");
-// bean.setType(LocusStepAdapter.TYPE_UNUSUAL);
-// bean.setSecond(timeSpan1);
-// bean.setOrder(i);
-// mStepBeans.add(bean);
-// }
-// } else {
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(preBean.getUserLocation()) || "null".equals(preBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress("定位地址:" + preBean.getUserLocation());
-// }
-// bean.setCreateTime(nextBean.getGmtCreate());
-// bean.setTime(preBean.getGmtCreate());
-// long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), preBean.getGmtCreate(), TimeConstants.SEC);
-// bean.setStateTime(timeSpan1 + "");
-// bean.setSecond(timeSpan1);
-// bean.setType(LocusStepAdapter.TYPE_UNUSUAL);
-// bean.setOrder(i);
-// mStepBeans.add(bean);
-// }
-// } else if (distance / timeSpan <= 0.5) {
-// //TODO 速度小于0.5m/s等待
-// if (mStepBeans != null && mStepBeans.size() > 0) {
-// LocusTextBean tempbean = mStepBeans.get(mStepBeans.size() - 1);
-// if (tempbean.getType() == LocusStepAdapter.TYPE_STAY) {
-// //上一条也是移动的 //将停止时间累计
-// long timeSpan2 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), tempbean.getCreateTime(), TimeConstants.SEC);
-// tempbean.setStateTime(timeSpan2 + "");
-// tempbean.setCreateTime(nextBean.getGmtCreate());
-// long l = tempbean.getSecond() + timeSpan2;
-// tempbean.setOrder(i);
-// tempbean.setSecond(l);
-// } else {
-// LocusTextBean text = mStepBeans.get(mStepBeans.size() - 1);
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(preBean.getUserLocation()) || "null".equals(preBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress("定位地址:" + preBean.getUserLocation());
-// }
-// bean.setCreateTime(nextBean.getGmtCreate());
-// bean.setTime(text.getCreateTime());
-// long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), text.getCreateTime(), TimeConstants.SEC);
-// bean.setStateTime(timeSpan1 + "");
-// bean.setType(LocusStepAdapter.TYPE_STAY);
-// bean.setOrder(i);
-// bean.setSecond(timeSpan1);
-// mStepBeans.add(bean);
-// }
-// } else {
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(preBean.getUserLocation()) || "null".equals(preBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress("定位地址:" + preBean.getUserLocation());
-// }
-// bean.setCreateTime(nextBean.getGmtCreate());
-// bean.setTime(preBean.getGmtCreate());
-// long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), preBean.getGmtCreate(), TimeConstants.SEC);
-// bean.setStateTime(timeSpan1 + "");
-// bean.setSecond(timeSpan1);
-// bean.setType(LocusStepAdapter.TYPE_STAY);
-// bean.setOrder(i);
-// mStepBeans.add(bean);
-// }
-// } else {
-// //TODO 移动
-// if (mStepBeans != null && mStepBeans.size() > 0) {
-// LocusTextBean tempbean = mStepBeans.get(mStepBeans.size() - 1);
-// if (tempbean.getType() == LocusStepAdapter.TYPE_ONLINE) {
-// //上一条也是移动的 //将停止时间累计
-// long timeSpan2 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), tempbean.getCreateTime(), TimeConstants.SEC);
-// tempbean.setStateTime(timeSpan2 + "");
-// tempbean.setCreateTime(nextBean.getGmtCreate());
-// long l = tempbean.getSecond() + timeSpan2;
-// tempbean.setSecond(l);
-// tempbean.setOrder(i);
-// } else {
-// LocusTextBean locusTextBean = mStepBeans.get(mStepBeans.size() - 1);
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(preBean.getUserLocation()) || "null".equals(preBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress("定位地址:" + preBean.getUserLocation());
-// }
-// bean.setCreateTime(nextBean.getGmtCreate());
-// bean.setTime(locusTextBean.getCreateTime());
-// long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), locusTextBean.getCreateTime(), TimeConstants.SEC);
-// bean.setStateTime(timeSpan1 + "");
-// bean.setType(LocusStepAdapter.TYPE_ONLINE);
-// bean.setSecond(timeSpan1);
-// bean.setOrder(i);
-// mStepBeans.add(bean);
-// }
-// } else {
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(preBean.getUserLocation()) || "null".equals(preBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress("定位地址:" + preBean.getUserLocation());
-// }
-// bean.setCreateTime(nextBean.getGmtCreate());
-// bean.setTime(preBean.getGmtCreate());
-// long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), preBean.getGmtCreate(), TimeConstants.SEC);
-// bean.setStateTime(timeSpan1 + "");
-// bean.setSecond(timeSpan1);
-// bean.setType(LocusStepAdapter.TYPE_ONLINE);
-// bean.setOrder(i);
-// mStepBeans.add(bean);
-// }
-// }
-// } else {
-// //TODO 失联
-// if (mStepBeans != null && mStepBeans.size() > 0) {
-// LocusTextBean tempbean = mStepBeans.get(mStepBeans.size() - 1);
-// if (tempbean.getType() == LocusStepAdapter.TYPE_OFFLINE) {
-// //上一条也是移动的 //将停止时间累计
-// long timeSpan2 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), tempbean.getCreateTime(), TimeConstants.SEC);
-// tempbean.setStateTime(timeSpan2 + "");
-// tempbean.setCreateTime(nextBean.getGmtCreate());
-// long l = tempbean.getSecond() + timeSpan2;
-// tempbean.setSecond(l);
-// tempbean.setOrder(i);
-// } else {
-// LocusTextBean locusTextBean = mStepBeans.get(mStepBeans.size() - 1);
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(preBean.getUserLocation()) || "null".equals(preBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress("定位地址:" + preBean.getUserLocation());
-// }
-// bean.setCreateTime(nextBean.getGmtCreate());
-// bean.setTime(locusTextBean.getCreateTime());
-// long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), locusTextBean.getCreateTime(), TimeConstants.SEC);
-// bean.setStateTime(timeSpan1 + "");
-// bean.setType(LocusStepAdapter.TYPE_OFFLINE);
-// bean.setSecond(timeSpan1);
-// bean.setOrder(i);
-// mStepBeans.add(bean);
-// }
-// } else {
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(preBean.getUserLocation()) || "null".equals(preBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress("定位地址:" + preBean.getUserLocation());
-// }
-// bean.setOrder(i);
-// bean.setCreateTime(nextBean.getGmtCreate());
-// bean.setTime(preBean.getGmtCreate());
-// long timeSpan1 = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), preBean.getGmtCreate(), TimeConstants.SEC);
-// bean.setStateTime(timeSpan1 + "");
-// bean.setSecond(timeSpan1);
-// bean.setType(LocusStepAdapter.TYPE_OFFLINE);
-// mStepBeans.add(bean);
-// }
-// }
-// }
-// } else {
-// //最后一个点
-// MineLocationBean mineLocationBean = mineBeans.get(mineBeans.size() - 1);
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(mineLocationBean.getUserLocation()) || "null".equals(mineLocationBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress(mineLocationBean.getUserLocation());
-// }
-// bean.setOrder(i);
-// bean.setTime(mineLocationBean.getGmtCreate());
-// bean.setStateTime("开始定位" + mineLocationBean.getGmtCreate());
-// bean.setType(LocusStepAdapter.TYPE_STOP);
-// bean.setCreateTime(mineLocationBean.getGmtCreate());
-// mStepBeans.add(bean);
-// }
-// }
-// } else {
-// MineLocationBean mineLocationBean = mineBeans.get(mineBeans.size() - 1);
-// LocusTextBean bean = new LocusTextBean();
-// if (TextUtils.isEmpty(mineLocationBean.getUserLocation()) || "null".equals(mineLocationBean.getUserLocation())) {
-// bean.setAddress("定位地址:未知");
-// } else {
-// bean.setAddress(mineLocationBean.getUserLocation());
-// }
-// bean.setOrder(2);
-// bean.setTime(mineLocationBean.getGmtCreate());
-// bean.setStateTime("开始定位" + mineLocationBean.getGmtCreate());
-// bean.setType(LocusStepAdapter.TYPE_START);
-// bean.setCreateTime(mineLocationBean.getGmtCreate());
-// mStepBeans.add(bean);
-//
-// LocusTextBean bean1 = new LocusTextBean();
-// if (TextUtils.isEmpty(mineLocationBean.getUserLocation()) || "null".equals(mineLocationBean.getUserLocation())) {
-// bean1.setAddress("定位地址:未知");
-// } else {
-// bean1.setAddress(mineLocationBean.getUserLocation());
-// }
-// bean1.setOrder(1);
-// bean1.setTime(mineLocationBean.getGmtCreate());
-// bean1.setStateTime("开始定位" + mineLocationBean.getGmtCreate());
-// bean1.setType(LocusStepAdapter.TYPE_STOP);
-// bean1.setCreateTime(mineLocationBean.getGmtCreate());
-// mStepBeans.add(bean1);
-// }
-// return mStepBeans;
-// }).subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(new Observer>() {
-// @Override
-// public void onSubscribe(Disposable d) {
-//
-// }
-//
-// @Override
-// public void onNext(List locusTextBeans) {
-// if (locusTextBeans != null && locusTextBeans.size() > 0) {
-// Collections.sort(locusTextBeans);
-// mAdapter.setData(locusTextBeans);
-// }
-// if (mProgressDialog != null && mProgressDialog.isShowing()) {
-// mProgressDialog.dismiss();
-// }
-// }
-//
-// @Override
-// public void onError(Throwable e) {
-// e.printStackTrace();
-// if (mProgressDialog != null && mProgressDialog.isShowing()) {
-// mProgressDialog.dismiss();
-// }
-// ToastUtils.showErrorShort("获取历史轨迹数据失败,请稍后重试");
-// }
-//
-// @Override
-// public void onComplete() {
-//
-// }
-// });
-// }
-//
-// /**
-// * 视图切换
-// */
-// private void setCurrentShowView() {
-// if (mCurrentShowType == 1) {
-// //显示地图
-// mRlMapView.setVisibility(View.VISIBLE);
-// mRlvStep.setVisibility(View.GONE);
-// } else {
-// //显示文本
-// mRlvStep.setVisibility(View.VISIBLE);
-// mRlMapView.setVisibility(View.GONE);
+ OverlayOptions ooPolyline11 =
+ new PolylineOptions().width(10).dottedLine(false).color(o.get(i).getLineColor()).points(points);
+ mBaiduMap.addOverlay(ooPolyline11);
+ }
+ moveMapToCenter(o.get(0).getOnePoint());
+ }
+ if (mPenLineBeans != null && mPenLineBeans.size() > 0) {
+ drawPenToMap(mPenLineBeans);
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ e.printStackTrace();
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+ }
+
+ private void moveMapToCenter(LatLng latLng) {
+ MapStatus ms = new MapStatus.Builder().zoom(16).target(latLng).build();
+ MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms);
+ mBaiduMap.setMapStatus(u);
+ }
+
+ /**
+ * 越界marker
+ *
+ * @param beans
+ */
+ private void drawOverstepMarker(List beans) {
+ if (mBitMap == null) {
+ mBitMap = BitmapDescriptorFactory.fromResource(R.drawable.ic_beyond);
+ }
+ MarkerOptions markerOptions =
+ new MarkerOptions().position(new LatLng(Double.parseDouble(beans.get(0).getLat()),
+ Double.parseDouble(beans.get(0).getLng())))//mark出现的位置
+ .icon(mBitMap) //mark图标
+ .draggable(false)//mark可拖拽
+ .animateType(MarkerOptions.MarkerAnimateType.none);
+ mBaiduMap.addOverlay(markerOptions);
+ }
+
+ /**
+ * 批量添加mark
+ *
+ * @param points
+ */
+ private void addMarksToMap(List points) {
+ View view = View.inflate(this, R.layout.item_mark_user, null);
+ BitmapDescriptor markIcon = BitmapDescriptorFactory.fromView(view);
+ int height = markIcon.getBitmap().getHeight();
+ LogUtils.e(height);
+ List options = new ArrayList();
+ LatLng point1 = new LatLng(39.92235, 116.380338);
+ LatLng point2 = new LatLng(39.947246, 116.414977);
+ OverlayOptions option1 = new MarkerOptions().position(point1).icon(markIcon);
+ OverlayOptions option2 = new MarkerOptions().position(point2).icon(markIcon);
+ options.add(option1);
+ options.add(option2);
+ mBaiduMap.addOverlays(options);
+ mBaiduMap.setOnMarkerClickListener(marker -> {
+ View infoView = View.inflate(this, R.layout.item_mark_info, null);
+ BitmapDescriptor infoBitmap = BitmapDescriptorFactory.fromView(infoView);
+ InfoWindow infoWindow = new InfoWindow(infoBitmap, marker.getPosition(), -height, () -> {
+ mBaiduMap.hideInfoWindow();
+ });
+ mBaiduMap.showInfoWindow(infoWindow);
+ return true;
+ });
+ }
+ //TODO 片区中间绘制文字
+// LatLng center = PointUtils.getCenterOfGravityPoint(pts);
+// OverlayOptions textOption = new TextOptions()
+// .bgColor(0xAAFFFF00)
+// .fontSize(24)
+// .fontColor(0xFFFF00FF)
+// .text(UserLgUtils.getName())
+// .rotate(-30)
+// .position(center);
+// mBaiduMap.addOverlay(textOption);
+
+ /**
+ * 画电子围栏
+ */
+ private void drawPenToMap(List penLineBeans) {
+ for (int i = 0; i < penLineBeans.size(); i++) {
+ List areaPoints = penLineBeans.get(i).getAreaPoints();
+ if (areaPoints != null && areaPoints.size() >= 4) {
+ List pts = new ArrayList<>();
+ for (int j = 0; j < areaPoints.size(); j++) {
+ double la = Double.parseDouble(areaPoints.get(j).getLatitude());
+ double lo = Double.parseDouble(areaPoints.get(j).getLongitude());
+ pts.add(new LatLng(la, lo));
+ }
+ double laend = Double.parseDouble(areaPoints.get(0).getLatitude());
+ double loend = Double.parseDouble(areaPoints.get(0).getLongitude());
+ pts.add(new LatLng(laend, loend));
+ PenLineBean bean = penLineBeans.get(i);
+ int borderColor = Color.argb(80, bean.getBorderRed(), bean.getBorderGreen(), bean.getBorderBlue());
+ int areColor = Color.argb(50, bean.getAreaRed(), bean.getAreaGreen(), bean.getAreaBlue());
+ OverlayOptions polygonOption =
+ new PolygonOptions().points(pts).stroke(new Stroke(3, borderColor)).fillColor(areColor);
+ mBaiduMap.addOverlay(polygonOption);
+ }
+ }
+ }
+
+ private BDLocation mCurrent;
+
+ public class MessageReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (PathConfig.ACTION_LOCATION_MESSAGE.equals(intent.getAction())) {
+
+ }
+ }
+ }
+
+ private void startSignLocation() {
+ stopLocation();
+ mLocationClient = new LocationClient(getApplicationContext());
+ LocationClientOption locationOption = new LocationClientOption();
+ SignLocationListener myLocationListener = new SignLocationListener();
+ mLocationClient.registerLocationListener(myLocationListener);
+ locationOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
+ locationOption.setCoorType("bd09ll");
+ locationOption.setScanSpan(30 * 1000);
+ locationOption.setIsNeedAddress(true);
+ locationOption.setNeedDeviceDirect(false);
+ locationOption.setLocationNotify(false);
+ locationOption.setIgnoreKillProcess(true);
+ locationOption.setIsNeedLocationDescribe(true);
+ locationOption.setIsNeedLocationPoiList(true);
+ locationOption.SetIgnoreCacheException(false);
+ locationOption.setOpenGps(true);
+ locationOption.setIsNeedAltitude(false);
+ mLocationClient.setLocOption(locationOption);
+ //开始定位
+ mLocationClient.start();
+ }
+
+ private void stopLocation() {
+ if (null != mLocationClient) {
+ mLocationClient.stop();
+ }
+ }
+
+ private class SignLocationListener extends BDAbstractLocationListener {
+ @Override
+ public void onReceiveLocation(BDLocation bdLocation) {
+ if (bdLocation != null && bdLocation.getLatitude() != 0 && bdLocation.getLongitude() != 0) {
+ checkPointIsLegal(bdLocation);
+ }
+ }
+ }
+
+ private void checkPointIsLegal(BDLocation bdLocation) {
+ if (PathConfig.CITY_CODE_DEFAULT.equals(bdLocation.getCityCode())) {
+ if (bdLocation != null && bdLocation.getLatitude() != Double.MIN_VALUE && bdLocation.getLongitude() != Double.MIN_VALUE) {
+ if (bdLocation.getRadius() <= 150) {
+ mBaiduMap.setMyLocationEnabled(true);
+ MyLocationData locData =
+ new MyLocationData.Builder().accuracy(bdLocation.getRadius()).latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build();
+ mBaiduMap.setMyLocationData(locData);
+ if (mCurrent == null) {
+ mCurrent = bdLocation;
+ moveMapToCenter(new LatLng(mCurrent.getLatitude(), mCurrent.getLongitude()));
+ }
+ if (mPenLineBeans != null && mPenLineBeans.size() > 0) {
+ boolean isIn = getPointIsIn(bdLocation, mPenLineBeans);
+ if (!isIn) {
+ setDisToView(bdLocation);
+ } else {
+ mTvDistance.setText("已在片区内");
+ }
+ }
+ }
+ }
+ }
+ //显示定位图标
+ }
+
+ /**
+ * 设置距片区距离
+ *
+ * @param location
+ */
+ private void setDisToView(BDLocation location) {
+ List maxMin = new ArrayList<>();
+ for (int i = 0; i < mPenLineBeans.size(); i++) {
+ PenLineBean penLineBean = mPenLineBeans.get(i);
+ if (penLineBean.getAreaPoints() != null && penLineBean.getAreaPoints().size() > 0) {
+ if (penLineBean.getAreaPoints() != null && penLineBean.getAreaPoints().size() >= 3) {
+ List tempList = new ArrayList<>();
+ for (int j = 0; j < penLineBean.getAreaPoints().size(); j++) {
+ PenLineBean.AreaPointsBean areaPointsBean = penLineBean.getAreaPoints().get(j);
+ double la = Double.parseDouble(areaPointsBean.getLatitude());
+ double lo = Double.parseDouble(areaPointsBean.getLongitude());
+ LatLng latLng = new LatLng(la, lo);
+ LatLng currentLa = new LatLng(location.getLatitude(), location.getLongitude());
+ double distance = DistanceUtil.getDistance(latLng, currentLa);
+ tempList.add(distance);
+ }
+ Double min = Collections.min(tempList);
+ maxMin.add(min);
+ }
+ }
+ }
+ if (maxMin.size() > 0) {
+ Double min = Collections.min(maxMin);
+ if (min > 1) {
+ String format = mFormat.format(min);
+ mTvDistance.setText("距片区距离:" + format + "米");
+ }
+ }
+ }
+
+ /**
+ * 判断是否在片区内
+ *
+ * @param location
+ * @param penLineBeans
+ * @return
+ */
+ private boolean getPointIsIn(BDLocation location, List penLineBeans) {
+ boolean isIn = false;
+ LatLng cur = new LatLng(location.getLatitude(), location.getLongitude());
+ if (penLineBeans != null && penLineBeans.size() > 0) {
+ for (int i = 0; i < penLineBeans.size(); i++) {
+ List areaPoints = penLineBeans.get(i).getAreaPoints();
+ if (areaPoints != null && areaPoints.size() > 3) {
+ List temps = new ArrayList<>();
+ for (int j = 0; j < areaPoints.size(); j++) {
+ double la = Double.parseDouble(areaPoints.get(j).getLatitude());
+ double lo = Double.parseDouble(areaPoints.get(j).getLongitude());
+ LatLng latLng = new LatLng(la, lo);
+ temps.add(latLng);
+ }
+ boolean is = PointUtils.isInPolygon(cur, temps);
+ if (is) {
+ isIn = true;
+ break;
+ }
+ }
+ }
+ }
+ return isIn;
+ }
+
+
+ @Override
+ protected void onDestroy() {
+ stopLocation();
+ mMapView.onDestroy();
+// if (mReceiver != null) {
+// unregisterReceiver(mReceiver);
// }
-// }
-//
-// /**
-// * 画线到地图上
-// *
-// * @param mBeas
-// */
-// private void drawLineToMap(List mBeas) {
-// //清除之前的
-// if (mBeas.size() > 2) {
-// Collections.sort(mBeas);
-// List mTempBeans = new ArrayList<>(mBeas);
-// Observable.just(mTempBeans)
-// .map(mineLocationBeans -> {
-// //坐标集合
-// //颜色集合
-// List lineDatas = new ArrayList<>();
-// for (int i = 0; i < mineLocationBeans.size(); i++) {
-// if (i != mineLocationBeans.size() - 1) {
-// //TODO 12:移动 13:等待 14:异常
-// DrawMapLineBean bean = new DrawMapLineBean();
-// //第一个
-// MineLocationBean preBean = mineLocationBeans.get(i);
-// //下一点
-// MineLocationBean nextBean = mineLocationBeans.get(i + 1);
-// long timeSpan = TimeUtils.getTimeSpan(nextBean.getGmtCreate(), preBean.getGmtCreate(), TimeConstants.SEC);
-// LatLng preLatlng = new LatLng(Double.parseDouble(preBean.getUserLatitude()), Double.parseDouble(preBean.getUserLongitude()));
-// LatLng nextLatlng = new LatLng(Double.parseDouble(nextBean.getUserLatitude()), Double.parseDouble(nextBean.getUserLongitude()));
-// //TODO 1、距离
-// double distance = DistanceUtil.getDistance(preLatlng, nextLatlng);
-// if (timeSpan < 600) {
-// //在线
-// if (distance / timeSpan > 20) {
-// //TODO 速度大于20/s异常
-// bean.setOnePoint(preLatlng);
-// bean.setTwoPoint(nextLatlng);
-// bean.setType(14);
-// bean.setLineColor(Integer.valueOf(Color.RED));
-// } else if (distance / timeSpan <= 0.5) {
-// //TODO 速度小于0.5m/s等待
-// bean.setOnePoint(preLatlng);
-// bean.setTwoPoint(nextLatlng);
-// bean.setType(13);
-// bean.setLineColor(Integer.valueOf(Color.YELLOW));
-// } else {
-// //TODO 移动 绿色
-// bean.setOnePoint(preLatlng);
-// bean.setTwoPoint(nextLatlng);
-// bean.setType(12);
-// bean.setLineColor(Integer.valueOf(Color.parseColor("#218868")));
-// }
-// } else {
-// //TODO 失联
-// bean.setOnePoint(preLatlng);
-// bean.setTwoPoint(nextLatlng);
-// bean.setType(12);
-// bean.setLineColor(Integer.valueOf(Color.GRAY));
-// }
-// lineDatas.add(bean);
-// }
-// }
-// return lineDatas;
-// })
-// .subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(new Observer>() {
-// @Override
-// public void onSubscribe(Disposable d) {
-//
-// }
-//
-// @Override
-// public void onNext(List o) {
-// mBaiduMap.clear();
-// if (o != null && o.size() > 0) {
-// for (int i = 0; i < o.size(); i++) {
-// List points = new ArrayList<>();
-// points.add(o.get(i).getOnePoint());
-// points.add(o.get(i).getTwoPoint());
-//// boolean dottedLine = false;
-//// if (o.get(i).getType() == 14 || o.get(i).getType() == 12) {
-//// dottedLine = true;
-//// }
-// OverlayOptions ooPolyline11 = new PolylineOptions()
-// .width(10)
-// .dottedLine(false)
-// .color(o.get(i).getLineColor())
-// .points(points);
-// mBaiduMap.addOverlay(ooPolyline11);
-// }
-// moveMapToCenter(o.get(0).getOnePoint());
-// }
-// if (mPenLineBeans != null && mPenLineBeans.size() > 0) {
-// drawPenToMap(mPenLineBeans);
-// }
-// }
-//
-// @Override
-// public void onError(Throwable e) {
-// e.printStackTrace();
-// }
-//
-// @Override
-// public void onComplete() {
-//
-// }
-// });
-// }
-// }
-//
-// private void moveMapToCenter(LatLng latLng) {
-// MapStatus ms = new MapStatus.Builder().zoom(16).target(latLng).build();
-// MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms);
-// mBaiduMap.setMapStatus(u);
-// }
-//
-// /**
-// * 越界marker
-// *
-// * @param beans
-// */
-// private void drawOverstepMarker(List beans) {
-// if (mBitMap == null) {
-// mBitMap = BitmapDescriptorFactory.fromResource(R.drawable.ic_beyond);
-// }
-// MarkerOptions markerOptions = new MarkerOptions()
-// .position(new LatLng(Double.parseDouble(beans.get(0).getUserLatitude()), Double.parseDouble(beans.get(0).getUserLongitude())))//mark出现的位置
-// .icon(mBitMap) //mark图标
-// .draggable(false)//mark可拖拽
-// .animateType(MarkerOptions.MarkerAnimateType.none);
-// mBaiduMap.addOverlay(markerOptions);
-// }
-//
-// /**
-// * 批量添加mark
-// *
-// * @param points
-// */
-// private void addMarksToMap(List points) {
-// View view = View.inflate(this, R.layout.item_mark_user, null);
-// BitmapDescriptor markIcon = BitmapDescriptorFactory.fromView(view);
-// int height = markIcon.getBitmap().getHeight();
-// LogUtils.e(height);
-// List options = new ArrayList();
-// LatLng point1 = new LatLng(39.92235, 116.380338);
-// LatLng point2 = new LatLng(39.947246, 116.414977);
-// OverlayOptions option1 = new MarkerOptions()
-// .position(point1)
-// .icon(markIcon);
-// OverlayOptions option2 = new MarkerOptions()
-// .position(point2)
-// .icon(markIcon);
-// options.add(option1);
-// options.add(option2);
-// mBaiduMap.addOverlays(options);
-// mBaiduMap.setOnMarkerClickListener(marker -> {
-// View infoView = View.inflate(this, R.layout.item_mark_info, null);
-// BitmapDescriptor infoBitmap = BitmapDescriptorFactory.fromView(infoView);
-// InfoWindow infoWindow = new InfoWindow(infoBitmap, marker.getPosition(), -height, () -> {
-// mBaiduMap.hideInfoWindow();
-// });
-// mBaiduMap.showInfoWindow(infoWindow);
-// return true;
-// });
-// }
-// //TODO 片区中间绘制文字
-//// LatLng center = PointUtils.getCenterOfGravityPoint(pts);
-//// OverlayOptions textOption = new TextOptions()
-//// .bgColor(0xAAFFFF00)
-//// .fontSize(24)
-//// .fontColor(0xFFFF00FF)
-//// .text(UserLgUtils.getName())
-//// .rotate(-30)
-//// .position(center);
-//// mBaiduMap.addOverlay(textOption);
-//
-// /**
-// * 画电子围栏
-// */
-// private void drawPenToMap(List penLineBeans) {
-// for (int i = 0; i < penLineBeans.size(); i++) {
-// List areaPoints = penLineBeans.get(i).getAreaPoints();
-// if (areaPoints != null && areaPoints.size() >= 4) {
-// List pts = new ArrayList<>();
-// for (int j = 0; j < areaPoints.size(); j++) {
-// double la = Double.parseDouble(areaPoints.get(j).getLatitude());
-// double lo = Double.parseDouble(areaPoints.get(j).getLongitude());
-// pts.add(new LatLng(la, lo));
-// }
-// double laend = Double.parseDouble(areaPoints.get(0).getLatitude());
-// double loend = Double.parseDouble(areaPoints.get(0).getLongitude());
-// pts.add(new LatLng(laend, loend));
-// PenLineBean bean = penLineBeans.get(i);
-// int borderColor = Color.argb(80, bean.getBorderRed(), bean.getBorderGreen(), bean.getBorderBlue());
-// int areColor = Color.argb(50, bean.getAreaRed(), bean.getAreaGreen(), bean.getAreaBlue());
-// OverlayOptions polygonOption = new PolygonOptions()
-// .points(pts)
-// .stroke(new Stroke(3, borderColor))
-// .fillColor(areColor);
-// mBaiduMap.addOverlay(polygonOption);
-// }
-// }
-// }
-//
-// private BDLocation mCurrent;
-//
-// public class MessageReceiver extends BroadcastReceiver {
-// @Override
-// public void onReceive(Context context, Intent intent) {
-// if (PathConfig.ACTION_LOCATION_MESSAGE.equals(intent.getAction())) {
-//
-// }
-// }
-// }
-//
-// private void startSignLocation() {
-// stopLocation();
-// mLocationClient = new LocationClient(getApplicationContext());
-// LocationClientOption locationOption = new LocationClientOption();
-// SignLocationListener myLocationListener = new SignLocationListener();
-// mLocationClient.registerLocationListener(myLocationListener);
-// locationOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
-// locationOption.setCoorType("bd09ll");
-// locationOption.setScanSpan(30 * 1000);
-// locationOption.setIsNeedAddress(true);
-// locationOption.setNeedDeviceDirect(false);
-// locationOption.setLocationNotify(false);
-// locationOption.setIgnoreKillProcess(true);
-// locationOption.setIsNeedLocationDescribe(true);
-// locationOption.setIsNeedLocationPoiList(true);
-// locationOption.SetIgnoreCacheException(false);
-// locationOption.setOpenGps(true);
-// locationOption.setIsNeedAltitude(false);
-// mLocationClient.setLocOption(locationOption);
-// //开始定位
-// mLocationClient.start();
-// }
-//
-// private void stopLocation() {
-// if (null != mLocationClient) {
-// mLocationClient.stop();
-// }
-// }
-//
-// private class SignLocationListener extends BDAbstractLocationListener {
-// @Override
-// public void onReceiveLocation(BDLocation bdLocation) {
-// if (bdLocation != null && bdLocation.getLatitude() != 0 && bdLocation.getLongitude() != 0) {
-// checkPointIsLegal(bdLocation);
-// }
-// }
-// }
-//
-// private void checkPointIsLegal(BDLocation bdLocation) {
-// if (PathConfig.CITY_CODE_DEFAULT.equals(bdLocation.getCityCode())) {
-// if (bdLocation != null && bdLocation.getLatitude() != Double.MIN_VALUE && bdLocation.getLongitude() != Double.MIN_VALUE) {
-// if (bdLocation.getRadius() <= 150) {
-// mBaiduMap.setMyLocationEnabled(true);
-// MyLocationData locData = new MyLocationData.Builder()
-// .accuracy(bdLocation.getRadius())
-// .latitude(bdLocation.getLatitude())
-// .longitude(bdLocation.getLongitude()).build();
-// mBaiduMap.setMyLocationData(locData);
-// if (mCurrent == null) {
-// mCurrent = bdLocation;
-// moveMapToCenter(new LatLng(mCurrent.getLatitude(), mCurrent.getLongitude()));
-// }
-// if (mPenLineBeans != null && mPenLineBeans.size() > 0) {
-// boolean isIn = getPointIsIn(bdLocation, mPenLineBeans);
-// if (!isIn) {
-// setDisToView(bdLocation);
-// } else {
-// mTvDistance.setText("已在片区内");
-// }
-// }
-// }
-// }
-// }
-// //显示定位图标
-// }
-//
-// /**
-// * 设置距片区距离
-// *
-// * @param location
-// */
-// private void setDisToView(BDLocation location) {
-// List maxMin = new ArrayList<>();
-// for (int i = 0; i < mPenLineBeans.size(); i++) {
-// PenLineBean penLineBean = mPenLineBeans.get(i);
-// if (penLineBean.getAreaPoints() != null && penLineBean.getAreaPoints().size() > 0) {
-// if (penLineBean.getAreaPoints() != null && penLineBean.getAreaPoints().size() >= 3) {
-// List tempList = new ArrayList<>();
-// for (int j = 0; j < penLineBean.getAreaPoints().size(); j++) {
-// PenLineBean.AreaPointsBean areaPointsBean = penLineBean.getAreaPoints().get(j);
-// double la = Double.parseDouble(areaPointsBean.getLatitude());
-// double lo = Double.parseDouble(areaPointsBean.getLongitude());
-// LatLng latLng = new LatLng(la, lo);
-// LatLng currentLa = new LatLng(location.getLatitude(), location.getLongitude());
-// double distance = DistanceUtil.getDistance(latLng, currentLa);
-// tempList.add(distance);
-// }
-// Double min = Collections.min(tempList);
-// maxMin.add(min);
-// }
-// }
-// }
-// if (maxMin.size() > 0) {
-// Double min = Collections.min(maxMin);
-// if (min > 1) {
-// String format = mFormat.format(min);
-// mTvDistance.setText("距片区距离:" + format + "米");
-// }
-// }
-// }
-//
-// /**
-// * 判断是否在片区内
-// *
-// * @param location
-// * @param penLineBeans
-// * @return
-// */
-// private boolean getPointIsIn(BDLocation location, List penLineBeans) {
-// boolean isIn = false;
-// LatLng cur = new LatLng(location.getLatitude(), location.getLongitude());
-// if (penLineBeans != null && penLineBeans.size() > 0) {
-// for (int i = 0; i < penLineBeans.size(); i++) {
-// List areaPoints = penLineBeans.get(i).getAreaPoints();
-// if (areaPoints != null && areaPoints.size() > 3) {
-// List temps = new ArrayList<>();
-// for (int j = 0; j < areaPoints.size(); j++) {
-// double la = Double.parseDouble(areaPoints.get(j).getLatitude());
-// double lo = Double.parseDouble(areaPoints.get(j).getLongitude());
-// LatLng latLng = new LatLng(la, lo);
-// temps.add(latLng);
-// }
-// boolean is = PointUtils.isInPolygon(cur, temps);
-// if (is) {
-// isIn = true;
-// break;
-// }
-// }
-// }
-// }
-// return isIn;
-// }
-//
-//
-// @Override
-// protected void onDestroy() {
-// stopLocation();
-// mMapView.onDestroy();
-//// if (mReceiver != null) {
-//// unregisterReceiver(mReceiver);
-//// }
-// if (mBind != null) {
-// mBind.unbind();
-// }
-// super.onDestroy();
-// }
-//
-//}
+ if (mBind != null) {
+ mBind.unbind();
+ }
+ super.onDestroy();
+ }
+
+}
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/ChangePwdActivity.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/ChangePwdActivity.java
index fd1fdcd..e7e850b 100755
--- a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/ChangePwdActivity.java
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/ChangePwdActivity.java
@@ -10,6 +10,7 @@ import android.widget.EditText;
import android.widget.ImageView;
import com.google.gson.Gson;
+import com.sucstepsoft.cm_utils.core.GlobalProvider;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.utils.EncryptUtils;
@@ -20,7 +21,6 @@ import com.sucstepsoft.txrealtimelocation.R;
import com.sucstepsoft.txrealtimelocation.beans.ChangePwdBean;
import com.sucstepsoft.txrealtimelocation.beans.SuccessBean;
import com.sucstepsoft.txrealtimelocation.net.LocationApiService;
-import com.sucstepsoft.txrealtimelocation.services.GlobalProvider;
import com.sucstepsoft.txrealtimelocation.utils.ExceptionHandler;
import butterknife.BindView;
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/MsgDetailActivity.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/MsgDetailActivity.java
new file mode 100644
index 0000000..ddbe8e0
--- /dev/null
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/MsgDetailActivity.java
@@ -0,0 +1,38 @@
+package com.sucstepsoft.txrealtimelocation.activitys.mine;
+
+import com.sucstepsoft.cm_utils.core.beans.MessageBean;
+import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
+import com.sucstepsoft.txrealtimelocation.R;
+
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+
+/**
+ * 消息详情
+ */
+public class MsgDetailActivity extends BaseActivity {
+
+
+ private Unbinder mBind;
+ private MessageBean mBean;
+
+ @Override
+ protected int setLayoutId() {
+ return R.layout.activity_msg_detail;
+ }
+
+ @Override
+ public void initData() {
+ mBind = ButterKnife.bind(this);
+ mTvBaseTitle.setText("消息详情");
+ mBean = (MessageBean) getIntent().getSerializableExtra("bean");
+ if (mBean != null) {
+ setDataToView();
+ }
+ }
+
+ private void setDataToView() {
+ refreshView(STATE_LOAD_SUCCESS);
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/MsgListActivity.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/MsgListActivity.java
new file mode 100644
index 0000000..9885193
--- /dev/null
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/MsgListActivity.java
@@ -0,0 +1,64 @@
+package com.sucstepsoft.txrealtimelocation.activitys.mine;
+
+import android.content.Intent;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.sucstepsoft.cm_utils.core.GlobalProvider;
+import com.sucstepsoft.cm_utils.core.beans.MessageBean;
+import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
+import com.sucstepsoft.txrealtimelocation.R;
+import com.sucstepsoft.txrealtimelocation.adapters.MsgListAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+
+/**
+ * 消息列表
+ */
+public class MsgListActivity extends BaseActivity {
+
+ @BindView(R.id.rlv_msg)
+ RecyclerView mRlvMsg;
+ private Unbinder mBind;
+ private List mData = new ArrayList<>();
+ private MsgListAdapter mAdapter;
+
+ @Override
+ protected int setLayoutId() {
+ return R.layout.activity_msg_list;
+ }
+
+ @Override
+ public void initData() {
+ mBind = ButterKnife.bind(this);
+ refreshView(STATE_LOAD_SUCCESS);
+ mTvBaseTitle.setText("通知消息");
+ mAdapter = new MsgListAdapter(this, mData);
+ mRlvMsg.setLayoutManager(new LinearLayoutManager(this));
+ mRlvMsg.setAdapter(mAdapter);
+ String socketMsg = GlobalProvider.getString(this, "socketMsg");
+ if (TextUtils.isEmpty(socketMsg)) {
+ refreshView(STATE_LOAD_EMPTY);
+ } else {
+ Gson gson = new Gson();
+ List beans = gson.fromJson(socketMsg, new TypeToken>() {
+ }.getType());
+ mData = beans;
+ mAdapter.setData(mData);
+ refreshView(STATE_LOAD_SUCCESS);
+ }
+ mAdapter.addOnItemClickListener(messageBean -> {
+ Intent intent = new Intent(MsgListActivity.this, MsgDetailActivity.class);
+ intent.putExtra("bean", messageBean);
+ startActivity(intent);
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/UserActivity.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/UserActivity.java
index be9e32e..e03539a 100755
--- a/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/UserActivity.java
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/activitys/mine/UserActivity.java
@@ -1,10 +1,7 @@
package com.sucstepsoft.txrealtimelocation.activitys.mine;
-import android.Manifest;
import android.app.ProgressDialog;
-import android.content.Context;
import android.content.Intent;
-import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -12,10 +9,8 @@ import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.provider.Settings;
-import android.support.v4.app.ActivityCompat;
import android.support.v4.content.FileProvider;
import android.support.v7.app.AlertDialog;
-import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Base64;
import android.view.Gravity;
@@ -32,6 +27,7 @@ import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.request.RequestOptions;
import com.google.gson.Gson;
import com.sucstepsoft.cm_utils.constant.PathConfig;
+import com.sucstepsoft.cm_utils.core.GlobalProvider;
import com.sucstepsoft.cm_utils.core.network.update.CheckUpdateUtils;
import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
@@ -39,7 +35,6 @@ import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.core.widget.views.ButtomDialogView;
import com.sucstepsoft.cm_utils.utils.AppUtils;
import com.sucstepsoft.cm_utils.utils.EncryptUtils;
-import com.sucstepsoft.cm_utils.utils.FileIOUtils;
import com.sucstepsoft.cm_utils.utils.FileUtils;
import com.sucstepsoft.cm_utils.utils.LogUtils;
import com.sucstepsoft.cm_utils.utils.ProiderUtil;
@@ -54,13 +49,10 @@ import com.sucstepsoft.txrealtimelocation.beans.LoginUser;
import com.sucstepsoft.txrealtimelocation.beans.SuccessBean;
import com.sucstepsoft.txrealtimelocation.beans.VersionBean;
import com.sucstepsoft.txrealtimelocation.net.LocationApiService;
-import com.sucstepsoft.txrealtimelocation.services.GlobalProvider;
import com.sucstepsoft.txrealtimelocation.utils.AesUtil;
import com.sucstepsoft.txrealtimelocation.utils.ExceptionHandler;
import java.io.File;
-import java.io.IOException;
-import java.util.UUID;
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -108,6 +100,8 @@ public class UserActivity extends BaseActivity {
RelativeLayout mRlLeaveCheck;
@BindView(R.id.rl_data_center)
RelativeLayout mRlDataCenter;
+ @BindView(R.id.rl_msg)
+ RelativeLayout mRlMsg;
private String mPicPath;
private Unbinder mBind;
@@ -131,6 +125,7 @@ public class UserActivity extends BaseActivity {
mRlLeave.setOnClickListener(v -> choosePage(3));
mRlLeaveCheck.setOnClickListener(v -> choosePage(4));
mRlDataCenter.setOnClickListener(v -> choosePage(5));
+ mRlMsg.setOnClickListener(v -> choosePage(6));
String dirSize = FileUtils.getDirSize(PathConfig.PROJECT_CATCH_PATH);
mTvCacheNum.setText(dirSize);
mTvVersionNum.setText("v " + AppUtils.getAppVersionName());
@@ -284,7 +279,8 @@ public class UserActivity extends BaseActivity {
@Override
public void onSuccess(File file) {
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
- MultipartBody.Part body = MultipartBody.Part.createFormData("image", file.getName(), requestFile);
+ MultipartBody.Part body = MultipartBody.Part.createFormData("image", file.getName(),
+ requestFile);
RetrofitManager.getInstance()
.create(LocationApiService.class)
.uploadImage(body, UserLgUtils.getToken())
@@ -407,7 +403,8 @@ public class UserActivity extends BaseActivity {
if (!TextUtils.isEmpty(baseUserBean.getData())) {
byte[] decode = Base64.decode(baseUserBean.getData(), Base64.DEFAULT);
try {
- String loginUserInfo = AesUtil.aesCommonDecoder(PathConfig.SECRET, new String(decode, "UTF-8"));
+ String loginUserInfo = AesUtil.aesCommonDecoder(PathConfig.SECRET, new String(decode,
+ "UTF-8"));
LogUtils.e(loginUserInfo);
if (!TextUtils.isEmpty(loginUserInfo)) {
AppTokenUser appTokenUser = gson.fromJson(loginUserInfo, AppTokenUser.class);
@@ -573,6 +570,9 @@ public class UserActivity extends BaseActivity {
case 5:
startActivity(new Intent(UserActivity.this, StatisticsActivity.class));
break;
+ case 6:
+ startActivity(new Intent(UserActivity.this, MsgListActivity.class));
+ break;
}
}
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/adapters/MsgListAdapter.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/adapters/MsgListAdapter.java
new file mode 100755
index 0000000..9d53568
--- /dev/null
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/adapters/MsgListAdapter.java
@@ -0,0 +1,36 @@
+package com.sucstepsoft.txrealtimelocation.adapters;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.sucstepsoft.cm_utils.core.beans.MessageBean;
+import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter;
+import com.sucstepsoft.txrealtimelocation.R;
+import com.sucstepsoft.txrealtimelocation.adapters.holders.MsgHolder;
+
+import java.util.List;
+
+/**
+ * 作者: Adam
+ * 日期: 2019/8/14 - 15:35
+ * 邮箱: itgaojian@163.com
+ * 描述:
+ */
+public class MsgListAdapter extends BaseRecyclerAdapter {
+ public MsgListAdapter(Context ctx, List list) {
+ super(ctx, list);
+ }
+
+ @Override
+ public MsgHolder createHolder(ViewGroup parent, int viewType) {
+ View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_msg_list, parent, false);
+ return new MsgHolder(itemView);
+ }
+
+ @Override
+ public void bindHolder(MsgHolder h, int i) {
+ h.mTvTime.setText(mData.get(i).getTimestamp() + "");
+ }
+}
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/adapters/holders/MsgHolder.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/adapters/holders/MsgHolder.java
new file mode 100644
index 0000000..a13c568
--- /dev/null
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/adapters/holders/MsgHolder.java
@@ -0,0 +1,19 @@
+package com.sucstepsoft.txrealtimelocation.adapters.holders;
+
+import android.support.annotation.NonNull;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
+
+import com.sucstepsoft.txrealtimelocation.R;
+
+public class MsgHolder extends RecyclerView.ViewHolder {
+ public TextView mTvTitle;
+ public TextView mTvTime;
+
+ public MsgHolder(@NonNull View itemView) {
+ super(itemView);
+ mTvTitle = itemView.findViewById(R.id.tv_title);
+ mTvTime = itemView.findViewById(R.id.tv_time);
+ }
+}
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/beans/DrawMapLineBean.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/beans/DrawMapLineBean.java
index 5420281..9b2ae73 100755
--- a/app/src/main/java/com/sucstepsoft/txrealtimelocation/beans/DrawMapLineBean.java
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/beans/DrawMapLineBean.java
@@ -1,48 +1,48 @@
-//package com.sucstepsoft.txrealtimelocation.beans;
-//
-//import com.baidu.mapapi.model.LatLng;
-//
-///**
-// * 作者: Adam
-// * 日期: 2019/8/29 - 17:34
-// * 邮箱: itgaojian@163.com
-// * 描述: type 线的类型 12:移动 13:等待 14:异常
-// */
-//public class DrawMapLineBean {
-// private int type;//线的类型
-// private LatLng onePoint;
-// private LatLng twoPoint;
-// private Integer lineColor;
-//
-// public int getType() {
-// return type;
-// }
-//
-// public void setType(int type) {
-// this.type = type;
-// }
-//
-// public LatLng getOnePoint() {
-// return onePoint;
-// }
-//
-// public void setOnePoint(LatLng onePoint) {
-// this.onePoint = onePoint;
-// }
-//
-// public LatLng getTwoPoint() {
-// return twoPoint;
-// }
-//
-// public void setTwoPoint(LatLng twoPoint) {
-// this.twoPoint = twoPoint;
-// }
-//
-// public Integer getLineColor() {
-// return lineColor;
-// }
-//
-// public void setLineColor(Integer lineColor) {
-// this.lineColor = lineColor;
-// }
-//}
+package com.sucstepsoft.txrealtimelocation.beans;
+
+import com.baidu.mapapi.model.LatLng;
+
+/**
+ * 作者: Adam
+ * 日期: 2019/8/29 - 17:34
+ * 邮箱: itgaojian@163.com
+ * 描述: type 线的类型 12:移动 13:等待 14:异常
+ */
+public class DrawMapLineBean {
+ private int type;//线的类型
+ private LatLng onePoint;
+ private LatLng twoPoint;
+ private Integer lineColor;
+
+ public int getType() {
+ return type;
+ }
+
+ public void setType(int type) {
+ this.type = type;
+ }
+
+ public LatLng getOnePoint() {
+ return onePoint;
+ }
+
+ public void setOnePoint(LatLng onePoint) {
+ this.onePoint = onePoint;
+ }
+
+ public LatLng getTwoPoint() {
+ return twoPoint;
+ }
+
+ public void setTwoPoint(LatLng twoPoint) {
+ this.twoPoint = twoPoint;
+ }
+
+ public Integer getLineColor() {
+ return lineColor;
+ }
+
+ public void setLineColor(Integer lineColor) {
+ this.lineColor = lineColor;
+ }
+}
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/beans/MineLocationBean.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/beans/MineLocationBean.java
index 1273596..eed57b3 100755
--- a/app/src/main/java/com/sucstepsoft/txrealtimelocation/beans/MineLocationBean.java
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/beans/MineLocationBean.java
@@ -7,63 +7,19 @@ package com.sucstepsoft.txrealtimelocation.beans;
* 描述:
*/
public class MineLocationBean implements Comparable {
-
- /**
- * userLocationId : 32dcd59c-808b-4220-a586-68acb041b931
- * userLongitude : 111.7705
- * userLatitude : 40.871871
- * userLocation : 中国内蒙古自治区呼和浩特市新城区科尔沁北路
- * isOverstep : 0未越界,1越界 -1异常
- * creator : 1
- * gmtCreate : 2019-08-09 09:27:52
- */
-
- private String userLocationId;
- private String userLongitude;
- private String userLatitude;
- private String userLocation;
- private String isOverstep;
+ private String actionPointId;
private String creator;
+ private String creatorName;
private String gmtCreate;
+ private String lat;
+ private String lng;
- public String getUserLocationId() {
- return userLocationId;
+ public String getActionPointId() {
+ return actionPointId;
}
- public void setUserLocationId(String userLocationId) {
- this.userLocationId = userLocationId;
- }
-
- public String getUserLongitude() {
- return userLongitude;
- }
-
- public void setUserLongitude(String userLongitude) {
- this.userLongitude = userLongitude;
- }
-
- public String getUserLatitude() {
- return userLatitude;
- }
-
- public void setUserLatitude(String userLatitude) {
- this.userLatitude = userLatitude;
- }
-
- public String getUserLocation() {
- return userLocation;
- }
-
- public void setUserLocation(String userLocation) {
- this.userLocation = userLocation;
- }
-
- public String getIsOverstep() {
- return isOverstep;
- }
-
- public void setIsOverstep(String isOverstep) {
- this.isOverstep = isOverstep;
+ public void setActionPointId(String actionPointId) {
+ this.actionPointId = actionPointId;
}
public String getCreator() {
@@ -74,6 +30,14 @@ public class MineLocationBean implements Comparable {
this.creator = creator;
}
+ public String getCreatorName() {
+ return creatorName;
+ }
+
+ public void setCreatorName(String creatorName) {
+ this.creatorName = creatorName;
+ }
+
public String getGmtCreate() {
return gmtCreate;
}
@@ -82,6 +46,22 @@ public class MineLocationBean implements Comparable {
this.gmtCreate = gmtCreate;
}
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
@Override
public int compareTo(MineLocationBean o) {
diff --git a/app/src/main/java/com/sucstepsoft/txrealtimelocation/net/LocationApiService.java b/app/src/main/java/com/sucstepsoft/txrealtimelocation/net/LocationApiService.java
index a61a582..4d4634e 100755
--- a/app/src/main/java/com/sucstepsoft/txrealtimelocation/net/LocationApiService.java
+++ b/app/src/main/java/com/sucstepsoft/txrealtimelocation/net/LocationApiService.java
@@ -2,7 +2,6 @@ package com.sucstepsoft.txrealtimelocation.net;
import com.google.gson.JsonObject;
-import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
import com.sucstepsoft.txrealtimelocation.beans.AddressListBean;
import com.sucstepsoft.txrealtimelocation.beans.AreaListBean;
import com.sucstepsoft.txrealtimelocation.beans.BaseDictionaryBean;
@@ -62,7 +61,6 @@ import java.util.List;
import io.reactivex.Observable;
import okhttp3.MultipartBody;
-import okhttp3.Request;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
@@ -103,7 +101,8 @@ public interface LocationApiService {
*/
@Headers({"Content-Type: application/json", "Accept: application/json"})
@GET("appversion/getappversionnumber/{appVersionId}")
- Observable doCheckAppVersion(@Path("appVersionId") String appVersionId, @Header("token") String token);
+ Observable doCheckAppVersion(@Path("appVersionId") String appVersionId, @Header(
+ "token") String token);
@Headers({"Content-Type:application/json", "Accept:application/json"})
@GET("user/getappuser")
@@ -192,7 +191,9 @@ public interface LocationApiService {
*/
@Headers({"base_url_name:dict", "Content-Type:application/json", "Accept:application/json"})
@GET("app/news/listpagenews/{newsType}")
- Observable getNewsList(@Path("newsType") String newsType, @Query("rows") String rows, @Query("page") String page, @Header("token") String token);
+ Observable getNewsList(@Path("newsType") String newsType,
+ @Query("rows") String rows, @Query("page") String page,
+ @Header("token") String token);
/**
* 获取下级部门和用户列表
@@ -203,7 +204,8 @@ public interface LocationApiService {
*/
@Headers({"Content-Type: application/json", "Accept: application/json"})
@GET("department/getsubdepartmentanduserlist")
- Observable getDepartmentUsers(@Query("id") String id, @Header("token") String token);
+ Observable getDepartmentUsers(@Query("id") String id,
+ @Header("token") String token);
/**
* 获取树
@@ -214,8 +216,10 @@ public interface LocationApiService {
*/
@Headers({"Content-Type:application/json", "Accept:application/json"})
@GET("department/listztreedepartments")
- Observable> getDepartmentList(@Query("id") String id, @Header("token") String token);
- //==========================================================案件相关接口===================Start===================================================
+ Observable> getDepartmentList(@Query("id") String id,
+ @Header("token") String token);
+ //==========================================================案件相关接口===================Start
+ // ===================================================
/**
* 获取首页消息数量
@@ -230,11 +234,13 @@ public interface LocationApiService {
//地区的上级ID传:9d179f05-3ea0-48f7-853c-d3b7124b791c
@Headers({"base_url_name:dict"})
@GET("app/dict/listdict/{dicParentId}")
- Observable> getDictList(@Path("dicParentId") String dicParentId, @Header("token") String token);
+ Observable> getDictList(@Path("dicParentId") String dicParentId, @Header(
+ "token") String token);
@Headers({"base_url_name:dict"})
@GET("app/dict/listdictall/{dictParentId}")
- Observable> getDictListAll(@Path("dictParentId") String pId, @Header("token") String token);
+ Observable> getDictListAll(@Path("dictParentId") String pId, @Header(
+ "token") String token);
/**
* 片长详情
@@ -246,7 +252,8 @@ public interface LocationApiService {
*/
@Headers({"base_url_name:dict"})
@GET("app/communityboss/listcommunitybossdetail/{areaId}/{communityBossParentId}")
- Observable> getListCommunityList(@Path("areaId") String areaId, @Path("communityBossParentId") String bossId, @Header("token") String token);
+ Observable> getListCommunityList(@Path("areaId") String areaId, @Path(
+ "communityBossParentId") String bossId, @Header("token") String token);
/**
* 获取小区列表
@@ -257,7 +264,8 @@ public interface LocationApiService {
*/
@Headers({"base_url_name:dict"})
@GET("app/community/listareacommunity/{areaId}")
- Observable> getCommunityList(@Path("areaId") String areaId, @Header("token") String token);
+ Observable> getCommunityList(@Path("areaId") String areaId, @Header(
+ "token") String token);
/**
* 上传图片文件
@@ -270,7 +278,8 @@ public interface LocationApiService {
@Headers({"base_url_name:dict"})
@Multipart
@POST("file/uploadimage")
- Observable uploadImage(@Part MultipartBody.Part file, @Header("token") String token);
+ Observable uploadImage(@Part MultipartBody.Part file,
+ @Header("token") String token);
/**
* 修改个人信息
@@ -281,7 +290,8 @@ public interface LocationApiService {
*/
@Headers({"Content-Type:application/json", "Accept:application/json"})
@PUT("user/updateuserinfo")
- Observable doChangeUserInfo(@Body RequestBody userInfo, @Header("token") String token);
+ Observable doChangeUserInfo(@Body RequestBody userInfo,
+ @Header("token") String token);
/**
* 修改密码
@@ -305,7 +315,8 @@ public interface LocationApiService {
@Headers({"base_url_name:dict"})
@Multipart
@POST("file/uploadaudio")
- Observable uploadVideo(@Part MultipartBody.Part file, @Header("token") String token);
+ Observable uploadVideo(@Part MultipartBody.Part file,
+ @Header("token") String token);
/**
* 上传音频文件
@@ -318,7 +329,8 @@ public interface LocationApiService {
@Headers({"base_url_name:dict"})
@Multipart
@POST("file/uploadfile")
- Observable uploadFile(@Part MultipartBody.Part file, @Header("token") String token);
+ Observable uploadFile(@Part MultipartBody.Part file,
+ @Header("token") String token);
/**
* 保存案件上报
@@ -329,7 +341,8 @@ public interface LocationApiService {
*/
@Headers({"base_url_name:dict", "Content-Type: application/json", "Accept: application/json"})
@POST("app/reportcase/savereportcase")
- Observable doReportIssue(@Body RequestBody IssueReportBody, @Header("token") String token);
+ Observable doReportIssue(@Body RequestBody IssueReportBody,
+ @Header("token") String token);
/**
* 获取待下派列表
@@ -341,7 +354,9 @@ public interface LocationApiService {
*/
@Headers({"base_url_name:dict"})
@GET("app/reportcase/listpagereportcaseassign")
- Observable getIssueSubList(@Query("rows") String rows, @Query("page") String page, @Header("token") String token);
+ Observable getIssueSubList(@Query("rows") String rows,
+ @Query("page") String page,
+ @Header("token") String token);
/**
* 获取待处理列表
@@ -353,7 +368,9 @@ public interface LocationApiService {
*/
@Headers({"base_url_name:dict"})
@GET("app/reportcase/listpagereportcasehandle")
- Observable getIssueDisList(@Query("rows") String ros, @Query("page") String page, @Header("token") String token);
+ Observable getIssueDisList(@Query("rows") String ros,
+ @Query("page") String page,
+ @Header("token") String token);
/**
* 获取待检查列表
@@ -365,11 +382,14 @@ public interface LocationApiService {
*/
@Headers({"base_url_name:dict"})
@GET("app/reportcase/listpagereportcaseinspect")
- Observable getIssueInspectList(@Query("rows") String row, @Query("page") String page, @Header("token") String token);
+ Observable getIssueInspectList(@Query("rows") String row,
+ @Query("page") String page,
+ @Header("token") String token);
@Headers({"base_url_name:dict"})
@GET("app/reportcase/getreportcase/{reportCaseId}")
- Observable