|
|
@@ -13,6 +13,7 @@ import android.view.Menu;
|
|
|
import android.view.MenuItem;
|
|
|
import android.view.View;
|
|
|
|
|
|
+import com.afollestad.materialdialogs.MaterialDialog;
|
|
|
import com.baidu.mapapi.model.LatLng;
|
|
|
import com.baidu.mapapi.search.core.PoiInfo;
|
|
|
import com.baidu.mapapi.search.route.DrivingRouteLine;
|
|
|
@@ -20,6 +21,7 @@ import com.baidu.mapapi.search.route.DrivingRouteResult;
|
|
|
import com.lidroid.xutils.ViewUtils;
|
|
|
import com.lidroid.xutils.view.annotation.ViewInject;
|
|
|
import com.xzjmyk.pm.activity.AppConfig;
|
|
|
+import com.xzjmyk.pm.activity.BdLocationHelper;
|
|
|
import com.xzjmyk.pm.activity.MyApplication;
|
|
|
import com.xzjmyk.pm.activity.R;
|
|
|
import com.xzjmyk.pm.activity.bean.oa.SelectBean;
|
|
|
@@ -51,14 +53,11 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
private MissionAdapter adapter;
|
|
|
private int flag;
|
|
|
private boolean adminStatus;
|
|
|
-
|
|
|
+ private boolean locationOk = false;
|
|
|
private BroadcastReceiver receiver = new BroadcastReceiver() {
|
|
|
@Override
|
|
|
public void onReceive(Context context, Intent intent) {
|
|
|
- if (intent != null && !StringUtils.isEmpty(intent.getAction()) &&
|
|
|
- "error_bdlocation".equals(intent.getAction())) {
|
|
|
- Crouton.showToast(MissionActivity.this, "定位失败,请检查定位权限", R.color.load_warning);
|
|
|
- }
|
|
|
+ locationOk = MyApplication.getInstance().getBdLocationHelper().locationOk();
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -68,7 +67,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
setContentView(R.layout.activity_mission);
|
|
|
ViewUtils.inject(this);
|
|
|
IntentFilter filter = new IntentFilter();
|
|
|
- filter.addAction("error_bdlocation");
|
|
|
+ filter.addAction(BdLocationHelper.UPLOCATION_ACTION);
|
|
|
registerReceiver(receiver, filter);
|
|
|
initView();
|
|
|
initEvent();
|
|
|
@@ -107,9 +106,8 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
if (getIntent() != null)
|
|
|
flag = getIntent().getIntExtra("flag", 0);
|
|
|
String addrName = MyApplication.getInstance().getBdLocationHelper().getName();
|
|
|
- if (StringUtils.isEmpty(addrName) || "当前位置".equals(addrName)) {
|
|
|
- Crouton.showToast(ct, "定位失败,请检查定位权限", R.color.load_warning);
|
|
|
- }
|
|
|
+ if (StringUtils.isEmpty(addrName))
|
|
|
+ showNotLocation();
|
|
|
adminStatus = getIntent() == null ? false : getIntent().getBooleanExtra(AppConfig.IS_ADMIN, false);
|
|
|
adapter = new MissionAdapter(this, this);
|
|
|
recycler.setLayoutManager(new MostLinearLayoutManager(ct));
|
|
|
@@ -123,7 +121,6 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
|
|
|
private void endActivity() {
|
|
|
unregisterReceiver(receiver);
|
|
|
- sendBroadcast(new Intent(AlarmService.UPDATA_MISSION_PLAN));
|
|
|
boolean isAuto = PreferenceUtils.getBoolean(AppConfig.AUTO_MISSION, false);
|
|
|
if (isAuto) {
|
|
|
setResult(0x20);
|
|
|
@@ -192,6 +189,10 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
}
|
|
|
break;
|
|
|
case R.id.click_btn:
|
|
|
+ if (!locationOk) {
|
|
|
+ showNotLocation();
|
|
|
+ return;
|
|
|
+ }
|
|
|
presenter.submit(adapter.getModels());
|
|
|
break;
|
|
|
}
|
|
|
@@ -283,7 +284,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
MyApplication.getInstance().getBdLocationHelper().getLongitude())));
|
|
|
}
|
|
|
adapter.notifyItemChanged(position);
|
|
|
- setEndTime(entity.getCompanyName());
|
|
|
+ setEndTime(entity.getCompanyName(), entity.getDistance());
|
|
|
} else if (requestCode == 0x21) {//选择地址
|
|
|
PoiInfo info = data.getParcelableExtra("resultName");
|
|
|
if (info == null) {
|
|
|
@@ -302,7 +303,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
, new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
|
|
|
MyApplication.getInstance().getBdLocationHelper().getLongitude())));
|
|
|
adapter.notifyItemChanged(position);
|
|
|
- setEndTime(info.name);
|
|
|
+ setEndTime(info.name, 0);
|
|
|
}
|
|
|
} else if (0x22 == requestCode) {//外勤设置
|
|
|
boolean isAuto = data.getBooleanExtra("isAuto", true);
|
|
|
@@ -328,29 +329,58 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void setEndTime(String name) {
|
|
|
+ private void setEndTime(String name, final double dis) {
|
|
|
BaiduMapUtil.getInstence().getDrivingRoute(MyApplication.getInstance().
|
|
|
getBdLocationHelper().getCityName(), MyApplication.getInstance().
|
|
|
getBdLocationHelper().getName(), name, new OnGetDrivingRouteResult() {
|
|
|
@Override
|
|
|
public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
|
|
|
List<DrivingRouteLine> list = drivingRouteResult.getRouteLines();
|
|
|
- if (ListUtils.isEmpty(list)) return;
|
|
|
+ if (ListUtils.isEmpty(list)) {
|
|
|
+ Log.i("gongpengming", "onGetDrivingRouteResult: isEmpty");
|
|
|
+ if (dis != 0) {
|
|
|
+ setVoisitTime((long) (dis / 3));
|
|
|
+ } else
|
|
|
+ setVoisitTime(800);
|
|
|
+ return;
|
|
|
+ }
|
|
|
int minTime = 0;
|
|
|
for (DrivingRouteLine e : list) {
|
|
|
if (minTime == 0 || minTime > e.getDuration()) {
|
|
|
minTime = e.getDuration();
|
|
|
}
|
|
|
}
|
|
|
+ setVoisitTime(minTime);
|
|
|
Log.i("gongpengming", "最短时间为" + minTime);
|
|
|
- String realTime = TimeUtils.f_long_2_str(System.currentTimeMillis() + (minTime * 1000));
|
|
|
- adapter.getModels().get(position).setVisitTime(realTime);
|
|
|
- adapter.notifyItemChanged(position);
|
|
|
+
|
|
|
}
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param time 秒
|
|
|
+ */
|
|
|
+ private void setVoisitTime(long time) {
|
|
|
+ String realTime = TimeUtils.f_long_2_str(System.currentTimeMillis() + (time * 1000));
|
|
|
+ adapter.getModels().get(position).setVisitTime(realTime);
|
|
|
+ adapter.notifyItemChanged(position);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void showNotLocation() {
|
|
|
+ MaterialDialog dialog = new MaterialDialog.Builder(ct).title(R.string.prompt_title).
|
|
|
+ content(R.string.open_location)
|
|
|
+ .positiveText(R.string.sure).
|
|
|
+ autoDismiss(false).callback(new MaterialDialog.ButtonCallback() {
|
|
|
+ @Override
|
|
|
+ public void onPositive(MaterialDialog dialog) {
|
|
|
+ super.onPositive(dialog);
|
|
|
+ dialog.dismiss();
|
|
|
+ }
|
|
|
+ }).build();
|
|
|
+ dialog.show();
|
|
|
+ }
|
|
|
+
|
|
|
private void addEntity(List<MissionModel> entitys) {
|
|
|
MissionModel entity = new MissionModel();
|
|
|
entity.setLocation(MyApplication.getInstance().getBdLocationHelper().getName());//当前位置
|