Ver código fonte

实时监控样式改动,预警信息新增筛选,文件管理和预警信息图片点击查看大图可放大。

yangyang 1 ano atrás
pai
commit
762d509c65
80 arquivos alterados com 1161 adições e 931 exclusões
  1. 11 6
      app/build.gradle
  2. BIN
      app/libs/arm64-v8a/libIvsDrawer.so
  3. BIN
      app/libs/arm64-v8a/libStreamConvertor.so
  4. BIN
      app/libs/arm64-v8a/libToUProxy.so
  5. BIN
      app/libs/arm64-v8a/libavnetsdk.so
  6. BIN
      app/libs/arm64-v8a/libconfigsdk.so
  7. BIN
      app/libs/arm64-v8a/libcrypto.so
  8. BIN
      app/libs/arm64-v8a/libgnustl_shared.so
  9. BIN
      app/libs/arm64-v8a/libhwdec.so
  10. BIN
      app/libs/arm64-v8a/libjninetsdk.so
  11. BIN
      app/libs/arm64-v8a/libjniplay.so
  12. BIN
      app/libs/arm64-v8a/libjnismartconfig.so
  13. BIN
      app/libs/arm64-v8a/libnetsdk.so
  14. BIN
      app/libs/arm64-v8a/libplay.so
  15. BIN
      app/libs/arm64-v8a/libssl.so
  16. BIN
      app/libs/armeabi-v7a/libAudioPairSDK.so
  17. BIN
      app/libs/armeabi-v7a/libStreamConvertor.so
  18. BIN
      app/libs/armeabi-v7a/libToUProxy.so
  19. BIN
      app/libs/armeabi-v7a/libavnetsdk.so
  20. BIN
      app/libs/armeabi-v7a/libconfigsdk.so
  21. BIN
      app/libs/armeabi-v7a/libgnustl_shared.so
  22. BIN
      app/libs/armeabi-v7a/libhwdec.so
  23. BIN
      app/libs/armeabi-v7a/libjninetsdk.so
  24. BIN
      app/libs/armeabi-v7a/libjniplay.so
  25. BIN
      app/libs/armeabi-v7a/libjnismartconfig.so
  26. BIN
      app/libs/armeabi-v7a/libnetsdk.so
  27. BIN
      app/libs/armeabi-v7a/libplay.so
  28. 31 2
      app/proguard-rules.pro
  29. 1 3
      app/src/main/AndroidManifest.xml
  30. 3 3
      app/src/main/java/com/goldze/mvvmhabit/app/AppViewModelFactory.java
  31. 10 0
      app/src/main/java/com/goldze/mvvmhabit/data/source/model/MobileDatumResponseBean.java
  32. 0 6
      app/src/main/java/com/goldze/mvvmhabit/data/source/model/RefreshLookBackVideo.java
  33. 42 0
      app/src/main/java/com/goldze/mvvmhabit/data/source/model/SelectTypeBean.java
  34. 35 1
      app/src/main/java/com/goldze/mvvmhabit/request/AlarmRequestBean.java
  35. 0 13
      app/src/main/java/com/goldze/mvvmhabit/ui/dialog/UserPopupWindow.java
  36. 312 0
      app/src/main/java/com/goldze/mvvmhabit/ui/dialog/WarningSelectDialogFragment.java
  37. 7 0
      app/src/main/java/com/goldze/mvvmhabit/ui/main/activity/MainActivity.java
  38. 8 0
      app/src/main/java/com/goldze/mvvmhabit/ui/main/adapter/InformationAdapter.java
  39. 83 0
      app/src/main/java/com/goldze/mvvmhabit/ui/main/adapter/SelectCameraAdapter.java
  40. 83 0
      app/src/main/java/com/goldze/mvvmhabit/ui/main/adapter/SelectTypeAdapter.java
  41. 9 15
      app/src/main/java/com/goldze/mvvmhabit/ui/main/fragment/MonitoringFragment.java
  42. 96 115
      app/src/main/java/com/goldze/mvvmhabit/ui/main/fragment/WarningFragment.java
  43. 27 2
      app/src/main/java/com/goldze/mvvmhabit/ui/main/fragment/WarningViewModel.java
  44. 1 1
      app/src/main/java/com/goldze/mvvmhabit/ui/monitor/DownLoadRecordFileActivity.java
  45. 30 18
      app/src/main/java/com/goldze/mvvmhabit/ui/monitor/FileBrowserActivity.java
  46. 8 6
      app/src/main/java/com/goldze/mvvmhabit/ui/monitor/LivePreviewActivity.java
  47. 2 113
      app/src/main/java/com/goldze/mvvmhabit/ui/monitor/LookBackVideoViewModel.java
  48. 0 246
      app/src/main/java/com/goldze/mvvmhabit/ui/monitor/LookBackVideoActivity.java
  49. 0 70
      app/src/main/java/com/goldze/mvvmhabit/ui/monitor/LookBackVideoAdapter.java
  50. 28 39
      app/src/main/java/com/goldze/mvvmhabit/ui/monitor/PlayBackActivity.java
  51. 0 125
      app/src/main/java/com/goldze/mvvmhabit/ui/monitor/VideoActivity.java
  52. 5 2
      app/src/main/java/com/goldze/mvvmhabit/utils/picker/TimeSelectionPicker.java
  53. BIN
      app/src/main/res/drawable-xxhdpi/monitoring_icon.png
  54. BIN
      app/src/main/res/drawable-xxhdpi/right_arrow.png
  55. BIN
      app/src/main/res/drawable-xxhdpi/screen.png
  56. 16 0
      app/src/main/res/drawable/selector_camera_bg.xml
  57. 11 0
      app/src/main/res/drawable/selector_camera_text.xml
  58. 7 0
      app/src/main/res/drawable/shape_ash_18.xml
  59. 7 0
      app/src/main/res/drawable/shape_blue_18.xml
  60. 7 0
      app/src/main/res/drawable/shape_light_blue_3.xml
  61. 7 0
      app/src/main/res/drawable/shape_withe_5.xml
  62. 6 6
      app/src/main/res/layout/activity_down_load_record_file.xml
  63. 1 1
      app/src/main/res/layout/activity_file_browser.xml
  64. 1 1
      app/src/main/res/layout/activity_information_up.xml
  65. 3 3
      app/src/main/res/layout/activity_live_preview.xml
  66. 2 2
      app/src/main/res/layout/activity_look_back_video.xml
  67. 2 2
      app/src/main/res/layout/activity_looking_back.xml
  68. 6 2
      app/src/main/res/layout/fragment_monitoring.xml
  69. 8 97
      app/src/main/res/layout/fragment_warning.xml
  70. 2 3
      app/src/main/res/layout/item_information.xml
  71. 23 21
      app/src/main/res/layout/item_monitoring.xml
  72. 21 0
      app/src/main/res/layout/item_select_camera.xml
  73. 20 0
      app/src/main/res/layout/item_select_type.xml
  74. 154 0
      app/src/main/res/layout/layout_select_warning.xml
  75. 3 3
      app/src/main/res/layout/widget_title.xml
  76. 1 0
      app/src/main/res/values/colors.xml
  77. 13 0
      app/src/main/res/values/strings.xml
  78. 7 0
      app/src/main/res/values/styles.xml
  79. 1 1
      mvvmhabit/build.gradle
  80. 0 3
      mvvmhabit/src/main/java/me/goldze/mvvmhabit/base/BaseDialogFragment.java

+ 11 - 6
app/build.gradle

