fix: 修改自动采集图片损坏的问题

This commit is contained in:
2023-01-09 14:39:51 +08:00
parent 8c81509ccb
commit b1a89e1f05
2 changed files with 99 additions and 66 deletions

View File

@@ -12,8 +12,8 @@ android {
applicationId "com.navinfo.outdoor"
minSdkVersion 23
targetSdkVersion 30
versionCode 40
versionName "8.221219"
versionCode 41
versionName "8.230109"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
lintOptions {

View File

@@ -154,12 +154,14 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.TimeZone;
import java.util.Timer;
import java.util.TimerTask;
@@ -1309,9 +1311,12 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic
/**
* 结束采集,对照片归档
* */
private boolean hasFinishTask = false; // 当前是否包含已完成任务未处理完
private int finishTaskCount = 0;
private boolean wantBack = false; // 用户是否想要退出当前界面如果当前有正在处理的图片转移任务会阻挡用户退出此时该值状态置为true当照片处理完后可以对话框提示用户退出
private void finishRoadTask(Map<Integer, RoadMatchEntity> finishEntityMap) {
hasFinishTask = true;
if (finishEntityMap!=null&&!finishEntityMap.isEmpty()) {
finishTaskCount++;
Observable.fromIterable(finishEntityMap.values())
.subscribeOn(Schedulers.io()).observeOn(Schedulers.computation())
.filter(roadMatchEntity -> roadMatchEntity!=null)
@@ -1351,15 +1356,11 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic
roadSaveWork(poiEntity);
/*poiEntity.setTaskStatus(3);
InsertAndUpdateUtils.getInstance().insertOrUpdate(AutoTakePictureActivity.this, poiEntity);*/
finishEntityMap.remove(poiEntity.getTaskId());
}
})
.observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(new Function<Throwable, ObservableSource<? extends PoiEntity>>() {
@Override
public ObservableSource<? extends PoiEntity> apply(Throwable throwable) throws Exception {
return null;
}
})
.onErrorResumeNext(Observable.empty())
.subscribe(new Consumer<PoiEntity>() {
@Override
public void accept(PoiEntity poiEntity) {
@@ -1367,6 +1368,7 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic
// if (poiEntity!=null) {
// finishEntityMap.remove(poiEntity.getTaskId());
// }
}
}, new Consumer<Throwable>() {
@Override
@@ -1375,18 +1377,48 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic
systemTTS.playText("注意,领取任务失败!");
XLog.e("完成失败:"+throwable.getMessage());
ToastUtils.Message(AutoTakePictureActivity.this, throwable.getMessage());
hasFinishTask = false;
finishTaskCount--;
if (finishTaskCount == 0) {
showExitDialog(true);
}
}
}, new Action() {
@Override
public void run() throws Exception {
// 重新绘制网络任务和本地任务
initRoadLine2Map();
// finishEntityMap.clear();
hasFinishTask = false;
finishTaskCount--;
if (finishTaskCount == 0) {
showExitDialog(false);
}
}
});
}
}
private void showExitDialog(boolean hasError) {
StringBuilder dialogMessage = new StringBuilder("任务数据处理完成,是否退出当前界面");
if (hasError) {
dialogMessage.append("(注意,其中有部分任务处理失败)");
}
MessageDialog.show(AutoTakePictureActivity.this, "退出当前界面", dialogMessage)
.setOkButton("确定", new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
AutoTakePictureActivity.this.finish();
return false;
}
})
.setCancelButton("取消", new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
baseDialog.doDismiss();
wantBack = false;
return false;
}
})
.show();
}
private void roadSaveWork(PoiEntity poiEntity) throws IOException {
// 设置当前数据状态为本地保存
@@ -1692,8 +1724,9 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic
@Override
public void onBackPressed() {
DialogSettings.style = DialogSettings.STYLE.STYLE_IOS;
if (hasFinishTask) {
if (finishTaskCount>0) {
MessageDialog.show(this, "提示", "后台正在处理已拍摄完成的任务,请稍后再退出当前界面");
wantBack = true;
return;
}
MessageDialog.show(this, "提示", "退出自动采集模式?", "", "").setOnOkButtonClickListener(new OnDialogButtonClickListener() {