diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc75444..22330b8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -233,6 +233,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -241,6 +245,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -254,18 +261,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc75444..22330b8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -233,6 +233,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -241,6 +245,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -254,18 +261,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4399e95..7c072a9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -365,6 +365,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -373,6 +377,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -386,18 +393,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc75444..22330b8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -233,6 +233,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -241,6 +245,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -254,18 +261,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4399e95..7c072a9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -365,6 +365,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -373,6 +377,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -386,18 +393,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index c507f0b..63bea62 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -289,6 +289,9 @@ case R.id.addVideoView: PictureSelector.create(this) .openCamera(PictureMimeType.ofVideo()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .recordVideoSecond(15) @@ -344,6 +347,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -352,6 +359,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -365,18 +375,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc75444..22330b8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -233,6 +233,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -241,6 +245,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -254,18 +261,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4399e95..7c072a9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -365,6 +365,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -373,6 +377,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -386,18 +393,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index c507f0b..63bea62 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -289,6 +289,9 @@ case R.id.addVideoView: PictureSelector.create(this) .openCamera(PictureMimeType.ofVideo()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .recordVideoSecond(15) @@ -344,6 +347,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -352,6 +359,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -365,18 +375,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 95f3d3f..58d9b09 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -148,6 +148,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -156,6 +160,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -169,18 +176,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc75444..22330b8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -233,6 +233,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -241,6 +245,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -254,18 +261,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4399e95..7c072a9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -365,6 +365,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -373,6 +377,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -386,18 +393,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index c507f0b..63bea62 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -289,6 +289,9 @@ case R.id.addVideoView: PictureSelector.create(this) .openCamera(PictureMimeType.ofVideo()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .recordVideoSecond(15) @@ -344,6 +347,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -352,6 +359,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -365,18 +375,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 95f3d3f..58d9b09 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -148,6 +148,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -156,6 +160,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -169,18 +176,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 08e756c..f42c10d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -243,6 +243,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -251,13 +255,14 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); } - private static final String TAG = "CaseUploadQuicklyActivi"; - @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -266,18 +271,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc75444..22330b8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -233,6 +233,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -241,6 +245,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -254,18 +261,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4399e95..7c072a9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -365,6 +365,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -373,6 +377,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -386,18 +393,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index c507f0b..63bea62 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -289,6 +289,9 @@ case R.id.addVideoView: PictureSelector.create(this) .openCamera(PictureMimeType.ofVideo()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .recordVideoSecond(15) @@ -344,6 +347,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -352,6 +359,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -365,18 +375,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 95f3d3f..58d9b09 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -148,6 +148,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -156,6 +160,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -169,18 +176,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 08e756c..f42c10d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -243,6 +243,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -251,13 +255,14 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); } - private static final String TAG = "CaseUploadQuicklyActivi"; - @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -266,18 +271,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 81ef596..daa7451 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -520,6 +520,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -528,6 +532,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -541,18 +548,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc75444..22330b8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -233,6 +233,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -241,6 +245,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -254,18 +261,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4399e95..7c072a9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -365,6 +365,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -373,6 +377,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -386,18 +393,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index c507f0b..63bea62 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -289,6 +289,9 @@ case R.id.addVideoView: PictureSelector.create(this) .openCamera(PictureMimeType.ofVideo()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .recordVideoSecond(15) @@ -344,6 +347,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -352,6 +359,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -365,18 +375,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 95f3d3f..58d9b09 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -148,6 +148,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -156,6 +160,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -169,18 +176,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 08e756c..f42c10d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -243,6 +243,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -251,13 +255,14 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); } - private static final String TAG = "CaseUploadQuicklyActivi"; - @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -266,18 +271,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 81ef596..daa7451 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -520,6 +520,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -528,6 +532,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -541,18 +548,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 2381700..bf66d7a 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -289,6 +289,9 @@ case R.id.takePictureView: PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -359,12 +362,7 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); } } } diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc75444..22330b8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -233,6 +233,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -241,6 +245,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -254,18 +261,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4399e95..7c072a9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -365,6 +365,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -373,6 +377,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -386,18 +393,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index c507f0b..63bea62 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -289,6 +289,9 @@ case R.id.addVideoView: PictureSelector.create(this) .openCamera(PictureMimeType.ofVideo()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .recordVideoSecond(15) @@ -344,6 +347,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -352,6 +359,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -365,18 +375,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 95f3d3f..58d9b09 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -148,6 +148,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -156,6 +160,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -169,18 +176,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 08e756c..f42c10d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -243,6 +243,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -251,13 +255,14 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); } - private static final String TAG = "CaseUploadQuicklyActivi"; - @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -266,18 +271,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 81ef596..daa7451 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -520,6 +520,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -528,6 +532,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -541,18 +548,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 2381700..bf66d7a 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -289,6 +289,9 @@ case R.id.takePictureView: PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -359,12 +362,7 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); } } } diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 6285d52..3184d2c 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,8 +5,6 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; -import com.luck.picture.lib.entity.LocalMedia; -import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -268,27 +266,4 @@ } }); } - - /** - * 根据手机系统获取不同的路径,小米手机拍照会闪退 - *

- * 小米: - * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", - * "position": 0, - *

- * 华为 - * "path": "content://media/external/images/media/90793", - * "position": 0, - * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", - */ - public static String obtainImagePath(LocalMedia localMedia) { - String path = ""; - if (QMUIDeviceHelper.isHuawei()) { - path = localMedia.getRealPath(); - } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() - || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { - path = localMedia.getPath(); - } - return path; - } } diff --git a/app/build.gradle b/app/build.gradle index cd98584..e57ba63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -99,6 +99,4 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //定位功能 implementation 'com.amap.api:location:5.3.1' - //图片压缩 - implementation 'top.zibin:Luban:1.1.8' } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index f538154..1cf3bf3 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,13 +28,7 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); - /** - * inSampleSize == 2 returns - * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels - * */ - bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index 5373388..2146285 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -4,7 +4,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.view.MotionEvent; import android.view.View; @@ -36,6 +39,7 @@ import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.IdentifyLayerResult; import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; import com.google.gson.Gson; @@ -103,9 +107,34 @@ arcGISMap.setBasemap(basemap); mapView.setMap(arcGISMap); - //设置地图显示在中心位置 - Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + //设置定位点 + LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { + @Override + public void onLocationGet(Location location) { + + } + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (aMapLocation != null) { + String address = aMapLocation.getAddress(); + if (address.equals("")) { + address = aMapLocation.getProvince() + + aMapLocation.getCity() + aMapLocation.getDistrict() + + aMapLocation.getStreet() + aMapLocation.getStreetNum(); + } + if (address.contains("崇仁")) { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync((point), 2800); + } else { + Point point = new Point(Constant.DEFAULT_LNG, Constant.DEFAULT_LAT, mapView.getSpatialReference()); + addPictureMarker(point); + mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 + } + } + } + }, true); //网格和社区 (ID: 13) ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_MAP_SERVICE_URL + "/13"); @@ -373,6 +402,22 @@ graphicsOverlays.add(mGraphicsOverlay); } + private void addPictureMarker(Point point) { + Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setWidth(64); + pictureMarker.setHeight(42); + pictureMarker.loadAsync(); + + Graphic graphic = new Graphic(point, pictureMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) @Override public void onClick(View v) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index bc75444..22330b8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -233,6 +233,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -241,6 +245,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -254,18 +261,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4399e95..7c072a9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -365,6 +365,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -373,6 +377,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -386,18 +393,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index c507f0b..63bea62 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -289,6 +289,9 @@ case R.id.addVideoView: PictureSelector.create(this) .openCamera(PictureMimeType.ofVideo()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .recordVideoSecond(15) @@ -344,6 +347,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -352,6 +359,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -365,18 +375,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 95f3d3f..58d9b09 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -148,6 +148,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -156,6 +160,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -169,18 +176,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 08e756c..f42c10d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -243,6 +243,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -251,13 +255,14 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); } - private static final String TAG = "CaseUploadQuicklyActivi"; - @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -266,18 +271,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 81ef596..daa7451 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -520,6 +520,10 @@ PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(2) .forResult(PictureConfig.CHOOSE_REQUEST); @@ -528,6 +532,9 @@ private void takePicture() { PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -541,18 +548,13 @@ case PictureConfig.CHOOSE_REQUEST: List selectList = PictureSelector.obtainMultipleResult(data); for (LocalMedia media : selectList) { - String mediaRealPath = media.getRealPath(); - uploadImagePresenter.onReadyRetrofitRequest(new File(mediaRealPath)); + String mediaPath = media.getCompressPath(); + uploadImagePresenter.onReadyRetrofitRequest(new File(mediaPath)); } break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 2381700..bf66d7a 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -289,6 +289,9 @@ case R.id.takePictureView: PictureSelector.create(this) .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) .imageEngine(GlideLoadEngine.createGlideEngine()) .maxSelectNum(1) .forResult(PictureConfig.REQUEST_CAMERA); @@ -359,12 +362,7 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - String path = FileUtils.obtainImagePath(localMedia); - if (path.equals("")) { - ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); - return; - } - uploadImagePresenter.onReadyRetrofitRequest(new File(path)); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); } } } diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 6285d52..3184d2c 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,8 +5,6 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; -import com.luck.picture.lib.entity.LocalMedia; -import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -268,27 +266,4 @@ } }); } - - /** - * 根据手机系统获取不同的路径,小米手机拍照会闪退 - *