@@ -14,7 +14,9 @@ android {
         }
         packagingOptions{
             doNotStrip "/armeabi-v7a/.so"
-            doNotStrip "/arm64-v8a/.so" }
+            doNotStrip "/arm64-v8a/.so"
+            doNotStrip "/armeabi/.so"
+        }
     }
     buildTypes {
         release {
@@ -55,11 +57,11 @@ android {
             force "androidx.fragment:fragment:1.3.1"
         }
     }
-    sourceSets {
-        main {
-            jniLibs.srcDirs=['libs']
-        }
-    }
+//    sourceSets {
+//        main {
+//            jniLibs.srcDirs=['libs']
+//        }
+//    }
 
     signingConfigs {
         debug {
@@ -104,5 +106,8 @@ dependencies {
     implementation 'com.google.android.exoplayer:exoplayer-ui:2.10.5'
     implementation 'com.contrarywind:Android-PickerView:3.2.5'
     implementation 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.2.5'
+    implementation 'com.google.android.flexbox:flexbox:3.0.0'
+    implementation 'com.jakewharton:butterknife:10.2.3'
+    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
     implementation files('libs\\IPlaySDK.jar')
 }

BIN
app/libs/arm64-v8a/libIvsDrawer.so


BIN
app/libs/arm64-v8a/libStreamConvertor.so


BIN
app/libs/arm64-v8a/libToUProxy.so


BIN
app/libs/arm64-v8a/libavnetsdk.so


BIN
app/libs/arm64-v8a/libconfigsdk.so


BIN
app/libs/arm64-v8a/libcrypto.so


BIN
app/libs/arm64-v8a/libgnustl_shared.so


BIN
app/libs/arm64-v8a/libhwdec.so


BIN
app/libs/arm64-v8a/libjninetsdk.so


BIN
app/libs/arm64-v8a/libjniplay.so


BIN
app/libs/arm64-v8a/libjnismartconfig.so


BIN
app/libs/arm64-v8a/libnetsdk.so


BIN
app/libs/arm64-v8a/libplay.so


BIN
app/libs/arm64-v8a/libssl.so


BIN
app/libs/armeabi-v7a/libAudioPairSDK.so


BIN
app/libs/armeabi-v7a/libStreamConvertor.so


BIN
app/libs/armeabi-v7a/libToUProxy.so


BIN
app/libs/armeabi-v7a/libavnetsdk.so


BIN
app/libs/armeabi-v7a/libconfigsdk.so


BIN
app/libs/armeabi-v7a/libgnustl_shared.so


BIN
app/libs/armeabi-v7a/libhwdec.so


BIN
app/libs/armeabi-v7a/libjninetsdk.so


BIN
app/libs/armeabi-v7a/libjniplay.so


BIN
app/libs/armeabi-v7a/libjnismartconfig.so


BIN
app/libs/armeabi-v7a/libnetsdk.so


BIN
app/libs/armeabi-v7a/libplay.so


+ 31 - 2
app/proguard-rules.pro

@@ -274,7 +274,6 @@
     void *(**On*Event);
 }
 #----------------------------------------------------------------------------
-
 #---------------------------------webview------------------------------------
 -keepclassmembers class fqcn.of.javascript.interface.for.Webview {
    public *;
@@ -287,4 +286,34 @@
     public void *(android.webkit.WebView, jav.lang.String);
 }
 #----------------------------------------------------------------------------
-#----------------------------------------------------------------------------
+#----------------------------------------------------------------------------
+
+#百度
+-keep class com.baidu.ocr.sdk.**{*;}
+-dontwarn com.baidu.ocr.**
+-dontwarn com.baidu.idl.**
+-keep class com.baidu.idl.** { *; }
+-dontwarn com.baidu.vis.**
+-keep class com.baidu.vis.** { *; }
+-dontwarn com.baidu.liantian.**
+-keep class com.baidu.liantian.** { *; }
+-dontwarn com.baidu.protect.**
+-keep class com.baidu.protect.** { *; }
+-dontwarn com.baidu.ocr.**
+-keep class com.baidu.ocr.** { *; }
+
+# 混淆时保留TengineKit相关类和成员
+-keep class com.tengine.** { *; }
+
+#大华没有提供混淆文档,猜测是这么
+-dontwarn com.company.PlaySDK.**
+-keep class com.company.PlaySDK.** { *; }
+-dontwarn com.company.NetSDK.**
+-keep class com.company.NetSDK.** { *; }
+-dontwarn com.company.CodecSDK.**
+-keep class com.company.CodecSDK.** { *; }
+-dontwarn com.example.demo_sdk.entity.**
+-keep class com.example.demo_sdk.entity.** { *; }
+-dontwarn com.mm.android.dhproxy.client.**
+-keep class com.mm.android.dhproxy.client.** { *; }
+

+ 1 - 3
app/src/main/AndroidManifest.xml

@@ -13,12 +13,10 @@
         android:supportsRtl="true"
         android:theme="@style/AppNoTitle"
         tools:replace="android:theme,android:allowBackup,android:icon">
-        <activity android:name=".ui.monitor.FileBrowserActivity"></activity>
+        <activity android:name=".ui.monitor.FileBrowserActivity"/>
         <activity android:name=".ui.monitor.DownLoadRecordFileActivity" />
         <activity android:name=".ui.monitor.PlayBackActivity" />
         <activity android:name=".ui.monitor.LivePreviewActivity" />
-        <activity android:name=".ui.monitor.VideoActivity" />
-        <activity android:name=".ui.monitor.LookBackVideoActivity" />
         <activity android:name=".ui.order.PdfPreviewActivity" />
         <activity android:name=".ui.information.InformationUpActivity" />
         <activity android:name=".ui.login.ChangePasswordActivity" />

+ 3 - 3
app/src/main/java/com/goldze/mvvmhabit/app/AppViewModelFactory.java

@@ -13,7 +13,7 @@ import com.goldze.mvvmhabit.ui.main.fragment.MediationViewModel;
 import com.goldze.mvvmhabit.ui.main.fragment.MonitoringViewModel;
 import com.goldze.mvvmhabit.ui.main.fragment.WarningViewModel;
 import com.goldze.mvvmhabit.ui.monitor.DownLoadRecordFileViewModel;
-import com.goldze.mvvmhabit.ui.monitor.LookBackVideoViewModel;
+import com.goldze.mvvmhabit.ui.monitor.LivePreviewViewModel;
 import com.goldze.mvvmhabit.ui.monitor.PlayBackViewModel;
 import com.goldze.mvvmhabit.ui.network.NetWorkViewModel;
 import com.goldze.mvvmhabit.ui.order.AddOrderViewModel;
@@ -82,8 +82,8 @@ public class AppViewModelFactory extends ViewModelProvider.NewInstanceFactory {
             return (T) new WarningViewModel(mApplication, mRepository);
         }else if (modelClass.isAssignableFrom(MonitoringViewModel.class)){
             return (T) new MonitoringViewModel(mApplication, mRepository);
-        }else if (modelClass.isAssignableFrom(LookBackVideoViewModel.class)){
-            return (T) new LookBackVideoViewModel(mApplication, mRepository);
+        }else if (modelClass.isAssignableFrom(LivePreviewViewModel.class)){
+            return (T) new LivePreviewViewModel(mApplication, mRepository);
         }else if (modelClass.isAssignableFrom(PlayBackViewModel.class)){
             return (T) new PlayBackViewModel(mApplication, mRepository);
         }else if (modelClass.isAssignableFrom(DownLoadRecordFileViewModel.class)){

+ 10 - 0
app/src/main/java/com/goldze/mvvmhabit/data/source/model/MobileDatumResponseBean.java

@@ -8,6 +8,16 @@ public class MobileDatumResponseBean implements Serializable {
 
     private String address;
     private Integer channel;
+    private boolean isSelect;
+
+
+    public boolean isSelect() {
+        return isSelect;
+    }
+
+    public void setSelect(boolean select) {
+        isSelect = select;
+    }
 
     public String getAddress() {
         return address;

+ 0 - 6
app/src/main/java/com/goldze/mvvmhabit/data/source/model/RefreshLookBackVideo.java

@@ -1,6 +0,0 @@
-package com.goldze.mvvmhabit.data.source.model;
-
-import java.io.Serializable;
-
-public class RefreshLookBackVideo implements Serializable {
-}

+ 42 - 0
app/src/main/java/com/goldze/mvvmhabit/data/source/model/SelectTypeBean.java

@@ -0,0 +1,42 @@
+package com.goldze.mvvmhabit.data.source.model;
+
+import java.io.Serializable;
+
+public class SelectTypeBean implements Serializable {
+
+    private String name;
+
+    private boolean isSelect;
+
+    private String type;
+
+    public SelectTypeBean(String name, boolean isSelect, String type) {
+        this.name = name;
+        this.isSelect = isSelect;
+        this.type = type;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public boolean isSelect() {
+        return isSelect;
+    }
+
+    public void setSelect(boolean select) {
+        isSelect = select;
+    }
+}

+ 35 - 1
app/src/main/java/com/goldze/mvvmhabit/request/AlarmRequestBean.java

@@ -1,6 +1,7 @@
 package com.goldze.mvvmhabit.request;
 
 import java.io.Serializable;
+import java.util.List;
 
 public class AlarmRequestBean implements Serializable {
 
@@ -8,15 +9,48 @@ public class AlarmRequestBean implements Serializable {
 
     private int index;
 
+    private String startTime;
+
+    private String endTime;
+
+    private List<Integer>channelId;
+
     private String size;
 
 
-    public AlarmRequestBean(String alarmType, int index, String size) {
+    public AlarmRequestBean(String alarmType, int index, String size, String startTime, String endTime, List<Integer> channelId) {
         this.alarmType = alarmType;
         this.index = index;
+        this.startTime = startTime;
+        this.endTime = endTime;
+        this.channelId = channelId;
         this.size = size;
     }
 
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public List<Integer> getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(List<Integer> channelId) {
+        this.channelId = channelId;
+    }
+
     public String getAlarmType() {
         return alarmType;
     }

+ 0 - 13
app/src/main/java/com/goldze/mvvmhabit/ui/dialog/UserPopupWindow.java

@@ -1,13 +0,0 @@
-package com.goldze.mvvmhabit.ui.dialog;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.PopupWindow;
-
-public class UserPopupWindow extends PopupWindow {
-
-
-    public UserPopupWindow(Context context,View parent) {
-        super(context);
-    }
-}

+ 312 - 0
app/src/main/java/com/goldze/mvvmhabit/ui/dialog/WarningSelectDialogFragment.java

@@ -0,0 +1,312 @@
+package com.goldze.mvvmhabit.ui.dialog;
+
+import android.app.Dialog;
+import android.content.res.Configuration;
+import android.os.Build;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.goldze.mvvmhabit.R;
+import com.goldze.mvvmhabit.data.source.model.MobileDatumResponseBean;
+import com.goldze.mvvmhabit.data.source.model.SelectTypeBean;
+import com.goldze.mvvmhabit.ui.main.adapter.SelectCameraAdapter;
+import com.goldze.mvvmhabit.ui.main.adapter.SelectTypeAdapter;
+import com.goldze.mvvmhabit.utils.DateUtils;
+import com.goldze.mvvmhabit.utils.picker.PickerListener;
+import com.goldze.mvvmhabit.utils.picker.TimeSelectionPicker;
+import com.google.android.flexbox.FlexDirection;
+import com.google.android.flexbox.FlexWrap;
+import com.google.android.flexbox.FlexboxLayoutManager;
+import com.google.android.flexbox.JustifyContent;
+import com.luck.picture.lib.utils.DensityUtil;
+import com.luck.picture.lib.utils.FullyGridLayoutManager;
+
+import java.util.Date;
+import java.util.List;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.SimpleItemAnimator;
+import butterknife.OnClick;
+import me.goldze.mvvmhabit.base.BaseDialogFragment;
+import me.goldze.mvvmhabit.utils.ToastUtils;
+
+@RequiresApi(api = Build.VERSION_CODES.M)
+public class WarningSelectDialogFragment extends BaseDialogFragment implements PickerListener {
+
+    private List<MobileDatumResponseBean> mList;
+    private SelectCameraAdapter adapter;
+    private SelectTypeAdapter typeAdapter;
+    private List<SelectTypeBean> typeBeanList;
+    private TextView tvStartTime;
+    private TextView tvEndTime;
+    private String startTime;
+    private String endTime;
+    private RecyclerView rvType;
+    private RecyclerView rvCamera;
+    private LinearLayout llTime;
+    private int timeType = STARTDATE;
+    private final static int STARTDATE = 0;
+    private final static int ENDDATE = 1;
+    private TextView tvType;
+    private TextView tvCamera;
+
+
+
+    public WarningSelectDialogFragment(List<MobileDatumResponseBean> mList, List<SelectTypeBean> typeBeanList, String startTime, String endTime) {
+        this.mList = mList;
+        this.typeBeanList = typeBeanList;
+        this.startTime = startTime;
+        this.endTime = endTime;
+    }
+
+    @Override
+    protected int setLayoutId() {
+        return R.layout.layout_select_warning;
+    }
+
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        rvCamera = view.findViewById(R.id.rv_camera);
+        rvType = view.findViewById(R.id.rv_type);
+        tvStartTime = view.findViewById(R.id.tv_start_time);
+        tvEndTime = view.findViewById(R.id.tv_end_time);
+        llTime = view.findViewById(R.id.ll_time);
+        tvType = view.findViewById(R.id.tv_type);
+        tvCamera = view.findViewById(R.id.tv_camera);
+        initAdapter();
+        _initTimePicker();
+    }
+
+    @NonNull
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+
+        // 设置Dialog不可取消
+        setCancelable(false);
+
+        // 设置Dialog的Window特性,使其不遮挡其他Dialog
+        if (dialog.getWindow() != null) {
+            dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
+                    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
+        }
+
+        return dialog;
+    }
+
+
+    private void _initTimePicker() {
+        TimeSelectionPicker.getInstance().init(getContext());
+        TimeSelectionPicker.getInstance().addListener(this);
+
+    }
+
+    private void initAdapter() {
+        //设置布局管理器  流式布局 盒子布局
+        FlexboxLayoutManager flexboxLayoutManager = new FlexboxLayoutManager(getActivity());
+        //flexDirection 属性决定主轴的方向(即项目的排列方向)。类似 LinearLayout 的 vertical和horizontal。
+        flexboxLayoutManager.setFlexDirection(FlexDirection.ROW); //主轴为水平方向,起点在左端。
+        //flexWrap 默认情况下 Flex 跟 LinearLayout 一样,都是不带换行排列的,但是flexWrap属性可以支持换行排列。
+        flexboxLayoutManager.setFlexWrap(FlexWrap.WRAP); //按正常方向换行
+        //justifyContent 属性定义了项目在主轴上的对齐方式。
+        flexboxLayoutManager.setJustifyContent(JustifyContent.FLEX_START); //交叉轴的起点对齐。
+        //设置布局管理器
+        rvCamera.setLayoutManager(flexboxLayoutManager);
+        adapter = new SelectCameraAdapter(mList, mActivity);
+        rvCamera.setAdapter(adapter);
+        adapter.setOnItemClickListener(new SelectCameraAdapter.OnItemClickListener() {
+            @Override
+            public void onClick(int position) {
+                if (mList.get(position).isSelect()) {
+                    mList.get(position).setSelect(false);
+                } else {
+                    mList.get(position).setSelect(true);
+                }
+                adapter.notifyDataSetChanged();
+            }
+        });
+        FullyGridLayoutManager managerOther = new FullyGridLayoutManager(getContext(),
+                4, GridLayoutManager.VERTICAL, false);
+        RecyclerView.ItemAnimator itemAnimatorOther = rvType.getItemAnimator();
+        if (itemAnimatorOther != null) {
+            ((SimpleItemAnimator) itemAnimatorOther).setSupportsChangeAnimations(false);
+        }
+        rvType.setLayoutManager(managerOther);
+        typeAdapter = new SelectTypeAdapter(typeBeanList, getActivity());
+        rvType.setAdapter(typeAdapter);
+        typeAdapter.setOnItemClickListener(new SelectTypeAdapter.OnItemClickListener() {
+            @Override
+            public void onClick(int position) {
+                for (int i = 0; i < typeBeanList.size(); i++) {
+                    if (i==position){
+                        if (typeBeanList.get(position).isSelect()) {
+                            typeBeanList.get(position).setSelect(false);
+                        } else {
+                            typeBeanList.get(position).setSelect(true);
+                        }
+                    }else {
+                        typeBeanList.get(i).setSelect(false);
+                    }
+                }
+                typeAdapter.notifyDataSetChanged();
+            }
+        });
+        if (!TextUtils.isEmpty(startTime)) {
+            tvStartTime.setText(startTime);
+            tvStartTime.setBackgroundResource(R.drawable.shape_blue_18);
+            tvStartTime.setTextColor(getContext().getColor(R.color.white));
+        }
+        if (!TextUtils.isEmpty(endTime)) {
+            tvEndTime.setText(endTime);
+            tvEndTime.setBackgroundResource(R.drawable.shape_blue_18);
+            tvEndTime.setTextColor(getContext().getColor(R.color.white));
+        }
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mWindow.setGravity(Gravity.BOTTOM);
+        mWindow.setWindowAnimations(R.style.BottomAnimation);
+        mWindow.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, (int) (DensityUtil.getScreenHeight(mActivity) * 0.8));
+        mWindow.setSoftInputMode(
+                WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
+
+    }
+
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        mWindow.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+    }
+
+    @Override
+    protected boolean isImmersionBarEnabled() {
+        return true;
+    }
+
+
+    private OnSuccessListener onSuccessListener;
+
+    public void setOnSuccessListener(OnSuccessListener onSuccessListener) {
+        this.onSuccessListener = onSuccessListener;
+    }
+
+    @OnClick({R.id.tv_next, R.id.tv_cancel, R.id.tv_return, R.id.tv_camera, R.id.tv_type, R.id.tv_start_time, R.id.tv_end_time})
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_next:
+                if (getDialog() != null) {
+                    getDialog().dismiss();
+                }
+                if (!TextUtils.isEmpty(endTime)){
+                    if (TextUtils.isEmpty(startTime)){
+                        ToastUtils.showShort("请选择开始时间");
+                    }
+                }
+                if (!TextUtils.isEmpty(startTime)){
+                    if (TextUtils.isEmpty(endTime)){
+                        ToastUtils.showShort("请选择结束时间");
+                    }
+                }
+                onSuccessListener.onClick(mList, typeBeanList, startTime, endTime);
+                break;
+            case R.id.tv_cancel:
+                if (getDialog() != null) {
+                    getDialog().dismiss();
+                }
+                break;
+            case R.id.tv_return:
+                reset();
+                break;
+            case R.id.tv_camera:
+                rvCamera.setVisibility(View.VISIBLE);
+                llTime.setVisibility(View.GONE);
+                rvType.setVisibility(View.GONE);
+                tvType.setTextColor(getContext().getColor(R.color.editTextColor));
+                tvCamera.setTextColor(getContext().getColor(R.color.action_sheet_blue));
+                break;
+            case R.id.tv_type:
+                rvCamera.setVisibility(View.GONE);
+                rvType.setVisibility(View.VISIBLE);
+                llTime.setVisibility(View.VISIBLE);
+                tvType.setTextColor(getContext().getColor(R.color.action_sheet_blue));
+                tvCamera.setTextColor(getContext().getColor(R.color.editTextColor));
+                break;
+            case R.id.tv_start_time:
+                timeType = STARTDATE;
+                TimeSelectionPicker.getInstance().show();
+                break;
+            case R.id.tv_end_time:
+                timeType = ENDDATE;
+                TimeSelectionPicker.getInstance().show();
+                break;
+        }
+    }
+
+    @Override
+    public void onDestroy() {
+        TimeSelectionPicker.getInstance().removeListener(this);
+        super.onDestroy();
+    }
+
+    @RequiresApi(api = Build.VERSION_CODES.M)
+    @Override
+    public void onTimeSelect(Date date) {
+        String time = DateUtils.DateToString(date, "yyyy-MM-dd HH:mm:ss");
+        if (timeType == STARTDATE) {
+            startTime = time;
+            tvStartTime.setBackgroundResource(R.drawable.shape_blue_18);
+            tvStartTime.setTextColor(getContext().getColor(R.color.white));
+            tvStartTime.setText(time);
+        } else if (timeType == ENDDATE) {
+            tvEndTime.setBackgroundResource(R.drawable.shape_blue_18);
+            tvEndTime.setTextColor(getContext().getColor(R.color.white));
+            endTime = time;
+            tvEndTime.setText(time);
+        }
+    }
+
+
+    public interface OnSuccessListener {
+        void onClick(List<MobileDatumResponseBean> camera, List<SelectTypeBean> type, String star, String end);
+    }
+
+    private void reset() {
+        for (int i = 0; i < mList.size(); i++) {
+            mList.get(i).setSelect(false);
+        }
+        for (int i = 0; i < typeBeanList.size(); i++) {
+            typeBeanList.get(i).setSelect(false);
+        }
+        startTime = "";
+        endTime = "";
+        tvStartTime.setText("");
+        tvEndTime.setText("");
+        adapter.notifyDataSetChanged();
+        typeAdapter.notifyDataSetChanged();
+    }
+
+    public void setData(List<MobileDatumResponseBean> mList, List<SelectTypeBean> typeBeanList, String startTime, String endTime) {
+        this.mList = mList;
+        this.typeBeanList = typeBeanList;
+        this.startTime = startTime;
+        this.endTime = endTime;
+        adapter.notifyDataSetChanged();
+        typeAdapter.notifyDataSetChanged();
+    }
+
+}

+ 7 - 0
app/src/main/java/com/goldze/mvvmhabit/ui/main/activity/MainActivity.java

@@ -37,6 +37,7 @@ import com.goldze.mvvmhabit.ui.main.fragment.MediationFragment;
 import com.goldze.mvvmhabit.ui.main.fragment.MonitoringFragment;
 import com.goldze.mvvmhabit.ui.main.fragment.WarningFragment;
 import com.goldze.mvvmhabit.utils.SPUtil;
+import com.goldze.mvvmhabit.utils.common.NetSDKLib;
 import com.goldze.mvvmhabit.utils.constant.Config;
 
 import java.util.ArrayList;
@@ -261,4 +262,10 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewMode
         }
         return null;
     }
+
+    @Override
+    protected void onDestroy() {
+        NetSDKLib.getInstance().cleanup();
+        super.onDestroy();
+    }
 }

+ 8 - 0
app/src/main/java/com/goldze/mvvmhabit/ui/main/adapter/InformationAdapter.java

@@ -5,6 +5,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.bumptech.glide.Glide;
 import com.goldze.mvvmhabit.R;
 import com.goldze.mvvmhabit.data.source.model.InformationResponseBean;
 import com.goldze.mvvmhabit.databinding.ItemInformationBinding;
@@ -36,6 +37,11 @@ public class InformationAdapter extends RecyclerView.Adapter {
     public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
         MyRecycleViewHolder holder = (MyRecycleViewHolder) viewHolder;
         holder.binding.setItem(list.get(position));
+        if (list.get(position).getPreviewUrls() != null && list.get(position).getPreviewUrls().size() > 0) {
+            Glide.with(context).load(list.get(position).getPreviewUrls().get(0).getPreview()).placeholder(R.drawable.card).into(holder.binding.iv);
+        }else {
+            holder.binding.iv.setImageResource(R.drawable.card);
+        }
         holder.binding.tvStart.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -57,11 +63,13 @@ public class InformationAdapter extends RecyclerView.Adapter {
             this.binding = itemView;
         }
     }
+
     private OnItemClickListener mItemClickListener;
 
     public void setOnItemClickListener(OnItemClickListener l) {
         this.mItemClickListener = l;
     }
+
     public interface OnItemClickListener {
         void onItemClick(int position);
     }

+ 83 - 0
app/src/main/java/com/goldze/mvvmhabit/ui/main/adapter/SelectCameraAdapter.java

@@ -0,0 +1,83 @@
+package com.goldze.mvvmhabit.ui.main.adapter;
+
+import android.content.Context;
+import android.os.Build;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.goldze.mvvmhabit.R;
+import com.goldze.mvvmhabit.data.source.model.MobileDatumResponseBean;
+import com.goldze.mvvmhabit.databinding.ItemSelectCameraBinding;
+
+import java.util.List;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+public class SelectCameraAdapter extends RecyclerView.Adapter {
+
+    private List<MobileDatumResponseBean> mList;
+    private Context context;
+
+    private OnItemClickListener onItemClickListener;
+
+    public SelectCameraAdapter(List<MobileDatumResponseBean> mList, Context context) {
+        this.mList = mList;
+        this.context = context;
+    }
+
+    @NonNull
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        return new MyRecycleViewHolder(DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.item_select_camera,
+                parent, false));
+    }
+
+    @RequiresApi(api = Build.VERSION_CODES.M)
+    @Override
+    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
+        MyRecycleViewHolder holder = (MyRecycleViewHolder) viewHolder;
+        holder.binding.tvName.setText(mList.get(position).getAddress());
+        if (mList.get(position).isSelect()){
+            holder.binding.tvName.setTextColor(context.getColor(R.color.white));
+            holder.binding.tvName.setBackgroundResource(R.color.action_sheet_blue);
+        }else {
+            holder.binding.tvName.setTextColor(context.getColor(R.color.main_select_false));
+            holder.binding.tvName.setBackgroundResource(R.color.warning_select_text_bg);
+        }
+        holder.binding.tvName.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                onItemClickListener.onClick(position);
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return mList == null ? 0 : mList.size();
+    }
+
+    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
+        this.onItemClickListener = onItemClickListener;
+    }
+
+    class MyRecycleViewHolder extends RecyclerView.ViewHolder {
+        private ItemSelectCameraBinding binding;
+
+        MyRecycleViewHolder(@NonNull ItemSelectCameraBinding itemView) {
+            super(itemView.getRoot());
+            this.binding = itemView;
+        }
+    }
+
+    public interface OnItemClickListener {
+
+        void onClick(int position);
+
+    }
+
+}

