diff --git a/.gradle/7.3.3/checksums/checksums.lock b/.gradle/7.3.3/checksums/checksums.lock
index 79228c2..8b05469 100644
Binary files a/.gradle/7.3.3/checksums/checksums.lock and b/.gradle/7.3.3/checksums/checksums.lock differ
diff --git a/.gradle/7.3.3/checksums/md5-checksums.bin b/.gradle/7.3.3/checksums/md5-checksums.bin
index 74d1082..3890deb 100644
Binary files a/.gradle/7.3.3/checksums/md5-checksums.bin and b/.gradle/7.3.3/checksums/md5-checksums.bin differ
diff --git a/.gradle/7.3.3/checksums/sha1-checksums.bin b/.gradle/7.3.3/checksums/sha1-checksums.bin
index 047c617..d3aecac 100644
Binary files a/.gradle/7.3.3/checksums/sha1-checksums.bin and b/.gradle/7.3.3/checksums/sha1-checksums.bin differ
diff --git a/.gradle/7.3.3/executionHistory/executionHistory.bin b/.gradle/7.3.3/executionHistory/executionHistory.bin
index f038e65..139357d 100644
Binary files a/.gradle/7.3.3/executionHistory/executionHistory.bin and b/.gradle/7.3.3/executionHistory/executionHistory.bin differ
diff --git a/.gradle/7.3.3/executionHistory/executionHistory.lock b/.gradle/7.3.3/executionHistory/executionHistory.lock
index f303cdf..4e8af92 100644
Binary files a/.gradle/7.3.3/executionHistory/executionHistory.lock and b/.gradle/7.3.3/executionHistory/executionHistory.lock differ
diff --git a/.gradle/7.3.3/fileHashes/fileHashes.bin b/.gradle/7.3.3/fileHashes/fileHashes.bin
index c37a49f..d2327c3 100644
Binary files a/.gradle/7.3.3/fileHashes/fileHashes.bin and b/.gradle/7.3.3/fileHashes/fileHashes.bin differ
diff --git a/.gradle/7.3.3/fileHashes/fileHashes.lock b/.gradle/7.3.3/fileHashes/fileHashes.lock
index 78061e5..55d799b 100644
Binary files a/.gradle/7.3.3/fileHashes/fileHashes.lock and b/.gradle/7.3.3/fileHashes/fileHashes.lock differ
diff --git a/.gradle/7.3.3/fileHashes/resourceHashesCache.bin b/.gradle/7.3.3/fileHashes/resourceHashesCache.bin
index 644c90c..a63618c 100644
Binary files a/.gradle/7.3.3/fileHashes/resourceHashesCache.bin and b/.gradle/7.3.3/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index da5a3c1..f81e4b0 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
index 40aae3d..8f0026a 100644
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index a8f594d..7fbcbb3 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/app/build.gradle b/app/build.gradle
index cfa42e5..8b4b15c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -124,4 +124,9 @@ dependencies {
implementation project(path: ':DialogXMaterialYou')
implementation 'com.github.zhpanvip:bannerviewpager:3.5.12'
+
+ implementation 'com.github.AAChartModel:AAChartCore:-SNAPSHOT'
+
+ implementation 'com.github.li-xiaojun:XPopup:v2.2.23'
+
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fe1c279..7402031 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -78,6 +78,23 @@
android:exported="false"
android:screenOrientation="portrait" />
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/file_monitoring.json b/app/src/main/assets/file_monitoring.json
index 8924381..d88c7e2 100644
--- a/app/src/main/assets/file_monitoring.json
+++ b/app/src/main/assets/file_monitoring.json
@@ -1,7 +1,7 @@
[
{
"name": "A区田间监测设备组",
- "stations": [
+ "groups": [
{
"name": "生长监控",
"type": "monitor",
@@ -28,40 +28,40 @@
"status": 0
},
{
- "name": "监控0012",
+ "name": "监控012",
"status": 0
},
{
- "name": "监控0013",
+ "name": "监控013",
"status": 0
}
],
"exceptions": [
{
"name": "监控006",
- "status": 0
+ "status": 1
},
{
"name": "监控007",
- "status": 0
+ "status": 1
},
{
"name": "监控008",
- "status": 0
+ "status": 1
},
{
"name": "监控0011",
- "status": 0
+ "status": 1
}
],
"offline": [
{
"name": "监控009",
- "status": 0
+ "status": 2
},
{
"name": "监控010",
- "status": 0
+ "status": 2
}
]
}
@@ -69,21 +69,40 @@
{
"name": "生长监测站",
"type": "station",
- "sensors": [
+ "stations": [
{
- "type": "temperature",
- "value": "15",
- "status": 0
- },
- {
- "type": "humidity",
- "value": "83",
- "status": 1
- },
- {
- "type": "stalk_height",
- "value": "3.5",
- "status": 0
+ "name": "监测站-001",
+ "status": 0,
+ "crops_name": "甘蔗",
+ "grow_step": "成熟期",
+ "plant_type": "果木型",
+ "petiole_type": "阔叶型",
+ "growth_pattern": "良好",
+ "growth_pattern_status": 0,
+ "organic_matter": "10",
+ "organic_matter_type": 0,
+ "sensors": [
+ {
+ "type": "temperature",
+ "value": "15",
+ "status": 0
+ },
+ {
+ "type": "humidity",
+ "value": "83",
+ "status": 1
+ },
+ {
+ "type": "stalk_height",
+ "value": "3.5",
+ "status": 0
+ },
+ {
+ "type": "sugar",
+ "value": "15",
+ "status": 0
+ }
+ ]
}
]
}
@@ -91,9 +110,10 @@
},
{
"name": "B区田间监测设备组",
- "stations": [
+ "groups": [
{
- "name": "生长监测站1",
+ "name": "生长监控",
+ "type": "monitor",
"monitors": {
"normal": [
{
@@ -120,25 +140,25 @@
"exceptions": [
{
"name": "监控006",
- "status": 0
+ "status": 1
},
{
"name": "监控007",
- "status": 0
+ "status": 1
},
{
"name": "监控008",
- "status": 0
+ "status": 1
}
],
"offline": [
{
"name": "监控009",
- "status": 0
+ "status": 2
},
{
"name": "监控010",
- "status": 0
+ "status": 2
}
]
}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/photoview/PhotoViewActivty.java b/app/src/main/java/com/tairui/industrial_operation/ui/photoview/PhotoViewActivty.java
new file mode 100644
index 0000000..8155525
--- /dev/null
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/photoview/PhotoViewActivty.java
@@ -0,0 +1,106 @@
+package com.tairui.industrial_operation.ui.photoview;
+
+import java.util.List;
+
+import com.bumptech.glide.Glide;
+import com.gyf.immersionbar.ImmersionBar;
+import com.lxj.xpopup.photoview.PhotoView;
+import com.tairui.industrial_operation.base.BaseActivity;
+import com.tairui.industrial_operation.databinding.ActivityPhotoViewBinding;
+import com.tairui.industrial_operation.util.SingleClickListener;
+
+import android.os.Bundle;
+import android.view.View;
+import android.view.ViewGroup;
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
+public class PhotoViewActivty extends BaseActivity {
+
+ private List imgs;
+ private int index = -1;
+
+ @Override
+ protected Class getBindingClass() {
+ return ActivityPhotoViewBinding.class;
+ }
+
+
+ @Override
+ protected void initStatusBar() {
+ ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar()
+ .statusBarDarkFont(false).init();
+ }
+
+ @Override
+ protected void onQueryArguments() {
+ index = getIntent().getIntExtra("index", -1);
+ imgs = getIntent().getStringArrayListExtra("imgs");
+ }
+
+ @Override
+ protected void onFindView(Bundle savedInstanceState) {
+ binding.viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ binding.page.setText((position + 1) + "/" + imgs.size());
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+
+ }
+ });
+ binding.viewPager.setIsCanScroll(true);
+ binding.viewPager.setAdapter(new SamplePagerAdapter());
+ if (index != -1) {
+ binding.viewPager.setCurrentItem(index);
+ binding.page.setText((index + 1) + "/" + imgs.size());
+ }
+ }
+
+ @Override
+ protected void onBindListener() {
+ binding.back.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ onBackPressed();
+ }
+ });
+ }
+
+ private class SamplePagerAdapter extends PagerAdapter {
+
+ @Override
+ public int getCount() {
+ return imgs.size();
+ }
+
+ @Override
+ public View instantiateItem(ViewGroup container, int position) {
+ PhotoView photoView = new PhotoView(container.getContext());
+ String url = imgs.get(position);
+ Glide.with(PhotoViewActivty.this).load(url).into(photoView);
+ photoView.setOnClickListener(view -> finish());
+ // Now just add PhotoView to ViewPager and return it
+ container.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
+ return photoView;
+ }
+
+ @Override
+ public void destroyItem(ViewGroup container, int position, Object object) {
+ container.removeView((View) object);
+ }
+
+ @Override
+ public boolean isViewFromObject(View view, Object object) {
+ return view == object;
+ }
+
+ }
+}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/FieldMonitoringActivity.java b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/FieldMonitoringActivity.java
index df28543..922dfd6 100644
--- a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/FieldMonitoringActivity.java
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/FieldMonitoringActivity.java
@@ -16,6 +16,7 @@ import com.tairui.industrial_operation.base.BaseActivity;
import com.tairui.industrial_operation.databinding.ActivityFieldMonitoringBinding;
import com.tairui.industrial_operation.ui.smart_farm.entity.FileMonitoringEntity;
import com.tairui.industrial_operation.util.ArrayUtil;
+import com.tairui.industrial_operation.util.DensityUtils;
import com.tairui.industrial_operation.util.IntentUtil;
import com.tairui.industrial_operation.util.JsonUtils;
import com.tairui.industrial_operation.util.SingleClickListener;
@@ -29,11 +30,12 @@ import androidx.recyclerview.widget.RecyclerView;
public class FieldMonitoringActivity extends BaseActivity {
private List mData;
- private FileMonitoringEntity selectGroup;
- private FileMonitoringEntity.StationsEntity selectStation;
- private FileMonitoringEntity.StationsEntity.MonitorsEntity.MonitorItemEntity selectMonitor;
+ private FileMonitoringEntity selectTeam;
+ private FileMonitoringEntity.GroupsEntity selectGroup;
+ private FileMonitoringEntity.GroupsEntity.MonitorsEntity.MonitorItemEntity selectMonitor;
+ private FileMonitoringEntity.GroupsEntity.StationsEntity selectStation;
- private StationAdapter stationAdapter;
+ private GroupAdapter groupAdapter;
@Override
protected Class getBindingClass() {
@@ -50,21 +52,27 @@ public class FieldMonitoringActivity extends BaseActivity menus = new ArrayList<>();
for (FileMonitoringEntity item : mData) {
menus.add(item.getName());
}
- PopMenu.show(binding.layoutGroup, menus)
+ PopMenu.show(binding.layoutTeam, menus)
.setBackgroundColorRes(R.color.white)
.setOnMenuItemClickListener((dialog, text, index) -> {
- selectGroup = mData.get(index);
- selectStation = selectGroup.getStations().get(0);
- selectMonitor = selectStation.getMonitors().getNormal().get(0);
+ selectTeam = mData.get(index);
+ selectGroup = selectTeam.getGroups().get(0);
+ if (selectGroup.getType().equals("monitor")) {
+ selectMonitor = selectGroup.getMonitors().getNormal().get(0);
+ selectStation = null;
+ } else {
+ selectStation = selectGroup.getStations().get(0);
+ selectMonitor = null;
+ }
initView();
return false;
}).setItemDivider(new ItemDivider(15, 15, 1));
@@ -72,15 +80,30 @@ public class FieldMonitoringActivity extends BaseActivity menus = new ArrayList<>();
- for (FileMonitoringEntity.StationsEntity.MonitorsEntity.MonitorItemEntity item : selectStation.getMonitors()
+ for (FileMonitoringEntity.GroupsEntity.MonitorsEntity.MonitorItemEntity item : selectGroup.getMonitors()
.getNormal()) {
menus.add(item.getName());
}
- PopMenu.show(binding.layoutGroup, menus)
+ PopMenu.show(binding.layoutMonitor, menus)
+ .setBackgroundColorRes(R.color.white)
+ .setWidth(DensityUtils.dp2px(mContext,100))
+ .setOnMenuItemClickListener((dialog, text, index) -> {
+ selectMonitor = selectGroup.getMonitors().getNormal().get(index);
+ setText(binding.tvMonitorName, selectMonitor.getName());
+ return false;
+ }).setItemDivider(new ItemDivider(15, 15, 1));
+ }
+
+ private void shoStationMenu() {
+ List menus = new ArrayList<>();
+ for (FileMonitoringEntity.GroupsEntity.StationsEntity item : selectGroup.getStations()) {
+ menus.add(item.getName());
+ }
+ PopMenu.show(binding.layoutMonitor, menus)
.setBackgroundColorRes(R.color.white)
.setOnMenuItemClickListener((dialog, text, index) -> {
- selectMonitor = selectStation.getMonitors().getNormal().get(index);
- setText(binding.tvMonitorName, selectMonitor.getName());
+ selectStation = selectGroup.getStations().get(index);
+ setText(binding.tvMonitorName, selectStation.getName());
return false;
}).setItemDivider(new ItemDivider(15, 15, 1));
}
@@ -93,33 +116,40 @@ public class FieldMonitoringActivity extends BaseActivity {
- selectStation = selectGroup.getStations().get(i);
- selectMonitor = selectStation.getMonitors().getNormal().get(0);
- stationAdapter.setSelect(i);
- setText(binding.tvNormalCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getNormal())));
- setText(binding.tvExceptionCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getExceptions())));
- setText(binding.tvOfflineCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getOffline())));
- setText(binding.tvMonitorName, selectMonitor.getName());
+ groupAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
+ selectGroup = selectTeam.getGroups().get(i);
+ groupAdapter.setSelect(i);
+ if (selectGroup.getType().equals("monitor")) {
+ selectMonitor = selectGroup.getMonitors().getNormal().get(0);
+ selectStation = null;
+ } else {
+ selectStation = selectGroup.getStations().get(0);
+ selectMonitor = null;
+ }
+ initView();
});
binding.normalLayout.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
Bundle bundle = new Bundle();
bundle.putInt("status", 1);
- bundle.putSerializable("monitor_list", (Serializable) selectStation.getMonitors().getNormal());
+ bundle.putSerializable("monitor_list", (Serializable) selectGroup.getMonitors().getNormal());
IntentUtil.startActivity(mContext, MonitorListActivity.class, bundle);
}
});
@@ -128,7 +158,7 @@ public class FieldMonitoringActivity extends BaseActivity>() {
}.getType());
- selectGroup = mData.get(0);
- selectStation = selectGroup.getStations().get(0);
- selectMonitor = selectStation.getMonitors().getNormal().get(0);
+ selectTeam = mData.get(0);
+ selectGroup = selectTeam.getGroups().get(0);
+ selectMonitor = selectGroup.getMonitors().getNormal().get(0);
initView();
}
private void initView() {
- setText(binding.tvGroupName, selectGroup.getName());
- stationAdapter.setNewData(selectGroup.getStations());
- setText(binding.tvNormalCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getNormal())));
- setText(binding.tvExceptionCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getExceptions())));
- setText(binding.tvOfflineCount, String.valueOf(ArrayUtil.size(selectStation.getMonitors().getOffline())));
- setText(binding.tvMonitorName, selectMonitor.getName());
+ setText(binding.tvTeamName, selectTeam.getName());
+ groupAdapter.setNewData(selectTeam.getGroups());
+ if (selectMonitor != null) {
+ setText(binding.tvNormalCount, String.valueOf(ArrayUtil.size(selectGroup.getMonitors().getNormal())));
+ setText(binding.tvExceptionCount, String.valueOf(ArrayUtil.size(selectGroup.getMonitors().getExceptions())));
+ setText(binding.tvOfflineCount, String.valueOf(ArrayUtil.size(selectGroup.getMonitors().getOffline())));
+ setText(binding.tvMonitorName, selectMonitor.getName());
+ setGone(binding.layoutMonitorStatus, true);
+ setGone(binding.layoutStationInfo, false);
+ setGone(binding.imgMonitor, true);
+ } else {
+ setText(binding.tvMonitorName, selectStation.getName());
+ setGone(binding.layoutStationInfo, true);
+ setGone(binding.layoutMonitorStatus, false);
+ setGone(binding.imgMonitor, false);
+ }
}
- private class StationAdapter extends BaseQuickAdapter {
+ private class GroupAdapter extends BaseQuickAdapter {
private int selectIndex = 0;
@@ -172,12 +212,12 @@ public class FieldMonitoringActivity extends BaseActivity {
- private List mData;
+ private List mData;
private int mStatus = -1; // 1->正常设备 2->异常设备 3->离线设备
private MonitorAdapter monitorAdapter;
@@ -38,7 +38,7 @@ public class MonitorListActivity extends BaseActivity)
+ mData = (List)
getIntent().getSerializableExtra("monitor_list");
}
@@ -75,7 +75,7 @@ public class MonitorListActivity extends BaseActivity {
+ extends BaseQuickAdapter {
public MonitorAdapter() {
super(R.layout.item_monitor);
@@ -83,7 +83,7 @@ public class MonitorListActivity extends BaseActivity {
+
+ @Override
+ protected Class getBindingClass() {
+ return ActivityPestsMonitoringBinding.class;
+ }
+
+ @Override
+ protected void initStatusBar() {
+ ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar()
+ .statusBarDarkFont(true).init();
+ }
+
+ @Override
+ protected void onBindListener() {
+ binding.btnBack.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ onBackPressed();
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/SmartFarmActivity.java b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/SmartFarmActivity.java
index af3b70e..2cfa347 100644
--- a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/SmartFarmActivity.java
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/SmartFarmActivity.java
@@ -35,6 +35,18 @@ public class SmartFarmActivity extends BaseActivity {
IntentUtil.startActivity(mContext, FieldMonitoringActivity.class);
}
});
+ binding.layoutWaterMonitoring.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ IntentUtil.startActivity(mContext, WaterMonitoringActivity.class);
+ }
+ });
+ binding.layoutPestsMonitoring.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ IntentUtil.startActivity(mContext, PestsMonitoringActivity.class);
+ }
+ });
}
}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/WaterMonitoringActivity.java b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/WaterMonitoringActivity.java
new file mode 100644
index 0000000..de57d35
--- /dev/null
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/WaterMonitoringActivity.java
@@ -0,0 +1,33 @@
+package com.tairui.industrial_operation.ui.smart_farm;
+
+import com.gyf.immersionbar.ImmersionBar;
+import com.tairui.industrial_operation.base.BaseActivity;
+import com.tairui.industrial_operation.databinding.ActivityWaterMonitoringBinding;
+import com.tairui.industrial_operation.util.SingleClickListener;
+
+import android.view.View;
+
+public class WaterMonitoringActivity extends BaseActivity {
+
+ @Override
+ protected Class getBindingClass() {
+ return ActivityWaterMonitoringBinding.class;
+ }
+
+ @Override
+ protected void initStatusBar() {
+ ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar()
+ .statusBarDarkFont(true).init();
+ }
+
+ @Override
+ protected void onBindListener() {
+ binding.btnBack.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ onBackPressed();
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/entity/FileMonitoringEntity.java b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/entity/FileMonitoringEntity.java
index a15e0f5..6d02461 100644
--- a/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/entity/FileMonitoringEntity.java
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/smart_farm/entity/FileMonitoringEntity.java
@@ -9,8 +9,10 @@ public class FileMonitoringEntity {
@SerializedName("name")
private String name;
+ @SerializedName("groups")
+ private List groups;
@SerializedName("stations")
- private List stations;
+ private List stations;
public String getName() {
return name;
@@ -20,19 +22,31 @@ public class FileMonitoringEntity {
this.name = name;
}
- public List getStations() {
+ public List getGroups() {
+ return groups;
+ }
+
+ public void setGroups(List groups) {
+ this.groups = groups;
+ }
+
+ public List getStations() {
return stations;
}
- public void setStations(List stations) {
+ public void setStations(List stations) {
this.stations = stations;
}
- public static class StationsEntity {
+ public static class GroupsEntity {
@SerializedName("name")
private String name;
+ @SerializedName("type")
+ private String type;
@SerializedName("monitors")
private MonitorsEntity monitors;
+ @SerializedName("stations")
+ private List stations;
public String getName() {
return name;
@@ -42,6 +56,14 @@ public class FileMonitoringEntity {
this.name = name;
}
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
public MonitorsEntity getMonitors() {
return monitors;
}
@@ -50,6 +72,14 @@ public class FileMonitoringEntity {
this.monitors = monitors;
}
+ public List getStations() {
+ return stations;
+ }
+
+ public void setStations(List stations) {
+ this.stations = stations;
+ }
+
public static class MonitorsEntity {
@SerializedName("normal")
private List normal;
@@ -100,6 +130,288 @@ public class FileMonitoringEntity {
return status;
}
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+ }
+
+ }
+
+ public static class StationsEntity {
+ @SerializedName("name")
+ private String name;
+ @SerializedName("status")
+ private Integer status;
+ @SerializedName("crops_name")
+ private String cropsName;
+ @SerializedName("grow_step")
+ private String growStep;
+ @SerializedName("plant_type")
+ private String plantType;
+ @SerializedName("petiole_type")
+ private String petioleType;
+ @SerializedName("growth_pattern")
+ private String growthPattern;
+ @SerializedName("growth_pattern_status")
+ private Integer growthPatternStatus;
+ @SerializedName("organic_matter")
+ private String organicMatter;
+ @SerializedName("organic_matter_type")
+ private Integer organicMatterType;
+ @SerializedName("sensors")
+ private List sensors;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getCropsName() {
+ return cropsName;
+ }
+
+ public void setCropsName(String cropsName) {
+ this.cropsName = cropsName;
+ }
+
+ public String getGrowStep() {
+ return growStep;
+ }
+
+ public void setGrowStep(String growStep) {
+ this.growStep = growStep;
+ }
+
+ public String getPlantType() {
+ return plantType;
+ }
+
+ public void setPlantType(String plantType) {
+ this.plantType = plantType;
+ }
+
+ public String getPetioleType() {
+ return petioleType;
+ }
+
+ public void setPetioleType(String petioleType) {
+ this.petioleType = petioleType;
+ }
+
+ public String getGrowthPattern() {
+ return growthPattern;
+ }
+
+ public void setGrowthPattern(String growthPattern) {
+ this.growthPattern = growthPattern;
+ }
+
+ public Integer getGrowthPatternStatus() {
+ return growthPatternStatus;
+ }
+
+ public void setGrowthPatternStatus(Integer growthPatternStatus) {
+ this.growthPatternStatus = growthPatternStatus;
+ }
+
+ public String getOrganicMatter() {
+ return organicMatter;
+ }
+
+ public void setOrganicMatter(String organicMatter) {
+ this.organicMatter = organicMatter;
+ }
+
+ public Integer getOrganicMatterType() {
+ return organicMatterType;
+ }
+
+ public void setOrganicMatterType(Integer organicMatterType) {
+ this.organicMatterType = organicMatterType;
+ }
+
+ public List getSensors() {
+ return sensors;
+ }
+
+ public void setSensors(List sensors) {
+ this.sensors = sensors;
+ }
+
+ public static class SensorsEntity {
+ @SerializedName("type")
+ private String type;
+ @SerializedName("value")
+ private String value;
+ @SerializedName("status")
+ private Integer status;
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+ }
+ }
+ }
+
+ public static class StationsEntityX {
+ @SerializedName("name")
+ private String name;
+ @SerializedName("type")
+ private String type;
+ @SerializedName("monitors")
+ private MonitorsEntityX monitors;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public MonitorsEntityX getMonitors() {
+ return monitors;
+ }
+
+ public void setMonitors(MonitorsEntityX monitors) {
+ this.monitors = monitors;
+ }
+
+ public static class MonitorsEntityX {
+ @SerializedName("normal")
+ private List normal;
+ @SerializedName("exceptions")
+ private List exceptions;
+ @SerializedName("offline")
+ private List offline;
+
+ public List getNormal() {
+ return normal;
+ }
+
+ public void setNormal(List normal) {
+ this.normal = normal;
+ }
+
+ public List getExceptions() {
+ return exceptions;
+ }
+
+ public void setExceptions(List exceptions) {
+ this.exceptions = exceptions;
+ }
+
+ public List getOffline() {
+ return offline;
+ }
+
+ public void setOffline(List offline) {
+ this.offline = offline;
+ }
+
+ public static class NormalEntityX {
+ @SerializedName("name")
+ private String name;
+ @SerializedName("status")
+ private Integer status;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+ }
+
+ public static class ExceptionsEntityX {
+ @SerializedName("name")
+ private String name;
+ @SerializedName("status")
+ private Integer status;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+ }
+
+ public static class OfflineEntityX {
+ @SerializedName("name")
+ private String name;
+ @SerializedName("status")
+ private Integer status;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
public void setStatus(Integer status) {
this.status = status;
}
diff --git a/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java b/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java
index 9dce0d4..a89ad74 100644
--- a/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java
+++ b/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java
@@ -1,8 +1,12 @@
package com.tairui.industrial_operation.util;
+import java.util.ArrayList;
+
+import com.tairui.industrial_operation.ui.photoview.PhotoViewActivty;
import com.tairui.industrial_operation.widget.loading.LoadingDialog;
import android.content.Context;
+import android.os.Bundle;
public class AppUtil {
@@ -21,4 +25,11 @@ public class AppUtil {
return null;
}
}
+
+ public static void startPhotoView(Context context, ArrayList imgs){
+ Bundle bundle = new Bundle();
+ bundle.putInt("index", 0);
+ bundle.putStringArrayList("imgs", imgs);
+ IntentUtil.startActivity(context, PhotoViewActivty.class, bundle);
+ }
}
diff --git a/app/src/main/java/com/tairui/industrial_operation/widget/CustomViewPager.java b/app/src/main/java/com/tairui/industrial_operation/widget/CustomViewPager.java
new file mode 100644
index 0000000..2768c62
--- /dev/null
+++ b/app/src/main/java/com/tairui/industrial_operation/widget/CustomViewPager.java
@@ -0,0 +1,58 @@
+package com.tairui.industrial_operation.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import androidx.viewpager.widget.ViewPager;
+
+/**
+ * @author kpinfo
+ */
+public class CustomViewPager extends ViewPager {
+
+ private boolean isCanScroll;
+
+ public CustomViewPager(Context context) {
+ super(context);
+ }
+
+ public CustomViewPager(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ if (isCanScroll) {
+ //允许滑动则应该调用父类的方法
+ try {
+ return super.onTouchEvent(ev);
+ } catch (Exception e) {
+ return false;
+ }
+ } else {
+ //禁止滑动则不做任何操作,直接返回true即可
+ return true;
+ }
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ try {
+ if (isCanScroll) {
+ return super.onInterceptTouchEvent(ev);
+ }
+ } catch (Exception e) {
+ return false;
+ }
+ return false;
+ }
+
+ /**
+ * 设置是否允许滑动,true是可以滑动,false是禁止滑动
+ *
+ * @param isCanScroll 是否可以滚动
+ */
+ public void setIsCanScroll(boolean isCanScroll) {
+ this.isCanScroll = isCanScroll;
+ }
+}
diff --git a/app/src/main/res/layout/activity_field_monitoring.xml b/app/src/main/res/layout/activity_field_monitoring.xml
index e71484b..4930a46 100644
--- a/app/src/main/res/layout/activity_field_monitoring.xml
+++ b/app/src/main/res/layout/activity_field_monitoring.xml
@@ -46,200 +46,493 @@
-
+
+ android:orientation="vertical">
+ android:layout_margin="16dp"
+ android:background="@drawable/bg_container_white_raduis_10"
+ android:orientation="vertical"
+ android:padding="12dp">
-
+ android:gravity="center"
+ android:orientation="horizontal">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+ android:layout_marginLeft="16dp"
+ android:layout_marginRight="16dp"
+ android:layout_marginBottom="16dp"
+ android:background="@drawable/bg_container_white_raduis_10"
+ android:padding="12dp">
-
-
-
-
-
-
-
-
-
-
+ tools:text="监控-001" />
+ android:layout_width="16dp"
+ android:layout_height="16dp"
+ android:layout_marginLeft="8dp"
+ android:src="@mipmap/ic_arrow_down_black" />
-
+
-
-
-
-
-
-
+
+
+ android:layout_marginLeft="4dp"
+ android:src="@mipmap/ic_station_status_normal" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_marginTop="12dp"
+ android:text="作物生长状态"
+ android:textColor="@color/color_txt_black"
+ android:textSize="18sp"
+ android:textStyle="bold" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:textSize="14sp" />
-
+
+
+
+
+
+
+
+
@@ -247,77 +540,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_pests_monitoring.xml b/app/src/main/res/layout/activity_pests_monitoring.xml
new file mode 100644
index 0000000..24780cd
--- /dev/null
+++ b/app/src/main/res/layout/activity_pests_monitoring.xml
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_photo_view.xml b/app/src/main/res/layout/activity_photo_view.xml
new file mode 100644
index 0000000..5d48e9f
--- /dev/null
+++ b/app/src/main/res/layout/activity_photo_view.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_smart_farm.xml b/app/src/main/res/layout/activity_smart_farm.xml
index aa0e9ac..40bfcfa 100644
--- a/app/src/main/res/layout/activity_smart_farm.xml
+++ b/app/src/main/res/layout/activity_smart_farm.xml
@@ -309,6 +309,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_back_white.png b/app/src/main/res/mipmap-xxhdpi/ic_back_white.png
new file mode 100644
index 0000000..8282b0c
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_back_white.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_monitoring_water.png b/app/src/main/res/mipmap-xxhdpi/ic_monitoring_water.png
new file mode 100644
index 0000000..a7ee0d0
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_monitoring_water.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_monitor_chart.png b/app/src/main/res/mipmap-xxhdpi/pic_monitor_chart.png
new file mode 100644
index 0000000..2405803
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_monitor_chart.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_pests_1.png b/app/src/main/res/mipmap-xxhdpi/pic_pests_1.png
new file mode 100644
index 0000000..fcad3ab
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_pests_1.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_pests_2.png b/app/src/main/res/mipmap-xxhdpi/pic_pests_2.png
new file mode 100644
index 0000000..ca5f229
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_pests_2.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_pests_3.png b/app/src/main/res/mipmap-xxhdpi/pic_pests_3.png
new file mode 100644
index 0000000..778c4f6
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_pests_3.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_sensor_1.png b/app/src/main/res/mipmap-xxhdpi/pic_sensor_1.png
new file mode 100644
index 0000000..a547335
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_sensor_1.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_sensor_2.png b/app/src/main/res/mipmap-xxhdpi/pic_sensor_2.png
new file mode 100644
index 0000000..b7a1480
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_sensor_2.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_sensor_3.png b/app/src/main/res/mipmap-xxhdpi/pic_sensor_3.png
new file mode 100644
index 0000000..ed850ff
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_sensor_3.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_sensor_4.png b/app/src/main/res/mipmap-xxhdpi/pic_sensor_4.png
new file mode 100644
index 0000000..aea4ecc
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_sensor_4.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_water_monitoring.png b/app/src/main/res/mipmap-xxhdpi/pic_water_monitoring.png
new file mode 100644
index 0000000..254e074
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_water_monitoring.png differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 81e6c50..7b8bfb8 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -9,6 +9,7 @@
#35353F
#666666
#444444
+ #25BF82
#F5F5F5
#FF4348
#999999