From f7e8289b903a2d66e7a5a324c4ee217688d797a6 Mon Sep 17 00:00:00 2001 From: wangdongsheng Date: Mon, 11 Oct 2021 18:18:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8B=8D=E7=85=A7=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../outdoor/activity/PhotographActivity.java | 38 ++++++++++-------- .../com/navinfo/outdoor/api/Constant.java | 2 +- .../fragment/ChargingPileFragment.java | 10 +++++ .../fragment/ChargingStationFragment.java | 34 ++++++++++------ .../outdoor/fragment/OtherFragment.java | 2 + .../navinfo/outdoor/fragment/PoiFragment.java | 5 +++ .../fragment/UserAttestationFragment.java | 4 ++ app/src/main/res/drawable/icon_camera.png | Bin 0 -> 2037 bytes app/src/main/res/drawable/icon_photograph.png | Bin 0 -> 2453 bytes .../main/res/layout/activity_photograph.xml | 13 +++--- 10 files changed, 70 insertions(+), 38 deletions(-) create mode 100644 app/src/main/res/drawable/icon_camera.png create mode 100644 app/src/main/res/drawable/icon_photograph.png diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PhotographActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PhotographActivity.java index 3560d14..3dd1be3 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PhotographActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PhotographActivity.java @@ -40,6 +40,8 @@ import com.otaliastudios.cameraview.CameraView; import com.otaliastudios.cameraview.FileCallback; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.controls.Mode; +import com.otaliastudios.cameraview.size.Size; +import com.otaliastudios.cameraview.size.SizeSelector; import com.tencent.map.geolocation.TencentLocation; import com.tencent.tencentmap.mapsdk.maps.CameraUpdate; import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory; @@ -110,20 +112,20 @@ public class PhotographActivity extends BaseActivity implements View.OnClickList DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); String newFormat = formatter.format(new Date(System.currentTimeMillis())); String pictures_time = sharedPreferences.getString("pictures_time", null); - if (pictures_time==null){ - sharedEdit.putString("pictures_time",newFormat); + if (pictures_time == null) { + sharedEdit.putString("pictures_time", newFormat); sharedEdit.apply(); logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); - }else { - if (pictures_time.equals(newFormat)){ + } else { + if (pictures_time.equals(newFormat)) { logFile = new File(Constant.LOG_FOLDER + "/" + pictures_time + ".txt"); - }else { + } else { logFile = new File(Constant.LOG_FOLDER + "/" + newFormat + ".txt"); } } photographBuilder = new StringBuilder(); photographBuilder.append("PhotographActivity-onCreate-initData ,"); - if (Constant.USHERED!=null){ + if (Constant.USHERED != null) { photographBuilder.append("userId:").append(Constant.USHERED).append(","); } cameraView.setMode(Mode.PICTURE); @@ -132,35 +134,36 @@ public class PhotographActivity extends BaseActivity implements View.OnClickList @Override protected void initView() { super.initView(); - if (getIntent()!=null){ + if (getIntent() != null) { photo_path = getIntent().getStringExtra(Constant.INTENT_PHOTO_PATH); - oration = getIntent().getIntExtra(Constant.INTENT_VIDEO_OBLATION,-1); + oration = getIntent().getIntExtra(Constant.INTENT_VIDEO_OBLATION, -1); } this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); CameraLogger.setLogLevel(CameraLogger.LEVEL_VERBOSE); cameraView = findViewById(R.id.camera); cameraView.setOnClickListener(this); - Button btnCapturePicture = findViewById(R.id.capture_picture); - btnCapturePicture.setOnClickListener(this); + ImageView ivCapturePicture = findViewById(R.id.capture_picture); + ivCapturePicture.setOnClickListener(this); cameraView.addCameraListener(new CameraListener() { @Override public void onPictureTaken(@NonNull PictureResult result) { super.onPictureTaken(result); - if (oration!=1){ + if (oration == 1) { if (Objects.requireNonNull(cameraView.getPictureSize()).getWidth() < cameraView.getPictureSize().getHeight()) { - Toast.makeText(PhotographActivity.this, "不允许竖向拍摄...", Toast.LENGTH_SHORT).show(); + photographBuilder.append("cameraView 用户竖向拍摄 ,"); + }else { photographBuilder.append("cameraView 用户横屏拍摄 ,"); - return; } } + File file = new File(photo_path); result.toFile(file, new FileCallback() { @Override public void onFileReady(@Nullable File file) { Intent intent = new Intent(); assert file != null; - intent.putExtra("file",file.getPath()); - setResult(0x104,intent); + intent.putExtra("file", file.getPath()); + setResult(0x104, intent); SystemTTS.getInstance(PhotographActivity.this).stopSpeak(); finish(); } @@ -169,6 +172,7 @@ public class PhotographActivity extends BaseActivity implements View.OnClickList } }); } + @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); @@ -177,8 +181,10 @@ public class PhotographActivity extends BaseActivity implements View.OnClickList obtain.obj = true; EventBus.getDefault().post(obtain); } + @Subscribe - public void onEvent(Message data) { } + public void onEvent(Message data) { + } @Override protected void onResume() { diff --git a/app/src/main/java/com/navinfo/outdoor/api/Constant.java b/app/src/main/java/com/navinfo/outdoor/api/Constant.java index f4e6dbf..4eab4a7 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -207,7 +207,7 @@ public class Constant { public static TencentMap.OnMarkerClickListener markerClickListener=null; - public static final String NAVIN_FO="10.08";//版本日期 + public static final String NAVIN_FO="10.11";//版本日期 /*联系我们的QQ群名称和QQ群号 */ public static String REGION_JIG_NAME = "京津冀晋蒙-地图寻宝群"; diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java index bfe806c..7e202ab 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java @@ -913,18 +913,21 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC case R.id.rl_panorama: Intent intentPanorama = new Intent(getActivity(), PhotographActivity.class); File panoramaFile = PhotoUtils.showPhotoFile("a", latLng); + intentPanorama.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentPanorama.putExtra(Constant.INTENT_PHOTO_PATH, panoramaFile.getPath()); startActivityForResult(intentPanorama, 101); break; case R.id.rl_coding: Intent intentCoding = new Intent(getActivity(), PhotographActivity.class); File codingFile = PhotoUtils.showPhotoFile("b", latLng); + intentCoding.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentCoding.putExtra(Constant.INTENT_PHOTO_PATH, codingFile.getPath()); startActivityForResult(intentCoding, 102); break; case R.id.rl_equipment: Intent intentEquipment = new Intent(getActivity(), PhotographActivity.class); File equipmentFile = PhotoUtils.showPhotoFile("c", latLng); + intentEquipment.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentEquipment.putExtra(Constant.INTENT_PHOTO_PATH, equipmentFile.getPath()); startActivityForResult(intentEquipment, 103); @@ -932,42 +935,49 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC case R.id.rl_facility: Intent intentFacility = new Intent(getActivity(), PhotographActivity.class); File facilityFile = PhotoUtils.showPhotoFile("c", latLng); + intentFacility.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentFacility.putExtra(Constant.INTENT_PHOTO_PATH, facilityFile.getPath()); startActivityForResult(intentFacility, 104); break; case R.id.rl_scutcheon: Intent intentScutcheon = new Intent(getActivity(), PhotographActivity.class); File scutcheonFile = PhotoUtils.showPhotoFile("c", latLng); + intentScutcheon.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentScutcheon.putExtra(Constant.INTENT_PHOTO_PATH, scutcheonFile.getPath()); startActivityForResult(intentScutcheon, 105); break; case R.id.rl_device: Intent intentDevice = new Intent(getActivity(), PhotographActivity.class); File deviceFile = PhotoUtils.showPhotoFile("c", latLng); + intentDevice.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentDevice.putExtra(Constant.INTENT_PHOTO_PATH, deviceFile.getPath()); startActivityForResult(intentDevice, 106); break; case R.id.rl_usable: Intent intentUsable = new Intent(getActivity(), PhotographActivity.class); File usableFile = PhotoUtils.showPhotoFile("d", latLng); + intentUsable.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentUsable.putExtra(Constant.INTENT_PHOTO_PATH, usableFile.getPath()); startActivityForResult(intentUsable, 107); break; case R.id.rl_available: Intent intentAvailable = new Intent(getActivity(), PhotographActivity.class); File availableFile = PhotoUtils.showPhotoFile("d", latLng); + intentAvailable.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentAvailable.putExtra(Constant.INTENT_PHOTO_PATH, availableFile.getPath()); startActivityForResult(intentAvailable, 108); break; case R.id.rl_parking: Intent intentParking = new Intent(getActivity(), PhotographActivity.class); File parkingFile = PhotoUtils.showPhotoFile("e", latLng); + intentParking.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentParking.putExtra(Constant.INTENT_PHOTO_PATH, parkingFile.getPath()); startActivityForResult(intentParking, 109); break; case R.id.rl_number: Intent intentNumber = new Intent(getActivity(), PhotographActivity.class); File numberFile = PhotoUtils.showPhotoFile("e", latLng); + intentNumber.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentNumber.putExtra(Constant.INTENT_PHOTO_PATH, numberFile.getPath()); startActivityForResult(intentNumber, 110); break; diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java index 0845cd2..6fc0c25 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java @@ -97,7 +97,6 @@ import okhttp3.Response; * 2021-5-25 */ public class ChargingStationFragment extends BaseDrawerFragment implements View.OnClickListener { - private EditText editDescribe; private RelativeLayout rlPanorama, rlName, rlInternalPhotos, rlElse, rlScutcheon, rlNull; private ImageView ivPanorama, ivName, ivInternal, ivElse, ivScutcheon; @@ -245,11 +244,13 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. tvInternal = findViewById(R.id.tv_internal); tvNamePic = findViewById(R.id.tv_name_pic); tvScutcheon = findViewById(R.id.tv_scutcheon); + /* recyclerPhone = findViewById(R.id.recycler_phone); recyclerPhone.setLayoutManager(new LinearLayoutManager(getContext())); recyclerPhone.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); poiRecycleAdapter = new PoiRecycleAdapter(getContext()); recyclerPhone.setAdapter(poiRecycleAdapter);*/ + RecyclerView recyclerStation = findViewById(R.id.recycler_station); recyclerStation.setLayoutManager(new GridLayoutManager(getContext(), 3)); chargingPileAdapter = new ChargingPileAdapter(getContext()); @@ -880,30 +881,35 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. case R.id.rl_panorama: Intent intentPanorama = new Intent(getActivity(), PhotographActivity.class); File PanoramaFile = PhotoUtils.showPhotoFile("a", latLng); + intentPanorama.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentPanorama.putExtra(Constant.INTENT_PHOTO_PATH, PanoramaFile.getPath()); startActivityForResult(intentPanorama, 101); break; case R.id.rl_name: Intent intentName = new Intent(getActivity(), PhotographActivity.class); File nameFile = PhotoUtils.showPhotoFile("b", latLng); + intentName.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentName.putExtra(Constant.INTENT_PHOTO_PATH, nameFile.getPath()); startActivityForResult(intentName, 102); break; case R.id.rl_internal_photos: Intent intentInternal = new Intent(getActivity(), PhotographActivity.class); File internalFile = PhotoUtils.showPhotoFile("c", latLng); + intentInternal.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentInternal.putExtra(Constant.INTENT_PHOTO_PATH, internalFile.getPath()); startActivityForResult(intentInternal, 103); break; case R.id.rl_else: Intent intentElse = new Intent(getActivity(), PhotographActivity.class); File elseFile = PhotoUtils.showPhotoFile("d", latLng); + intentElse.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentElse.putExtra(Constant.INTENT_PHOTO_PATH, elseFile.getPath()); startActivityForResult(intentElse, 104); break; case R.id.rl_scutcheon: Intent intentScutcheon = new Intent(getActivity(), PhotographActivity.class); File scutcheonFile = PhotoUtils.showPhotoFile("e", latLng); + intentScutcheon.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentScutcheon.putExtra(Constant.INTENT_PHOTO_PATH, scutcheonFile.getPath()); startActivityForResult(intentScutcheon, 105); break; @@ -1366,22 +1372,24 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. new Thread(new Runnable() { @Override public void run() { - List chargingPileEntityList = PoiDatabase.getInstance(getActivity()).getChargingPileDao().getChargingPileByStationId(showPoiEntity.getId()); - if (chargingPileEntityList != null && !chargingPileEntityList.isEmpty()) { - for (ChargingPileEntity chargingPileEntity : chargingPileEntityList) { - List chargingPileFileList = new ArrayList<>(); - if (chargingPileEntity.getPhotos() != null && !chargingPileEntity.getPhotos().isEmpty()) { - for (String photoPath : chargingPileEntity.getPhotos()) { - chargingPileFileList.add(new File(photoPath)); + if (showPoiEntity.getId()!=null){ + List chargingPileEntityList = PoiDatabase.getInstance(getActivity()).getChargingPileDao().getChargingPileByStationId(showPoiEntity.getId()); + if (chargingPileEntityList != null && !chargingPileEntityList.isEmpty()) { + for (ChargingPileEntity chargingPileEntity : chargingPileEntityList) { + List chargingPileFileList = new ArrayList<>(); + if (chargingPileEntity.getPhotos() != null && !chargingPileEntity.getPhotos().isEmpty()) { + for (String photoPath : chargingPileEntity.getPhotos()) { + chargingPileFileList.add(new File(photoPath)); + } + } + PoiDatabase.getInstance(getActivity()).getChargingPileDao().deleteChargingPileEntity(chargingPileEntity); + for (int i = 0; i < chargingPileFileList.size(); i++) { + chargingPileFileList.get(i).delete(); } } - PoiDatabase.getInstance(getActivity()).getChargingPileDao().deleteChargingPileEntity(chargingPileEntity); - for (int i = 0; i < chargingPileFileList.size(); i++) { - chargingPileFileList.get(i).delete(); - } } + chargingPileDao.deleteChargingFidPileEntity(showPoiEntity.getId()); } - chargingPileDao.deleteChargingFidPileEntity(showPoiEntity.getId()); } }).start(); } else { diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java index 92254d5..7e659c8 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java @@ -417,12 +417,14 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis Intent intentPicture = new Intent(getActivity(), PhotographActivity.class); File file = PhotoUtils.showPhotoFile("a", latLng); intentPicture.putExtra(Constant.INTENT_PHOTO_PATH, file.getPath()); + intentPicture.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); startActivityForResult(intentPicture, 101); break; case R.id.rl_pictures: Intent intentPictures = new Intent(getActivity(), PhotographActivity.class); File files = PhotoUtils.showPhotoFile("b", latLng); intentPictures.putExtra(Constant.INTENT_PHOTO_PATH, files.getPath()); + intentPictures.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); startActivityForResult(intentPictures, 102); break; case R.id.btn_other_local: diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java index dbd9abc..c107aad 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java @@ -656,30 +656,35 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe case R.id.rl_panorama: Intent intentPanorama = new Intent(getActivity(), PhotographActivity.class); File filePanorama = PhotoUtils.showPhotoFile("a", latLng); + intentPanorama.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentPanorama.putExtra(Constant.INTENT_PHOTO_PATH, filePanorama.getPath()); startActivityForResult(intentPanorama, 101); break; case R.id.rl_name: Intent intentName = new Intent(getActivity(), PhotographActivity.class); File fileName = PhotoUtils.showPhotoFile("b", latLng); + intentName.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentName.putExtra(Constant.INTENT_PHOTO_PATH, fileName.getPath()); startActivityForResult(intentName, 102); break; case R.id.rl_internal_photos: Intent intentInternal = new Intent(getActivity(), PhotographActivity.class); File fileInternal = PhotoUtils.showPhotoFile("c", latLng); + intentInternal.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentInternal.putExtra(Constant.INTENT_PHOTO_PATH, fileInternal.getPath()); startActivityForResult(intentInternal, 103); break; case R.id.rl_card: Intent intentCard = new Intent(getActivity(), PhotographActivity.class); File fileCard = PhotoUtils.showPhotoFile("d", latLng); + intentCard.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentCard.putExtra(Constant.INTENT_PHOTO_PATH, fileCard.getPath()); startActivityForResult(intentCard, 104); break; case R.id.rl_else: Intent intentElse = new Intent(getActivity(), PhotographActivity.class); File fileElse = PhotoUtils.showPhotoFile("e", latLng); + intentElse.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); intentElse.putExtra(Constant.INTENT_PHOTO_PATH, fileElse.getPath()); startActivityForResult(intentElse, 105); break; diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/UserAttestationFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/UserAttestationFragment.java index 1483f08..dd51bbc 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/UserAttestationFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/UserAttestationFragment.java @@ -159,18 +159,21 @@ public class UserAttestationFragment extends BaseFragment implements View.OnC case R.id.iv_attestation1: Intent ivAttestationIntent1 = new Intent(getActivity(), PhotographActivity.class); File attestationFile1 = PhotoUtils.showPhotoFile("a", null); + ivAttestationIntent1.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); ivAttestationIntent1.putExtra(Constant.INTENT_PHOTO_PATH, attestationFile1.getPath()); startActivityForResult(ivAttestationIntent1, 121); break; case R.id.iv_attestation2: Intent ivAttestationIntent2 = new Intent(getActivity(), PhotographActivity.class); File attestationFile2 = PhotoUtils.showPhotoFile("b", null); + ivAttestationIntent2.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); ivAttestationIntent2.putExtra(Constant.INTENT_PHOTO_PATH, attestationFile2.getPath()); startActivityForResult(ivAttestationIntent2, 122); break; case R.id.iv_attestation3: Intent ivAttestationIntent3 = new Intent(getActivity(), PhotographActivity.class); File attestationFile3 = PhotoUtils.showPhotoFile("c", null); + ivAttestationIntent3.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); ivAttestationIntent3.putExtra(Constant.INTENT_PHOTO_PATH, attestationFile3.getPath()); startActivityForResult(ivAttestationIntent3, 123); break; @@ -192,6 +195,7 @@ public class UserAttestationFragment extends BaseFragment implements View.OnC case R.id.user_attestation_camera: Intent userCameraIntent = new Intent(getActivity(), PhotographActivity.class); File file = PhotoUtils.showPhotoFile("d", null); + userCameraIntent.putExtra(Constant.INTENT_VIDEO_OBLATION, 1); userCameraIntent.putExtra(Constant.INTENT_PHOTO_PATH, file.getPath()); startActivityForResult(userCameraIntent, 124); break; diff --git a/app/src/main/res/drawable/icon_camera.png b/app/src/main/res/drawable/icon_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..98d9119d320b7cd5016bb58daccaccc33b4b866a GIT binary patch literal 2037 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 -