+ 83 - 0
app/src/main/java/com/goldze/mvvmhabit/ui/main/adapter/SelectTypeAdapter.java

@@ -0,0 +1,83 @@
+package com.goldze.mvvmhabit.ui.main.adapter;
+
+import android.content.Context;
+import android.os.Build;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.goldze.mvvmhabit.R;
+import com.goldze.mvvmhabit.data.source.model.SelectTypeBean;
+import com.goldze.mvvmhabit.databinding.ItemSelectTypeBinding;
+
+import java.util.List;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+public class SelectTypeAdapter extends RecyclerView.Adapter {
+
+    private List<SelectTypeBean> mList;
+    private Context context;
+
+    private OnItemClickListener onItemClickListener;
+
+    public SelectTypeAdapter(List<SelectTypeBean> mList, Context context) {
+        this.mList = mList;
+        this.context = context;
+    }
+
+    @NonNull
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        return new MyRecycleViewHolder(DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.item_select_type,
+                parent, false));
+    }
+
+    @RequiresApi(api = Build.VERSION_CODES.M)
+    @Override
+    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
+        MyRecycleViewHolder holder = (MyRecycleViewHolder) viewHolder;
+        holder.binding.tvName.setText(mList.get(position).getName());
+        holder.binding.tvName.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                onItemClickListener.onClick(position);
+            }
+        });
+        if (mList.get(position).isSelect()){
+            holder.binding.tvName.setTextColor(context.getColor(R.color.white));
+            holder.binding.tvName.setBackgroundResource(R.color.action_sheet_blue);
+        }else {
+            holder.binding.tvName.setTextColor(context.getColor(R.color.main_select_false));
+            holder.binding.tvName.setBackgroundResource(R.color.warning_select_text_bg);
+        }
+    }
+
+    @Override
+    public int getItemCount() {
+        return mList == null ? 0 : mList.size();
+    }
+
+    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
+        this.onItemClickListener = onItemClickListener;
+    }
+
+    class MyRecycleViewHolder extends RecyclerView.ViewHolder {
+        private ItemSelectTypeBinding binding;
+
+        MyRecycleViewHolder(@NonNull ItemSelectTypeBinding itemView) {
+            super(itemView.getRoot());
+            this.binding = itemView;
+        }
+    }
+
+    public interface OnItemClickListener {
+
+        void onClick(int position);
+
+    }
+
+}

+ 9 - 15
app/src/main/java/com/goldze/mvvmhabit/ui/main/fragment/MonitoringFragment.java

@@ -13,9 +13,6 @@ import com.goldze.mvvmhabit.ui.main.activity.MainActivity;
 import com.goldze.mvvmhabit.ui.main.adapter.MonitoringAdapter;
 import com.goldze.mvvmhabit.ui.monitor.FileBrowserActivity;
 import com.goldze.mvvmhabit.ui.monitor.LivePreviewActivity;
-import com.luck.picture.lib.decoration.GridSpacingItemDecoration;
-import com.luck.picture.lib.utils.DensityUtil;
-import com.luck.picture.lib.utils.FullyGridLayoutManager;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener;
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
@@ -26,9 +23,6 @@ import java.util.List;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.lifecycle.ViewModelProviders;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.recyclerview.widget.SimpleItemAnimator;
 import me.goldze.mvvmhabit.base.BaseFragment;
 
 public class MonitoringFragment extends BaseFragment<FragmentMonitoringBinding, MonitoringViewModel> implements OnLoadMoreListener, OnRefreshListener, MonitoringAdapter.OnItemClickListener {
@@ -79,16 +73,16 @@ public class MonitoringFragment extends BaseFragment<FragmentMonitoringBinding,
             }
         });
 
-        FullyGridLayoutManager managerOther = new FullyGridLayoutManager(getContext(),
-                2, GridLayoutManager.VERTICAL, false);
-        RecyclerView.ItemAnimator itemAnimatorOther = binding.recycler.getItemAnimator();
-        if (itemAnimatorOther != null) {
-            ((SimpleItemAnimator) itemAnimatorOther).setSupportsChangeAnimations(false);
-        }
+//        FullyGridLayoutManager managerOther = new FullyGridLayoutManager(getContext(),
+//                2, GridLayoutManager.VERTICAL, false);
+//        RecyclerView.ItemAnimator itemAnimatorOther = binding.recycler.getItemAnimator();
+//        if (itemAnimatorOther != null) {
+//            ((SimpleItemAnimator) itemAnimatorOther).setSupportsChangeAnimations(false);
+//        }
         channelList = viewModel.getChannelList();