- * 小米: - * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", - * "position": 0, - *

- * 华为 - * "path": "content://media/external/images/media/90793", - * "position": 0, - * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", - */ - public static String obtainImagePath(LocalMedia localMedia) { - String path = ""; - if (QMUIDeviceHelper.isHuawei()) { - path = localMedia.getRealPath(); - } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() - || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { - path = localMedia.getPath(); - } - return path; - } } diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 2fa4a84..1ded678 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -9,7 +9,6 @@ import android.graphics.Rect; import android.graphics.Typeface; import android.text.TextPaint; -import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; import com.qmuiteam.qmui.util.QMUIDisplayHelper; @@ -22,9 +21,6 @@ import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; -import top.zibin.luban.CompressionPredicate; -import top.zibin.luban.Luban; -import top.zibin.luban.OnCompressListener; public class ImageHelper { @@ -53,11 +49,11 @@ public void call(Subscriber subscriber) { //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 if (bitmap.getWidth() <= 720) { - textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 3)); } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { - textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 15)); + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 10)); } else { - textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 30)); + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); } Rect nameBounds = new Rect(); textPaint.getTextBounds(name, 0, name.length(), nameBounds); @@ -84,11 +80,11 @@ paddingRight = QMUIDisplayHelper.dp2px(context, 3); paddingBottom = QMUIDisplayHelper.dp2px(context, 3); } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { - padding = QMUIDisplayHelper.dp2px(context, 8);//两行水印间的间距 + padding = QMUIDisplayHelper.dp2px(context, 5);//两行水印间的间距 paddingRight = QMUIDisplayHelper.dp2px(context, 8); paddingBottom = QMUIDisplayHelper.dp2px(context, 8); } else { - padding = QMUIDisplayHelper.dp2px(context, 15);//两行水印间的间距 + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 paddingRight = QMUIDisplayHelper.dp2px(context, 15); paddingBottom = QMUIDisplayHelper.dp2px(context, 15); } @@ -104,7 +100,8 @@ File file = FileUtils.getWaterImageFile(); try { FileOutputStream fos = new FileOutputStream(file); - copyBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + //以jpeg的编码方式,75%的像素质量保存为png图片 + copyBitmap.compress(Bitmap.CompressFormat.JPEG, 75, fos); fos.flush(); fos.close(); if (!copyBitmap.isRecycled()) { @@ -128,37 +125,11 @@ @Override public void onNext(File file) { -// Log.d("TAG", "onNext: " + file.getPath()); - //压缩图片 - Luban.with(context).load(file.getPath()).ignoreBy(100) - .setTargetDir(FileUtils.getImageCompressPath()) - .filter(new CompressionPredicate() { - @Override - public boolean apply(String path) { - return !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif")); - } - }) - .setCompressListener(new OnCompressListener() { - - @Override - public void onStart() { - - } - - @Override - public void onSuccess(File file) { - if (file != null) { - markAddListener.onSuccess(file); - } else { - markAddListener.onSuccess(null); - } - } - - @Override - public void onError(Throwable e) { - markAddListener.onError(e); - } - }).launch(); + if (file != null) { + markAddListener.onSuccess(file); + } else { + markAddListener.onError(new NullPointerException()); + } } }); }