diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
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 97682e3..4826307 100644
--- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
@@ -39,7 +39,6 @@
import com.casic.dcms.utils.StatusBarColorUtil;
import com.casic.dcms.utils.ToastHelper;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
@@ -54,7 +53,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -65,6 +63,7 @@
public class CaseUploadQuicklyActivity extends BaseActivity implements View.OnClickListener,
ICaseLargeClassView, ICaseSmallClassView, ICaseSubmitCaseView, IUploadImageView {
+ private static final String TAG = "QuicklyActivity";
private Context context = this;
@BindView(R.id.leftBackView)
@@ -101,7 +100,6 @@
private List smallClassBeans;
private QMUITipDialog submitDialog;
private Gson gson;
- private List selectList = new ArrayList<>();
private UploadImagePresenterImpl uploadImagePresenter;
private List mediaList = new ArrayList<>();//服务器返回的拍照数据集
private String eorc;
@@ -140,24 +138,8 @@
.create();
uploadImagePresenter = new UploadImagePresenterImpl(this);
imageAdapter = new ImageRecycleViewAdapter(this);
- selectedResultView.setLayoutManager(new GridLayoutManager(this, 3));
+ selectedResultView.setLayoutManager(new GridLayoutManager(this, 2));
selectedResultView.setAdapter(imageAdapter);
- //九宫格点击事件
- imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
- @Override
- public void onClick(int position) {
- //查看大图
- showBigImage(selectList.get(position).getRealPath());
- }
- });
- //删除按钮点击事件
- imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
- @Override
- public void onClick(int position) {
- selectList.remove(position);
- imageAdapter.setMediaList(selectList);
- }
- });
}
@Override
@@ -165,7 +147,7 @@
submitButton.setChangeAlphaWhenPress(true);
}
- @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.imageUploadView, R.id.submitButton})
+ @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.submitButton})
@Override
public void onClick(View v) {
switch (v.getId()) {
@@ -260,17 +242,8 @@
.create().show();
break;
case R.id.locationMapView:
- startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
- break;
- case R.id.imageUploadView:
- if (selectList == null || selectList.size() == 0) {
- ToastHelper.showToast("操作失败,没有选择任何图片,无法上传!", ToastHelper.ERROR);
- return;
- }
- for (LocalMedia media : selectList) {
- String mediaCompressPath = media.getCompressPath();
- uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
- }
+// startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
+ startActivityForResult(new Intent(this, ArcGISMapActivity.class), Constant.REQUEST_MAP_CODE);
break;
case R.id.submitButton:
submitCase();//案卷提交
@@ -284,11 +257,10 @@
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(3)
+ .maxSelectNum(2)
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.CHOOSE_REQUEST);
}
@@ -300,7 +272,6 @@
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.REQUEST_CAMERA);
}
@@ -310,22 +281,32 @@
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
- selectList = PictureSelector.obtainMultipleResult(data);
- imageAdapter.setMediaList(selectList);
+ List selectList = PictureSelector.obtainMultipleResult(data);
+ if (selectList.size() != 2) {
+ ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING);
+ return;
+ }
+ for (LocalMedia media : selectList) {
+ String mediaCompressPath = media.getCompressPath();
+ uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
+ }
break;
case PictureConfig.REQUEST_CAMERA:
- selectList.add(PictureSelector.obtainMultipleResult(data).get(0));
- imageAdapter.setMediaList(selectList);
+ LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0);
+ uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath()));
break;
case Constant.REQUEST_MAP_CODE:
if (data == null) {
return;
}
- String pointJson = data.getStringExtra("pointJson");
- Type type = new TypeToken() {
- }.getType();
- LatLng latLng = gson.fromJson(pointJson, type);
- updateLocation(latLng);
+// String pointJson = data.getStringExtra("pointJson");
+// Type type = new TypeToken() {
+// }.getType();
+// LatLng latLng = gson.fromJson(pointJson, type);
+// updateLocation(latLng);
+ double longitude = data.getDoubleExtra("longitude", 0);
+ double latitude = data.getDoubleExtra("latitude", 0);
+ updateLocation(longitude, latitude);
break;
default:
break;
@@ -333,6 +314,24 @@
}
}
+ private void updateLocation(double longitude, double latitude) {
+ longitudeView.setText(String.valueOf(longitude));
+ latitudeView.setText(String.valueOf(latitude));
+ Geocoder geoCoder = new Geocoder(this, Locale.CHINESE);
+ StringBuffer buffer = new StringBuffer();
+ try {
+ Address address = geoCoder.getFromLocation(latitude, longitude, 1).get(0);
+ buffer.append(address.getSubLocality())
+ .append(address.getSubAdminArea())
+ .append(address.getThoroughfare())
+ .append(address.getSubThoroughfare());
+ } catch (IOException e) {
+ buffer.append("解析详细地址失败");
+ e.printStackTrace();
+ }
+ communityNameView.setText(buffer);
+ }
+
private void updateLocation(LatLng point) {
double longitude = point.getLongitude();
longitudeView.setText(String.valueOf(longitude));
@@ -401,6 +400,7 @@
public void obtainUploadResult(UploadImageResultBean resultBean) {
// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean));
if (resultBean.isSuccess()) {
+ PictureFileUtils.deleteAllCacheDirFile(this);
/**
* 系统路径static拼接图片返回路径
* http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg
@@ -409,10 +409,26 @@
String data = resultBean.getData().replace("\\", "/");
String url = SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409") + "/static/" + data;
mediaList.add(url);
- PictureFileUtils.deleteAllCacheDirFile(this);
- ToastHelper.showToast("案卷图片上传成功,可以提交案卷", ToastHelper.SUCCESS);
- } else {
- ToastHelper.showToast("案卷图片上传失败,请重试", ToastHelper.ERROR);
+ if (mediaList.size() == 2) {
+ addImageView.setVisibility(View.GONE);
+ }
+ imageAdapter.setMediaList(mediaList);
+ //九宫格点击事件
+ imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(int position) {
+ //查看大图
+ showBigImage(mediaList.get(position));
+ }
+ });
+// //删除按钮点击事件
+// imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
+// @Override
+// public void onClick(int position) {
+// selectList.remove(position);
+// imageAdapter.setMediaList(selectList);
+// }
+// });
}
}
@@ -436,7 +452,7 @@
return;
}
caseSubmitPresenter.onReadyRetrofitRequest("0", "0", longitude, latitude,
- "1", "1", eorc, typeCode, typeDetailCode, "崇仁县", "巴山镇",
+ "1", "1", eorc, typeCode, typeDetailCode, "361024", "361024100",
"361024", "361024100", description, fieldIntro,
gson.toJson(mediaList), 0, 0);
}
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
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 97682e3..4826307 100644
--- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
@@ -39,7 +39,6 @@
import com.casic.dcms.utils.StatusBarColorUtil;
import com.casic.dcms.utils.ToastHelper;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
@@ -54,7 +53,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -65,6 +63,7 @@
public class CaseUploadQuicklyActivity extends BaseActivity implements View.OnClickListener,
ICaseLargeClassView, ICaseSmallClassView, ICaseSubmitCaseView, IUploadImageView {
+ private static final String TAG = "QuicklyActivity";
private Context context = this;
@BindView(R.id.leftBackView)
@@ -101,7 +100,6 @@
private List smallClassBeans;
private QMUITipDialog submitDialog;
private Gson gson;
- private List selectList = new ArrayList<>();
private UploadImagePresenterImpl uploadImagePresenter;
private List mediaList = new ArrayList<>();//服务器返回的拍照数据集
private String eorc;
@@ -140,24 +138,8 @@
.create();
uploadImagePresenter = new UploadImagePresenterImpl(this);
imageAdapter = new ImageRecycleViewAdapter(this);
- selectedResultView.setLayoutManager(new GridLayoutManager(this, 3));
+ selectedResultView.setLayoutManager(new GridLayoutManager(this, 2));
selectedResultView.setAdapter(imageAdapter);
- //九宫格点击事件
- imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
- @Override
- public void onClick(int position) {
- //查看大图
- showBigImage(selectList.get(position).getRealPath());
- }
- });
- //删除按钮点击事件
- imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
- @Override
- public void onClick(int position) {
- selectList.remove(position);
- imageAdapter.setMediaList(selectList);
- }
- });
}
@Override
@@ -165,7 +147,7 @@
submitButton.setChangeAlphaWhenPress(true);
}
- @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.imageUploadView, R.id.submitButton})
+ @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.submitButton})
@Override
public void onClick(View v) {
switch (v.getId()) {
@@ -260,17 +242,8 @@
.create().show();
break;
case R.id.locationMapView:
- startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
- break;
- case R.id.imageUploadView:
- if (selectList == null || selectList.size() == 0) {
- ToastHelper.showToast("操作失败,没有选择任何图片,无法上传!", ToastHelper.ERROR);
- return;
- }
- for (LocalMedia media : selectList) {
- String mediaCompressPath = media.getCompressPath();
- uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
- }
+// startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
+ startActivityForResult(new Intent(this, ArcGISMapActivity.class), Constant.REQUEST_MAP_CODE);
break;
case R.id.submitButton:
submitCase();//案卷提交
@@ -284,11 +257,10 @@
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(3)
+ .maxSelectNum(2)
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.CHOOSE_REQUEST);
}
@@ -300,7 +272,6 @@
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.REQUEST_CAMERA);
}
@@ -310,22 +281,32 @@
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
- selectList = PictureSelector.obtainMultipleResult(data);
- imageAdapter.setMediaList(selectList);
+ List selectList = PictureSelector.obtainMultipleResult(data);
+ if (selectList.size() != 2) {
+ ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING);
+ return;
+ }
+ for (LocalMedia media : selectList) {
+ String mediaCompressPath = media.getCompressPath();
+ uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
+ }
break;
case PictureConfig.REQUEST_CAMERA:
- selectList.add(PictureSelector.obtainMultipleResult(data).get(0));
- imageAdapter.setMediaList(selectList);
+ LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0);
+ uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath()));
break;
case Constant.REQUEST_MAP_CODE:
if (data == null) {
return;
}
- String pointJson = data.getStringExtra("pointJson");
- Type type = new TypeToken() {
- }.getType();
- LatLng latLng = gson.fromJson(pointJson, type);
- updateLocation(latLng);
+// String pointJson = data.getStringExtra("pointJson");
+// Type type = new TypeToken() {
+// }.getType();
+// LatLng latLng = gson.fromJson(pointJson, type);
+// updateLocation(latLng);
+ double longitude = data.getDoubleExtra("longitude", 0);
+ double latitude = data.getDoubleExtra("latitude", 0);
+ updateLocation(longitude, latitude);
break;
default:
break;
@@ -333,6 +314,24 @@
}
}
+ private void updateLocation(double longitude, double latitude) {
+ longitudeView.setText(String.valueOf(longitude));
+ latitudeView.setText(String.valueOf(latitude));
+ Geocoder geoCoder = new Geocoder(this, Locale.CHINESE);
+ StringBuffer buffer = new StringBuffer();
+ try {
+ Address address = geoCoder.getFromLocation(latitude, longitude, 1).get(0);
+ buffer.append(address.getSubLocality())
+ .append(address.getSubAdminArea())
+ .append(address.getThoroughfare())
+ .append(address.getSubThoroughfare());
+ } catch (IOException e) {
+ buffer.append("解析详细地址失败");
+ e.printStackTrace();
+ }
+ communityNameView.setText(buffer);
+ }
+
private void updateLocation(LatLng point) {
double longitude = point.getLongitude();
longitudeView.setText(String.valueOf(longitude));
@@ -401,6 +400,7 @@
public void obtainUploadResult(UploadImageResultBean resultBean) {
// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean));
if (resultBean.isSuccess()) {
+ PictureFileUtils.deleteAllCacheDirFile(this);
/**
* 系统路径static拼接图片返回路径
* http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg
@@ -409,10 +409,26 @@
String data = resultBean.getData().replace("\\", "/");
String url = SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409") + "/static/" + data;
mediaList.add(url);
- PictureFileUtils.deleteAllCacheDirFile(this);
- ToastHelper.showToast("案卷图片上传成功,可以提交案卷", ToastHelper.SUCCESS);
- } else {
- ToastHelper.showToast("案卷图片上传失败,请重试", ToastHelper.ERROR);
+ if (mediaList.size() == 2) {
+ addImageView.setVisibility(View.GONE);
+ }
+ imageAdapter.setMediaList(mediaList);
+ //九宫格点击事件
+ imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(int position) {
+ //查看大图
+ showBigImage(mediaList.get(position));
+ }
+ });
+// //删除按钮点击事件
+// imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
+// @Override
+// public void onClick(int position) {
+// selectList.remove(position);
+// imageAdapter.setMediaList(selectList);
+// }
+// });
}
}
@@ -436,7 +452,7 @@
return;
}
caseSubmitPresenter.onReadyRetrofitRequest("0", "0", longitude, latitude,
- "1", "1", eorc, typeCode, typeDetailCode, "崇仁县", "巴山镇",
+ "1", "1", eorc, typeCode, typeDetailCode, "361024", "361024100",
"361024", "361024100", description, fieldIntro,
gson.toJson(mediaList), 0, 0);
}
diff --git a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
index d4ec0fe..028190f 100644
--- a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
@@ -64,9 +64,9 @@
@Override
protected void setupTopBarLayout() {
- mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.black));
- mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.lightGray));
- mapTopLayout.addLeftImageButton(R.drawable.ic_left_black, 0).setOnClickListener(new View.OnClickListener() {
+ mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ mapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -169,7 +169,6 @@
finish();
}
}).create().show();
-
return true;
}
});
@@ -200,7 +199,16 @@
}
break;
case R.id.removeToLocalView:
- position = builder.zoom(15).build();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
+ CameraPosition position = builder.target(latLng).zoom(15).build();
+ map.animateCamera(CameraUpdateFactory.newCameraPosition(position), 2000);
+ }
+ }
+ });
break;
default:
break;
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
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 97682e3..4826307 100644
--- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
@@ -39,7 +39,6 @@
import com.casic.dcms.utils.StatusBarColorUtil;
import com.casic.dcms.utils.ToastHelper;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
@@ -54,7 +53,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -65,6 +63,7 @@
public class CaseUploadQuicklyActivity extends BaseActivity implements View.OnClickListener,
ICaseLargeClassView, ICaseSmallClassView, ICaseSubmitCaseView, IUploadImageView {
+ private static final String TAG = "QuicklyActivity";
private Context context = this;
@BindView(R.id.leftBackView)
@@ -101,7 +100,6 @@
private List smallClassBeans;
private QMUITipDialog submitDialog;
private Gson gson;
- private List selectList = new ArrayList<>();
private UploadImagePresenterImpl uploadImagePresenter;
private List mediaList = new ArrayList<>();//服务器返回的拍照数据集
private String eorc;
@@ -140,24 +138,8 @@
.create();
uploadImagePresenter = new UploadImagePresenterImpl(this);
imageAdapter = new ImageRecycleViewAdapter(this);
- selectedResultView.setLayoutManager(new GridLayoutManager(this, 3));
+ selectedResultView.setLayoutManager(new GridLayoutManager(this, 2));
selectedResultView.setAdapter(imageAdapter);
- //九宫格点击事件
- imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
- @Override
- public void onClick(int position) {
- //查看大图
- showBigImage(selectList.get(position).getRealPath());
- }
- });
- //删除按钮点击事件
- imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
- @Override
- public void onClick(int position) {
- selectList.remove(position);
- imageAdapter.setMediaList(selectList);
- }
- });
}
@Override
@@ -165,7 +147,7 @@
submitButton.setChangeAlphaWhenPress(true);
}
- @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.imageUploadView, R.id.submitButton})
+ @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.submitButton})
@Override
public void onClick(View v) {
switch (v.getId()) {
@@ -260,17 +242,8 @@
.create().show();
break;
case R.id.locationMapView:
- startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
- break;
- case R.id.imageUploadView:
- if (selectList == null || selectList.size() == 0) {
- ToastHelper.showToast("操作失败,没有选择任何图片,无法上传!", ToastHelper.ERROR);
- return;
- }
- for (LocalMedia media : selectList) {
- String mediaCompressPath = media.getCompressPath();
- uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
- }
+// startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
+ startActivityForResult(new Intent(this, ArcGISMapActivity.class), Constant.REQUEST_MAP_CODE);
break;
case R.id.submitButton:
submitCase();//案卷提交
@@ -284,11 +257,10 @@
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(3)
+ .maxSelectNum(2)
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.CHOOSE_REQUEST);
}
@@ -300,7 +272,6 @@
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.REQUEST_CAMERA);
}
@@ -310,22 +281,32 @@
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
- selectList = PictureSelector.obtainMultipleResult(data);
- imageAdapter.setMediaList(selectList);
+ List selectList = PictureSelector.obtainMultipleResult(data);
+ if (selectList.size() != 2) {
+ ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING);
+ return;
+ }
+ for (LocalMedia media : selectList) {
+ String mediaCompressPath = media.getCompressPath();
+ uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
+ }
break;
case PictureConfig.REQUEST_CAMERA:
- selectList.add(PictureSelector.obtainMultipleResult(data).get(0));
- imageAdapter.setMediaList(selectList);
+ LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0);
+ uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath()));
break;
case Constant.REQUEST_MAP_CODE:
if (data == null) {
return;
}
- String pointJson = data.getStringExtra("pointJson");
- Type type = new TypeToken() {
- }.getType();
- LatLng latLng = gson.fromJson(pointJson, type);
- updateLocation(latLng);
+// String pointJson = data.getStringExtra("pointJson");
+// Type type = new TypeToken() {
+// }.getType();
+// LatLng latLng = gson.fromJson(pointJson, type);
+// updateLocation(latLng);
+ double longitude = data.getDoubleExtra("longitude", 0);
+ double latitude = data.getDoubleExtra("latitude", 0);
+ updateLocation(longitude, latitude);
break;
default:
break;
@@ -333,6 +314,24 @@
}
}
+ private void updateLocation(double longitude, double latitude) {
+ longitudeView.setText(String.valueOf(longitude));
+ latitudeView.setText(String.valueOf(latitude));
+ Geocoder geoCoder = new Geocoder(this, Locale.CHINESE);
+ StringBuffer buffer = new StringBuffer();
+ try {
+ Address address = geoCoder.getFromLocation(latitude, longitude, 1).get(0);
+ buffer.append(address.getSubLocality())
+ .append(address.getSubAdminArea())
+ .append(address.getThoroughfare())
+ .append(address.getSubThoroughfare());
+ } catch (IOException e) {
+ buffer.append("解析详细地址失败");
+ e.printStackTrace();
+ }
+ communityNameView.setText(buffer);
+ }
+
private void updateLocation(LatLng point) {
double longitude = point.getLongitude();
longitudeView.setText(String.valueOf(longitude));
@@ -401,6 +400,7 @@
public void obtainUploadResult(UploadImageResultBean resultBean) {
// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean));
if (resultBean.isSuccess()) {
+ PictureFileUtils.deleteAllCacheDirFile(this);
/**
* 系统路径static拼接图片返回路径
* http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg
@@ -409,10 +409,26 @@
String data = resultBean.getData().replace("\\", "/");
String url = SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409") + "/static/" + data;
mediaList.add(url);
- PictureFileUtils.deleteAllCacheDirFile(this);
- ToastHelper.showToast("案卷图片上传成功,可以提交案卷", ToastHelper.SUCCESS);
- } else {
- ToastHelper.showToast("案卷图片上传失败,请重试", ToastHelper.ERROR);
+ if (mediaList.size() == 2) {
+ addImageView.setVisibility(View.GONE);
+ }
+ imageAdapter.setMediaList(mediaList);
+ //九宫格点击事件
+ imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(int position) {
+ //查看大图
+ showBigImage(mediaList.get(position));
+ }
+ });
+// //删除按钮点击事件
+// imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
+// @Override
+// public void onClick(int position) {
+// selectList.remove(position);
+// imageAdapter.setMediaList(selectList);
+// }
+// });
}
}
@@ -436,7 +452,7 @@
return;
}
caseSubmitPresenter.onReadyRetrofitRequest("0", "0", longitude, latitude,
- "1", "1", eorc, typeCode, typeDetailCode, "崇仁县", "巴山镇",
+ "1", "1", eorc, typeCode, typeDetailCode, "361024", "361024100",
"361024", "361024100", description, fieldIntro,
gson.toJson(mediaList), 0, 0);
}
diff --git a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
index d4ec0fe..028190f 100644
--- a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
@@ -64,9 +64,9 @@
@Override
protected void setupTopBarLayout() {
- mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.black));
- mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.lightGray));
- mapTopLayout.addLeftImageButton(R.drawable.ic_left_black, 0).setOnClickListener(new View.OnClickListener() {
+ mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ mapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -169,7 +169,6 @@
finish();
}
}).create().show();
-
return true;
}
});
@@ -200,7 +199,16 @@
}
break;
case R.id.removeToLocalView:
- position = builder.zoom(15).build();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
+ CameraPosition position = builder.target(latLng).zoom(15).build();
+ map.animateCamera(CameraUpdateFactory.newCameraPosition(position), 2000);
+ }
+ }
+ });
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java
index 0f5df93..ed00019 100644
--- a/app/src/main/java/com/casic/dcms/utils/Constant.java
+++ b/app/src/main/java/com/casic/dcms/utils/Constant.java
@@ -52,4 +52,7 @@
public static final String IP_KEY = "BASE_IP";
public static final String LOGIN_OUT_ACTION = "loginOut";
public static final String NOTICE_MSG = "receivePush";
+
+ public static final String BASE_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/2w/MapServer"; //底图图层
+ public static final String COMPONENT_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/dxbj/FeatureServer/0"; //部件点图层
}
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
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 97682e3..4826307 100644
--- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
@@ -39,7 +39,6 @@
import com.casic.dcms.utils.StatusBarColorUtil;
import com.casic.dcms.utils.ToastHelper;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
@@ -54,7 +53,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -65,6 +63,7 @@
public class CaseUploadQuicklyActivity extends BaseActivity implements View.OnClickListener,
ICaseLargeClassView, ICaseSmallClassView, ICaseSubmitCaseView, IUploadImageView {
+ private static final String TAG = "QuicklyActivity";
private Context context = this;
@BindView(R.id.leftBackView)
@@ -101,7 +100,6 @@
private List smallClassBeans;
private QMUITipDialog submitDialog;
private Gson gson;
- private List selectList = new ArrayList<>();
private UploadImagePresenterImpl uploadImagePresenter;
private List mediaList = new ArrayList<>();//服务器返回的拍照数据集
private String eorc;
@@ -140,24 +138,8 @@
.create();
uploadImagePresenter = new UploadImagePresenterImpl(this);
imageAdapter = new ImageRecycleViewAdapter(this);
- selectedResultView.setLayoutManager(new GridLayoutManager(this, 3));
+ selectedResultView.setLayoutManager(new GridLayoutManager(this, 2));
selectedResultView.setAdapter(imageAdapter);
- //九宫格点击事件
- imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
- @Override
- public void onClick(int position) {
- //查看大图
- showBigImage(selectList.get(position).getRealPath());
- }
- });
- //删除按钮点击事件
- imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
- @Override
- public void onClick(int position) {
- selectList.remove(position);
- imageAdapter.setMediaList(selectList);
- }
- });
}
@Override
@@ -165,7 +147,7 @@
submitButton.setChangeAlphaWhenPress(true);
}
- @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.imageUploadView, R.id.submitButton})
+ @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.submitButton})
@Override
public void onClick(View v) {
switch (v.getId()) {
@@ -260,17 +242,8 @@
.create().show();
break;
case R.id.locationMapView:
- startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
- break;
- case R.id.imageUploadView:
- if (selectList == null || selectList.size() == 0) {
- ToastHelper.showToast("操作失败,没有选择任何图片,无法上传!", ToastHelper.ERROR);
- return;
- }
- for (LocalMedia media : selectList) {
- String mediaCompressPath = media.getCompressPath();
- uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
- }
+// startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
+ startActivityForResult(new Intent(this, ArcGISMapActivity.class), Constant.REQUEST_MAP_CODE);
break;
case R.id.submitButton:
submitCase();//案卷提交
@@ -284,11 +257,10 @@
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(3)
+ .maxSelectNum(2)
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.CHOOSE_REQUEST);
}
@@ -300,7 +272,6 @@
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.REQUEST_CAMERA);
}
@@ -310,22 +281,32 @@
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
- selectList = PictureSelector.obtainMultipleResult(data);
- imageAdapter.setMediaList(selectList);
+ List selectList = PictureSelector.obtainMultipleResult(data);
+ if (selectList.size() != 2) {
+ ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING);
+ return;
+ }
+ for (LocalMedia media : selectList) {
+ String mediaCompressPath = media.getCompressPath();
+ uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
+ }
break;
case PictureConfig.REQUEST_CAMERA:
- selectList.add(PictureSelector.obtainMultipleResult(data).get(0));
- imageAdapter.setMediaList(selectList);
+ LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0);
+ uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath()));
break;
case Constant.REQUEST_MAP_CODE:
if (data == null) {
return;
}
- String pointJson = data.getStringExtra("pointJson");
- Type type = new TypeToken() {
- }.getType();
- LatLng latLng = gson.fromJson(pointJson, type);
- updateLocation(latLng);
+// String pointJson = data.getStringExtra("pointJson");
+// Type type = new TypeToken() {
+// }.getType();
+// LatLng latLng = gson.fromJson(pointJson, type);
+// updateLocation(latLng);
+ double longitude = data.getDoubleExtra("longitude", 0);
+ double latitude = data.getDoubleExtra("latitude", 0);
+ updateLocation(longitude, latitude);
break;
default:
break;
@@ -333,6 +314,24 @@
}
}
+ private void updateLocation(double longitude, double latitude) {
+ longitudeView.setText(String.valueOf(longitude));
+ latitudeView.setText(String.valueOf(latitude));
+ Geocoder geoCoder = new Geocoder(this, Locale.CHINESE);
+ StringBuffer buffer = new StringBuffer();
+ try {
+ Address address = geoCoder.getFromLocation(latitude, longitude, 1).get(0);
+ buffer.append(address.getSubLocality())
+ .append(address.getSubAdminArea())
+ .append(address.getThoroughfare())
+ .append(address.getSubThoroughfare());
+ } catch (IOException e) {
+ buffer.append("解析详细地址失败");
+ e.printStackTrace();
+ }
+ communityNameView.setText(buffer);
+ }
+
private void updateLocation(LatLng point) {
double longitude = point.getLongitude();
longitudeView.setText(String.valueOf(longitude));
@@ -401,6 +400,7 @@
public void obtainUploadResult(UploadImageResultBean resultBean) {
// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean));
if (resultBean.isSuccess()) {
+ PictureFileUtils.deleteAllCacheDirFile(this);
/**
* 系统路径static拼接图片返回路径
* http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg
@@ -409,10 +409,26 @@
String data = resultBean.getData().replace("\\", "/");
String url = SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409") + "/static/" + data;
mediaList.add(url);
- PictureFileUtils.deleteAllCacheDirFile(this);
- ToastHelper.showToast("案卷图片上传成功,可以提交案卷", ToastHelper.SUCCESS);
- } else {
- ToastHelper.showToast("案卷图片上传失败,请重试", ToastHelper.ERROR);
+ if (mediaList.size() == 2) {
+ addImageView.setVisibility(View.GONE);
+ }
+ imageAdapter.setMediaList(mediaList);
+ //九宫格点击事件
+ imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(int position) {
+ //查看大图
+ showBigImage(mediaList.get(position));
+ }
+ });
+// //删除按钮点击事件
+// imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
+// @Override
+// public void onClick(int position) {
+// selectList.remove(position);
+// imageAdapter.setMediaList(selectList);
+// }
+// });
}
}
@@ -436,7 +452,7 @@
return;
}
caseSubmitPresenter.onReadyRetrofitRequest("0", "0", longitude, latitude,
- "1", "1", eorc, typeCode, typeDetailCode, "崇仁县", "巴山镇",
+ "1", "1", eorc, typeCode, typeDetailCode, "361024", "361024100",
"361024", "361024100", description, fieldIntro,
gson.toJson(mediaList), 0, 0);
}
diff --git a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
index d4ec0fe..028190f 100644
--- a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
@@ -64,9 +64,9 @@
@Override
protected void setupTopBarLayout() {
- mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.black));
- mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.lightGray));
- mapTopLayout.addLeftImageButton(R.drawable.ic_left_black, 0).setOnClickListener(new View.OnClickListener() {
+ mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ mapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -169,7 +169,6 @@
finish();
}
}).create().show();
-
return true;
}
});
@@ -200,7 +199,16 @@
}
break;
case R.id.removeToLocalView:
- position = builder.zoom(15).build();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
+ CameraPosition position = builder.target(latLng).zoom(15).build();
+ map.animateCamera(CameraUpdateFactory.newCameraPosition(position), 2000);
+ }
+ }
+ });
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java
index 0f5df93..ed00019 100644
--- a/app/src/main/java/com/casic/dcms/utils/Constant.java
+++ b/app/src/main/java/com/casic/dcms/utils/Constant.java
@@ -52,4 +52,7 @@
public static final String IP_KEY = "BASE_IP";
public static final String LOGIN_OUT_ACTION = "loginOut";
public static final String NOTICE_MSG = "receivePush";
+
+ public static final String BASE_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/2w/MapServer"; //底图图层
+ public static final String COMPONENT_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/dxbj/FeatureServer/0"; //部件点图层
}
diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml
index a799254..a5b3395 100644
--- a/app/src/main/res/layout/activity_case_upload_quickly.xml
+++ b/app/src/main/res/layout/activity_case_upload_quickly.xml
@@ -270,7 +270,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginEnd="10dp"
- android:layout_toStartOf="@id/imageUploadView"
android:orientation="vertical">
-
-
Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
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 97682e3..4826307 100644
--- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
@@ -39,7 +39,6 @@
import com.casic.dcms.utils.StatusBarColorUtil;
import com.casic.dcms.utils.ToastHelper;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
@@ -54,7 +53,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -65,6 +63,7 @@
public class CaseUploadQuicklyActivity extends BaseActivity implements View.OnClickListener,
ICaseLargeClassView, ICaseSmallClassView, ICaseSubmitCaseView, IUploadImageView {
+ private static final String TAG = "QuicklyActivity";
private Context context = this;
@BindView(R.id.leftBackView)
@@ -101,7 +100,6 @@
private List smallClassBeans;
private QMUITipDialog submitDialog;
private Gson gson;
- private List selectList = new ArrayList<>();
private UploadImagePresenterImpl uploadImagePresenter;
private List mediaList = new ArrayList<>();//服务器返回的拍照数据集
private String eorc;
@@ -140,24 +138,8 @@
.create();
uploadImagePresenter = new UploadImagePresenterImpl(this);
imageAdapter = new ImageRecycleViewAdapter(this);
- selectedResultView.setLayoutManager(new GridLayoutManager(this, 3));
+ selectedResultView.setLayoutManager(new GridLayoutManager(this, 2));
selectedResultView.setAdapter(imageAdapter);
- //九宫格点击事件
- imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
- @Override
- public void onClick(int position) {
- //查看大图
- showBigImage(selectList.get(position).getRealPath());
- }
- });
- //删除按钮点击事件
- imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
- @Override
- public void onClick(int position) {
- selectList.remove(position);
- imageAdapter.setMediaList(selectList);
- }
- });
}
@Override
@@ -165,7 +147,7 @@
submitButton.setChangeAlphaWhenPress(true);
}
- @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.imageUploadView, R.id.submitButton})
+ @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.submitButton})
@Override
public void onClick(View v) {
switch (v.getId()) {
@@ -260,17 +242,8 @@
.create().show();
break;
case R.id.locationMapView:
- startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
- break;
- case R.id.imageUploadView:
- if (selectList == null || selectList.size() == 0) {
- ToastHelper.showToast("操作失败,没有选择任何图片,无法上传!", ToastHelper.ERROR);
- return;
- }
- for (LocalMedia media : selectList) {
- String mediaCompressPath = media.getCompressPath();
- uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
- }
+// startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
+ startActivityForResult(new Intent(this, ArcGISMapActivity.class), Constant.REQUEST_MAP_CODE);
break;
case R.id.submitButton:
submitCase();//案卷提交
@@ -284,11 +257,10 @@
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(3)
+ .maxSelectNum(2)
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.CHOOSE_REQUEST);
}
@@ -300,7 +272,6 @@
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.REQUEST_CAMERA);
}
@@ -310,22 +281,32 @@
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
- selectList = PictureSelector.obtainMultipleResult(data);
- imageAdapter.setMediaList(selectList);
+ List selectList = PictureSelector.obtainMultipleResult(data);
+ if (selectList.size() != 2) {
+ ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING);
+ return;
+ }
+ for (LocalMedia media : selectList) {
+ String mediaCompressPath = media.getCompressPath();
+ uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
+ }
break;
case PictureConfig.REQUEST_CAMERA:
- selectList.add(PictureSelector.obtainMultipleResult(data).get(0));
- imageAdapter.setMediaList(selectList);
+ LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0);
+ uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath()));
break;
case Constant.REQUEST_MAP_CODE:
if (data == null) {
return;
}
- String pointJson = data.getStringExtra("pointJson");
- Type type = new TypeToken() {
- }.getType();
- LatLng latLng = gson.fromJson(pointJson, type);
- updateLocation(latLng);
+// String pointJson = data.getStringExtra("pointJson");
+// Type type = new TypeToken() {
+// }.getType();
+// LatLng latLng = gson.fromJson(pointJson, type);
+// updateLocation(latLng);
+ double longitude = data.getDoubleExtra("longitude", 0);
+ double latitude = data.getDoubleExtra("latitude", 0);
+ updateLocation(longitude, latitude);
break;
default:
break;
@@ -333,6 +314,24 @@
}
}
+ private void updateLocation(double longitude, double latitude) {
+ longitudeView.setText(String.valueOf(longitude));
+ latitudeView.setText(String.valueOf(latitude));
+ Geocoder geoCoder = new Geocoder(this, Locale.CHINESE);
+ StringBuffer buffer = new StringBuffer();
+ try {
+ Address address = geoCoder.getFromLocation(latitude, longitude, 1).get(0);
+ buffer.append(address.getSubLocality())
+ .append(address.getSubAdminArea())
+ .append(address.getThoroughfare())
+ .append(address.getSubThoroughfare());
+ } catch (IOException e) {
+ buffer.append("解析详细地址失败");
+ e.printStackTrace();
+ }
+ communityNameView.setText(buffer);
+ }
+
private void updateLocation(LatLng point) {
double longitude = point.getLongitude();
longitudeView.setText(String.valueOf(longitude));
@@ -401,6 +400,7 @@
public void obtainUploadResult(UploadImageResultBean resultBean) {
// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean));
if (resultBean.isSuccess()) {
+ PictureFileUtils.deleteAllCacheDirFile(this);
/**
* 系统路径static拼接图片返回路径
* http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg
@@ -409,10 +409,26 @@
String data = resultBean.getData().replace("\\", "/");
String url = SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409") + "/static/" + data;
mediaList.add(url);
- PictureFileUtils.deleteAllCacheDirFile(this);
- ToastHelper.showToast("案卷图片上传成功,可以提交案卷", ToastHelper.SUCCESS);
- } else {
- ToastHelper.showToast("案卷图片上传失败,请重试", ToastHelper.ERROR);
+ if (mediaList.size() == 2) {
+ addImageView.setVisibility(View.GONE);
+ }
+ imageAdapter.setMediaList(mediaList);
+ //九宫格点击事件
+ imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(int position) {
+ //查看大图
+ showBigImage(mediaList.get(position));
+ }
+ });
+// //删除按钮点击事件
+// imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
+// @Override
+// public void onClick(int position) {
+// selectList.remove(position);
+// imageAdapter.setMediaList(selectList);
+// }
+// });
}
}
@@ -436,7 +452,7 @@
return;
}
caseSubmitPresenter.onReadyRetrofitRequest("0", "0", longitude, latitude,
- "1", "1", eorc, typeCode, typeDetailCode, "崇仁县", "巴山镇",
+ "1", "1", eorc, typeCode, typeDetailCode, "361024", "361024100",
"361024", "361024100", description, fieldIntro,
gson.toJson(mediaList), 0, 0);
}
diff --git a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
index d4ec0fe..028190f 100644
--- a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
@@ -64,9 +64,9 @@
@Override
protected void setupTopBarLayout() {
- mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.black));
- mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.lightGray));
- mapTopLayout.addLeftImageButton(R.drawable.ic_left_black, 0).setOnClickListener(new View.OnClickListener() {
+ mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ mapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -169,7 +169,6 @@
finish();
}
}).create().show();
-
return true;
}
});
@@ -200,7 +199,16 @@
}
break;
case R.id.removeToLocalView:
- position = builder.zoom(15).build();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
+ CameraPosition position = builder.target(latLng).zoom(15).build();
+ map.animateCamera(CameraUpdateFactory.newCameraPosition(position), 2000);
+ }
+ }
+ });
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java
index 0f5df93..ed00019 100644
--- a/app/src/main/java/com/casic/dcms/utils/Constant.java
+++ b/app/src/main/java/com/casic/dcms/utils/Constant.java
@@ -52,4 +52,7 @@
public static final String IP_KEY = "BASE_IP";
public static final String LOGIN_OUT_ACTION = "loginOut";
public static final String NOTICE_MSG = "receivePush";
+
+ public static final String BASE_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/2w/MapServer"; //底图图层
+ public static final String COMPONENT_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/dxbj/FeatureServer/0"; //部件点图层
}
diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml
index a799254..a5b3395 100644
--- a/app/src/main/res/layout/activity_case_upload_quickly.xml
+++ b/app/src/main/res/layout/activity_case_upload_quickly.xml
@@ -270,7 +270,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginEnd="10dp"
- android:layout_toStartOf="@id/imageUploadView"
android:orientation="vertical">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
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 97682e3..4826307 100644
--- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
@@ -39,7 +39,6 @@
import com.casic.dcms.utils.StatusBarColorUtil;
import com.casic.dcms.utils.ToastHelper;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
@@ -54,7 +53,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -65,6 +63,7 @@
public class CaseUploadQuicklyActivity extends BaseActivity implements View.OnClickListener,
ICaseLargeClassView, ICaseSmallClassView, ICaseSubmitCaseView, IUploadImageView {
+ private static final String TAG = "QuicklyActivity";
private Context context = this;
@BindView(R.id.leftBackView)
@@ -101,7 +100,6 @@
private List smallClassBeans;
private QMUITipDialog submitDialog;
private Gson gson;
- private List selectList = new ArrayList<>();
private UploadImagePresenterImpl uploadImagePresenter;
private List mediaList = new ArrayList<>();//服务器返回的拍照数据集
private String eorc;
@@ -140,24 +138,8 @@
.create();
uploadImagePresenter = new UploadImagePresenterImpl(this);
imageAdapter = new ImageRecycleViewAdapter(this);
- selectedResultView.setLayoutManager(new GridLayoutManager(this, 3));
+ selectedResultView.setLayoutManager(new GridLayoutManager(this, 2));
selectedResultView.setAdapter(imageAdapter);
- //九宫格点击事件
- imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
- @Override
- public void onClick(int position) {
- //查看大图
- showBigImage(selectList.get(position).getRealPath());
- }
- });
- //删除按钮点击事件
- imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
- @Override
- public void onClick(int position) {
- selectList.remove(position);
- imageAdapter.setMediaList(selectList);
- }
- });
}
@Override
@@ -165,7 +147,7 @@
submitButton.setChangeAlphaWhenPress(true);
}
- @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.imageUploadView, R.id.submitButton})
+ @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.submitButton})
@Override
public void onClick(View v) {
switch (v.getId()) {
@@ -260,17 +242,8 @@
.create().show();
break;
case R.id.locationMapView:
- startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
- break;
- case R.id.imageUploadView:
- if (selectList == null || selectList.size() == 0) {
- ToastHelper.showToast("操作失败,没有选择任何图片,无法上传!", ToastHelper.ERROR);
- return;
- }
- for (LocalMedia media : selectList) {
- String mediaCompressPath = media.getCompressPath();
- uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
- }
+// startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
+ startActivityForResult(new Intent(this, ArcGISMapActivity.class), Constant.REQUEST_MAP_CODE);
break;
case R.id.submitButton:
submitCase();//案卷提交
@@ -284,11 +257,10 @@
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(3)
+ .maxSelectNum(2)
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.CHOOSE_REQUEST);
}
@@ -300,7 +272,6 @@
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.REQUEST_CAMERA);
}
@@ -310,22 +281,32 @@
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
- selectList = PictureSelector.obtainMultipleResult(data);
- imageAdapter.setMediaList(selectList);
+ List selectList = PictureSelector.obtainMultipleResult(data);
+ if (selectList.size() != 2) {
+ ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING);
+ return;
+ }
+ for (LocalMedia media : selectList) {
+ String mediaCompressPath = media.getCompressPath();
+ uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
+ }
break;
case PictureConfig.REQUEST_CAMERA:
- selectList.add(PictureSelector.obtainMultipleResult(data).get(0));
- imageAdapter.setMediaList(selectList);
+ LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0);
+ uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath()));
break;
case Constant.REQUEST_MAP_CODE:
if (data == null) {
return;
}
- String pointJson = data.getStringExtra("pointJson");
- Type type = new TypeToken() {
- }.getType();
- LatLng latLng = gson.fromJson(pointJson, type);
- updateLocation(latLng);
+// String pointJson = data.getStringExtra("pointJson");
+// Type type = new TypeToken() {
+// }.getType();
+// LatLng latLng = gson.fromJson(pointJson, type);
+// updateLocation(latLng);
+ double longitude = data.getDoubleExtra("longitude", 0);
+ double latitude = data.getDoubleExtra("latitude", 0);
+ updateLocation(longitude, latitude);
break;
default:
break;
@@ -333,6 +314,24 @@
}
}
+ private void updateLocation(double longitude, double latitude) {
+ longitudeView.setText(String.valueOf(longitude));
+ latitudeView.setText(String.valueOf(latitude));
+ Geocoder geoCoder = new Geocoder(this, Locale.CHINESE);
+ StringBuffer buffer = new StringBuffer();
+ try {
+ Address address = geoCoder.getFromLocation(latitude, longitude, 1).get(0);
+ buffer.append(address.getSubLocality())
+ .append(address.getSubAdminArea())
+ .append(address.getThoroughfare())
+ .append(address.getSubThoroughfare());
+ } catch (IOException e) {
+ buffer.append("解析详细地址失败");
+ e.printStackTrace();
+ }
+ communityNameView.setText(buffer);
+ }
+
private void updateLocation(LatLng point) {
double longitude = point.getLongitude();
longitudeView.setText(String.valueOf(longitude));
@@ -401,6 +400,7 @@
public void obtainUploadResult(UploadImageResultBean resultBean) {
// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean));
if (resultBean.isSuccess()) {
+ PictureFileUtils.deleteAllCacheDirFile(this);
/**
* 系统路径static拼接图片返回路径
* http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg
@@ -409,10 +409,26 @@
String data = resultBean.getData().replace("\\", "/");
String url = SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409") + "/static/" + data;
mediaList.add(url);
- PictureFileUtils.deleteAllCacheDirFile(this);
- ToastHelper.showToast("案卷图片上传成功,可以提交案卷", ToastHelper.SUCCESS);
- } else {
- ToastHelper.showToast("案卷图片上传失败,请重试", ToastHelper.ERROR);
+ if (mediaList.size() == 2) {
+ addImageView.setVisibility(View.GONE);
+ }
+ imageAdapter.setMediaList(mediaList);
+ //九宫格点击事件
+ imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(int position) {
+ //查看大图
+ showBigImage(mediaList.get(position));
+ }
+ });
+// //删除按钮点击事件
+// imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
+// @Override
+// public void onClick(int position) {
+// selectList.remove(position);
+// imageAdapter.setMediaList(selectList);
+// }
+// });
}
}
@@ -436,7 +452,7 @@
return;
}
caseSubmitPresenter.onReadyRetrofitRequest("0", "0", longitude, latitude,
- "1", "1", eorc, typeCode, typeDetailCode, "崇仁县", "巴山镇",
+ "1", "1", eorc, typeCode, typeDetailCode, "361024", "361024100",
"361024", "361024100", description, fieldIntro,
gson.toJson(mediaList), 0, 0);
}
diff --git a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
index d4ec0fe..028190f 100644
--- a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
@@ -64,9 +64,9 @@
@Override
protected void setupTopBarLayout() {
- mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.black));
- mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.lightGray));
- mapTopLayout.addLeftImageButton(R.drawable.ic_left_black, 0).setOnClickListener(new View.OnClickListener() {
+ mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ mapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -169,7 +169,6 @@
finish();
}
}).create().show();
-
return true;
}
});
@@ -200,7 +199,16 @@
}
break;
case R.id.removeToLocalView:
- position = builder.zoom(15).build();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
+ CameraPosition position = builder.target(latLng).zoom(15).build();
+ map.animateCamera(CameraUpdateFactory.newCameraPosition(position), 2000);
+ }
+ }
+ });
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java
index 0f5df93..ed00019 100644
--- a/app/src/main/java/com/casic/dcms/utils/Constant.java
+++ b/app/src/main/java/com/casic/dcms/utils/Constant.java
@@ -52,4 +52,7 @@
public static final String IP_KEY = "BASE_IP";
public static final String LOGIN_OUT_ACTION = "loginOut";
public static final String NOTICE_MSG = "receivePush";
+
+ public static final String BASE_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/2w/MapServer"; //底图图层
+ public static final String COMPONENT_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/dxbj/FeatureServer/0"; //部件点图层
}
diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml
index a799254..a5b3395 100644
--- a/app/src/main/res/layout/activity_case_upload_quickly.xml
+++ b/app/src/main/res/layout/activity_case_upload_quickly.xml
@@ -270,7 +270,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginEnd="10dp"
- android:layout_toStartOf="@id/imageUploadView"
android:orientation="vertical">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_select_gridview.xml b/app/src/main/res/layout/item_select_gridview.xml
index 5c9541b..5834e40 100644
--- a/app/src/main/res/layout/item_select_gridview.xml
+++ b/app/src/main/res/layout/item_select_gridview.xml
@@ -5,8 +5,8 @@
+ android:background="@drawable/ic_delete_black"
+ android:visibility="gone" />
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
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 97682e3..4826307 100644
--- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
@@ -39,7 +39,6 @@
import com.casic.dcms.utils.StatusBarColorUtil;
import com.casic.dcms.utils.ToastHelper;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
@@ -54,7 +53,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -65,6 +63,7 @@
public class CaseUploadQuicklyActivity extends BaseActivity implements View.OnClickListener,
ICaseLargeClassView, ICaseSmallClassView, ICaseSubmitCaseView, IUploadImageView {
+ private static final String TAG = "QuicklyActivity";
private Context context = this;
@BindView(R.id.leftBackView)
@@ -101,7 +100,6 @@
private List smallClassBeans;
private QMUITipDialog submitDialog;
private Gson gson;
- private List selectList = new ArrayList<>();
private UploadImagePresenterImpl uploadImagePresenter;
private List mediaList = new ArrayList<>();//服务器返回的拍照数据集
private String eorc;
@@ -140,24 +138,8 @@
.create();
uploadImagePresenter = new UploadImagePresenterImpl(this);
imageAdapter = new ImageRecycleViewAdapter(this);
- selectedResultView.setLayoutManager(new GridLayoutManager(this, 3));
+ selectedResultView.setLayoutManager(new GridLayoutManager(this, 2));
selectedResultView.setAdapter(imageAdapter);
- //九宫格点击事件
- imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
- @Override
- public void onClick(int position) {
- //查看大图
- showBigImage(selectList.get(position).getRealPath());
- }
- });
- //删除按钮点击事件
- imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
- @Override
- public void onClick(int position) {
- selectList.remove(position);
- imageAdapter.setMediaList(selectList);
- }
- });
}
@Override
@@ -165,7 +147,7 @@
submitButton.setChangeAlphaWhenPress(true);
}
- @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.imageUploadView, R.id.submitButton})
+ @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.submitButton})
@Override
public void onClick(View v) {
switch (v.getId()) {
@@ -260,17 +242,8 @@
.create().show();
break;
case R.id.locationMapView:
- startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
- break;
- case R.id.imageUploadView:
- if (selectList == null || selectList.size() == 0) {
- ToastHelper.showToast("操作失败,没有选择任何图片,无法上传!", ToastHelper.ERROR);
- return;
- }
- for (LocalMedia media : selectList) {
- String mediaCompressPath = media.getCompressPath();
- uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
- }
+// startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
+ startActivityForResult(new Intent(this, ArcGISMapActivity.class), Constant.REQUEST_MAP_CODE);
break;
case R.id.submitButton:
submitCase();//案卷提交
@@ -284,11 +257,10 @@
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(3)
+ .maxSelectNum(2)
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.CHOOSE_REQUEST);
}
@@ -300,7 +272,6 @@
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.REQUEST_CAMERA);
}
@@ -310,22 +281,32 @@
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
- selectList = PictureSelector.obtainMultipleResult(data);
- imageAdapter.setMediaList(selectList);
+ List selectList = PictureSelector.obtainMultipleResult(data);
+ if (selectList.size() != 2) {
+ ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING);
+ return;
+ }
+ for (LocalMedia media : selectList) {
+ String mediaCompressPath = media.getCompressPath();
+ uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
+ }
break;
case PictureConfig.REQUEST_CAMERA:
- selectList.add(PictureSelector.obtainMultipleResult(data).get(0));
- imageAdapter.setMediaList(selectList);
+ LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0);
+ uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath()));
break;
case Constant.REQUEST_MAP_CODE:
if (data == null) {
return;
}
- String pointJson = data.getStringExtra("pointJson");
- Type type = new TypeToken() {
- }.getType();
- LatLng latLng = gson.fromJson(pointJson, type);
- updateLocation(latLng);
+// String pointJson = data.getStringExtra("pointJson");
+// Type type = new TypeToken() {
+// }.getType();
+// LatLng latLng = gson.fromJson(pointJson, type);
+// updateLocation(latLng);
+ double longitude = data.getDoubleExtra("longitude", 0);
+ double latitude = data.getDoubleExtra("latitude", 0);
+ updateLocation(longitude, latitude);
break;
default:
break;
@@ -333,6 +314,24 @@
}
}
+ private void updateLocation(double longitude, double latitude) {
+ longitudeView.setText(String.valueOf(longitude));
+ latitudeView.setText(String.valueOf(latitude));
+ Geocoder geoCoder = new Geocoder(this, Locale.CHINESE);
+ StringBuffer buffer = new StringBuffer();
+ try {
+ Address address = geoCoder.getFromLocation(latitude, longitude, 1).get(0);
+ buffer.append(address.getSubLocality())
+ .append(address.getSubAdminArea())
+ .append(address.getThoroughfare())
+ .append(address.getSubThoroughfare());
+ } catch (IOException e) {
+ buffer.append("解析详细地址失败");
+ e.printStackTrace();
+ }
+ communityNameView.setText(buffer);
+ }
+
private void updateLocation(LatLng point) {
double longitude = point.getLongitude();
longitudeView.setText(String.valueOf(longitude));
@@ -401,6 +400,7 @@
public void obtainUploadResult(UploadImageResultBean resultBean) {
// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean));
if (resultBean.isSuccess()) {
+ PictureFileUtils.deleteAllCacheDirFile(this);
/**
* 系统路径static拼接图片返回路径
* http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg
@@ -409,10 +409,26 @@
String data = resultBean.getData().replace("\\", "/");
String url = SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409") + "/static/" + data;
mediaList.add(url);
- PictureFileUtils.deleteAllCacheDirFile(this);
- ToastHelper.showToast("案卷图片上传成功,可以提交案卷", ToastHelper.SUCCESS);
- } else {
- ToastHelper.showToast("案卷图片上传失败,请重试", ToastHelper.ERROR);
+ if (mediaList.size() == 2) {
+ addImageView.setVisibility(View.GONE);
+ }
+ imageAdapter.setMediaList(mediaList);
+ //九宫格点击事件
+ imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(int position) {
+ //查看大图
+ showBigImage(mediaList.get(position));
+ }
+ });
+// //删除按钮点击事件
+// imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
+// @Override
+// public void onClick(int position) {
+// selectList.remove(position);
+// imageAdapter.setMediaList(selectList);
+// }
+// });
}
}
@@ -436,7 +452,7 @@
return;
}
caseSubmitPresenter.onReadyRetrofitRequest("0", "0", longitude, latitude,
- "1", "1", eorc, typeCode, typeDetailCode, "崇仁县", "巴山镇",
+ "1", "1", eorc, typeCode, typeDetailCode, "361024", "361024100",
"361024", "361024100", description, fieldIntro,
gson.toJson(mediaList), 0, 0);
}
diff --git a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
index d4ec0fe..028190f 100644
--- a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
@@ -64,9 +64,9 @@
@Override
protected void setupTopBarLayout() {
- mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.black));
- mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.lightGray));
- mapTopLayout.addLeftImageButton(R.drawable.ic_left_black, 0).setOnClickListener(new View.OnClickListener() {
+ mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ mapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -169,7 +169,6 @@
finish();
}
}).create().show();
-
return true;
}
});
@@ -200,7 +199,16 @@
}
break;
case R.id.removeToLocalView:
- position = builder.zoom(15).build();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
+ CameraPosition position = builder.target(latLng).zoom(15).build();
+ map.animateCamera(CameraUpdateFactory.newCameraPosition(position), 2000);
+ }
+ }
+ });
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java
index 0f5df93..ed00019 100644
--- a/app/src/main/java/com/casic/dcms/utils/Constant.java
+++ b/app/src/main/java/com/casic/dcms/utils/Constant.java
@@ -52,4 +52,7 @@
public static final String IP_KEY = "BASE_IP";
public static final String LOGIN_OUT_ACTION = "loginOut";
public static final String NOTICE_MSG = "receivePush";
+
+ public static final String BASE_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/2w/MapServer"; //底图图层
+ public static final String COMPONENT_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/dxbj/FeatureServer/0"; //部件点图层
}
diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml
index a799254..a5b3395 100644
--- a/app/src/main/res/layout/activity_case_upload_quickly.xml
+++ b/app/src/main/res/layout/activity_case_upload_quickly.xml
@@ -270,7 +270,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginEnd="10dp"
- android:layout_toStartOf="@id/imageUploadView"
android:orientation="vertical">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_select_gridview.xml b/app/src/main/res/layout/item_select_gridview.xml
index 5c9541b..5834e40 100644
--- a/app/src/main/res/layout/item_select_gridview.xml
+++ b/app/src/main/res/layout/item_select_gridview.xml
@@ -5,8 +5,8 @@
+ android:background="@drawable/ic_delete_black"
+ android:visibility="gone" />
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 04296eb..c5da4e8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -18,5 +18,5 @@
(V)取事部件点:通过地图取点打开的地图窗口,直接在地图上单击,即可完成取事件点或部件点的操作,获取网格、坐标等信息。
pk.eyJ1IjoiMTgzMTA1ODE5MTYiLCJhIjoiY2tuN2hna2hhMG9hYzJ1bTFzamY0dXhsaCJ9.yWjMxHEHvXFe8c0AWT1bTQ
- AAPK068bca9a1246485881b11f568444dc8ajG37wO52bDOv5NZgrAiOZstaEdqvG0bjKEZJX9gXgvR5Jq56g56eyswsu5ziFquD
+ AAPK93b60c1b1b064409aafaa03bc5bd3df1eM4wAH7Cxp9rfcD_AEmUqjuk3p2nq-P_tAiHCRh-iyuLIBqeDiKD0urjkJd42iCh
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
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 97682e3..4826307 100644
--- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
@@ -39,7 +39,6 @@
import com.casic.dcms.utils.StatusBarColorUtil;
import com.casic.dcms.utils.ToastHelper;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
@@ -54,7 +53,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -65,6 +63,7 @@
public class CaseUploadQuicklyActivity extends BaseActivity implements View.OnClickListener,
ICaseLargeClassView, ICaseSmallClassView, ICaseSubmitCaseView, IUploadImageView {
+ private static final String TAG = "QuicklyActivity";
private Context context = this;
@BindView(R.id.leftBackView)
@@ -101,7 +100,6 @@
private List smallClassBeans;
private QMUITipDialog submitDialog;
private Gson gson;
- private List selectList = new ArrayList<>();
private UploadImagePresenterImpl uploadImagePresenter;
private List mediaList = new ArrayList<>();//服务器返回的拍照数据集
private String eorc;
@@ -140,24 +138,8 @@
.create();
uploadImagePresenter = new UploadImagePresenterImpl(this);
imageAdapter = new ImageRecycleViewAdapter(this);
- selectedResultView.setLayoutManager(new GridLayoutManager(this, 3));
+ selectedResultView.setLayoutManager(new GridLayoutManager(this, 2));
selectedResultView.setAdapter(imageAdapter);
- //九宫格点击事件
- imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
- @Override
- public void onClick(int position) {
- //查看大图
- showBigImage(selectList.get(position).getRealPath());
- }
- });
- //删除按钮点击事件
- imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
- @Override
- public void onClick(int position) {
- selectList.remove(position);
- imageAdapter.setMediaList(selectList);
- }
- });
}
@Override
@@ -165,7 +147,7 @@
submitButton.setChangeAlphaWhenPress(true);
}
- @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.imageUploadView, R.id.submitButton})
+ @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.submitButton})
@Override
public void onClick(View v) {
switch (v.getId()) {
@@ -260,17 +242,8 @@
.create().show();
break;
case R.id.locationMapView:
- startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
- break;
- case R.id.imageUploadView:
- if (selectList == null || selectList.size() == 0) {
- ToastHelper.showToast("操作失败,没有选择任何图片,无法上传!", ToastHelper.ERROR);
- return;
- }
- for (LocalMedia media : selectList) {
- String mediaCompressPath = media.getCompressPath();
- uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
- }
+// startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
+ startActivityForResult(new Intent(this, ArcGISMapActivity.class), Constant.REQUEST_MAP_CODE);
break;
case R.id.submitButton:
submitCase();//案卷提交
@@ -284,11 +257,10 @@
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(3)
+ .maxSelectNum(2)
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.CHOOSE_REQUEST);
}
@@ -300,7 +272,6 @@
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.REQUEST_CAMERA);
}
@@ -310,22 +281,32 @@
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
- selectList = PictureSelector.obtainMultipleResult(data);
- imageAdapter.setMediaList(selectList);
+ List selectList = PictureSelector.obtainMultipleResult(data);
+ if (selectList.size() != 2) {
+ ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING);
+ return;
+ }
+ for (LocalMedia media : selectList) {
+ String mediaCompressPath = media.getCompressPath();
+ uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
+ }
break;
case PictureConfig.REQUEST_CAMERA:
- selectList.add(PictureSelector.obtainMultipleResult(data).get(0));
- imageAdapter.setMediaList(selectList);
+ LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0);
+ uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath()));
break;
case Constant.REQUEST_MAP_CODE:
if (data == null) {
return;
}
- String pointJson = data.getStringExtra("pointJson");
- Type type = new TypeToken() {
- }.getType();
- LatLng latLng = gson.fromJson(pointJson, type);
- updateLocation(latLng);
+// String pointJson = data.getStringExtra("pointJson");
+// Type type = new TypeToken() {
+// }.getType();
+// LatLng latLng = gson.fromJson(pointJson, type);
+// updateLocation(latLng);
+ double longitude = data.getDoubleExtra("longitude", 0);
+ double latitude = data.getDoubleExtra("latitude", 0);
+ updateLocation(longitude, latitude);
break;
default:
break;
@@ -333,6 +314,24 @@
}
}
+ private void updateLocation(double longitude, double latitude) {
+ longitudeView.setText(String.valueOf(longitude));
+ latitudeView.setText(String.valueOf(latitude));
+ Geocoder geoCoder = new Geocoder(this, Locale.CHINESE);
+ StringBuffer buffer = new StringBuffer();
+ try {
+ Address address = geoCoder.getFromLocation(latitude, longitude, 1).get(0);
+ buffer.append(address.getSubLocality())
+ .append(address.getSubAdminArea())
+ .append(address.getThoroughfare())
+ .append(address.getSubThoroughfare());
+ } catch (IOException e) {
+ buffer.append("解析详细地址失败");
+ e.printStackTrace();
+ }
+ communityNameView.setText(buffer);
+ }
+
private void updateLocation(LatLng point) {
double longitude = point.getLongitude();
longitudeView.setText(String.valueOf(longitude));
@@ -401,6 +400,7 @@
public void obtainUploadResult(UploadImageResultBean resultBean) {
// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean));
if (resultBean.isSuccess()) {
+ PictureFileUtils.deleteAllCacheDirFile(this);
/**
* 系统路径static拼接图片返回路径
* http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg
@@ -409,10 +409,26 @@
String data = resultBean.getData().replace("\\", "/");
String url = SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409") + "/static/" + data;
mediaList.add(url);
- PictureFileUtils.deleteAllCacheDirFile(this);
- ToastHelper.showToast("案卷图片上传成功,可以提交案卷", ToastHelper.SUCCESS);
- } else {
- ToastHelper.showToast("案卷图片上传失败,请重试", ToastHelper.ERROR);
+ if (mediaList.size() == 2) {
+ addImageView.setVisibility(View.GONE);
+ }
+ imageAdapter.setMediaList(mediaList);
+ //九宫格点击事件
+ imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(int position) {
+ //查看大图
+ showBigImage(mediaList.get(position));
+ }
+ });
+// //删除按钮点击事件
+// imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
+// @Override
+// public void onClick(int position) {
+// selectList.remove(position);
+// imageAdapter.setMediaList(selectList);
+// }
+// });
}
}
@@ -436,7 +452,7 @@
return;
}
caseSubmitPresenter.onReadyRetrofitRequest("0", "0", longitude, latitude,
- "1", "1", eorc, typeCode, typeDetailCode, "崇仁县", "巴山镇",
+ "1", "1", eorc, typeCode, typeDetailCode, "361024", "361024100",
"361024", "361024100", description, fieldIntro,
gson.toJson(mediaList), 0, 0);
}
diff --git a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
index d4ec0fe..028190f 100644
--- a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
@@ -64,9 +64,9 @@
@Override
protected void setupTopBarLayout() {
- mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.black));
- mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.lightGray));
- mapTopLayout.addLeftImageButton(R.drawable.ic_left_black, 0).setOnClickListener(new View.OnClickListener() {
+ mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ mapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -169,7 +169,6 @@
finish();
}
}).create().show();
-
return true;
}
});
@@ -200,7 +199,16 @@
}
break;
case R.id.removeToLocalView:
- position = builder.zoom(15).build();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
+ CameraPosition position = builder.target(latLng).zoom(15).build();
+ map.animateCamera(CameraUpdateFactory.newCameraPosition(position), 2000);
+ }
+ }
+ });
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java
index 0f5df93..ed00019 100644
--- a/app/src/main/java/com/casic/dcms/utils/Constant.java
+++ b/app/src/main/java/com/casic/dcms/utils/Constant.java
@@ -52,4 +52,7 @@
public static final String IP_KEY = "BASE_IP";
public static final String LOGIN_OUT_ACTION = "loginOut";
public static final String NOTICE_MSG = "receivePush";
+
+ public static final String BASE_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/2w/MapServer"; //底图图层
+ public static final String COMPONENT_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/dxbj/FeatureServer/0"; //部件点图层
}
diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml
index a799254..a5b3395 100644
--- a/app/src/main/res/layout/activity_case_upload_quickly.xml
+++ b/app/src/main/res/layout/activity_case_upload_quickly.xml
@@ -270,7 +270,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginEnd="10dp"
- android:layout_toStartOf="@id/imageUploadView"
android:orientation="vertical">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_select_gridview.xml b/app/src/main/res/layout/item_select_gridview.xml
index 5c9541b..5834e40 100644
--- a/app/src/main/res/layout/item_select_gridview.xml
+++ b/app/src/main/res/layout/item_select_gridview.xml
@@ -5,8 +5,8 @@
+ android:background="@drawable/ic_delete_black"
+ android:visibility="gone" />
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 04296eb..c5da4e8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -18,5 +18,5 @@
(V)取事部件点:通过地图取点打开的地图窗口,直接在地图上单击,即可完成取事件点或部件点的操作,获取网格、坐标等信息。
pk.eyJ1IjoiMTgzMTA1ODE5MTYiLCJhIjoiY2tuN2hna2hhMG9hYzJ1bTFzamY0dXhsaCJ9.yWjMxHEHvXFe8c0AWT1bTQ
- AAPK068bca9a1246485881b11f568444dc8ajG37wO52bDOv5NZgrAiOZstaEdqvG0bjKEZJX9gXgvR5Jq56g56eyswsu5ziFquD
+ AAPK93b60c1b1b064409aafaa03bc5bd3df1eM4wAH7Cxp9rfcD_AEmUqjuk3p2nq-P_tAiHCRh-iyuLIBqeDiKD0urjkJd42iCh
diff --git a/app/src/test/java/com/casic/dcms/ExampleUnitTest.java b/app/src/test/java/com/casic/dcms/ExampleUnitTest.java
deleted file mode 100644
index 66ab075..0000000
--- a/app/src/test/java/com/casic/dcms/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.casic.dcms;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 33265ed..5bc8157 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,6 @@
versionCode 1
versionName "v1.1.0.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" }
manifestPlaceholders = [
@@ -41,15 +39,10 @@
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
//Google官方授权框架
implementation 'pub.devrel:easypermissions:1.3.0'
//腾讯Android UI框架
@@ -82,8 +75,10 @@
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
//Excel表格
implementation 'com.github.huangyanbin:SmartTable:1.7.1'
- implementation 'com.getui:gtsdk:3.1.4.0' //个推SDK
- implementation 'com.getui:gtc:3.1.0.0' //个推核心组件
+ implementation 'com.getui:gtsdk:3.1.4.0'
+ //个推SDK
+ implementation 'com.getui:gtc:3.1.0.0'
+ //个推核心组件
//数据库框架
implementation 'org.greenrobot:greendao:3.3.0'
//沉浸式状态栏。基础依赖包,必须要依赖
@@ -94,4 +89,6 @@
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
//视频播放器
implementation 'fm.jiecao:jiecaovideoplayer:5.5.4'
+ //ArcGIS
+ implementation 'com.esri.arcgisruntime:arcgis-android:100.10.0'
}
diff --git a/app/dcms_key b/app/dcms_key
new file mode 100644
index 0000000..bcb2319
--- /dev/null
+++ b/app/dcms_key
Binary files differ
diff --git a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
deleted file mode 100644
index d8faada..0000000
--- a/app/src/androidTest/java/com/casic/dcms/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.casic.dcms;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.casic.dcms", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e7f351..bc9187f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,13 @@
+
+
+
+
+
+
{
private Context context;
- private List mediaList = new ArrayList<>();
+ private List mediaList = new ArrayList<>();
public ImageRecycleViewAdapter(Context mContext) {
this.context = mContext;
}
- public void setMediaList(@Nullable List selectList) {
+ public void setMediaList(@Nullable List imageUrlList) {
mediaList.clear();
- if (selectList != null) {
- mediaList.addAll(selectList);
+ if (imageUrlList != null) {
+ mediaList.addAll(imageUrlList);
}
notifyDataSetChanged();
}
@@ -50,7 +47,7 @@
@Override
public int getItemCount() {
- return Math.min(mediaList.size(), 3);
+ return mediaList.size();
}
@Override
@@ -60,21 +57,19 @@
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- Glide.with(context).load(mediaList.get(position).getRealPath()).into(holder.imageView);
- if (clickListener != null) {
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- itemClickListener.onClick(position);
- }
- });
- holder.deleteView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clickListener.onClick(position);
- }
- });
- }
+ Glide.with(context).load(mediaList.get(position)).into(holder.imageView);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(position);
+ }
+ });
+// holder.deleteView.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// clickListener.onClick(position);
+// }
+// });
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 37f98aa..ce017e5 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -8,6 +8,7 @@
import com.casic.dcms.greendao.DaoSession;
import com.casic.dcms.utils.SaveKeyValues;
import com.casic.dcms.utils.ToastHelper;
+import com.esri.arcgisruntime.ArcGISRuntimeEnvironment;
import com.mapbox.mapboxsdk.Mapbox;
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager;
@@ -24,6 +25,8 @@
ToastHelper.initToastHelper(this);
//MapBox地图注册
Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
+ ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud4449636536,none,NKMFA0PL4S0DRJE15166");//去掉开发版水印
+ ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
com.igexin.sdk.PushManager.getInstance().initialize(this);
// com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
new file mode 100644
index 0000000..dfe881b
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -0,0 +1,173 @@
+package com.casic.dcms.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.location.Location;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseActivity;
+import com.casic.dcms.utils.Constant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.esri.arcgisruntime.data.ServiceFeatureTable;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.FeatureLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class ArcGISMapActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "ArcGISMapActivity";
+ private Context context = this;
+ @BindView(R.id.gisTopLayout)
+ QMUITopBarLayout gisTopLayout;
+ @BindView(R.id.mapView)
+ MapView mapView;
+ @BindView(R.id.expandMapView)
+ ImageView expandMapView;
+ @BindView(R.id.minusMapView)
+ ImageView minusMapView;
+
+ @Override
+ public int initLayoutView() {
+ return R.layout.activity_gis;
+ }
+
+ @Override
+ protected void setupTopBarLayout() {
+ gisTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void initData() {
+ ArcGISMap map = new ArcGISMap();
+ ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(Constant.BASE_SERVICE_URL);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap();
+ basemap.getBaseLayers().add(arcGISTiledLayer);
+ //设置地图底图
+ map.setBasemap(basemap);
+ FeatureLayer featureLayer = new FeatureLayer(new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL));
+
+ //设置地图相关属性
+ map.getOperationalLayers().add(featureLayer);
+ mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ mapView.setMap(map);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ Point clickPoint = mapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+ addMarker(clickPoint);
+
+ new QMUIDialog.MessageDialogBuilder(context)
+ .setTitle("提示")
+ .setMessage("该时间所在地点网格为[" + clickPoint.getX() + "," + clickPoint.getY() + "]确认提交?")
+ .setCanceledOnTouchOutside(false)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ dialog.dismiss();
+ //TODO 点击地图获取到经纬度,传递给后台,获取到点附近的部件属性列表
+ Intent intent = new Intent();
+ intent.putExtra("latitude", clickPoint.getY());
+ intent.putExtra("longitude", clickPoint.getX());
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+ }).create().show();
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ /**
+ * //[116.598359, 28.247870, 0.000000, NaN] SR: 4326
+ */
+ private void addMarker(Point clickPoint) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 15);
+ Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = mapView.getGraphicsOverlays();
+ if (overlayGraphics.size() != 0) {
+ overlayGraphics.clear();
+ }
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+
+ @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView})
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.expandMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5);
+ break;
+ case R.id.minusMapView:
+ mapView.setViewpointScaleAsync(mapView.getMapScale() * 2);
+ break;
+ case R.id.removeToLocalView:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+
+ }
+ }
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void onResume() {
+ super.onResume();
+ mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.pause();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.dispose();
+ }
+}
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 97682e3..4826307 100644
--- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java
@@ -39,7 +39,6 @@
import com.casic.dcms.utils.StatusBarColorUtil;
import com.casic.dcms.utils.ToastHelper;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
@@ -54,7 +53,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -65,6 +63,7 @@
public class CaseUploadQuicklyActivity extends BaseActivity implements View.OnClickListener,
ICaseLargeClassView, ICaseSmallClassView, ICaseSubmitCaseView, IUploadImageView {
+ private static final String TAG = "QuicklyActivity";
private Context context = this;
@BindView(R.id.leftBackView)
@@ -101,7 +100,6 @@
private List smallClassBeans;
private QMUITipDialog submitDialog;
private Gson gson;
- private List selectList = new ArrayList<>();
private UploadImagePresenterImpl uploadImagePresenter;
private List mediaList = new ArrayList<>();//服务器返回的拍照数据集
private String eorc;
@@ -140,24 +138,8 @@
.create();
uploadImagePresenter = new UploadImagePresenterImpl(this);
imageAdapter = new ImageRecycleViewAdapter(this);
- selectedResultView.setLayoutManager(new GridLayoutManager(this, 3));
+ selectedResultView.setLayoutManager(new GridLayoutManager(this, 2));
selectedResultView.setAdapter(imageAdapter);
- //九宫格点击事件
- imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
- @Override
- public void onClick(int position) {
- //查看大图
- showBigImage(selectList.get(position).getRealPath());
- }
- });
- //删除按钮点击事件
- imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
- @Override
- public void onClick(int position) {
- selectList.remove(position);
- imageAdapter.setMediaList(selectList);
- }
- });
}
@Override
@@ -165,7 +147,7 @@
submitButton.setChangeAlphaWhenPress(true);
}
- @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.imageUploadView, R.id.submitButton})
+ @OnClick({R.id.caseClassLayout, R.id.caseLargeClassLayout, R.id.caseSmallClassLayout, R.id.locationMapView, R.id.addImageView, R.id.submitButton})
@Override
public void onClick(View v) {
switch (v.getId()) {
@@ -260,17 +242,8 @@
.create().show();
break;
case R.id.locationMapView:
- startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
- break;
- case R.id.imageUploadView:
- if (selectList == null || selectList.size() == 0) {
- ToastHelper.showToast("操作失败,没有选择任何图片,无法上传!", ToastHelper.ERROR);
- return;
- }
- for (LocalMedia media : selectList) {
- String mediaCompressPath = media.getCompressPath();
- uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
- }
+// startActivityForResult(new Intent(this, MapBoxActivity.class), Constant.REQUEST_MAP_CODE);
+ startActivityForResult(new Intent(this, ArcGISMapActivity.class), Constant.REQUEST_MAP_CODE);
break;
case R.id.submitButton:
submitCase();//案卷提交
@@ -284,11 +257,10 @@
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(3)
+ .maxSelectNum(2)
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.CHOOSE_REQUEST);
}
@@ -300,7 +272,6 @@
.isCompress(true)
.compressQuality(80)
.compressSavePath(FileUtils.getImageCompressPath())
- .selectionData(selectList)
.forResult(PictureConfig.REQUEST_CAMERA);
}
@@ -310,22 +281,32 @@
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
- selectList = PictureSelector.obtainMultipleResult(data);
- imageAdapter.setMediaList(selectList);
+ List selectList = PictureSelector.obtainMultipleResult(data);
+ if (selectList.size() != 2) {
+ ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING);
+ return;
+ }
+ for (LocalMedia media : selectList) {
+ String mediaCompressPath = media.getCompressPath();
+ uploadImagePresenter.onReadyRetrofitRequest(new File(mediaCompressPath));
+ }
break;
case PictureConfig.REQUEST_CAMERA:
- selectList.add(PictureSelector.obtainMultipleResult(data).get(0));
- imageAdapter.setMediaList(selectList);
+ LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0);
+ uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath()));
break;
case Constant.REQUEST_MAP_CODE:
if (data == null) {
return;
}
- String pointJson = data.getStringExtra("pointJson");
- Type type = new TypeToken() {
- }.getType();
- LatLng latLng = gson.fromJson(pointJson, type);
- updateLocation(latLng);
+// String pointJson = data.getStringExtra("pointJson");
+// Type type = new TypeToken() {
+// }.getType();
+// LatLng latLng = gson.fromJson(pointJson, type);
+// updateLocation(latLng);
+ double longitude = data.getDoubleExtra("longitude", 0);
+ double latitude = data.getDoubleExtra("latitude", 0);
+ updateLocation(longitude, latitude);
break;
default:
break;
@@ -333,6 +314,24 @@
}
}
+ private void updateLocation(double longitude, double latitude) {
+ longitudeView.setText(String.valueOf(longitude));
+ latitudeView.setText(String.valueOf(latitude));
+ Geocoder geoCoder = new Geocoder(this, Locale.CHINESE);
+ StringBuffer buffer = new StringBuffer();
+ try {
+ Address address = geoCoder.getFromLocation(latitude, longitude, 1).get(0);
+ buffer.append(address.getSubLocality())
+ .append(address.getSubAdminArea())
+ .append(address.getThoroughfare())
+ .append(address.getSubThoroughfare());
+ } catch (IOException e) {
+ buffer.append("解析详细地址失败");
+ e.printStackTrace();
+ }
+ communityNameView.setText(buffer);
+ }
+
private void updateLocation(LatLng point) {
double longitude = point.getLongitude();
longitudeView.setText(String.valueOf(longitude));
@@ -401,6 +400,7 @@
public void obtainUploadResult(UploadImageResultBean resultBean) {
// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean));
if (resultBean.isSuccess()) {
+ PictureFileUtils.deleteAllCacheDirFile(this);
/**
* 系统路径static拼接图片返回路径
* http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg
@@ -409,10 +409,26 @@
String data = resultBean.getData().replace("\\", "/");
String url = SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409") + "/static/" + data;
mediaList.add(url);
- PictureFileUtils.deleteAllCacheDirFile(this);
- ToastHelper.showToast("案卷图片上传成功,可以提交案卷", ToastHelper.SUCCESS);
- } else {
- ToastHelper.showToast("案卷图片上传失败,请重试", ToastHelper.ERROR);
+ if (mediaList.size() == 2) {
+ addImageView.setVisibility(View.GONE);
+ }
+ imageAdapter.setMediaList(mediaList);
+ //九宫格点击事件
+ imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(int position) {
+ //查看大图
+ showBigImage(mediaList.get(position));
+ }
+ });
+// //删除按钮点击事件
+// imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() {
+// @Override
+// public void onClick(int position) {
+// selectList.remove(position);
+// imageAdapter.setMediaList(selectList);
+// }
+// });
}
}
@@ -436,7 +452,7 @@
return;
}
caseSubmitPresenter.onReadyRetrofitRequest("0", "0", longitude, latitude,
- "1", "1", eorc, typeCode, typeDetailCode, "崇仁县", "巴山镇",
+ "1", "1", eorc, typeCode, typeDetailCode, "361024", "361024100",
"361024", "361024100", description, fieldIntro,
gson.toJson(mediaList), 0, 0);
}
diff --git a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
index d4ec0fe..028190f 100644
--- a/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/MapBoxActivity.java
@@ -64,9 +64,9 @@
@Override
protected void setupTopBarLayout() {
- mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.black));
- mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.lightGray));
- mapTopLayout.addLeftImageButton(R.drawable.ic_left_black, 0).setOnClickListener(new View.OnClickListener() {
+ mapTopLayout.setTitle("选择点位").setTextColor(ContextCompat.getColor(this, R.color.white));
+ mapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor));
+ mapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -169,7 +169,6 @@
finish();
}
}).create().show();
-
return true;
}
});
@@ -200,7 +199,16 @@
}
break;
case R.id.removeToLocalView:
- position = builder.zoom(15).build();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
+ CameraPosition position = builder.target(latLng).zoom(15).build();
+ map.animateCamera(CameraUpdateFactory.newCameraPosition(position), 2000);
+ }
+ }
+ });
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java
index 0f5df93..ed00019 100644
--- a/app/src/main/java/com/casic/dcms/utils/Constant.java
+++ b/app/src/main/java/com/casic/dcms/utils/Constant.java
@@ -52,4 +52,7 @@
public static final String IP_KEY = "BASE_IP";
public static final String LOGIN_OUT_ACTION = "loginOut";
public static final String NOTICE_MSG = "receivePush";
+
+ public static final String BASE_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/2w/MapServer"; //底图图层
+ public static final String COMPONENT_SERVICE_URL = "http://223.84.218.107:6080/arcgis/rest/services/dx/dxbj/FeatureServer/0"; //部件点图层
}
diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml
index a799254..a5b3395 100644
--- a/app/src/main/res/layout/activity_case_upload_quickly.xml
+++ b/app/src/main/res/layout/activity_case_upload_quickly.xml
@@ -270,7 +270,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginEnd="10dp"
- android:layout_toStartOf="@id/imageUploadView"
android:orientation="vertical">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_select_gridview.xml b/app/src/main/res/layout/item_select_gridview.xml
index 5c9541b..5834e40 100644
--- a/app/src/main/res/layout/item_select_gridview.xml
+++ b/app/src/main/res/layout/item_select_gridview.xml
@@ -5,8 +5,8 @@
+ android:background="@drawable/ic_delete_black"
+ android:visibility="gone" />
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 04296eb..c5da4e8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -18,5 +18,5 @@
(V)取事部件点:通过地图取点打开的地图窗口,直接在地图上单击,即可完成取事件点或部件点的操作,获取网格、坐标等信息。
pk.eyJ1IjoiMTgzMTA1ODE5MTYiLCJhIjoiY2tuN2hna2hhMG9hYzJ1bTFzamY0dXhsaCJ9.yWjMxHEHvXFe8c0AWT1bTQ
- AAPK068bca9a1246485881b11f568444dc8ajG37wO52bDOv5NZgrAiOZstaEdqvG0bjKEZJX9gXgvR5Jq56g56eyswsu5ziFquD
+ AAPK93b60c1b1b064409aafaa03bc5bd3df1eM4wAH7Cxp9rfcD_AEmUqjuk3p2nq-P_tAiHCRh-iyuLIBqeDiKD0urjkJd42iCh
diff --git a/app/src/test/java/com/casic/dcms/ExampleUnitTest.java b/app/src/test/java/com/casic/dcms/ExampleUnitTest.java
deleted file mode 100644
index 66ab075..0000000
--- a/app/src/test/java/com/casic/dcms/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.casic.dcms;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 81485d8..66d8065 100644
--- a/build.gradle
+++ b/build.gradle
@@ -44,6 +44,10 @@
//依赖库
maven { url 'https://jitpack.io' }
mavenCentral()
+ //ArcGIS
+ maven {
+ url 'https://esri.jfrog.io/artifactory/arcgis'
+ }
}
}