-        binding.recycler.setLayoutManager(managerOther);
-        binding.recycler.addItemDecoration(new GridSpacingItemDecoration(2,
-                DensityUtil.dip2px(getContext(), 10), false));
+//        binding.recycler.setLayoutManager(managerOther);
+//        binding.recycler.addItemDecoration(new GridSpacingItemDecoration(2,
+//                DensityUtil.dip2px(getContext(), 10), false));
         adapter = new MonitoringAdapter(getActivity(), channelList);
         adapter.setOnItemClickListener(this);
         binding.recycler.setAdapter(adapter);

+ 96 - 115
app/src/main/java/com/goldze/mvvmhabit/ui/main/fragment/WarningFragment.java

@@ -1,32 +1,46 @@
 package com.goldze.mvvmhabit.ui.main.fragment;
 
+import android.content.Intent;
+import android.os.Build;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.RadioGroup;
 
 import com.goldze.mvvmhabit.BR;
 import com.goldze.mvvmhabit.R;
 import com.goldze.mvvmhabit.app.AppViewModelFactory;
+import com.goldze.mvvmhabit.data.source.model.MobileDatumResponseBean;
+import com.goldze.mvvmhabit.data.source.model.SelectTypeBean;
 import com.goldze.mvvmhabit.databinding.FragmentWarningBinding;
 import com.goldze.mvvmhabit.ui.dialog.AlertDialog;
-import com.goldze.mvvmhabit.ui.dialog.ImageDialog;
+import com.goldze.mvvmhabit.ui.dialog.WarningSelectDialogFragment;
 import com.goldze.mvvmhabit.ui.main.activity.MainActivity;
 import com.goldze.mvvmhabit.ui.main.adapter.WarningAdapter;
+import com.goldze.mvvmhabit.utils.pictureselector.PictureSelectorManager;
+import com.luck.picture.lib.basic.PictureSelector;
+import com.luck.picture.lib.basic.PictureSelectorTransparentActivity;
+import com.luck.picture.lib.config.PictureConfig;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.luck.picture.lib.manager.SelectedManager;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener;
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProviders;
 import me.goldze.mvvmhabit.base.BaseFragment;
 
-public class WarningFragment extends BaseFragment<FragmentWarningBinding, WarningViewModel> implements OnRefreshListener, OnLoadMoreListener, RadioGroup.OnCheckedChangeListener {
+@RequiresApi(api = Build.VERSION_CODES.M)
+public class WarningFragment extends BaseFragment<FragmentWarningBinding, WarningViewModel> implements OnRefreshListener, OnLoadMoreListener {
 
     private WarningAdapter adapter;
 
@@ -36,7 +50,19 @@ public class WarningFragment extends BaseFragment<FragmentWarningBinding, Warnin
 
     private int flag = 1;
 
-    private String type="1";
+    private String warningType = "";
+
+    private List<MobileDatumResponseBean> mList = new ArrayList<>();
+
+    private WarningSelectDialogFragment dialogFragment;
+
+    private List<SelectTypeBean> typeBeanList = new ArrayList<>();
+
+    private List<Integer> mobileList = new ArrayList<>();
+
+    private String startDate = "";
+
+    private String endDate = "";
 
     @Override
     public int initContentView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -98,38 +124,63 @@ public class WarningFragment extends BaseFragment<FragmentWarningBinding, Warnin
                 adapter.notifyDataSetChanged();
             }
         });
-        viewModel.uc.open.observe(this, new Observer() {
-            @Override
-            public void onChanged(Object o) {
-                position = 0;
-                if (viewModel.warningList.size() == 0) {
-                    return;
-                }
-                dialog.setGone().setTitle("").setMsg("").setCancelable(false).setNegativeButton("取消", new View.OnClickListener() {
-                    @Override
-                    public void onClick(View view) {
 
+    }
+
+    @Override
+    public void onResume() {
+        PictureSelectorManager.getInstance().init(getActivity());
+        PictureSelector.create(getActivity())
+                .openPreview()
+                .setImageEngine(PictureSelectorManager.getInstance().getImageEngine());
+        super.onResume();
+    }
+
+    private void _init() {
+        mList.addAll(viewModel.getChannelList());
+        typeBeanList.addAll(viewModel.getTypeList());
+        binding.tt.setMoreImgAction(v -> {
+            MainActivity activity = (MainActivity) getActivity();
+            activity.showBottomPop();
+        });
+        binding.tt.setAddImgAction(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (null == dialogFragment || null == dialogFragment.getDialog()) {
+                    dialogFragment = new WarningSelectDialogFragment(mList, typeBeanList, startDate, endDate);
+                    FragmentManager fm = getActivity().getSupportFragmentManager();
+                    Fragment prev = fm.findFragmentByTag(getClass().getSimpleName());
+                    if (prev != null) {
+                        fm.beginTransaction().remove(prev);
                     }
-                }).setNotDestroyButton("完成", new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        if (flag == 1) {
-                            dialog.dismiss();
-                        } else if (flag == 2) {
-                            position++;
-                            setDialog();
-                        } else {
-                            position--;
-                            setDialog();
+                    dialogFragment.show(fm, getClass().getSimpleName());
+                    dialogFragment.setOnSuccessListener(new WarningSelectDialogFragment.OnSuccessListener() {
+                        @Override
+                        public void onClick(List<MobileDatumResponseBean> camera, List<SelectTypeBean> type, String star, String end) {
+                            mList = camera;
+                            typeBeanList = type;
+                            startDate = star;
+                            endDate = end;
+                            mobileList.clear();
+                            warningType = "";
+                            for (int i = 0; i < typeBeanList.size(); i++) {
+                                if (typeBeanList.get(i).isSelect()) {
+                                    warningType = typeBeanList.get(i).getType();
+                                    break;
+                                }
+                            }
+                            for (int i = 0; i < mList.size(); i++) {
+                                if (mList.get(i).isSelect()) {
+                                    mobileList.add(mList.get(i).getChannel());
+                                }
+                            }
+                            viewModel.index = 1;
+                            viewModel.alarm(warningType, startDate, endDate, mobileList);
                         }
-                    }
-                });
-                setDialog();
+                    });
+                }
             }
         });
-    }
-
-    private void _init() {
         dialog = new AlertDialog(getContext()).builder();
         adapter = new WarningAdapter(getContext(), viewModel.warningList);
         adapter.setOnItemClickListener(new WarningAdapter.OnItemClickListener() {
@@ -140,106 +191,36 @@ public class WarningFragment extends BaseFragment<FragmentWarningBinding, Warnin
 
             @Override
             public void onSeeClick(int position) {
-                ImageDialog dialog=new ImageDialog(viewModel.warningList.get(position).getImageUrl());
-                FragmentManager fm = getActivity().getSupportFragmentManager();
-                Fragment prev = fm.findFragmentByTag(getClass().getSimpleName());
-                if (prev != null) {
-                    fm.beginTransaction().remove(prev);
-                }
-                dialog.show(fm,getClass().getSimpleName());
-//                androidx.appcompat.app.AlertDialog.Builder builder = new androidx.appcompat.app.AlertDialog.Builder(getContext());
-//                ImageView iv = new ImageView(getContext());
-//                ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-//                iv.setLayoutParams(layoutParams);
-//                iv.setScaleType(ImageView.ScaleType.CENTER);
-//                iv.setAdjustViewBounds(true);
-//                builder.setView(iv);
-//                Glide.with(WarningFragment.this)
-//                        .load()
-//                        .placeholder(R.drawable.now_trust_nodata)
-//                        .into(iv);
-//                Dialog dialog = builder.create();
-//                Window window = dialog.getWindow();
-//                WindowManager.LayoutParams params = window.getAttributes();
-//                params.dimAmount = 0f;
-//                window.setAttributes(params);
-//                dialog.show();
+                String imageUrl = viewModel.warningList.get(position).getImageUrl();
+                ArrayList<LocalMedia> list = new ArrayList<>();
+                list.add(LocalMedia.generateHttpAsLocalMedia(imageUrl));
+                Intent intent = new Intent(getActivity(), PictureSelectorTransparentActivity.class);
+                SelectedManager.addSelectedPreviewResult(list);
+                intent.putExtra(PictureConfig.EXTRA_EXTERNAL_PREVIEW, true);
+                intent.putExtra(PictureConfig.EXTRA_MODE_TYPE_SOURCE, PictureConfig.MODE_TYPE_EXTERNAL_PREVIEW_SOURCE);
+                intent.putExtra(PictureConfig.EXTRA_PREVIEW_CURRENT_POSITION, 0);
+                intent.putExtra(PictureConfig.EXTRA_EXTERNAL_PREVIEW_DISPLAY_DELETE, false);
+                startActivity(intent);
             }
         });
         binding.rv.setAdapter(adapter);
         binding.refreshLayout.setOnRefreshListener(this);
         binding.refreshLayout.setOnLoadMoreListener(this);
-        binding.rgNotarization.setOnCheckedChangeListener(this);
-        viewModel.alarm(type);
+        viewModel.alarm(warningType, startDate, endDate, mobileList);
 
     }
 
-    private void setDialog() {
-        if (viewModel.warningList.size() > position + 1 && flag != 3) {
-            dialog.setButtonMsg("下一条");
-            flag = 2;
-        } else if (viewModel.warningList.size() == 1) {
-            dialog.setButtonMsg("完成");
-            flag = 1;
-        } else if (viewModel.warningList.size() == position + 1) {
-            dialog.setButtonMsg("上一条");
-            flag = 3;
-        }else if (position==0){
-            dialog.setButtonMsg("下一条");
-            flag = 2;
-        }
-        dialog.setMsg(viewModel.warningList.get(position).getMsg());
-        if (!dialog.isShowing()) {
-            dialog.show();
-        }
-    }
 
     @Override
     public void onRefresh(@NonNull RefreshLayout refreshLayout) {
-        viewModel.index=1;
-        viewModel.alarm(type);
+        viewModel.index = 1;
+        viewModel.alarm(warningType, startDate, endDate, mobileList);
     }
 
     @Override
     public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
         viewModel.index++;
-        viewModel.alarm(type);
+        viewModel.alarm(warningType, startDate, endDate, mobileList);
     }
 
-    @Override
-    public void onCheckedChanged(RadioGroup group, int checkedId) {
-        switch (checkedId) {
-            case R.id.rb_all:
-                type="";
-                viewModel.index=1;
-                viewModel.alarm(type);
-                break;
-            case R.id.rb_key_personnel:
-                type="1";
-                viewModel.warningList.clear();
-                viewModel.index=1;
-                viewModel.alarm(type);
-                break;
-            case R.id.rb_many_personnel:
-                type="3";
-                viewModel.warningList.clear();
-                viewModel.index=1;
-                viewModel.alarm(type);
-                break;
-            case R.id.rb_foreign_personnel:
-                type="2";
-                viewModel.warningList.clear();
-                viewModel.index=1;
-                viewModel.alarm(type);
-                break;
-            case R.id.rb_foreign_car:
-                type="4";
-                viewModel.warningList.clear();
-                viewModel.index=1;
-                viewModel.alarm(type);
-                break;
-            default:
-                break;
-        }
-    }
 }

+ 27 - 2
app/src/main/java/com/goldze/mvvmhabit/ui/main/fragment/WarningViewModel.java

@@ -4,10 +4,16 @@ import android.app.Application;
 
 import com.goldze.mvvmhabit.data.HttpModelRepository;
 import com.goldze.mvvmhabit.data.source.http.BaseObserver;
+import com.goldze.mvvmhabit.data.source.model.MobileDatumResponseBean;
+import com.goldze.mvvmhabit.data.source.model.SelectTypeBean;
 import com.goldze.mvvmhabit.data.source.model.WarningResponseBean;
 import com.goldze.mvvmhabit.request.AlarmReadRequestBean;
 import com.goldze.mvvmhabit.request.AlarmRequestBean;
+import com.goldze.mvvmhabit.utils.SPUtil;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
 
+import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -66,9 +72,9 @@ public class WarningViewModel extends BaseViewModel<HttpModelRepository> {
     }
 
 
