diff --git a/app/build.gradle b/app/build.gradle index add0bdb..b1bf259 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.navinfo.outdoor" minSdkVersion 24 targetSdkVersion 30 - versionCode 41 - versionName "8.230109" + versionCode 42 + versionName "8.230110" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { diff --git a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java index a831ced..52c7273 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java @@ -204,6 +204,7 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic private boolean isMapSlide = false; // 地图是否为靠在侧边的小图模式 private ImageView ivZoomAdd/*zoom放大*/, ivZoomDel/*zoom缩小*/, ivLocation/*定位按钮*/, ivPicRoadImage/*道路拍摄水平线*/, ivPicVideoImage/*视频拍摄水平线*/; + private View layerMapController; private ImageView btnSwitch; // 切换地图大小的按钮 private ViewGroup layerChange; // 切换地图和相机的父控件 private BitmapDescriptor pileDescriptor = BitmapDescriptorFactory @@ -274,6 +275,7 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic tvMapView.setOnClickListener(this); ivZoomAdd = findViewById(R.id.iv_zoom_add); ivZoomAdd.setOnClickListener(this); + layerMapController = findViewById(R.id.layer_map_controller); ivZoomDel = findViewById(R.id.iv_zoom_del); ivZoomDel.setOnClickListener(this); ivLocation = findViewById(R.id.iv_location); @@ -1596,9 +1598,7 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic //小图 private void initMapBig() { isMapSlide = false; - ivZoomAdd.setVisibility(View.GONE); - ivZoomDel.setVisibility(View.GONE); - ivLocation.setVisibility(View.GONE); + layerMapController.setVisibility(View.GONE); setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE); // 道路水平方向图标显示 ivPicRoadImage.setVisibility(View.VISIBLE); @@ -1607,9 +1607,7 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic //大图 private void initMapShort() { isMapSlide = true; - ivZoomAdd.setVisibility(View.VISIBLE); - ivZoomDel.setVisibility(View.VISIBLE); - ivLocation.setVisibility(View.VISIBLE); + layerMapController.setVisibility(View.VISIBLE); setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE); // 道路水平方向图标不显示 ivPicRoadImage.setVisibility(View.GONE); diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java index 555dda5..d956fd5 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java @@ -139,6 +139,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen private CheckBox capturePicture; //拍照 private File paperFile, logFile; private ImageView ivZoomAdd, ivZoomDel, ivLocation, ivPicRoadImage, ivPicVideoImage, imageView; + private View layerMapController; private MyLocation oldCurrentLocation = null; private Timer timer; private TimerTask timerTask; @@ -290,6 +291,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen CameraLogger.setLogLevel(CameraLogger.LEVEL_VERBOSE); ivZoomAdd = findViewById(R.id.iv_zoom_add); ivZoomAdd.setOnClickListener(this); + layerMapController = findViewById(R.id.layer_map_controller); ivZoomDel = findViewById(R.id.iv_zoom_del); ivZoomDel.setOnClickListener(this); ivLocation = findViewById(R.id.iv_location); @@ -787,9 +789,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen //小图 private void initMapBig() { isMapSlide = false; - ivZoomAdd.setVisibility(View.GONE); - ivZoomDel.setVisibility(View.GONE); - ivLocation.setVisibility(View.GONE); + layerMapController.setVisibility(View.GONE); setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE); // 道路水平方向图标显示 ivPicRoadImage.setVisibility(View.VISIBLE); @@ -798,9 +798,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen //大图 private void initMapShort() { isMapSlide = true; - ivZoomAdd.setVisibility(View.VISIBLE); - ivZoomDel.setVisibility(View.VISIBLE); - ivLocation.setVisibility(View.VISIBLE); + layerMapController.setVisibility(View.VISIBLE); setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE); // 道路水平方向图标显示 ivPicRoadImage.setVisibility(View.GONE); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/AreaHubFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/AreaHubFragment.java index 4567719..211cdec 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/AreaHubFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/AreaHubFragment.java @@ -5,7 +5,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.os.Message; import android.util.Log; @@ -15,15 +14,12 @@ import android.widget.Button; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.NumberPicker; -import android.widget.RelativeLayout; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.core.widget.NestedScrollView; @@ -37,7 +33,6 @@ import com.hjq.permissions.XXPermissions; import com.kongzue.dialog.interfaces.OnDialogButtonClickListener; import com.kongzue.dialog.util.BaseDialog; import com.kongzue.dialog.util.DialogSettings; -import com.kongzue.dialog.v3.CustomDialog; import com.kongzue.dialog.v3.MessageDialog; import com.kongzue.dialog.v3.WaitDialog; import com.lzy.okgo.model.HttpParams; @@ -79,17 +74,14 @@ import org.locationtech.jts.geom.Geometry; import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Objects; /** - * 寻宝-上报弹窗-交通枢纽 + * 寻宝-上报弹窗-建筑物内部 */ -@RequiresApi(api = Build.VERSION_CODES.N) public class AreaHubFragment extends BaseDrawerFragment implements View.OnClickListener { private EditText etDesc; private Spinner spnRoadName; @@ -103,8 +95,6 @@ public class AreaHubFragment extends BaseDrawerFragment implements View.OnClickL private StringBuilder poiVideoBuilder; private LatLng rearLatLng; private boolean booleanExtra = true; - private TextView btnSelectFloor; - private String[] items; public static AreaHubFragment newInstance(Bundle bundle) { AreaHubFragment fragment = new AreaHubFragment(); @@ -297,65 +287,18 @@ public class AreaHubFragment extends BaseDrawerFragment implements View.OnClickL private void initShowPoi() { // 添加信息: assert getArguments() != null; - btnSelectFloor = findViewById(R.id.btn_select_floor); showPoiEntity = (PoiEntity) getArguments().getSerializable("poiEntity"); if (showPoiEntity != null) { - btnSelectFloor.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - // 显示对话框选择对应的楼层 - CustomDialog - .show((AppCompatActivity) getActivity(), R.layout.dialog_select_floor, new CustomDialog.OnBindView() { - @Override - public void onBind(CustomDialog dialog, View v) { - List numValues = new ArrayList(); - for (int i = -10; i <= 100; i++) { - if (i == 0) { - continue; - } - numValues.add(i+""); - } - NumberPicker numberPicker = v.findViewById(R.id.number_picker); - numberPicker.setDisplayedValues(numValues.toArray(new String[numValues.size()])); - numberPicker.setMinValue(0); - numberPicker.setMaxValue(numValues.size()-1); - numberPicker.setValue(10); // 设置默认选择1楼 - TextView confirmTv = v.findViewById(R.id.btn_select_floor_confirm); - confirmTv.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - int index = numberPicker.getValue(); - int floor = Integer.parseInt(numValues.get(index)); - btnSelectFloor.setTag(floor); - btnSelectFloor.setText(floor+"层"); - spnRoadName.setTag(floor+"层"); - dialog.doDismiss(); - } - }); - } - }) - .setCustomLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)) - .setCustomDialogStyleId(R.style.iOSDialogAnimStyle); - } - }); String name = showPoiEntity.getName();//名称 SpinnerUtils spinnerUtils = new SpinnerUtils(); - items = new String[]{"建筑物全景", "建筑物底商", "楼层引导图", "楼层选择"}; - if (StringUtils.isEmpty(name)) { // 如果从数据获取的名称为空,则设置name显示为默认的第一个选项 + String[] items = {"园区外围(含门)", "园区引导图", "园区底商"}; + if (StringUtils.isEmpty(name)) {// 如果从数据获取的名称为空,则设置name显示为默认的第一个选项 name = items[0]; } spinnerUtils.initSpinner(getActivity(), spnRoadName, new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { - if (items[position].equals("楼层选择")) { - btnSelectFloor.setVisibility(View.VISIBLE); - btnSelectFloor.setTag(null); - btnSelectFloor.setText("楼层"); - spnRoadName.setTag(null); - } else { - btnSelectFloor.setVisibility(View.GONE); - spnRoadName.setTag(items[position]); - } + spnRoadName.setTag(items[position]); } @Override @@ -363,11 +306,6 @@ public class AreaHubFragment extends BaseDrawerFragment implements View.OnClickL } }, name, items); - if (name.endsWith("层")) { - btnSelectFloor.setVisibility(View.VISIBLE); - btnSelectFloor.setText(name); - btnSelectFloor.setTag(name.replace("层", "")); - } String geoWkt = showPoiEntity.getGeoWkt(); if (geoWkt != null) { String geo = Geohash.getInstance().decode(geoWkt); @@ -513,44 +451,36 @@ public class AreaHubFragment extends BaseDrawerFragment implements View.OnClickL initPoiSaveLocal(false); break; case R.id.tv_short://点击拍摄 - // 检查是否选择了楼层选择选项 - checkAreaType(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (spnRoadName.getTag()!=null) { // 用户已经设置楼层信息 - poiVideoBuilder.append(TimestampUtil.time()).append(",").append("点击了拍摄的按钮 ,"); - double latitude = LocationLifeCycle.getInstance().getMainLocation().getLatitude(); - double longitude = LocationLifeCycle.getInstance().getMainLocation().getLongitude(); - LatLng startLatLng = new LatLng(latitude, longitude);// 用户当前位置 - double geometry = GeometryTools.distanceToDouble(startLatLng, latLng);// 起點 于用戶的距離 - double rearGeometry = GeometryTools.distanceToDouble(startLatLng, rearLatLng);// 終點于用戶的距離 - if (geometry > rearGeometry) {//用戶在终点开始作业 - if (rearGeometry > 5000) { - ToastUtils.Message(getActivity(), "用户距离作业终点五公里以内才能拍摄"); - return; - } - } else {//用户在起点开始作业 - if (geometry > 5000) { - ToastUtils.Message(getActivity(), "用户距离作业终点五公里以内才能拍摄"); - return; - } - } - Intent intents = new Intent(getActivity(), PicturesActivity.class); - File filePath = AWMp4ParserHelper.getInstance().obtainWebpFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); - intents.putExtra(Constant.INTENT_JPG_PATH, filePath.getAbsolutePath()); - intents.putExtra(Constant.INTENT_TYPE, showPoiEntity.getType()); - intents.putExtra(Constant.INTENT_GEO_WKT, showPoiEntity.getGeoWkt()); - intents.putExtra(Constant.INTENT_DETAIL, showPoiEntity.getDetail()); - int gpsRssi = LocationLifeCycle.getInstance().getTencentLocation().getGPSRssi(); - if (gpsRssi == 0) { - intents.putExtra(Constant.INTENT_BOOLEAN, false); - } else { - intents.putExtra(Constant.INTENT_BOOLEAN, true); - } - startActivityForResult(intents, 0x101); - } + poiVideoBuilder.append(TimestampUtil.time()).append(",").append("点击了拍摄的按钮 ,"); + double latitude = LocationLifeCycle.getInstance().getMainLocation().getLatitude(); + double longitude = LocationLifeCycle.getInstance().getMainLocation().getLongitude(); + LatLng startLatLng = new LatLng(latitude, longitude);// 用户当前位置 + double geometry = GeometryTools.distanceToDouble(startLatLng, latLng);// 起點 于用戶的距離 + double rearGeometry = GeometryTools.distanceToDouble(startLatLng, rearLatLng);// 終點于用戶的距離 + if (geometry > rearGeometry) {//用戶在终点开始作业 + if (rearGeometry > 5000) { + ToastUtils.Message(getActivity(), "用户距离作业终点五公里以内才能拍摄"); + return; } - }); + } else {//用户在起点开始作业 + if (geometry > 5000) { + ToastUtils.Message(getActivity(), "用户距离作业终点五公里以内才能拍摄"); + return; + } + } + Intent intents = new Intent(getActivity(), PicturesActivity.class); + File filePath = AWMp4ParserHelper.getInstance().obtainWebpFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); + intents.putExtra(Constant.INTENT_JPG_PATH, filePath.getAbsolutePath()); + intents.putExtra(Constant.INTENT_TYPE, showPoiEntity.getType()); + intents.putExtra(Constant.INTENT_GEO_WKT, showPoiEntity.getGeoWkt()); + intents.putExtra(Constant.INTENT_DETAIL, showPoiEntity.getDetail()); + int gpsRssi = LocationLifeCycle.getInstance().getTencentLocation().getGPSRssi(); + if (gpsRssi == 0) { + intents.putExtra(Constant.INTENT_BOOLEAN, false); + } else { + intents.putExtra(Constant.INTENT_BOOLEAN, true); + } + startActivityForResult(intents, 0x101); break; case R.id.tv_combo://自动连拍: poiVideoBuilder.append(TimestampUtil.time()).append(",").append("点击了自动连拍的按钮 ,"); @@ -583,10 +513,6 @@ public class AreaHubFragment extends BaseDrawerFragment implements View.OnClickL startActivityForResult(intent, 0x102); break; case R.id.btn_poi_video_upload: - if (spnRoadName.getTag() == null) { - com.github.lazylibrary.util.ToastUtils.showToast(getActivity(), "没有POI名称,无法保存!"); - return; - } poiVideoBuilder.append(TimestampUtil.time()).append(",").append("点击了上传的按钮 ,"); PoiEntity poiEntity = initPoiEntityByUI(showPoiEntity); if (poiEntity.getTaskStatus() == 1 || poiEntity.getTaskStatus() == 2 || poiEntity.getTaskStatus() == 0 || poiEntity.getTaskStatus() == 5) { @@ -599,34 +525,6 @@ public class AreaHubFragment extends BaseDrawerFragment implements View.OnClickL } } - private void checkAreaType(View.OnClickListener listener) { - String message; - if (spnRoadName.getTag() == null || spnRoadName.getTag().toString().endsWith("层")) { // 名称下拉框为空,说明选择了 楼层选择,但是没选择楼层层数 - message = "请先选择楼层!"; - if (spnRoadName.getTag()!=null&&spnRoadName.getTag().toString().endsWith("层")) { // 如果当前spn的tag是X层这样的tag,说明已经选择了楼层层数 - message = "请首先拍摄楼层证明"; - } - MessageDialog.show((AppCompatActivity) getActivity(), "提示", message) - .setCustomDialogStyleId(R.style.iOSDialogAnimStyle) - .setAlign(BaseDialog.ALIGN.DEFAULT) - .setOnOkButtonClickListener(new OnDialogButtonClickListener() { - @Override - public boolean onClick(BaseDialog baseDialog, View v) { - if (spnRoadName.getTag()!=null) { // 只有tag为非空时,才可以继续走拍照流程 - listener.onClick(v); - } - if (baseDialog.isShow) { - baseDialog.doDismiss(); - } - return true; - } - }); - } else { // 名称下拉框选项不为空,说明选择的不是 楼层选择 选项 - listener.onClick(spnRoadName); - return; - } - } - public void initPoiSaveLocal(boolean isLocal) { if (spnRoadName.getTag() == null) { com.github.lazylibrary.util.ToastUtils.showToast(getActivity(), "没有POI名称,无法保存!"); @@ -851,7 +749,7 @@ public class AreaHubFragment extends BaseDrawerFragment implements View.OnClickL String newPoiEntity = new Gson().toJson(poiEntity); //以键值对的形式添加新值。 edit.putString("poiEntity", newPoiEntity); - edit.putInt("roadVideoType", 2); + edit.putInt("roadVideoType", 3); //提交新值。必须执行,否则前面的操作都无效。 edit.apply(); Log.d("TAG", "initRoadSharePre: " + newPoiEntity); @@ -949,10 +847,8 @@ public class AreaHubFragment extends BaseDrawerFragment implements View.OnClickL @Override protected PoiEntity initPoiEntityByUI(PoiEntity poiEntity) { - if (spnRoadName.getTag()!=null) { - String roadName = spnRoadName.getTag().toString(); - poiEntity.setName(roadName); - } + String roadName = spnRoadName.getTag().toString(); + poiEntity.setName(roadName); // if (!roadName.equals("")) { // poiEntity.setName(roadName); // } else { diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/BuildingInsideFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/BuildingInFragment.java similarity index 83% rename from app/src/main/java/com/navinfo/outdoor/fragment/BuildingInsideFragment.java rename to app/src/main/java/com/navinfo/outdoor/fragment/BuildingInFragment.java index 24ab090..2cf01e4 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/BuildingInsideFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/BuildingInFragment.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.Message; import android.util.Log; @@ -14,12 +15,15 @@ import android.widget.Button; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.NumberPicker; +import android.widget.RelativeLayout; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.core.widget.NestedScrollView; @@ -33,6 +37,7 @@ import com.hjq.permissions.XXPermissions; import com.kongzue.dialog.interfaces.OnDialogButtonClickListener; import com.kongzue.dialog.util.BaseDialog; import com.kongzue.dialog.util.DialogSettings; +import com.kongzue.dialog.v3.CustomDialog; import com.kongzue.dialog.v3.MessageDialog; import com.kongzue.dialog.v3.WaitDialog; import com.lzy.okgo.model.HttpParams; @@ -74,15 +79,17 @@ import org.locationtech.jts.geom.Geometry; import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Objects; /** - * 寻宝-上报弹窗-建筑物内部 + * 寻宝-上报弹窗-交通枢纽 */ -public class BuildingInsideFragment extends BaseDrawerFragment implements View.OnClickListener { +@RequiresApi(api = Build.VERSION_CODES.N) +public class BuildingInFragment extends BaseDrawerFragment implements View.OnClickListener { private EditText etDesc; private Spinner spnRoadName; private ImageView ivPoiVideoPicture; @@ -95,9 +102,11 @@ public class BuildingInsideFragment extends BaseDrawerFragment implements View.O private StringBuilder poiVideoBuilder; private LatLng rearLatLng; private boolean booleanExtra = true; + private TextView btnSelectFloor; + private String[] items; - public static BuildingInsideFragment newInstance(Bundle bundle) { - BuildingInsideFragment fragment = new BuildingInsideFragment(); + public static BuildingInFragment newInstance(Bundle bundle) { + BuildingInFragment fragment = new BuildingInFragment(); fragment.setArguments(bundle); return fragment; } @@ -287,18 +296,65 @@ public class BuildingInsideFragment extends BaseDrawerFragment implements View.O private void initShowPoi() { // 添加信息: assert getArguments() != null; + btnSelectFloor = findViewById(R.id.btn_select_floor); showPoiEntity = (PoiEntity) getArguments().getSerializable("poiEntity"); if (showPoiEntity != null) { + btnSelectFloor.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + // 显示对话框选择对应的楼层 + CustomDialog + .show((AppCompatActivity) getActivity(), R.layout.dialog_select_floor, new CustomDialog.OnBindView() { + @Override + public void onBind(CustomDialog dialog, View v) { + List numValues = new ArrayList(); + for (int i = -10; i <= 100; i++) { + if (i == 0) { + continue; + } + numValues.add(i+""); + } + NumberPicker numberPicker = v.findViewById(R.id.number_picker); + numberPicker.setDisplayedValues(numValues.toArray(new String[numValues.size()])); + numberPicker.setMinValue(0); + numberPicker.setMaxValue(numValues.size()-1); + numberPicker.setValue(10); // 设置默认选择1楼 + TextView confirmTv = v.findViewById(R.id.btn_select_floor_confirm); + confirmTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int index = numberPicker.getValue(); + int floor = Integer.parseInt(numValues.get(index)); + btnSelectFloor.setTag(floor); + btnSelectFloor.setText(floor+"层"); + spnRoadName.setTag(floor+"层"); + dialog.doDismiss(); + } + }); + } + }) + .setCustomLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)) + .setCustomDialogStyleId(R.style.iOSDialogAnimStyle); + } + }); String name = showPoiEntity.getName();//名称 SpinnerUtils spinnerUtils = new SpinnerUtils(); - String[] items = {"园区外围(含门)", "园区引导图", "园区底商"}; - if (StringUtils.isEmpty(name)) {// 如果从数据获取的名称为空,则设置name显示为默认的第一个选项 + items = new String[]{"建筑物全景", "建筑物底商", "楼层引导图", "楼层选择"}; + if (StringUtils.isEmpty(name)) { // 如果从数据获取的名称为空,则设置name显示为默认的第一个选项 name = items[0]; } spinnerUtils.initSpinner(getActivity(), spnRoadName, new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { - spnRoadName.setTag(items[position]); + if (items[position].equals("楼层选择")) { + btnSelectFloor.setVisibility(View.VISIBLE); + btnSelectFloor.setTag(null); + btnSelectFloor.setText("楼层"); + spnRoadName.setTag(null); + } else { + btnSelectFloor.setVisibility(View.GONE); + spnRoadName.setTag(items[position]); + } } @Override @@ -306,6 +362,11 @@ public class BuildingInsideFragment extends BaseDrawerFragment implements View.O } }, name, items); + if (name.endsWith("层")) { + btnSelectFloor.setVisibility(View.VISIBLE); + btnSelectFloor.setText(name); + btnSelectFloor.setTag(name.replace("层", "")); + } String geoWkt = showPoiEntity.getGeoWkt(); if (geoWkt != null) { String geo = Geohash.getInstance().decode(geoWkt); @@ -451,36 +512,44 @@ public class BuildingInsideFragment extends BaseDrawerFragment implements View.O initPoiSaveLocal(false); break; case R.id.tv_short://点击拍摄 - poiVideoBuilder.append(TimestampUtil.time()).append(",").append("点击了拍摄的按钮 ,"); - double latitude = LocationLifeCycle.getInstance().getMainLocation().getLatitude(); - double longitude = LocationLifeCycle.getInstance().getMainLocation().getLongitude(); - LatLng startLatLng = new LatLng(latitude, longitude);// 用户当前位置 - double geometry = GeometryTools.distanceToDouble(startLatLng, latLng);// 起點 于用戶的距離 - double rearGeometry = GeometryTools.distanceToDouble(startLatLng, rearLatLng);// 終點于用戶的距離 - if (geometry > rearGeometry) {//用戶在终点开始作业 - if (rearGeometry > 5000) { - ToastUtils.Message(getActivity(), "用户距离作业终点五公里以内才能拍摄"); - return; + // 检查是否选择了楼层选择选项 + checkAreaType(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (spnRoadName.getTag()!=null) { // 用户已经设置楼层信息 + poiVideoBuilder.append(TimestampUtil.time()).append(",").append("点击了拍摄的按钮 ,"); + double latitude = LocationLifeCycle.getInstance().getMainLocation().getLatitude(); + double longitude = LocationLifeCycle.getInstance().getMainLocation().getLongitude(); + LatLng startLatLng = new LatLng(latitude, longitude);// 用户当前位置 + double geometry = GeometryTools.distanceToDouble(startLatLng, latLng);// 起點 于用戶的距離 + double rearGeometry = GeometryTools.distanceToDouble(startLatLng, rearLatLng);// 終點于用戶的距離 + if (geometry > rearGeometry) {//用戶在终点开始作业 + if (rearGeometry > 5000) { + ToastUtils.Message(getActivity(), "用户距离作业终点五公里以内才能拍摄"); + return; + } + } else {//用户在起点开始作业 + if (geometry > 5000) { + ToastUtils.Message(getActivity(), "用户距离作业终点五公里以内才能拍摄"); + return; + } + } + Intent intents = new Intent(getActivity(), PicturesActivity.class); + File filePath = AWMp4ParserHelper.getInstance().obtainWebpFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); + intents.putExtra(Constant.INTENT_JPG_PATH, filePath.getAbsolutePath()); + intents.putExtra(Constant.INTENT_TYPE, showPoiEntity.getType()); + intents.putExtra(Constant.INTENT_GEO_WKT, showPoiEntity.getGeoWkt()); + intents.putExtra(Constant.INTENT_DETAIL, showPoiEntity.getDetail()); + int gpsRssi = LocationLifeCycle.getInstance().getTencentLocation().getGPSRssi(); + if (gpsRssi == 0) { + intents.putExtra(Constant.INTENT_BOOLEAN, false); + } else { + intents.putExtra(Constant.INTENT_BOOLEAN, true); + } + startActivityForResult(intents, 0x101); + } } - } else {//用户在起点开始作业 - if (geometry > 5000) { - ToastUtils.Message(getActivity(), "用户距离作业终点五公里以内才能拍摄"); - return; - } - } - Intent intents = new Intent(getActivity(), PicturesActivity.class); - File filePath = AWMp4ParserHelper.getInstance().obtainWebpFilePath(new File(Constant.PICTURE_FOLDER, showPoiEntity.getId()).getAbsolutePath()); - intents.putExtra(Constant.INTENT_JPG_PATH, filePath.getAbsolutePath()); - intents.putExtra(Constant.INTENT_TYPE, showPoiEntity.getType()); - intents.putExtra(Constant.INTENT_GEO_WKT, showPoiEntity.getGeoWkt()); - intents.putExtra(Constant.INTENT_DETAIL, showPoiEntity.getDetail()); - int gpsRssi = LocationLifeCycle.getInstance().getTencentLocation().getGPSRssi(); - if (gpsRssi == 0) { - intents.putExtra(Constant.INTENT_BOOLEAN, false); - } else { - intents.putExtra(Constant.INTENT_BOOLEAN, true); - } - startActivityForResult(intents, 0x101); + }); break; case R.id.tv_combo://自动连拍: poiVideoBuilder.append(TimestampUtil.time()).append(",").append("点击了自动连拍的按钮 ,"); @@ -513,6 +582,10 @@ public class BuildingInsideFragment extends BaseDrawerFragment implements View.O startActivityForResult(intent, 0x102); break; case R.id.btn_poi_video_upload: + if (spnRoadName.getTag() == null) { + com.github.lazylibrary.util.ToastUtils.showToast(getActivity(), "没有POI名称,无法保存!"); + return; + } poiVideoBuilder.append(TimestampUtil.time()).append(",").append("点击了上传的按钮 ,"); PoiEntity poiEntity = initPoiEntityByUI(showPoiEntity); if (poiEntity.getTaskStatus() == 1 || poiEntity.getTaskStatus() == 2 || poiEntity.getTaskStatus() == 0 || poiEntity.getTaskStatus() == 5) { @@ -525,6 +598,34 @@ public class BuildingInsideFragment extends BaseDrawerFragment implements View.O } } + private void checkAreaType(View.OnClickListener listener) { + String message; + if (spnRoadName.getTag() == null || spnRoadName.getTag().toString().endsWith("层")) { // 名称下拉框为空,说明选择了 楼层选择,但是没选择楼层层数 + message = "请先选择楼层!"; + if (spnRoadName.getTag()!=null&&spnRoadName.getTag().toString().endsWith("层")) { // 如果当前spn的tag是X层这样的tag,说明已经选择了楼层层数 + message = "请首先拍摄楼层证明"; + } + MessageDialog.show((AppCompatActivity) getActivity(), "提示", message) + .setCustomDialogStyleId(R.style.iOSDialogAnimStyle) + .setAlign(BaseDialog.ALIGN.DEFAULT) + .setOnOkButtonClickListener(new OnDialogButtonClickListener() { + @Override + public boolean onClick(BaseDialog baseDialog, View v) { + if (spnRoadName.getTag()!=null) { // 只有tag为非空时,才可以继续走拍照流程 + listener.onClick(v); + } + if (baseDialog.isShow) { + baseDialog.doDismiss(); + } + return true; + } + }); + } else { // 名称下拉框选项不为空,说明选择的不是 楼层选择 选项 + listener.onClick(spnRoadName); + return; + } + } + public void initPoiSaveLocal(boolean isLocal) { if (spnRoadName.getTag() == null) { com.github.lazylibrary.util.ToastUtils.showToast(getActivity(), "没有POI名称,无法保存!"); @@ -749,7 +850,7 @@ public class BuildingInsideFragment extends BaseDrawerFragment implements View.O String newPoiEntity = new Gson().toJson(poiEntity); //以键值对的形式添加新值。 edit.putString("poiEntity", newPoiEntity); - edit.putInt("roadVideoType", 3); + edit.putInt("roadVideoType", 2); //提交新值。必须执行,否则前面的操作都无效。 edit.apply(); Log.d("TAG", "initRoadSharePre: " + newPoiEntity); @@ -847,8 +948,10 @@ public class BuildingInsideFragment extends BaseDrawerFragment implements View.O @Override protected PoiEntity initPoiEntityByUI(PoiEntity poiEntity) { - String roadName = spnRoadName.getTag().toString(); - poiEntity.setName(roadName); + if (spnRoadName.getTag()!=null) { + String roadName = spnRoadName.getTag().toString(); + poiEntity.setName(roadName); + } // if (!roadName.equals("")) { // poiEntity.setName(roadName); // } else { diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java index af32321..bf838ca 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java @@ -22,10 +22,8 @@ import android.view.Window; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; -import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; -import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.Spinner; @@ -53,20 +51,16 @@ import com.jcodecraeer.xrecyclerview.XRecyclerView; import com.kongzue.dialog.interfaces.OnDialogButtonClickListener; import com.kongzue.dialog.util.BaseDialog; import com.kongzue.dialog.util.DialogSettings; -import com.kongzue.dialog.v3.CustomDialog; import com.kongzue.dialog.v3.MessageDialog; import com.kongzue.dialog.v3.ShareDialog; -import com.lzy.okgo.OkGo; import com.lzy.okgo.model.HttpParams; import com.lzy.okgo.model.Progress; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.AutoTakePictureActivity; import com.navinfo.outdoor.activity.FragmentManagement; -import com.navinfo.outdoor.activity.HomeActivity; import com.navinfo.outdoor.activity.WebActivity; import com.navinfo.outdoor.adapter.MarkerAdapter; import com.navinfo.outdoor.api.Constant; -import com.navinfo.outdoor.api.UserApplication; import com.navinfo.outdoor.base.BaseDrawerFragment; import com.navinfo.outdoor.base.BaseFragment; import com.navinfo.outdoor.bean.GetPhoneBean; @@ -79,7 +73,6 @@ import com.navinfo.outdoor.http.HttpInterface; import com.navinfo.outdoor.http.OkGoBuilder; import com.navinfo.outdoor.http.UploadCallBack; import com.navinfo.outdoor.room.ChargingPileEntity; -import com.navinfo.outdoor.room.PoiDatabase; import com.navinfo.outdoor.room.PoiEntity; import com.navinfo.outdoor.util.FlushTokenUtil; import com.navinfo.outdoor.util.Geohash; @@ -114,13 +107,10 @@ import com.tencent.tencentmap.mapsdk.maps.model.Polygon; import com.tencent.tencentmap.mapsdk.maps.model.PolygonOptions; import com.tencent.tencentmap.mapsdk.maps.model.Polyline; import com.tencent.tencentmap.mapsdk.maps.model.PolylineOptions; -import com.umeng.message.UmengNotificationClickHandler; -import com.umeng.message.entity.UMessage; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.MultiPoint; -import org.locationtech.jts.geom.Point; import org.greenrobot.eventbus.EventBus; @@ -131,7 +121,6 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; -import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -1230,10 +1219,10 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen TrafficHubFragment trafficHubFragment = TrafficHubFragment.newInstance(bundle); showSlidingFragment(trafficHubFragment); } else if (roadVideoType == 2) { - AreaHubFragment areaHubFragment = AreaHubFragment.newInstance(bundle); + BuildingInFragment areaHubFragment = BuildingInFragment.newInstance(bundle); showSlidingFragment(areaHubFragment); } else if (roadVideoType == 3) { - BuildingInsideFragment buildingInsideFragment = BuildingInsideFragment.newInstance(bundle); + AreaHubFragment buildingInsideFragment = AreaHubFragment.newInstance(bundle); showSlidingFragment(buildingInsideFragment); } initRemovePoiSharePre(); @@ -1486,7 +1475,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen showSlidingFragment(areaHubFragment); XLog.d("点击弹窗上的区域设施"); } else if (item.getText().equals("建筑物内部")) { - BuildingInsideFragment buildingInsideFragment = BuildingInsideFragment.newInstance(bundle); + BuildingInFragment buildingInsideFragment = BuildingInFragment.newInstance(bundle); showSlidingFragment(buildingInsideFragment); XLog.d("点击弹窗上的建筑物内部"); } @@ -1539,14 +1528,14 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen fragmentTransaction.hide(trafficHubFragment); } } - if (!(fragment instanceof AreaHubFragment)) { - AreaHubFragment areaHubFragment = (AreaHubFragment) supportFragmentManager.findFragmentByTag(AreaHubFragment.class.getName()); + if (!(fragment instanceof BuildingInFragment)) { + BuildingInFragment areaHubFragment = (BuildingInFragment) supportFragmentManager.findFragmentByTag(BuildingInFragment.class.getName()); if (areaHubFragment != null) { fragmentTransaction.hide(areaHubFragment); } } - if (!(fragment instanceof BuildingInsideFragment)) { - BuildingInsideFragment buildingInsideFragment = (BuildingInsideFragment) supportFragmentManager.findFragmentByTag(BuildingInsideFragment.class.getName()); + if (!(fragment instanceof AreaHubFragment)) { + AreaHubFragment buildingInsideFragment = (AreaHubFragment) supportFragmentManager.findFragmentByTag(AreaHubFragment.class.getName()); if (buildingInsideFragment != null) { fragmentTransaction.hide(buildingInsideFragment); } diff --git a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java index 720779c..e73822a 100644 --- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java +++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java @@ -3,8 +3,8 @@ package com.navinfo.outdoor.http; public class HttpInterface { // public static final String IP = "http://172.23.138.133:9999/m4";//测试接口-IP public static final String IPm = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网 - public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 - public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 + public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 + public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 public static final String USER_PATH = "/user/";//我的 public static final String MSG_LIST_PATH = "/msgList/";//发现 public static final String USER_LOGIN_PATH = "/userlogin/";//登录 diff --git a/app/src/main/res/drawable/ic_baseline_add_24.xml b/app/src/main/res/drawable/ic_baseline_add_24.xml new file mode 100644 index 0000000..89633bb --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_add_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_change_circle_24.xml b/app/src/main/res/drawable/ic_baseline_change_circle_24.xml new file mode 100644 index 0000000..ff7e814 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_change_circle_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_change_circle_24_press.xml b/app/src/main/res/drawable/ic_baseline_change_circle_24_press.xml new file mode 100644 index 0000000..f0f133e --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_change_circle_24_press.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_location_searching_24.xml b/app/src/main/res/drawable/ic_baseline_location_searching_24.xml new file mode 100644 index 0000000..c4e58ad --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_location_searching_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_sub_24.xml b/app/src/main/res/drawable/ic_baseline_sub_24.xml new file mode 100644 index 0000000..3e0b776 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_sub_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/selector_camera_switch.xml b/app/src/main/res/drawable/selector_camera_switch.xml new file mode 100644 index 0000000..c6a0d42 --- /dev/null +++ b/app/src/main/res/drawable/selector_camera_switch.xml @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_auto_take_pictures.xml b/app/src/main/res/layout/activity_auto_take_pictures.xml index 62586c4..b49e4a8 100644 --- a/app/src/main/res/layout/activity_auto_take_pictures.xml +++ b/app/src/main/res/layout/activity_auto_take_pictures.xml @@ -48,7 +48,7 @@ android:background="@android:color/transparent" app:layout_constraintHeight_default="percent" app:layout_constraintHeight_percent="0.4" - app:layout_constraintRight_toRightOf="parent" + app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintWidth_default="percent" app:layout_constraintWidth_percent="0.4" /> @@ -80,26 +80,36 @@ app:layout_constraintTop_toTopOf="parent" /> - + android:padding="@dimen/default_widget_padding" + app:layout_constraintBottom_toTopOf="@id/btn_stop_picture" + app:layout_constraintRight_toRightOf="parent"> + - + - + + - - - - - - - - - + android:layout_marginTop="@dimen/fab_margin" + android:orientation="vertical"> + - + + + + + + + + + + - - + android:padding="@dimen/default_widget_padding" + app:layout_constraintBottom_toTopOf="@id/btn_stop_picture" + app:layout_constraintRight_toRightOf="parent"> + - + - + + - - - - - + android:orientation="vertical"> + + + + + + 20dp 16dp 6dp + 42dp 10dp 30dp