-    public void alarm(String type) {
+    public void alarm(String type,String startTime,String endTime,List<Integer>mList) {
         showDialog();
-        model.alarm(new AlarmRequestBean(type, index, size)).compose(RxUtils.schedulersTransformer()).subscribe(new BaseObserver() {
+        model.alarm(new AlarmRequestBean(type, index, size,startTime,endTime,mList)).compose(RxUtils.schedulersTransformer()).subscribe(new BaseObserver() {
 
             @Override
             public void onSubscribe(Disposable d) {
@@ -129,4 +135,23 @@ public class WarningViewModel extends BaseViewModel<HttpModelRepository> {
             }
         });
     }
+
+    public List<MobileDatumResponseBean> getChannelList(){
+        Gson gson = new Gson();
+        Type listType = new TypeToken<List<MobileDatumResponseBean>>() {}.getType();
+        return gson.fromJson(getChannel(), listType);
+    }
+
+    public String getChannel(){
+        return SPUtil.newInstance().getStringData(SPUtil.camera);
+    }
+
+    public List<SelectTypeBean> getTypeList(){
+        List<SelectTypeBean>list=new ArrayList<>();
+        list.add(new SelectTypeBean("重点人员",false,"1"));
+        list.add(new SelectTypeBean("外来人员",false,"2"));
+        list.add(new SelectTypeBean("多人聚焦",false,"3"));
+        list.add(new SelectTypeBean("外来车辆",false,"4"));
+        return list;
+    }
 }

+ 1 - 1
app/src/main/java/com/goldze/mvvmhabit/ui/monitor/DownLoadRecordFileActivity.java

@@ -69,7 +69,7 @@ public class DownLoadRecordFileActivity extends BaseActivity<ActivityDownLoadRec
                     stopDownLoadRecord();
                     setDownloadStatus(false);
                     binding.downloadButton.setText(R.string.start_download);
-                    myDialog.setGone().setTitle("").setMsg("下载完成").setCancelable(false).show();
+                    myDialog.setGone().setTitle("").setMsg(getString(R.string.download_completed)).setCancelable(false).show();
                     break;
                 default:
                     break;

+ 30 - 18
app/src/main/java/com/goldze/mvvmhabit/ui/monitor/FileBrowserActivity.java

@@ -2,8 +2,8 @@ package com.goldze.mvvmhabit.ui.monitor;
 
 import android.app.Dialog;
 import android.content.DialogInterface;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
+import android.content.Intent;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -13,10 +13,8 @@ import android.view.LayoutInflater;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.Window;
 import android.view.WindowManager;
-import android.widget.ImageView;
 
 import com.company.PlaySDK.IPlaySDK;
 import com.company.PlaySDK.IPlaySDKCallBack;
@@ -25,16 +23,24 @@ import com.goldze.mvvmhabit.R;
 import com.goldze.mvvmhabit.databinding.ActivityFileBrowserBinding;
 import com.goldze.mvvmhabit.ui.monitor.adapter.FileAdapter;
 import com.goldze.mvvmhabit.utils.ToolKits;
+import com.goldze.mvvmhabit.utils.pictureselector.PictureSelectorManager;
+import com.luck.picture.lib.basic.PictureSelector;
+import com.luck.picture.lib.basic.PictureSelectorTransparentActivity;
+import com.luck.picture.lib.config.PictureConfig;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.luck.picture.lib.manager.SelectedManager;
 
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import androidx.annotation.RequiresApi;
 import androidx.appcompat.app.AlertDialog;
 import me.goldze.mvvmhabit.base.BaseActivity;
 import me.goldze.mvvmhabit.base.BaseViewModel;
 
+@RequiresApi(api = Build.VERSION_CODES.M)
 public class FileBrowserActivity extends BaseActivity<ActivityFileBrowserBinding, BaseViewModel> implements FileAdapter.OnItemClickListener {
 
 
@@ -84,10 +90,12 @@ public class FileBrowserActivity extends BaseActivity<ActivityFileBrowserBinding
     @Override
     public void initData() {
         mList.addAll(getFiles());
+        Collections.reverse(mFilesPath);
         Collections.reverse(mList);
         adapter = new FileAdapter(this, mList);
         binding.recycler.setAdapter(adapter);
         adapter.setOnItemClickListener(this);
+        PictureSelectorManager.getInstance().init(this);
     }
 
     private ArrayList<String> getFiles() {
@@ -122,20 +130,16 @@ public class FileBrowserActivity extends BaseActivity<ActivityFileBrowserBinding
     private void showFile(int position, TYPE fileType) {
         final AlertDialog.Builder builder = new AlertDialog.Builder(this);
         if (fileType == TYPE.PICTURE) {
-            Bitmap bmp = BitmapFactory.decodeFile(mFilesPath.get(position));
-            ImageView iv = new ImageView(this);
-            ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-            iv.setLayoutParams(layoutParams);
-            iv.setImageBitmap(bmp);
-            iv.setScaleType(ImageView.ScaleType.CENTER);
-            iv.setAdjustViewBounds(true);
-            builder.setView(iv);
-            Dialog dialog = builder.create();
-            Window window = dialog.getWindow();
-            WindowManager.LayoutParams params = window.getAttributes();
-            params.dimAmount = 0f;
-            window.setAttributes(params);
-            dialog.show();
+            String imageUrl = mFilesPath.get(position);
+            ArrayList<LocalMedia> list = new ArrayList<>();
+            list.add(LocalMedia.generateLocalMedia(this,imageUrl));
+            Intent intent = new Intent(this, PictureSelectorTransparentActivity.class);
+            SelectedManager.addSelectedPreviewResult(list);
+            intent.putExtra(PictureConfig.EXTRA_EXTERNAL_PREVIEW, true);
+            intent.putExtra(PictureConfig.EXTRA_MODE_TYPE_SOURCE, PictureConfig.MODE_TYPE_EXTERNAL_PREVIEW_SOURCE);
+            intent.putExtra(PictureConfig.EXTRA_PREVIEW_CURRENT_POSITION, 0);
+            intent.putExtra(PictureConfig.EXTRA_EXTERNAL_PREVIEW_DISPLAY_DELETE, false);
+            startActivity(intent);
         } else if (fileType == TYPE.VIDEO) {
             final View view = LayoutInflater.from(this).inflate(R.layout.browser_video_dialog, null);
             final SurfaceView sv = (SurfaceView) view.findViewById(R.id.browser_video);
@@ -177,6 +181,14 @@ public class FileBrowserActivity extends BaseActivity<ActivityFileBrowserBinding
 
     }
 
+    @Override
+    public void onResume() {
+        PictureSelector.create(this)
+                .openPreview()
+                .setImageEngine(PictureSelectorManager.getInstance().getImageEngine());
+        super.onResume();
+    }
+
     private void playBackEx(SurfaceView sv, final String file) {
         long userData = 0;
         if (IPlaySDK.PLAYSetFileEndCallBack(port, new IPlaySDKCallBack.fpFileEndCBFun() {

+ 8 - 6
app/src/main/java/com/goldze/mvvmhabit/ui/monitor/LivePreviewActivity.java

@@ -22,7 +22,7 @@ import androidx.lifecycle.ViewModelProviders;
 import me.goldze.mvvmhabit.base.BaseActivity;
 import me.goldze.mvvmhabit.utils.ToastUtils;
 
-public class LivePreviewActivity extends BaseActivity<ActivityLivePreviewBinding, LookBackVideoViewModel> implements SurfaceHolder.Callback {
+public class LivePreviewActivity extends BaseActivity<ActivityLivePreviewBinding, LivePreviewViewModel> implements SurfaceHolder.Callback {
 
 
     //    private String videoUrl;
@@ -60,10 +60,10 @@ public class LivePreviewActivity extends BaseActivity<ActivityLivePreviewBinding
     }
 
     @Override
-    public LookBackVideoViewModel initViewModel() {
+    public LivePreviewViewModel initViewModel() {
         //使用自定义的ViewModelFactory来创建ViewModel,如果不重写该方法,则默认会调用LoginViewModel(@NonNull Application application)构造方法
         AppViewModelFactory factory = AppViewModelFactory.getInstance(getApplication());
-        return ViewModelProviders.of(this, factory).get(LookBackVideoViewModel.class);
+        return ViewModelProviders.of(this, factory).get(LivePreviewViewModel.class);
     }
 
 
@@ -77,12 +77,12 @@ public class LivePreviewActivity extends BaseActivity<ActivityLivePreviewBinding
                 ToolKits.writeLog("FileName:" + filename);
                 if (viewModel.getHandle() != 0) {
                     if (viewModel.localCapturePicture(viewModel.getPlayPort(), filename)) {
-                        ToastUtils.showShort("截图成功");
+                        ToastUtils.showShort(getString(R.string.screenshot_successful));
                     } else {
-                        ToastUtils.showShort("截图失败");
+                        ToastUtils.showShort(getString(R.string.screenshot_failed));
                     }
                 } else {
-                    ToastUtils.showShort("请先打开实时预览");
+                    ToastUtils.showShort(getString(R.string.please_open_preview));
                 }
             }
         });
@@ -206,7 +206,9 @@ public class LivePreviewActivity extends BaseActivity<ActivityLivePreviewBinding
                 ToastUtils.showShort("本地录像失败");
                 return false;
             }
+            ToastUtils.showShort("开始录像");
         } else {
+            ToastUtils.showShort("结束录像");
             INetSDK.StopSaveRealData(viewModel.mRealHandle);
         }
         return true;

+ 2 - 113
app/src/main/java/com/goldze/mvvmhabit/ui/monitor/LookBackVideoViewModel.java

@@ -9,31 +9,22 @@ import com.company.NetSDK.SDK_RealPlayType;
 import com.company.PlaySDK.Constants;
 import com.company.PlaySDK.IPlaySDK;
 import com.goldze.mvvmhabit.data.HttpModelRepository;
-import com.goldze.mvvmhabit.data.source.http.BaseObserver;
 import com.goldze.mvvmhabit.data.source.model.LookBackVideoResponse;
-import com.goldze.mvvmhabit.data.source.model.RefreshLookBackVideo;
-import com.goldze.mvvmhabit.request.MonitorFileDeleteRequestBean;
-import com.goldze.mvvmhabit.request.WarningRequestBean;
 import com.goldze.mvvmhabit.utils.SPUtil;
 import com.goldze.mvvmhabit.utils.ToolKits;
 
-import org.greenrobot.eventbus.EventBus;
-
 import java.util.ArrayList;
 import java.util.List;
 
 import androidx.annotation.NonNull;
 import androidx.databinding.ObservableField;
-import io.reactivex.disposables.Disposable;
 import me.goldze.mvvmhabit.base.BaseViewModel;
 import me.goldze.mvvmhabit.binding.command.BindingAction;
 import me.goldze.mvvmhabit.binding.command.BindingCommand;
 import me.goldze.mvvmhabit.bus.event.SingleLiveEvent;
-import me.goldze.mvvmhabit.http.BaseResponse;
-import me.goldze.mvvmhabit.utils.RxUtils;
 import me.goldze.mvvmhabit.utils.ToastUtils;
 
-public class LookBackVideoViewModel extends BaseViewModel<HttpModelRepository> {
+public class LivePreviewViewModel extends BaseViewModel<HttpModelRepository> {
 
     public BindingCommand dateOnClickCommand = new BindingCommand(new BindingAction() {
         @Override
@@ -63,15 +54,10 @@ public class LookBackVideoViewModel extends BaseViewModel<HttpModelRepository> {
         }
     });
 
-    public int index = 1;
-
     private final int STREAM_BUF_SIZE = 1024*1024*2;
 
-    private String size = "10";
-
     public Long id;
 
-
     public String address;
 
     long mRealHandle = 0;
@@ -95,10 +81,6 @@ public class LookBackVideoViewModel extends BaseViewModel<HttpModelRepository> {
     private CB_fRealDataCallBackEx mRealDataCallBackEx;
 
     public class UIChangeObservable {
-        //下拉刷新完成
-        public SingleLiveEvent finishRefreshing = new SingleLiveEvent<>();
-        //上拉加载完成
-        public SingleLiveEvent finishLoadMore = new SingleLiveEvent<>();
 
         public SingleLiveEvent refreshAdapter = new SingleLiveEvent<>();
 
@@ -120,71 +102,10 @@ public class LookBackVideoViewModel extends BaseViewModel<HttpModelRepository> {
     public UIChangeObservable uc = new UIChangeObservable();
 
 
-    public LookBackVideoViewModel(@NonNull Application application, HttpModelRepository model) {
+    public LivePreviewViewModel(@NonNull Application application, HttpModelRepository model) {
         super(application, model);
     }
 
-    public void getList() {
-        showDialog();
-        model.datum(new WarningRequestBean(id, date.get(), index, size)).compose(RxUtils.schedulersTransformer()).subscribe(new BaseObserver() {
-
-            @Override
-            public void onSubscribe(Disposable d) {
-                addSubscribe(d);
-            }
-
-            @Override
-            public void onFailure(Throwable responseThrowable) {
-                dismissDialog();
-            }
-
-            @Override
-            public void onSuccess(BaseResponse response) {
-                dismissDialog();
-                uc.finishRefreshing.call();
-                uc.finishLoadMore.call();
-                if (response.getCode() == 100) {
-                    LookBackVideoResponse data = (LookBackVideoResponse) response.getData();
-                    if (data.getPage().getIndex() == 1) {
-                        orderList.clear();
-                    }
-                    orderList.addAll(data.getResult());
-                    total.set(data.getPage().getTotal());
-                    uc.refreshAdapter.call();
-                } else {
-                    ToastUtils.showShort(response.getMsg());
-                }
-            }
-        });
-    }
-
-    public void delete(List<Long> mList) {
-        showDialog();
-        model.videoDelete(new MonitorFileDeleteRequestBean(mList)).compose(RxUtils.schedulersTransformer()).subscribe(new BaseObserver() {
-
-            @Override
-            public void onSubscribe(Disposable d) {
-                addSubscribe(d);
-            }
-
-            @Override
-            public void onFailure(Throwable responseThrowable) {
-                dismissDialog();
-            }
-
-            @Override
-            public void onSuccess(BaseResponse response) {
-                dismissDialog();
-                if (response.getCode() == 100) {
-                    finish();
-                    EventBus.getDefault().post(new RefreshLookBackVideo());
-                } else {
-                    ToastUtils.showShort(response.getMsg());
-                }
-            }
-        });
-    }
-
     ///开始预览视频
     public void startPlay(int channel,final SurfaceView view){
         mRealHandle = INetSDK.RealPlayEx(SPUtil.newInstance().getLongData(SPUtil.LoginHandle), channel, SDK_RealPlayType.SDK_RType_Realplay_0);
@@ -300,36 +221,4 @@ public class LookBackVideoViewModel extends BaseViewModel<HttpModelRepository> {
         return true;
     }
 
-
-
-//    public void getIp(){
-//        showDialog();
-//        model.selectIp().compose(RxUtils.schedulersTransformer()).subscribe(new BaseObserver() {
-//
-//            @Override
-//            public void onSubscribe(Disposable d) {
-//                addSubscribe(d);
-//            }
-//
-//            @Override
-//            public void onFailure(Throwable responseThrowable) {
-//                dismissDialog();
-//            }
-//
-//            @Override
-//            public void onSuccess(BaseResponse response) {
-//                dismissDialog();
-//                if (response.getCode() == 100) {
-//                    List<SelectIpResponseBean> data = (List<SelectIpResponseBean>) response.getData();
-//                    Bundle mBundle = new Bundle();
-//                    mBundle.putSerializable("entity", (Serializable) data);
-//                    mBundle.putLong("id",id);
-//                    mBundle.putString("address",address);
-//                    startActivity(LookBackVideoActivity.class, mBundle);
-//                } else {
-//                    ToastUtils.showShort(response.getMsg());
-//                }
-//            }
-//        });
-//    }
 }

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 246
app/src/main/java/com/goldze/mvvmhabit/ui/monitor/LookBackVideoActivity.java


+ 0 - 70
app/src/main/java/com/goldze/mvvmhabit/ui/monitor/LookBackVideoAdapter.java

@@ -1,70 +0,0 @@
-package com.goldze.mvvmhabit.ui.monitor;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.goldze.mvvmhabit.R;
-import com.goldze.mvvmhabit.data.source.model.LookBackVideoResponse;
-import com.goldze.mvvmhabit.databinding.ItemLookBackVideoBinding;
-
-import java.util.List;
-
-import androidx.annotation.NonNull;
-import androidx.databinding.DataBindingUtil;
-import androidx.recyclerview.widget.RecyclerView;
-
-public class LookBackVideoAdapter extends RecyclerView.Adapter{
-
-    private Context context;
-
-    private List<LookBackVideoResponse.ResultBean>list;
-
-    public LookBackVideoAdapter(Context context, List<LookBackVideoResponse.ResultBean> list) {
-        this.context = context;
-        this.list = list;
-    }
-
-    @NonNull
-    @Override
-    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-        return new MyRecycleViewHolder(DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.item_look_back_video,
-                parent, false));
-    }
-
-    @Override
-    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
-        MyRecycleViewHolder holder = (MyRecycleViewHolder) viewHolder;
-        holder.binding.setItem(list.get(position));
-        holder.binding.rl.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                mItemClickListener.onItemClick(position);
-            }
-        });
-    }
-
-    @Override
-    public int getItemCount() {
-        return list == null ? 0 : list.size();
-    }
-
-    class MyRecycleViewHolder extends RecyclerView.ViewHolder {
-        private ItemLookBackVideoBinding binding;
-
-        MyRecycleViewHolder(@NonNull ItemLookBackVideoBinding itemView) {
-            super(itemView.getRoot());
-            this.binding = itemView;
-        }
-    }
-
-    private OnItemClickListener mItemClickListener;
-
-    public void setOnItemClickListener(OnItemClickListener l) {
-        this.mItemClickListener = l;
-    }
-    public interface OnItemClickListener {
-        void onItemClick(int position);
-    }
-}

+ 28 - 39
app/src/main/java/com/goldze/mvvmhabit/ui/monitor/PlayBackActivity.java

@@ -120,12 +120,12 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
         binding.playBackSeekbar.setOnSeekBarChangeListener(new PlayBackProgress());
         mSurfaceCallback = new SurfaceCallback();
         binding.tt.setMoreTextListener(v -> {
-            if (isPlaying){
+            if (isPlaying) {
                 stopPlayBack();
             }
             Bundle mBundle = new Bundle();
             mBundle.putString("title", title);
-            mBundle.putInt("channel",channel);
+            mBundle.putInt("channel", channel);
             startActivity(DownLoadRecordFileActivity.class);
         });
         mPlaySpeed = getResources().getStringArray(R.array.play_back_speed);
@@ -246,7 +246,7 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
 
     @Override
     public void onTimeSelect(Date date) {
-        Calendar calendar =Calendar.getInstance();
+        Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         mPlayBackTime.dwYear = calendar.get(Calendar.YEAR);
         mPlayBackTime.dwMonth = calendar.get(Calendar.MONTH) + 1;
@@ -376,16 +376,16 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
         }
     }
 
-    private void localCapturePicture(){
+    private void localCapturePicture() {
         String filename = createInnerAppFile("jpg");
-        ToolKits.writeLog("FileName:"+filename);
+        ToolKits.writeLog("FileName:" + filename);
         if (isPlaying) {
-            if(viewModel.localCapturePicture(viewModel.getPort(), filename)) {
-                ToastUtils.showShort("抓图成功");
+            if (viewModel.localCapturePicture(viewModel.getPort(), filename)) {
+                ToastUtils.showShort(getString(R.string.screenshot_successful));
             } else {
-                ToastUtils.showShort("抓图失败");
+                ToastUtils.showShort(getString(R.string.screenshot_failed));
             }
-        }else {
+        } else {
             ToastUtils.showShort(getString(R.string.play_back_not_start));
         }
     }
@@ -426,24 +426,16 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
         } else {
             binding.ivStart.setImageDrawable(getResources().getDrawable(R.drawable.start));
         }
-//
-//        mPlayButton.setEnabled(bPlay);
-//        mFastPlayButton.setEnabled(bPlay);
-//        mSlowPlayButton.setEnabled(bPlay);
-//        mNormalPlayButton.setEnabled(bPlay);
-//        mLocalCaptureButton.setEnabled(bPlay);
     }
 
     private NET_TIME calculateTime(int second) {
         NET_TIME time = new NET_TIME();
-
         time.dwYear = mPlayBackTime.dwYear;
         time.dwMonth = mPlayBackTime.dwMonth;
         time.dwDay = mPlayBackTime.dwDay;
         time.dwHour = second / 3600;
         time.dwMinute = second % 3600 / 60;
         time.dwSecond = second % 60;
-
         return time;
     }
 
@@ -480,7 +472,6 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
         }
     }
 
-
     /*                                          回放实现(playback implement)
 /***********************************************************************************************************************/
     /// playback task
@@ -509,7 +500,6 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
             final int recordType = (Integer) params[2];
             final NET_TIME start = (NET_TIME) params[3];
             final NET_TIME end = (NET_TIME) params[4];
-
             viewModel.doStopPlayBack();
             boolean bRet = initSurfaceView(stream, recordType);
             if (bRet) {
@@ -521,14 +511,13 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
         @Override
         protected void onPostExecute(Boolean result) {
             super.onPostExecute(result);
-
             if (!result) {
                 binding.playBackView.getHolder().removeCallback(mSurfaceCallback);
             }
             if (this.taskDone != null) {
                 this.taskDone.onTaskDone(result);
             }
-            if (dialog!=null && dialog.isShowing()){
+            if (dialog != null && dialog.isShowing()) {
                 dialog.dismiss();
             }
         }
@@ -544,8 +533,8 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
             stream = options1;
         }).setTitleText("")//标题文字
                 .setTitleSize(20)//标题文字大小
-                .setCancelText("取消")//取消按钮文字
-                .setSubmitText("确定")//确认按钮文字
+                .setCancelText(getString(R.string.cancel))//取消按钮文字
+                .setSubmitText(getString(R.string.yes))//确认按钮文字
                 .setBackgroundId(0x00FFFFFF) //设置外部遮罩颜色
                 .build();
         pvOptions.setPicker(getStreamTypeList());
@@ -561,22 +550,22 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
         return list;
     }
 
-    private synchronized String createInnerAppFile(String suffix){
+    private synchronized String createInnerAppFile(String suffix) {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String time = format.format(new Date());
-        String file = getExternalFilesDir(null).getAbsolutePath()+"/"+ time +
-                "."+suffix;
+        String file = getExternalFilesDir(null).getAbsolutePath() + "/" + time +
+                "." + suffix;
         return file;
     }
 
-    private void playFast(){
+    private void playFast() {
         CURRENT_SPEED_INDEX++;
-        if (CURRENT_SPEED_INDEX>MAX_SPEED_INDEX) {
+        if (CURRENT_SPEED_INDEX > MAX_SPEED_INDEX) {
             CURRENT_SPEED_INDEX = MAX_SPEED_INDEX;
-            ToastUtils.showShort(getString(R.string.fast_upper)+":"+mPlaySpeed[CURRENT_SPEED_INDEX]);
+            ToastUtils.showShort(getString(R.string.fast_upper) + ":" + mPlaySpeed[CURRENT_SPEED_INDEX]);
             return;
         }
-        if(viewModel.playFast()) {
+        if (viewModel.playFast()) {
             ToastUtils.showShort(mPlaySpeed[CURRENT_SPEED_INDEX]);
         } else {
             CURRENT_SPEED_INDEX--;
@@ -584,25 +573,25 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
         }
     }
 
-    private void playSlow(){
+    private void playSlow() {
         CURRENT_SPEED_INDEX--;
         if (CURRENT_SPEED_INDEX < MIN_SPEED_INDEX) {
             CURRENT_SPEED_INDEX = MIN_SPEED_INDEX;
-            ToastUtils.showShort( getString(R.string.slow_lower)+":"+mPlaySpeed[CURRENT_SPEED_INDEX]);
+            ToastUtils.showShort(getString(R.string.slow_lower) + ":" + mPlaySpeed[CURRENT_SPEED_INDEX]);
             return;
         }
-        if(viewModel.playSlow()) {
-            ToastUtils.showShort( mPlaySpeed[CURRENT_SPEED_INDEX]);
+        if (viewModel.playSlow()) {
+            ToastUtils.showShort(mPlaySpeed[CURRENT_SPEED_INDEX]);
         } else {
             CURRENT_SPEED_INDEX++;
-            ToastUtils.showShort( getString(R.string.operation_failed));
+            ToastUtils.showShort(getString(R.string.operation_failed));
         }
     }
 
-    private void playNormal(){
+    private void playNormal() {
         if (CURRENT_SPEED_INDEX == NORMAL_SPEED_INDEX)
             return;
-        if(normal()) {
+        if (normal()) {
             CURRENT_SPEED_INDEX = NORMAL_SPEED_INDEX;
             ToastUtils.showShort(getResources().getString(R.string.play_back_normal));
         } else
@@ -612,10 +601,10 @@ public class PlayBackActivity extends BaseActivity<ActivityLookingBackBinding, P
 
     /// normal playback
     /// 常速回放
-    public boolean normal(){
+    public boolean normal() {
         if (viewModel.mPlayHandler == 0)
             return false;
-        if (IPlaySDK.PLAYPlay(viewModel.mPort,binding.playBackView) == 0)
+        if (IPlaySDK.PLAYPlay(viewModel.mPort, binding.playBackView) == 0)
             return false;
         return INetSDK.NormalPlayBack(viewModel.mPlayHandler);
     }

+ 0 - 125
app/src/main/java/com/goldze/mvvmhabit/ui/monitor/VideoActivity.java

@@ -1,125 +0,0 @@
-package com.goldze.mvvmhabit.ui.monitor;
-
-import android.os.Bundle;
-import android.view.View;
-import android.view.WindowManager;
-
-import com.goldze.mvvmhabit.BR;
-import com.goldze.mvvmhabit.R;
-import com.goldze.mvvmhabit.app.AppViewModelFactory;
-import com.goldze.mvvmhabit.databinding.ActivityVideoBinding;
-import com.goldze.mvvmhabit.utils.DownloadTask;
-import com.google.android.exoplayer2.MediaItem;
-import com.google.android.exoplayer2.SimpleExoPlayer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import androidx.lifecycle.ViewModelProviders;
-import me.goldze.mvvmhabit.base.BaseActivity;
-import me.goldze.mvvmhabit.utils.ToastUtils;
-
-public class VideoActivity extends BaseActivity<ActivityVideoBinding, LookBackVideoViewModel> {
-
-
-    private SimpleExoPlayer mPlayer;
-
-    private String videoUrl;
-
-    private long id;
-
-    @Override
-    public int initContentView(Bundle savedInstanceState) {
-        return R.layout.activity_video;
-    }
-
-    @Override
-    public int initVariableId() {
-        return BR.viewModel;
-    }
-
-    @Override
-    public void initParam() {
-        Bundle mBundle = getIntent().getExtras();
-        if (mBundle != null) {
-            videoUrl = mBundle.getString("entity");
-            id = mBundle.getLong("id");
-        }
-    }
-
-    @Override
-    public LookBackVideoViewModel initViewModel() {
-        //使用自定义的ViewModelFactory来创建ViewModel,如果不重写该方法,则默认会调用LoginViewModel(@NonNull Application application)构造方法
-        AppViewModelFactory factory = AppViewModelFactory.getInstance(getApplication());
-        return ViewModelProviders.of(this, factory).get(LookBackVideoViewModel.class);
-    }
-
-    @Override
-    public void initData() {
-        mPlayer = new SimpleExoPlayer.Builder(this).build();
-        binding.playerView.setPlayer(mPlayer);
-
-        findViewById(R.id.exo_dow).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-//                ToastUtils.showLong("111");
-                new DownloadTask(VideoActivity.this, videoUrl, getIntent().getStringExtra("contractNo"), result -> {
-                    if (result) {
-                        ToastUtils.showLong("下载成功,请到文件管理器Download目录下查看");
-                    } else {
-                        ToastUtils.showShort("下载失败");
-                    }
-
-                }).execute();
-            }
-        });
-        findViewById(R.id.exo_del).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                List<Long> mList = new ArrayList<>();
-                mList.add(id);
-                viewModel.delete(mList);
-            }
-        });
-
-//        准备视频源
-//        String videoUrl = "https://www.w3schools.com/html/movie.mp4";
-        MediaItem mediaItem = MediaItem.fromUri(videoUrl);
-        mPlayer.setMediaItem(mediaItem);
-        mPlayer.prepare();
-
-    }
-
-    //    注意:在使用ExoP注意:在使用ExoPlayer时,需要在Activity中保持屏幕常亮以避免视频播放过程中屏幕自动关闭。layer时,需要在Activity中保持屏幕常亮以避免视频播放过程中屏幕自动关闭。
-    @Override
-    protected void onResume() {
-        super.onResume();
-        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-    }
-
-    @Override
-    protected void onStart() {
-        super.onStart();
-        binding.playerView.onResume();
-    }
-
-    @Override
-    protected void onStop() {
-        super.onStop();
-        binding.playerView.onPause();
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        mPlayer.release();
-    }
-
-
-}

+ 5 - 2
app/src/main/java/com/goldze/mvvmhabit/utils/picker/TimeSelectionPicker.java

@@ -2,6 +2,7 @@ package com.goldze.mvvmhabit.utils.picker;
 
 import android.content.Context;
 import android.graphics.Color;
+import android.view.Gravity;
 
 import com.bigkoo.pickerview.TimePickerView;
 
@@ -52,13 +53,15 @@ public class TimeSelectionPicker {
             })
                     //年月日时分秒 的显示与否,不设置则默认全部显示
                     .setType(new boolean[]{true, true, true, true, true, true})
+                    .isDialog(true)
                     .setLabel("", "", "", "点", "分", "")
                     .isCenterLabel(true)
+                    .gravity(Gravity.BOTTOM)
                     .setDividerColor(Color.DKGRAY)
-                    .setContentSize(21)
+                    .setContentSize(18)
                     .setDate(selectedDate)
                     .setRangDate(startDate, endDate)
-                    .setBackgroundId(0x00FFFFFF) //设置外部遮罩颜色
+                    .setBackgroundId(0x30FFFFFF) //设置外部遮罩颜色
                     .setDecorView(null)
                     .build();
         }

BIN
app/src/main/res/drawable-xxhdpi/monitoring_icon.png


BIN
app/src/main/res/drawable-xxhdpi/right_arrow.png


BIN
app/src/main/res/drawable-xxhdpi/screen.png


+ 16 - 0
app/src/main/res/drawable/selector_camera_bg.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+
+    <item android:state_checked="true">
+        <shape>
+            <solid android:color="@color/action_sheet_blue"></solid>
+        </shape>
+    </item>
+    <item android:state_checked="false">
+        <shape>
+            <solid android:color="@color/warning_select_text_bg"></solid>
+        </shape>
+    </item>
+
+</selector>

+ 11 - 0
app/src/main/res/drawable/selector_camera_text.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+<item android:state_checked="true" android:state_window_focused="false"   android:color="@color/white" />
+<item android:state_checked="false" android:state_window_focused="false" android:color="@color/main_select_false" />
+<item android:state_checked="true" android:state_pressed="true"   android:color="@color/white" />
+<item android:state_checked="false" android:state_pressed="true"  android:color="@color/main_select_false" />
+<item android:state_checked="true" android:state_focused="true"    android:color="@color/white"/>
+<item android:state_checked="false" android:state_focused="true"  android:color="@color/main_select_false" />
+<item android:state_checked="true"  android:color="@color/white" />
+<item android:state_checked="false" android:color="@color/main_select_false"/>
+</selector>

+ 7 - 0
app/src/main/res/drawable/shape_ash_18.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#F2F2F2" />
+    <corners android:radius="18dp" />
+
+</shape>

+ 7 - 0
app/src/main/res/drawable/shape_blue_18.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/action_sheet_blue" />
+    <corners android:radius="18dp" />
+
+</shape>

+ 7 - 0
app/src/main/res/drawable/shape_light_blue_3.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#ECF5FF" />
+    <corners android:radius="5dp" />
+
+</shape>

+ 7 - 0
app/src/main/res/drawable/shape_withe_5.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/white" />
+    <corners android:radius="5dp" />
+
+</shape>

+ 6 - 6
app/src/main/res/layout/activity_down_load_record_file.xml

@@ -11,7 +11,7 @@
             android:id="@+id/tt"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            app:titleText="下载"
+            app:titleText="@string/download"
             app:canBack="true" />
 
         <RelativeLayout
@@ -45,13 +45,13 @@
                     android:layout_height="match_parent"
                     android:gravity="center"
                     android:textColor="#424242"
-                    android:text="开始时间" />
+                    android:text="@string/start_time" />
 
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="match_parent"
                     android:id="@+id/download_start_date"
-                    android:hint="请选择开始时间"
+                    android:hint="@string/please_select_start_time"
                     android:minWidth="150dp"
                     android:textColor="#313131"
                     app:onClickCommand="@{viewModel.selectStartOnClickCommand}"
@@ -73,13 +73,13 @@
                     android:layout_height="match_parent"
                     android:gravity="center"
                     android:textColor="#424242"
-                    android:text="结束时间" />
+                    android:text="@string/end_time" />
 
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="match_parent"
                     android:id="@+id/download_end_date"
-                    android:hint="请选择结束时间"
+                    android:hint="@string/please_select_end_time"
                     android:minWidth="150dp"
                     android:textColor="#313131"
                     app:onClickCommand="@{viewModel.selectEndDateOnClickCommand}"
@@ -101,7 +101,7 @@
                 android:textColor="@color/white"
                 android:background="@drawable/shape_blue_5"
                 app:onClickCommand="@{viewModel.startOnClickCommand}"
-                android:text="下载"
+                android:text="@string/download"
                 android:textAllCaps="false" />
 
             <SeekBar

+ 1 - 1
app/src/main/res/layout/activity_file_browser.xml

@@ -11,7 +11,7 @@
             android:id="@+id/tt"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            binding:titleText="文件管理"
+            binding:titleText="@string/file_management"
             binding:canBack="true" />
 
 

+ 1 - 1
app/src/main/res/layout/activity_information_up.xml

@@ -48,7 +48,7 @@
                     <TextView
                         android:id="@+id/reasons"
                         style="@style/AddOrderTextView"
-                        android:text="@string/reasons_for_mediation" />
+                        android:text="@string/report_content" />
 
 
                 </RelativeLayout>

+ 3 - 3
app/src/main/res/layout/activity_live_preview.xml

@@ -59,7 +59,7 @@
             android:id="@+id/tt"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            app:moreText="回看"
+            app:moreText="@string/playback"
             app:canBack="true" />
 
 
@@ -67,10 +67,10 @@
 
     <data>
 
-        <import type="com.goldze.mvvmhabit.ui.monitor.LookBackVideoViewModel" />
+        <import type="com.goldze.mvvmhabit.ui.monitor.LivePreviewViewModel" />
 
         <variable
             name="viewModel"
-            type="LookBackVideoViewModel" />
+            type="com.goldze.mvvmhabit.ui.monitor.LivePreviewViewModel" />
     </data>
 </layout>

+ 2 - 2
app/src/main/res/layout/activity_look_back_video.xml

@@ -57,10 +57,10 @@
     </RelativeLayout>
 
     <data >
-        <import type="com.goldze.mvvmhabit.ui.monitor.LookBackVideoViewModel" />
+        <import type="com.goldze.mvvmhabit.ui.monitor.LivePreviewViewModel" />
         <variable
             name="viewModel"
-            type="LookBackVideoViewModel" />
+            type="com.goldze.mvvmhabit.ui.monitor.LivePreviewViewModel" />
     </data>
 
 </layout>

+ 2 - 2
app/src/main/res/layout/activity_looking_back.xml

@@ -11,8 +11,8 @@
             android:id="@+id/tt"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            app:titleText="监控回放"
-            app:moreText="下载"
+            app:titleText="@string/playback"
+            app:moreText="@string/download"
             app:canBack="true" />
 
         <TextView

+ 6 - 2
app/src/main/res/layout/fragment_monitoring.xml

@@ -6,6 +6,8 @@
     <data>
 
         <import type="me.goldze.mvvmhabit.base.BaseViewModel" />
+        <import type="me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LayoutManagers" />
+        <import type="me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LineManagers" />
 
         <variable
             name="viewModel"
@@ -39,8 +41,10 @@
             android:id="@+id/recycler"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:layout_marginLeft="8dp"
-            android:layout_marginRight="8dp"/>
+            android:layout_marginLeft="10dp"
+            android:layout_marginTop="12dp"
+            app:layoutManager="@{LayoutManagers.linear()}"
+            android:layout_marginRight="10dp"/>
 
 <!--        </com.scwang.smart.refresh.layout.SmartRefreshLayout>-->
     </LinearLayout>

+ 8 - 97
app/src/main/res/layout/fragment_warning.xml

@@ -18,105 +18,16 @@
         android:background="@color/white"
         android:orientation="vertical">
 
-        <RelativeLayout
-            android:id="@+id/rl"
-            android:layout_width="match_parent"
-            android:layout_marginTop="30dp"
-            android:layout_height="50dp">
-
-            <TextView
-                android:id="@+id/title"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_centerInParent="true"
-                android:gravity="center"
-                android:maxLength="15"
-                android:singleLine="true"
-                android:textColor="#020202"
-                android:drawablePadding="5dp"
-                android:text="@string/warning_information"
-                android:textSize="16sp"
-                android:textStyle="bold" />
-
-            <ImageView
-                android:id="@+id/iv_user"
-                android:layout_width="35dp"
-                android:layout_height="35dp"
-                android:gravity="center"
-                android:layout_alignParentRight="true"
-                android:layout_centerVertical="true"
-                android:drawablePadding="6dp"
-                android:src="@drawable/user_icon"
-                binding:onClickCommand="@{viewModel.userOnClickCommand}"
-                android:layout_marginRight="12dp"/>
-
-        </RelativeLayout>
-
-
-        <RadioGroup
-            android:id="@+id/rg_notarization"
-            android:layout_width="match_parent"
-            android:layout_height="30dp"
-            android:orientation="horizontal"
-            android:layout_marginBottom="15dp"
-            android:layout_below="@id/rl">
-            <RadioButton
-                android:id="@+id/rb_all"
-                android:layout_width="0dp"
-                android:layout_weight="1"
-                android:layout_height="match_parent"
-                android:gravity="center"
-                android:button="@null"
-
-                android:visibility="gone"
-                android:textColor="@drawable/selector_main_menu_text"
-                android:text="@string/all"/>
-
-            <RadioButton
-                android:id="@+id/rb_key_personnel"
-                android:layout_width="0dp"
-                android:layout_weight="1"
-                android:layout_height="match_parent"
-                android:gravity="center"
-                android:button="@null"
-                android:checked="true"
-                android:textColor="@drawable/selector_main_menu_text"
-                android:text="@string/key_personnel"/>
-
-            <RadioButton
-                android:id="@+id/rb_many_personnel"
-                android:layout_width="0dp"
-                android:layout_weight="1"
-                android:button="@null"
-                android:textColor="@drawable/selector_main_menu_text"
-                android:layout_height="match_parent"
-                android:gravity="center"
-                android:text="@string/many_personnel"/>
-
-            <RadioButton
-                android:id="@+id/rb_foreign_personnel"
-                android:layout_width="0dp"
-                android:layout_weight="1"
-                android:button="@null"
-                android:textColor="@drawable/selector_main_menu_text"
-                android:layout_height="match_parent"
-                android:gravity="center"
-                android:text="@string/foreign_personnel"/>
-
-            <RadioButton
-                android:id="@+id/rb_foreign_car"
-                android:layout_width="0dp"
-                android:layout_weight="1"
-                android:button="@null"
-                android:textColor="@drawable/selector_main_menu_text"
-                android:layout_height="match_parent"
-                android:gravity="center"
-                android:text="@string/foreign_car"/>
-
-        </RadioGroup>
+       <com.goldze.mvvmhabit.ui.view.TemplateTitleBar
+           android:id="@+id/tt"
+           android:layout_width="match_parent"
+           android:layout_height="wrap_content"
+           app:moreImg="@drawable/user_icon"
+           app:addImg="@drawable/screen"
+           app:titleText="@string/warning_information"/>
 
         <com.scwang.smart.refresh.layout.SmartRefreshLayout
-            android:layout_below="@id/rg_notarization"
+            android:layout_below="@id/tt"
             android:id="@+id/refreshLayout"
             android:layout_width="match_parent"
             android:layout_height="match_parent"

+ 2 - 3
app/src/main/res/layout/item_information.xml

@@ -34,9 +34,8 @@
             android:layout_height="100dp"
             android:layout_marginLeft="12dp"
             android:layout_marginTop="15dp"
-            android:scaleType="centerCrop"
-            android:layout_below="@id/tv_status"
-            android:src="@drawable/card"/>
+            android:scaleType="centerInside"
+            android:layout_below="@id/tv_status"/>
         <TextView
             android:id="@+id/tv_msg"
             android:layout_width="match_parent"

+ 23 - 21
app/src/main/res/layout/item_monitoring.xml

@@ -4,41 +4,43 @@
     <RelativeLayout
         android:id="@+id/rl"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+        android:layout_height="wrap_content"
+        android:paddingTop="10dp"
+        android:background="@drawable/shape_withe_5"
+        android:layout_marginBottom="12dp"
+        android:paddingBottom="10dp">
 
-        <SurfaceView
-            android:id="@+id/surface_view"
-            android:layout_width="match_parent"
-            android:layout_height="130dp"/>
-        
         <ImageView
             android:id="@+id/iv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:src="@drawable/start_icon"
-            android:layout_centerInParent="true"
-            android:scaleType="fitXY"/>
+            android:src="@drawable/monitoring_icon"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="20dp"/>
 
         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:paddingTop="8dp"
-            android:paddingBottom="8dp"
-            android:paddingLeft="10dp"
-            android:background="@color/line"
+            android:layout_toRightOf="@id/iv"
+            android:layout_marginLeft="10dp"
             android:text="@{item}"
-            android:textSize="12sp"
-            android:textColor="@color/main_select_false"
-            android:layout_below="@id/surface_view"/>
+            android:paddingLeft="15dp"
+            android:paddingTop="5dp"
+            android:paddingBottom="5dp"
+            android:textSize="14sp"
+            android:textStyle="bold"
+            android:textColor="#555555"
+            android:letterSpacing="0.1"
+            android:background="@drawable/shape_light_blue_3"
+            android:layout_marginRight="50dp"/>
 
-        <TextView
+        <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
             android:layout_alignParentRight="true"
-            android:textSize="12sp"
-            android:text="2020213315"
-            android:visibility="gone"
-            android:textColor="@color/credit_dialog"/>
+            android:layout_marginRight="20dp"
+            android:src="@drawable/right_arrow"/>
 
     </RelativeLayout>
     

+ 21 - 0
app/src/main/res/layout/item_select_camera.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/tv_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_margin="8dp"
+            android:padding="8dp"
+            android:background="@color/warning_select_text_bg"
+            android:textColor="@color/main_select_false"
+            android:textSize="13sp"/>
+    </LinearLayout>
+
+
+</layout>

+ 20 - 0
app/src/main/res/layout/item_select_type.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/tv_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="8dp"
+            android:background="@color/warning_select_text_bg"
+            android:textColor="@color/main_select_false"
+            android:textSize="13sp"/>
+    </LinearLayout>
+
+
+</layout>

+ 154 - 0
app/src/main/res/layout/layout_select_warning.xml

@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/shape_withe_top_15"
+        android:padding="12dp">
+
+        <RelativeLayout
+            android:id="@+id/rl"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_above="@id/ll"
+            android:layout_below="@id/title">
+
+            <LinearLayout
+                android:id="@+id/ll_time"
+                android:layout_width="match_parent"
+                android:layout_height="35dp"
+                android:layout_marginTop="20dp"
+                android:layout_below="@id/rv_type"
+                android:layout_toRightOf="@id/tv_camera"
+                android:visibility="gone">
+
+                <TextView
+                    android:id="@+id/tv_start_time"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="35dp"
+                    android:background="@drawable/shape_ash_18"
+                    android:gravity="center"
+                    android:hint="起始时间"
+                    android:textColor="@color/editTextColor"
+                    android:textSize="13sp" />
+
+                <View
+                    style="@style/ViewShortLineStyle"
+                    android:layout_marginLeft="3dp"
+                    android:layout_marginRight="3dp" />
+
+                <TextView
+                    android:id="@+id/tv_end_time"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="35dp"
+                    android:background="@drawable/shape_ash_18"
+                    android:gravity="center"
+                    android:hint="终止时间"
+                    android:textColor="@color/editTextColor"
+                    android:textSize="13sp" />
+
+
+
+            </LinearLayout>
+
+            <TextView
+                android:id="@+id/tv_type"
+                android:layout_width="72dp"
+                android:layout_height="35dp"
+                android:layout_below="@id/tv_camera"
+                android:paddingBottom="10dp"
+                android:text="类型/时间"
+                android:textColor="@color/editTextColor"
+                android:textSize="14sp" />
+
+
+            <TextView
+                android:id="@+id/tv_camera"
+                android:layout_width="75dp"
+                android:layout_height="35dp"
+                android:layout_marginTop="20dp"
+                android:text="摄像头"
+                android:textColor="@color/action_sheet_blue"
+                android:textSize="14sp" />
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/rv_type"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="20dp"
+                android:layout_toRightOf="@id/tv_type"
+                android:visibility="gone" />
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/rv_camera"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="20dp"
+                android:layout_toRightOf="@id/tv_type" />
+        </RelativeLayout>
+
+        <TextView
+            android:id="@+id/tv_cancel"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_marginTop="3dp"
+            android:text="@string/cancel"
+            android:textColor="@color/action_sheet_blue"
+            android:textSize="15sp" />
+
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerHorizontal="true"
+            android:text="筛选"
+            android:textColor="@color/black"
+            android:textSize="17sp"
+            android:textStyle="bold" />
+
+        <LinearLayout
+            android:id="@+id/ll"
+            android:layout_width="match_parent"
+            android:layout_height="45dp"
+            android:orientation="horizontal"
+            android:layout_margin="15dp"
+            android:layout_alignParentBottom="true">
+
+            <TextView
+                android:id="@+id/tv_return"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:layout_height="45dp"
+                android:background="@drawable/shape_text_login_button_ash"
+                android:gravity="center"
+                android:text="重置"
+                android:textColor="@color/white"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <View
+                android:layout_width="0dp"
+                android:layout_height="1dp"
+                android:layout_weight="0.4"/>
+
+            <TextView
+                android:id="@+id/tv_next"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:layout_height="45dp"
+                android:background="@drawable/shape_text_login_button_blue"
+                android:gravity="center"
+                android:text="提交"
+                android:textColor="@color/white"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+        </LinearLayout>
+
+
+    </RelativeLayout>
+
+</layout>

+ 3 - 3
app/src/main/res/layout/widget_title.xml

@@ -74,10 +74,10 @@
 
             <ImageView
                 android:id="@+id/img_more"
-                android:layout_width="30dp"
-                android:layout_height="30dp"
+                android:layout_width="28dp"
+                android:layout_height="28dp"
                 android:layout_gravity="center"
-                android:layout_marginEnd="12dp"
+                android:layout_marginEnd="10dp"
                 android:visibility="gone"/>
 
             <ImageView

+ 1 - 0
app/src/main/res/values/colors.xml

@@ -18,4 +18,5 @@
     <color name="rl_main_bg">#1B1B1B</color>
     <color name="action_sheet_blue">#037BFF</color>
     <color name="line_default_color">#e5e5e5</color>
+    <color name="warning_select_text_bg">#F2F2F2</color>
 </resources>

+ 13 - 0
app/src/main/res/values/strings.xml

@@ -31,6 +31,7 @@
     <string name="quilt_applicant_address">被申请人住址:</string>
     <string name="upload_quilt_card">上传被申请人身份证照片:</string>
     <string name="reasons_for_mediation">调解事由:</string>
+    <string name="report_content">上报内容:</string>
     <string name="upload_other">上传其它</string>
     <string name="cancel">取消</string>
     <string name="download_failed">下载失败,请检查通道、时间</string>
@@ -70,4 +71,16 @@
     <string name="many_personnel">多人聚集</string>
     <string name="foreign_car">外来车辆</string>
     <string name="all">全部类型</string>
+    <string name="screenshot_successful">截图成功</string>
+    <string name="screenshot_failed">截图失败</string>
+    <string name="playback">监控回放</string>
+    <string name="download">下载</string>
+    <string name="please_open_preview">请先打开实时预览</string>
+    <string name="file_management">文件管理</string>
+    <string name="start_time">开始时间</string>
+    <string name="end_time">结束时间</string>
+    <string name="please_select_start_time">请选择开始时间</string>
+    <string name="please_select_end_time">请选择结束时间</string>
+    <string name="download_completed">下载完成</string>
+    <string name="complete">完成</string>
 </resources>

+ 7 - 0
app/src/main/res/values/styles.xml

@@ -31,6 +31,13 @@
         <item name="android:background">@color/viewLineColor</item>
     </style>
 
+    <style name="ViewShortLineStyle">
+        <item name="android:layout_width">8dp</item>
+        <item name="android:layout_height">1dp</item>
+        <item name="android:layout_gravity">center_vertical</item>
+        <item name="android:background">@color/textColorHint</item>
+    </style>
+
     <!-- 标题模板自定义属性 -->
     <declare-styleable name="TemplateTitleBar">
         <!-- 标题文案 -->

+ 1 - 1
mvvmhabit/build.gradle

@@ -78,7 +78,7 @@ dependencies {
     api rootProject.ext.dependencies["lifecycle-extensions"]
     annotationProcessor rootProject.ext.dependencies["lifecycle-compiler"]
     api rootProject.ext.dependencies.multidex
-    api rootProject.ext.dependencies.butterknife
+    api rootProject.ext.dependencies["butterknife"]
     annotationProcessor rootProject.ext.dependencies["butterknife-compiler"]
 
     api rootProject.ext.dependencies["socket"]

+ 0 - 3
mvvmhabit/src/main/java/me/goldze/mvvmhabit/base/BaseDialogFragment.java

@@ -13,7 +13,6 @@ import android.view.Window;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.databinding.ViewDataBinding;
 import androidx.fragment.app.DialogFragment;
 import butterknife.ButterKnife;
 import butterknife.Unbinder;
@@ -30,7 +29,6 @@ public abstract class BaseDialogFragment extends DialogFragment {
     protected View mRootView;
     protected Window mWindow;
     private Unbinder unbinder;
-    private ViewDataBinding binding;
 
     @Override
     public void onAttach(Context context) {
@@ -59,7 +57,6 @@ public abstract class BaseDialogFragment extends DialogFragment {
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         mRootView = inflater.inflate(setLayoutId(), container, false);
         getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
-//        binding = DataBindingUtil.inflate(inflater, setLayoutId(), null, false);
         return mRootView;
     }