zhanghongrui 13 tuntia sitten
vanhempi
commit
42c6c93afe
28 muutettua tiedostoa jossa 935 lisäystä ja 155 poistoa
  1. 2 1
      app/src/main/AndroidManifest.xml
  2. 42 20
      app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/ExoPlayerActivity.java
  3. 164 51
      app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/MonitoringCenterActivity.java
  4. 62 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/viewModel/PlayViewModel.java
  5. 34 4
      app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/CameraAdapter.java
  6. 44 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/MyAdapter.java
  7. 97 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/AllCameraBean.java
  8. 22 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/CameraTypeBean.java
  9. 21 5
      app/src/main/java/com/sjkj/appthreefloor_tsgz/fragment/EventFragment.java
  10. 1 1
      app/src/main/java/com/sjkj/appthreefloor_tsgz/fragment/MainFragment.java
  11. 3 3
      app/src/main/java/com/sjkj/appthreefloor_tsgz/net/CameraAllListRequest.java
  12. 51 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/net/CameraTypeListRequest.java
  13. 53 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/net/GetDictTypeRequest.java
  14. 12 3
      app/src/main/java/com/sjkj/appthreefloor_tsgz/net/RetrofitService.java
  15. 49 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/utils/DictValueTools.java
  16. BIN
      app/src/main/res/drawable-xxhdpi/icon_address.png
  17. BIN
      app/src/main/res/drawable-xxhdpi/icon_camear.png
  18. BIN
      app/src/main/res/drawable-xxhdpi/icon_camear_next.png
  19. 9 0
      app/src/main/res/drawable/rounded_30eeeff4.xml
  20. 6 0
      app/src/main/res/drawable/shape_5af3b8_corners_10dp.xml
  21. 5 0
      app/src/main/res/drawable/shape_corners.xml
  22. 29 17
      app/src/main/res/layout/activity_camera_list.xml
  23. 167 28
      app/src/main/res/layout/item_camera_list_layout.xml
  24. 23 0
      app/src/main/res/layout/item_view.xml
  25. 30 18
      app/src/main/res/layout/player_activity.xml
  26. 3 3
      base-lib/src/main/java/com/sjkj/base_lib/adapter/BaseRecAdapter.java
  27. 5 0
      base-lib/src/main/res/drawable/shape_bg_white_input.xml
  28. 1 1
      config.gradle

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

@@ -148,7 +148,7 @@
         <activity
             android:name="com.sjkj.appthreefloor_tsgz.weight.photoview.PhotoViewActivity"
             android:screenOrientation="portrait"
-            android:theme="@style/AppNoTitleTheme" />
+             />
         <activity
             android:name="com.sjkj.appthreefloor_tsgz.activity.MyVideoPlayerActivity"
             android:screenOrientation="portrait" />
@@ -158,6 +158,7 @@
         <activity
             android:name="com.sjkj.appthreefloor_tsgz.activity.ExoPlayerActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
+            android:theme="@style/AppNoTitleTheme"
             android:screenOrientation="unspecified" />
         <activity
             android:name="com.amap.api.navi.AmapRouteActivity"

+ 42 - 20
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/ExoPlayerActivity.java

@@ -1,40 +1,55 @@
 package com.sjkj.appthreefloor_tsgz.activity;
 
 import android.content.pm.ActivityInfo;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.os.Bundle;
 import android.view.View;
-import android.widget.Button;
 
-import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.ViewModelProvider;
 
-import com.google.android.exoplayer2.DefaultLoadControl;
-import com.google.android.exoplayer2.DefaultRenderersFactory;
 import com.google.android.exoplayer2.ExoPlayer;
 import com.google.android.exoplayer2.MediaItem;
 import com.google.android.exoplayer2.SimpleExoPlayer;
-import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
-import com.google.android.exoplayer2.ui.PlayerView;
+import com.gyf.immersionbar.ImmersionBar;
 import com.sjkj.appthreefloor_tsgz.R;
+import com.sjkj.appthreefloor_tsgz.activity.viewModel.PlayViewModel;
+import com.sjkj.appthreefloor_tsgz.databinding.PlayerActivityBinding;
+import com.sjkj.base_lib.view.BaseActivity;
 
-public class ExoPlayerActivity extends AppCompatActivity {
-    private PlayerView playerView;
+public class ExoPlayerActivity extends BaseActivity {
+    private PlayViewModel viewModel;
+    private PlayerActivityBinding binding;
     private ExoPlayer player;
     private boolean isFullScreen;
-    Button fullscreenButton;
     private int currentOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
 
     @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.player_activity);
-
-        playerView = findViewById(R.id.player_view);
-        fullscreenButton = findViewById(R.id.fullscreen_button);
+    public void initBinding() {
+        binding = (PlayerActivityBinding) getViewDataBinding();
+        viewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(PlayViewModel.class);
+        binding.setViewModel(viewModel);
+        binding.setLifecycleOwner(this);
+    }
 
+    @Override
+    public void initView() {
+        super.initView();
+        getTitleView().setText("监控画面");
+        ImmersionBar.with(ExoPlayerActivity.this)
+                .statusBarDarkFont(true, 0.2f)
+                .statusBarColor(R.color.white)
+                .init();
+        getTitleView().setTextColor(getResources().getColor(R.color.black));
+        int drawableLeft = R.drawable.icon_back; // 替换为你的drawable资源ID
+        Drawable drawable = ContextCompat.getDrawable(ExoPlayerActivity.this, drawableLeft);
+        if (drawable != null) {
+            getBackView().setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null); // 使用Relative版本以支持RTL布局方向
+        }
+        getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.color.white));
         initializePlayer();
 
-        fullscreenButton.setOnClickListener(new View.OnClickListener() {
+        binding.fullscreenButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 toggleFullScreen();
@@ -42,17 +57,19 @@ public class ExoPlayerActivity extends AppCompatActivity {
         });
     }
 
+
     private void initializePlayer() {
         player = new SimpleExoPlayer.Builder(this).build();
 
-        playerView.setUseController(false); // 设置为不使用控制器
-        playerView.setPlayer(player);
+        binding.playerView.setUseController(false); // 设置为不使用控制器
+        binding.playerView.setPlayer(player);
 
         // 准备M3U8流的MediaItem
-        MediaItem mediaItem = MediaItem.fromUri(Uri.parse("https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/.m3u8"));
+        MediaItem mediaItem = MediaItem.fromUri(Uri.parse("http://192.168.100.111:83/openUrl/vsigHDVVtaob9265a8f852343ddae9da/live.m3u8"));
         player.setMediaItem(mediaItem);
         player.prepare();
         player.play();
+        toggleFullScreen();
     }
 
     private void toggleFullScreen() {
@@ -82,4 +99,9 @@ public class ExoPlayerActivity extends AppCompatActivity {
         }
     }
 
+    @Override
+    protected int initLayout() {
+        return R.layout.player_activity;
+    }
+
 }

+ 164 - 51
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/MonitoringCenterActivity.java

@@ -2,8 +2,13 @@ package com.sjkj.appthreefloor_tsgz.activity;
 
 import android.content.Intent;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.text.TextUtils;
+import android.util.Log;
 import android.view.View;
 
+import androidx.annotation.RequiresApi;
+import androidx.core.content.ContextCompat;
 import androidx.lifecycle.ViewModelProvider;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
@@ -12,6 +17,7 @@ import com.google.android.flexbox.AlignItems;
 import com.google.android.flexbox.FlexDirection;
 import com.google.android.flexbox.FlexWrap;
 import com.google.android.flexbox.FlexboxLayoutManager;
+import com.gyf.immersionbar.ImmersionBar;
 import com.scwang.smartrefresh.layout.api.RefreshLayout;
 import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
 import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
@@ -19,9 +25,13 @@ import com.sjkj.appthreefloor_tsgz.R;
 import com.sjkj.appthreefloor_tsgz.adapter.CameraAdapter;
 import com.sjkj.appthreefloor_tsgz.adapter.RightAdapter;
 import com.sjkj.appthreefloor_tsgz.app.App;
+import com.sjkj.appthreefloor_tsgz.bean.AllCameraBean;
+import com.sjkj.appthreefloor_tsgz.bean.CameraTypeBean;
 import com.sjkj.appthreefloor_tsgz.bean.RightModelBean;
 import com.sjkj.appthreefloor_tsgz.databinding.ActivityCameraListBinding;
 import com.sjkj.appthreefloor_tsgz.net.CameraAllListRequest;
+import com.sjkj.appthreefloor_tsgz.net.CameraTypeListRequest;
+import com.sjkj.appthreefloor_tsgz.net.GetDictTypeRequest;
 import com.sjkj.base_lib.adapter.BaseRecAdapter;
 import com.sjkj.base_lib.camera.dh.bean.CameraBean;
 import com.sjkj.base_lib.camera.dh.view.DHCameraDetailsActivity;
@@ -30,9 +40,11 @@ import com.sjkj.base_lib.divider.DividerItem;
 import com.sjkj.base_lib.entity.Params;
 import com.sjkj.base_lib.net.domain.interactor.ProcessErrorSubscriber;
 import com.sjkj.base_lib.utils.AppTools;
+import com.sjkj.base_lib.utils.ToastUtils;
 import com.sjkj.base_lib.view.BaseActivity;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -46,12 +58,16 @@ public class MonitoringCenterActivity extends BaseActivity {
     //    private TypeAdapter typeAdapter;
     private List<RightModelBean> typeList = new ArrayList<>();
     //    private List<RegionModel> regionList = new ArrayList<>();
-    private List<CameraBean> list = new ArrayList<>();
+    private List<AllCameraBean.Rows> list = new ArrayList<>();
     private int currentPage = 1;
     private ActivityCameraListBinding binding;
     private CameraViewModel viewModel;
     private CameraAllListRequest cameraListRequest = new CameraAllListRequest(App.getInstance());
+    private CameraTypeListRequest cameraTypeListRequest = new CameraTypeListRequest(App.getInstance());
+    public GetDictTypeRequest getDictTypeRequest = new GetDictTypeRequest(App.getInstance());
     private String titleName;
+    private List<CameraTypeBean> cameraTypeList = new ArrayList<>();
+    private List<CameraTypeBean> cameraTypeList2 = new ArrayList<>();
 
     @Override
     public int initLayout() {
@@ -68,6 +84,23 @@ public class MonitoringCenterActivity extends BaseActivity {
 
     @Override
     public void initView() {
+
+//        ViewGroup.LayoutParams params = binding.toolbar.getLayoutParams();
+//        params.height = ImmersionBar.getStatusBarHeight(this);
+//        binding.toolbar.setLayoutParams(params);
+        ImmersionBar.with(MonitoringCenterActivity.this)
+                .statusBarDarkFont(true, 0.2f)
+                .statusBarColor(R.color.white)
+                .titleBar(binding.toolbar)
+                .init();
+        getTitleView().setTextColor(getResources().getColor(R.color.black));
+        int drawableLeft = R.drawable.icon_back; // 替换为你的drawable资源ID
+        Drawable drawable1 = ContextCompat.getDrawable(MonitoringCenterActivity.this, drawableLeft);
+        if (drawable1 != null) {
+            getBackView().setCompoundDrawablesRelativeWithIntrinsicBounds(drawable1, null, null, null); // 使用Relative版本以支持RTL布局方向
+        }
+        getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.color.white));
+
         Drawable drawable = getDrawable(R.drawable.icon_camera);
         drawable.setBounds(0, 30, 60, 90);
         getRightView().setCompoundDrawables(null, drawable, null, null);
@@ -81,7 +114,7 @@ public class MonitoringCenterActivity extends BaseActivity {
                 }
             }
         });
-        getRightView().setVisibility(View.VISIBLE);
+        getRightView().setVisibility(View.GONE);
         titleName = getIntent().getStringExtra("titleName");
         //DrawerAdapter adapter1 = new DrawerAdapter(items);
 
@@ -107,22 +140,8 @@ public class MonitoringCenterActivity extends BaseActivity {
 //        if (TextUtils.isEmpty(titleName)) {
 //            getTitleView().setText(getString(R.string.monitor_center));
 //        } else {
-        getTitleView().setText(titleName);
+        getTitleView().setText("设备列表");
         // }
-//        Drawable drawable = getDrawable(R.drawable.event_search_img);
-//        drawable.setBounds(0, 30, 60, 90);
-//        getRightView().setCompoundDrawables(null, drawable, null, null);
-//        getRightView().setOnClickListener(new View.OnClickListener() {
-//            @Override
-//            public void onClick(View view) {
-//                if (binding.drawerLayout.isDrawerVisible(binding.rightLayout)) {
-//                    binding.drawerLayout.closeDrawers();
-//                } else {
-//                    binding.drawerLayout.openDrawer(binding.rightLayout);
-//                }
-//            }
-//        });
-//        getRightView().setVisibility(View.GONE);
         LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
         linearLayoutManager.setOrientation(RecyclerView.VERTICAL);
         binding.mainRecyclerView.setLayoutManager(linearLayoutManager);
@@ -169,20 +188,21 @@ public class MonitoringCenterActivity extends BaseActivity {
 //        typeAdapter.setListener(item -> {
 ////            typeModel = item;
 //        });
-        adapter.setItemClick(new BaseRecAdapter.OnItemClick<CameraBean>() {
+        adapter.setItemClick(new BaseRecAdapter.OnItemClick<AllCameraBean.Rows>() {
             @Override
-            public void onItemClick(CameraBean bean, int position) {
-                if (AppTools.getCameraType() == AppTools.CAMERA_TYPE_NONE) {
-
-                } else if (AppTools.getCameraType() == AppTools.CAMERA_TYPE_DH) {
-                    Intent intent = new Intent(MonitoringCenterActivity.this, DHCameraDetailsActivity.class);
-                    intent.putExtra("cameraId", bean.getId());
-                    startActivity(intent);
-                } else if (AppTools.getCameraType() == AppTools.CAMERA_TYPE_HK) {
-//                    Intent intent = new Intent(MonitoringCenterActivity.this, HKH5CameraActivity.class);
+            public void onItemClick(AllCameraBean.Rows bean, int position) {
+                startActivity(new Intent(MonitoringCenterActivity.this, ExoPlayerActivity.class));
+//                if (AppTools.getCameraType() == AppTools.CAMERA_TYPE_NONE) {
+//
+//                } else if (AppTools.getCameraType() == AppTools.CAMERA_TYPE_DH) {
+//                    Intent intent = new Intent(MonitoringCenterActivity.this, DHCameraDetailsActivity.class);
 //                    intent.putExtra("cameraId", bean.getId());
 //                    startActivity(intent);
-                }
+//                } else if (AppTools.getCameraType() == AppTools.CAMERA_TYPE_HK) {
+////                    Intent intent = new Intent(MonitoringCenterActivity.this, HKH5CameraActivity.class);
+////                    intent.putExtra("cameraId", bean.getId());
+////                    startActivity(intent);
+//                }
 //                intent.putExtra("deviceName", bean.getCameraId());
 //                intent.putExtra("deviceIp", bean.getCameraId());
 //                intent.putExtra("deviceUserName", bean.getCameraId());
@@ -194,6 +214,45 @@ public class MonitoringCenterActivity extends BaseActivity {
 
     @Override
     public void loadData() {
+
+        Params params = new Params();
+        params.put("dictType", "camera_type");
+        getDictTypeRequest.setParams(params);
+        getDictTypeRequest.execute(new ProcessErrorSubscriber<List<CameraTypeBean>>() {
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (!TextUtils.isEmpty(e.getMessage())) {
+                    ToastUtils.show(e.getMessage());
+                }
+            }
+
+            @Override
+            public void onNext(List<CameraTypeBean> list) {
+                super.onNext(list);
+                cameraTypeList.clear();
+                cameraTypeList.addAll(list);
+            }
+        });
+        Params params1 = new Params();
+        params1.put("dictType", "camera_actuality");
+        getDictTypeRequest.setParams(params1);
+        getDictTypeRequest.execute(new ProcessErrorSubscriber<List<CameraTypeBean>>() {
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (!TextUtils.isEmpty(e.getMessage())) {
+                    ToastUtils.show(e.getMessage());
+                }
+            }
+
+            @Override
+            public void onNext(List<CameraTypeBean> list) {
+                super.onNext(list);
+                cameraTypeList2.clear();
+                cameraTypeList2.addAll(list);
+            }
+        });
         requestListRefresh();
 //        LocationUtils.getInstance().startLocation(true, new LocationUtils.OnLocationListener() {
 //            @Override
@@ -204,7 +263,23 @@ public class MonitoringCenterActivity extends BaseActivity {
 //                cameraList();
 //            }
 //        });
-
+//        showLoadingDialog();
+//        cameraTypeListRequest.execute(new ProcessErrorSubscriber() {
+//            @Override
+//            public void onError(Throwable e) {
+//                super.onError(e);
+//                hideLoadingDialog(LoadingDialog.LOADING_FAILED);
+//                if (!TextUtils.isEmpty(e.getMessage())) {
+//                    ToastUtils.show(e.getMessage());
+//                }
+//            }
+//
+//            @Override
+//            public void onNext(Object o) {
+//                super.onNext(o);
+//                hideLoadingDialog(LoadingDialog.LOADING_SUCCESS);
+//            }
+//        });
         typeList.add(new RightModelBean("camera_type_2", "森林防火", false));
         typeList.add(new RightModelBean("camera_type_4", "病虫害", false));
         typeList.add(new RightModelBean("camera_type_1", "秸秆禁烧", false));
@@ -216,32 +291,55 @@ public class MonitoringCenterActivity extends BaseActivity {
     }
 
     private void requestListRefresh() {
+
+
         currentPage = 1;
         Params params = new Params();
         params.put("cameraName", viewModel.keyword.get());
         params.put("pageNum", currentPage);
-        params.put("deptId", AppTools.getDeptId());
-        if (titleName.equals("数字公安")) {
-            params.put("type", "11");
-        } else {
-            params.put("type", "1,2,3,4,5,6,7,8,9,10,11,12");
-        }
-        params.put("pageSize", 20);
+
+        params.put("pageSize", 10);
         cameraListRequest.setParams(params);
-        cameraListRequest.execute(new ProcessErrorSubscriber<List<CameraBean>>() {
+        cameraListRequest.execute(new ProcessErrorSubscriber<AllCameraBean>() {
             @Override
             public void onError(Throwable e) {
                 super.onError(e);
                 finishRefreshOrLoadMore(binding.smartRefreshLayout);
             }
 
+            @RequiresApi(api = Build.VERSION_CODES.N)
             @Override
-            public void onNext(List<CameraBean> beanList) {
+            public void onNext(AllCameraBean beanList) {
                 super.onNext(beanList);
                 list.clear();
-                if (beanList != null && beanList.size() > 0) {
-                    list.addAll(beanList);
+                if (beanList != null && beanList.getRows().size() > 0) {
+
+                    list.addAll(beanList.getRows());
+                    for (Iterator<AllCameraBean.Rows> iterator = list.iterator(); iterator.hasNext(); ) {
+                        AllCameraBean.Rows bean = iterator.next();
+                        for (int i = 0; i < cameraTypeList.size(); i++) {
+
+
+                            if (bean.getCameraType().equals(cameraTypeList.get(i).getDictValue())) { // 例如,我们想修改名为"Banana"的元素的value属性
+                                bean.setCameraType(cameraTypeList.get(i).getDictLabel()); // 修改value属性
+                            }
+                        }
+                    }
+
+                    for (Iterator<AllCameraBean.Rows> iterator = list.iterator(); iterator.hasNext(); ) {
+                        AllCameraBean.Rows bean = iterator.next();
+                        for (int i = 0; i < cameraTypeList2.size(); i++) {
+
+
+                            if (bean.getCameraActuality().equals(cameraTypeList2.get(i).getDictValue())) { // 例如,我们想修改名为"Banana"的元素的value属性
+                                bean.setCameraActuality(cameraTypeList2.get(i).getDictLabel()); // 修改value属性
+                            }
+                        }
+                    }
+
+
                 }
+
                 adapter.refreshList(list);
                 finishRefreshOrLoadMore(binding.smartRefreshLayout);
             }
@@ -251,16 +349,11 @@ public class MonitoringCenterActivity extends BaseActivity {
     private void requestListLoadMore() {
         Params params = new Params();
         params.put("cameraName", viewModel.keyword.get());
-        params.put("pageSize", 20);
-        params.put("deptId", AppTools.getDeptId());
-        if (titleName.equals("数字公安")) {
-            params.put("type", "11");
-        } else {
-            params.put("type", "1,2,3,4,5,6,7,8,9,10,11,12");
-        }
+        params.put("pageSize", 10);
+
         params.put("pageNum", currentPage + 1);
         cameraListRequest.setParams(params);
-        cameraListRequest.execute(new ProcessErrorSubscriber<List<CameraBean>>() {
+        cameraListRequest.execute(new ProcessErrorSubscriber<AllCameraBean>() {
             @Override
             public void onError(Throwable e) {
                 super.onError(e);
@@ -268,11 +361,31 @@ public class MonitoringCenterActivity extends BaseActivity {
             }
 
             @Override
-            public void onNext(List<CameraBean> beanList) {
+            public void onNext(AllCameraBean beanList) {
                 super.onNext(beanList);
-                if (beanList != null && beanList.size() > 0) {
+                if (beanList != null && beanList.getRows().size() > 0) {
                     currentPage = currentPage + 1;
-                    list.addAll(beanList);
+                    list.addAll(beanList.getRows());
+                    for (Iterator<AllCameraBean.Rows> iterator = list.iterator(); iterator.hasNext(); ) {
+                        AllCameraBean.Rows bean = iterator.next();
+                        for (int i = 0; i < cameraTypeList.size(); i++) {
+
+
+                            if (bean.getCameraType().equals(cameraTypeList.get(i).getDictValue())) { // 例如,我们想修改名为"Banana"的元素的value属性
+                                bean.setCameraType(cameraTypeList.get(i).getDictLabel()); // 修改value属性
+                            }
+                        }
+                    }
+                    for (Iterator<AllCameraBean.Rows> iterator = list.iterator(); iterator.hasNext(); ) {
+                        AllCameraBean.Rows bean = iterator.next();
+                        for (int i = 0; i < cameraTypeList2.size(); i++) {
+
+
+                            if (bean.getCameraActuality().equals(cameraTypeList2.get(i).getDictValue())) { // 例如,我们想修改名为"Banana"的元素的value属性
+                                bean.setCameraActuality(cameraTypeList2.get(i).getDictLabel()); // 修改value属性
+                            }
+                        }
+                    }
                     adapter.refreshList(list);
                 }
                 finishRefreshOrLoadMore(binding.smartRefreshLayout);

+ 62 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/viewModel/PlayViewModel.java

@@ -0,0 +1,62 @@
+package com.sjkj.appthreefloor_tsgz.activity.viewModel;
+
+import androidx.databinding.ObservableArrayList;
+import androidx.databinding.ObservableField;
+import androidx.databinding.ObservableInt;
+
+import com.sjkj.appthreefloor_tsgz.bean.EventBean;
+import com.sjkj.appthreefloor_tsgz.map.MapMarkBean;
+import com.sjkj.base_lib.view.SingleLiveData;
+import com.sjkj.base_lib.vm.BaseViewModel;
+
+import java.util.List;
+
+public class PlayViewModel extends BaseViewModel {
+    public ObservableField<String> NameValues = new ObservableField<>();
+    public ObservableInt version = new ObservableInt();
+    public ObservableField<List<String>> EventPhones = new ObservableField<>();
+    public ObservableField<List<MapMarkBean>> markListBean = new ObservableField<>();
+    public ObservableField<String> title = new ObservableField<>("");
+    public ObservableField<String> address = new ObservableField<>("");
+    public ObservableField<String> eventCode = new ObservableField<>("");
+    public ObservableField<String> eventId = new ObservableField<>("");
+    public ObservableField<String> keyword = new ObservableField<>("");
+    public ObservableField<String> state = new ObservableField<>("");
+    public ObservableField<String> eventType = new ObservableField<>("");
+    public ObservableField<String> eventTypeValue1 = new ObservableField<>("");
+    public ObservableField<String> eventTypeValue2 = new ObservableField<>("");
+    public ObservableField<String> eventTypeValue3 = new ObservableField<>("");
+    public ObservableField<String> eventTypeValuEName = new ObservableField<>("");
+    public ObservableField<String> eventTypeName2 = new ObservableField<>("");
+    public ObservableField<String> deptId = new ObservableField<>("");
+    public ObservableField<String> deptName = new ObservableField<>("");
+    public ObservableField<String> ChildDeptId = new ObservableField<>("");
+    public ObservableField<String> ChildDeptName = new ObservableField<>("");
+    public ObservableField<String> eventStatus = new ObservableField<>("");
+    public ObservableField<String> eventStatusValue = new ObservableField<>("");
+    public ObservableField<String> eventTypeValue = new ObservableField<>("");
+    public ObservableField<String> satrtTime = new ObservableField<>("");
+    public ObservableField<String> endTime = new ObservableField<>("");
+    public ObservableField<String> time = new ObservableField<>("");
+    public ObservableField<String> position = new ObservableField<>("定位中...");
+    public ObservableField<Double> longitude = new ObservableField<>(0.00);
+    public ObservableField<Double> latitude = new ObservableField<>(0.00);
+    public ObservableField<String> escalation = new ObservableField<>("");
+    public ObservableField<String> webUrl = new ObservableField<>("");
+    public ObservableField<String> userName = new ObservableField<>("");
+    public ObservableField<String> userId = new ObservableField<>("");
+    public ObservableField<String> from = new ObservableField<>("");
+    public ObservableField<String> fromName = new ObservableField<>("");
+    public ObservableField<String> content = new ObservableField<>("");
+    public ObservableField<String> windDirection = new ObservableField<>("");
+    public ObservableArrayList<String> fileList = new ObservableArrayList<>();
+    public ObservableField<String> fromAddress = new ObservableField<>("");
+    public ObservableField<String> toAddress = new ObservableField<>("");
+    //public ObservableField<String> eventTypeValue = new ObservableField<>("");
+
+    public SingleLiveData<EventBean> singleLiveData = new SingleLiveData<>();
+
+    public void getData() {
+        singleLiveData.setValue(null);
+    }
+}

+ 34 - 4
app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/CameraAdapter.java

@@ -2,21 +2,27 @@ package com.sjkj.appthreefloor_tsgz.adapter;
 
 
 import android.content.Context;
+import android.graphics.Color;
+import android.util.TypedValue;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
 
 import com.sjkj.appthreefloor_tsgz.R;
+import com.sjkj.appthreefloor_tsgz.bean.AllCameraBean;
 import com.sjkj.appthreefloor_tsgz.databinding.ItemCameraListLayoutBinding;
 import com.sjkj.base_lib.adapter.BaseRecAdapter;
-import com.sjkj.base_lib.camera.dh.bean.CameraBean;
 
+import java.util.ArrayList;
 import java.util.List;
 
-public class CameraAdapter extends BaseRecAdapter<CameraBean, ItemCameraListLayoutBinding> {
+public class CameraAdapter extends BaseRecAdapter<AllCameraBean.Rows, ItemCameraListLayoutBinding> {
 
     public CameraAdapter(Context context) {
         super(context);
     }
 
-    public CameraAdapter(Context context, List<CameraBean> list) {
+    public CameraAdapter(Context context, List<AllCameraBean.Rows> list) {
         super(context, list);
     }
 
@@ -26,8 +32,32 @@ public class CameraAdapter extends BaseRecAdapter<CameraBean, ItemCameraListLayo
     }
 
     @Override
-    protected void onBindItem(ItemCameraListLayoutBinding binding, CameraBean listBean, int position) {
+    protected void onBindItem(ItemCameraListLayoutBinding binding, AllCameraBean.Rows listBean, int position) {
         binding.setBean(listBean);
         binding.executePendingBindings();
+        List<String> list=new ArrayList();
+        list.add("林业");
+        list.add("林业");
+        list.add("林业");
+        list.add("林业");
+        list.add("林业");
+        list.add("林业");
+        list.add("林业");
+        list.add("林业");
+        list.add("林业");
+        list.add("林业");
+        binding.recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
+        MyAdapter adapter = new MyAdapter(list); // items是你的数据源
+        binding.recyclerView.setAdapter(adapter);
+
+//        for (String text : textArray) {
+//            TextView textView = new TextView(context);
+//            textView.setText(text);
+//            textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); // 设置文本大小
+//            textView.setTextColor(Color.BLACK); // 设置文本颜色
+//            // 可选:设置TextView的padding或margin等
+//            textView.setPadding(10, 0, 10, 0); // 设置左右padding为10dp,上下为0dp
+//            binding.llTitle.addView(textView); // 将TextView添加到LinearLayout中
+//        }
     }
 }

+ 44 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/MyAdapter.java

@@ -0,0 +1,44 @@
+package com.sjkj.appthreefloor_tsgz.adapter;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.sjkj.appthreefloor_tsgz.R;
+
+import java.util.List;
+
+public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
+    private List<String> items;
+
+    public MyAdapter(List<String> items) {
+        this.items = items;
+    }
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        holder.textView.setText(items.get(position));
+    }
+
+    @Override
+    public int getItemCount() {
+        return items.size();
+    }
+
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        public TextView textView;
+        public ViewHolder(View itemView) {
+            super(itemView);
+            textView = itemView.findViewById(R.id.textView); // 假设你的item布局中有一个TextView,id为textView
+        }
+    }
+}

+ 97 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/AllCameraBean.java

@@ -0,0 +1,97 @@
+package com.sjkj.appthreefloor_tsgz.bean;
+
+import java.util.List;
+
+public class AllCameraBean {
+
+    private List<Rows> rows;
+    private int total;
+    public void setRows(List<Rows> rows) {
+        this.rows = rows;
+    }
+    public List<Rows> getRows() {
+        return rows;
+    }
+
+    public void setTotal(int total) {
+        this.total = total;
+    }
+    public int getTotal() {
+        return total;
+    }
+    public class Rows {
+
+        private String address;
+        private String cameraActuality;
+        private String cameraName;
+        private String cameraRadius;
+        private String cameraType;
+        private String id;
+        private String latitude;
+        private String longitude;
+        private List<String> tags;
+        public void setAddress(String address) {
+            this.address = address;
+        }
+        public String getAddress() {
+            return address;
+        }
+
+        public void setCameraActuality(String cameraActuality) {
+            this.cameraActuality = cameraActuality;
+        }
+        public String getCameraActuality() {
+            return cameraActuality;
+        }
+
+        public void setCameraName(String cameraName) {
+            this.cameraName = cameraName;
+        }
+        public String getCameraName() {
+            return cameraName;
+        }
+
+        public void setCameraRadius(String cameraRadius) {
+            this.cameraRadius = cameraRadius;
+        }
+        public String getCameraRadius() {
+            return cameraRadius;
+        }
+
+        public void setCameraType(String cameraType) {
+            this.cameraType = cameraType;
+        }
+        public String getCameraType() {
+            return cameraType;
+        }
+
+        public void setId(String id) {
+            this.id = id;
+        }
+        public String getId() {
+            return id;
+        }
+
+        public void setLatitude(String latitude) {
+            this.latitude = latitude;
+        }
+        public String getLatitude() {
+            return latitude;
+        }
+
+        public void setLongitude(String longitude) {
+            this.longitude = longitude;
+        }
+        public String getLongitude() {
+            return longitude;
+        }
+
+        public void setTags(List<String> tags) {
+            this.tags = tags;
+        }
+        public List<String> getTags() {
+            return tags;
+        }
+
+    }
+}

+ 22 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/CameraTypeBean.java

@@ -0,0 +1,22 @@
+package com.sjkj.appthreefloor_tsgz.bean;
+
+public class CameraTypeBean {
+   private String dictLabel;
+   private String dictValue;
+
+    public String getDictLabel() {
+        return dictLabel;
+    }
+
+    public void setDictLabel(String dictLabel) {
+        this.dictLabel = dictLabel;
+    }
+
+    public String getDictValue() {
+        return dictValue;
+    }
+
+    public void setDictValue(String dictValue) {
+        this.dictValue = dictValue;
+    }
+}

+ 21 - 5
app/src/main/java/com/sjkj/appthreefloor_tsgz/fragment/EventFragment.java

@@ -44,6 +44,7 @@ import com.sjkj.base_lib.adapter.BaseRecAdapter;
 import com.sjkj.base_lib.entity.Params;
 import com.sjkj.base_lib.net.domain.interactor.ProcessErrorSubscriber;
 import com.sjkj.base_lib.utils.Constants;
+import com.sjkj.base_lib.utils.ToastUtils;
 import com.sjkj.base_lib.view.BaseFragment;
 import com.sjkj.base_lib.weight.LoadingDialog;
 
@@ -93,11 +94,11 @@ public class EventFragment extends BaseFragment /*implements View.OnClickListene
         return binding.getRoot();
     }
 
+
     @Override
     public void initView() {
         ImmersionBar.with(this).titleBar(binding.toolbar)
                 .init();
-
         ViewGroup.LayoutParams params = binding.toolbar.getLayoutParams();
         params.height = ImmersionBar.getStatusBarHeight(this);
         binding.toolbar.setLayoutParams(params);
@@ -214,16 +215,28 @@ public class EventFragment extends BaseFragment /*implements View.OnClickListene
 
                     }
 
+                } else {
+                    ToastUtils.show("暂无数据");
                 }
-                /*else {
-                   ToastUtils.show("暂无数据");
-                }*/
                 adapter.refreshList(eventItemList);
             }
         });
 
     }
 
+
+    @Override
+    public void setMenuVisibility(final boolean visible) {
+        super.setMenuVisibility(visible);
+        if (visible) {
+            // Fragment菜单变得可见时的操作
+            requestListRefresh();
+        } else {
+            // Fragment菜单变得不可见时的操作
+        }
+    }
+
+
     private void requestListLoadMore() {
         showLoadingDialog();
         Params params = new Params();
@@ -274,6 +287,8 @@ public class EventFragment extends BaseFragment /*implements View.OnClickListene
 
                         }
 
+                    } else {
+                        ToastUtils.show("暂无数据");
                     }
                     adapter.refreshList(eventItemList);
 
@@ -284,6 +299,7 @@ public class EventFragment extends BaseFragment /*implements View.OnClickListene
         });
     }
 
+
     @Override
     public void initListener() {
         binding.ivSerch.setOnClickListener(new View.OnClickListener() {
@@ -389,7 +405,7 @@ public class EventFragment extends BaseFragment /*implements View.OnClickListene
         viewModel.satrtTime.set("2011-05-26");
         viewModel.endTime.set("2026-05-26");
         viewModel.eventStatusValue.set("20");
-        requestListRefresh();
+
     }
 
 

+ 1 - 1
app/src/main/java/com/sjkj/appthreefloor_tsgz/fragment/MainFragment.java

@@ -69,7 +69,7 @@ public class MainFragment extends BaseFragment {
             @Override
             public void onClick(View view) {
 
-                startActivity(new Intent(getActivity(), ExoPlayerActivity.class));
+
             }
         });
         //水鹤

+ 3 - 3
app/src/main/java/com/sjkj/appthreefloor_tsgz/net/CameraAllListRequest.java

@@ -2,7 +2,7 @@ package com.sjkj.appthreefloor_tsgz.net;
 
 import android.content.Context;
 
-import com.sjkj.base_lib.camera.dh.bean.CameraBean;
+import com.sjkj.appthreefloor_tsgz.bean.AllCameraBean;
 import com.sjkj.base_lib.entity.Params;
 import com.sjkj.base_lib.entity.ResponseBean;
 import com.sjkj.base_lib.net.RetrofitFactory;
@@ -39,9 +39,9 @@ public class CameraAllListRequest extends UseCase {
 
     @Override
     protected Observable buildUseCaseObservable() {
-        return service.cameraAllList(params).flatMap(new Func1<ResponseBean<List<CameraBean>>, Observable<List<CameraBean>>>() {
+        return service.cameraAllList(params).flatMap(new Func1<ResponseBean<AllCameraBean>, Observable<AllCameraBean>>() {
             @Override
-            public Observable<List<CameraBean>> call(ResponseBean<List<CameraBean>> responseBean) {
+            public Observable<AllCameraBean> call(ResponseBean<AllCameraBean> responseBean) {
                 if (!ResponseBean.CODE_SUCCESS.
                         equals(responseBean.getCode())) {
                     return Observable.error(new BusinessException(responseBean.getMsg()));

+ 51 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/net/CameraTypeListRequest.java

@@ -0,0 +1,51 @@
+package com.sjkj.appthreefloor_tsgz.net;
+
+import android.content.Context;
+
+import com.sjkj.appthreefloor_tsgz.bean.AllCameraBean;
+import com.sjkj.base_lib.entity.Params;
+import com.sjkj.base_lib.entity.ResponseBean;
+import com.sjkj.base_lib.net.RetrofitFactory;
+import com.sjkj.base_lib.net.data.exception.BusinessException;
+import com.sjkj.base_lib.net.domain.interactor.UseCase;
+import com.sjkj.base_lib.utils.AppTools;
+
+import rx.Observable;
+import rx.functions.Func1;
+
+/**
+ *
+ */
+public class CameraTypeListRequest extends UseCase {
+    private Context context;
+    private RetrofitService service;
+
+    private Params params;
+
+    public Params getParams() {
+        return params;
+    }
+
+    public void setParams(Params params) {
+        this.params = params;
+    }
+
+    public CameraTypeListRequest(Context context) {
+        this.context = context;
+        service = RetrofitFactory.getRetrofit(AppTools.getBaseUrl()).create(RetrofitService.class);
+    }
+
+    @Override
+    protected Observable buildUseCaseObservable() {
+        return service.cameraTypeList().flatMap(new Func1<ResponseBean<AllCameraBean>, Observable<AllCameraBean>>() {
+            @Override
+            public Observable<AllCameraBean> call(ResponseBean<AllCameraBean> responseBean) {
+                if (!ResponseBean.CODE_SUCCESS.
+                        equals(responseBean.getCode())) {
+                    return Observable.error(new BusinessException(responseBean.getMsg()));
+                }
+                return Observable.just(responseBean.getData());
+            }
+        });
+    }
+}

+ 53 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/net/GetDictTypeRequest.java

@@ -0,0 +1,53 @@
+package com.sjkj.appthreefloor_tsgz.net;
+
+import android.content.Context;
+
+import com.sjkj.appthreefloor_tsgz.bean.CameraTypeBean;
+import com.sjkj.base_lib.entity.Params;
+import com.sjkj.base_lib.entity.ResponseBean;
+import com.sjkj.base_lib.net.RetrofitFactory;
+import com.sjkj.base_lib.net.data.exception.BusinessException;
+import com.sjkj.base_lib.net.domain.interactor.UseCase;
+import com.sjkj.base_lib.utils.AppTools;
+
+import java.util.List;
+
+import rx.Observable;
+import rx.functions.Func1;
+
+/**
+ * 获取摄像头类型字典项
+ */
+public class GetDictTypeRequest extends UseCase {
+    private Context context;
+    private RetrofitService service;
+
+    private Params params;
+
+    public Params getParams() {
+        return params;
+    }
+
+    public void setParams(Params params) {
+        this.params = params;
+    }
+
+    public GetDictTypeRequest(Context context) {
+        this.context = context;
+        service = RetrofitFactory.getRetrofit(AppTools.getBaseUrl()).create(RetrofitService.class);
+    }
+
+    @Override
+    protected Observable buildUseCaseObservable() {
+        return service.GetdictType(params).flatMap(new Func1<ResponseBean<List<CameraTypeBean>>, Observable<List<CameraTypeBean>>>() {
+            @Override
+            public Observable<List<CameraTypeBean>> call(ResponseBean<List<CameraTypeBean>> responseBean) {
+                if (!ResponseBean.CODE_SUCCESS.
+                        equals(responseBean.getCode())) {
+                    return Observable.error(new BusinessException(responseBean.getMsg()));
+                }
+                return Observable.just(responseBean.getData());
+            }
+        });
+    }
+}

+ 12 - 3
app/src/main/java/com/sjkj/appthreefloor_tsgz/net/RetrofitService.java

@@ -1,8 +1,10 @@
 package com.sjkj.appthreefloor_tsgz.net;
 
+import com.sjkj.appthreefloor_tsgz.bean.AllCameraBean;
 import com.sjkj.appthreefloor_tsgz.bean.AppEventBean;
 import com.sjkj.appthreefloor_tsgz.bean.AppEventThreeBean;
 import com.sjkj.appthreefloor_tsgz.bean.BannerDataBean;
+import com.sjkj.appthreefloor_tsgz.bean.CameraTypeBean;
 import com.sjkj.appthreefloor_tsgz.bean.CommonDateBean;
 import com.sjkj.appthreefloor_tsgz.bean.DailyBean;
 import com.sjkj.appthreefloor_tsgz.bean.EventCenterListBean;
@@ -16,7 +18,6 @@ import com.sjkj.appthreefloor_tsgz.bean.ResourceVisualizationBean;
 import com.sjkj.appthreefloor_tsgz.bean.ResourcesListBean;
 import com.sjkj.appthreefloor_tsgz.bean.ResureDetailsBean;
 import com.sjkj.appthreefloor_tsgz.bean.VersionBean;
-import com.sjkj.base_lib.camera.dh.bean.CameraBean;
 import com.sjkj.base_lib.entity.Params;
 import com.sjkj.base_lib.entity.ResponseBean;
 
@@ -72,8 +73,12 @@ public interface RetrofitService {
     Observable<ResponseBean<EventCenterListBean>> eventCenterList(@QueryMap Params params);
 
     //监控中心摄像头列表
-    @GET("AppCameraController/listCamera")
-    Observable<ResponseBean<List<CameraBean>>> cameraAllList(@QueryMap Params params);
+    @GET("monitor/cameraList")
+    Observable<ResponseBean<AllCameraBean>> cameraAllList(@QueryMap Params params);
+
+    //监控中心摄像头类型
+    @GET("monitor/cameraTagList")
+    Observable<ResponseBean<AllCameraBean>> cameraTypeList();
 
     //获取数据中心资源落点列表(新)
     @POST("AppBigDataCountController/getResourcePoint")
@@ -115,4 +120,8 @@ public interface RetrofitService {
     //获取个人信息
     @GET("app/profile")
     Observable<ResponseBean<ProFileBean>> GetProfileMessage();
+
+    //获取摄像头类型字典项
+    @GET("app/dictList")
+    Observable<ResponseBean<List<CameraTypeBean>>> GetdictType(@QueryMap Map<String, Object> params);
 }

+ 49 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/utils/DictValueTools.java

@@ -0,0 +1,49 @@
+package com.sjkj.appthreefloor_tsgz.utils;
+
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.sjkj.appthreefloor_tsgz.app.App;
+import com.sjkj.appthreefloor_tsgz.bean.CameraTypeBean;
+import com.sjkj.appthreefloor_tsgz.net.GetDictTypeRequest;
+import com.sjkj.base_lib.entity.Params;
+import com.sjkj.base_lib.net.domain.interactor.ProcessErrorSubscriber;
+import com.sjkj.base_lib.utils.ToastUtils;
+
+import java.util.List;
+
+public class DictValueTools {
+    public static GetDictTypeRequest getDictTypeRequest = new GetDictTypeRequest(App.getInstance());
+    static String value = "";
+
+    public static String getVale(String typeValue, String dictType) {
+        Params params1 = new Params();
+        params1.put("dictType", dictType);
+        getDictTypeRequest.setParams(params1);
+        getDictTypeRequest.execute(new ProcessErrorSubscriber<List<CameraTypeBean>>() {
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (!TextUtils.isEmpty(e.getMessage())) {
+                    ToastUtils.show(e.getMessage());
+                }
+            }
+
+            @Override
+            public void onNext(List<CameraTypeBean> list) {
+                super.onNext(list);
+
+                if (list != null && list.size() > 0) {
+                    for (int i = 0; i < list.size(); i++) {
+                        if (list.get(i).getDictValue().equals(typeValue)) {
+                            value = list.get(i).getDictLabel();
+                            Log.d("zhr111", value);
+                        }
+
+                    }
+                }
+            }
+        });
+        return value;
+    }
+}

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


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


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


+ 9 - 0
app/src/main/res/drawable/rounded_30eeeff4.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#EEEFF4"/> <!-- 背景颜色 -->
+    <corners
+        android:topLeftRadius="30dp"
+        android:topRightRadius="30dp"
+        android:bottomLeftRadius="30dp"
+        android:bottomRightRadius="30dp"/>
+</shape>

+ 6 - 0
app/src/main/res/drawable/shape_5af3b8_corners_10dp.xml

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

+ 5 - 0
app/src/main/res/drawable/shape_corners.xml

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

+ 29 - 17
app/src/main/res/layout/activity_camera_list.xml

@@ -9,12 +9,24 @@
     </data>
 
     <LinearLayout
+        android:background="#ECEDF4"
         android:focusable="true"
         android:focusableInTouchMode="true"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="vertical">
 
+        <androidx.appcompat.widget.Toolbar
+            android:id="@+id/toolbar"
+            android:layout_width="match_parent"
+            android:layout_height="?actionBarSize"
+            android:fitsSystemWindows="true"
+            android:gravity="center_horizontal">
+
+
+        </androidx.appcompat.widget.Toolbar>
+
+
         <androidx.drawerlayout.widget.DrawerLayout
             android:id="@+id/drawerLayout"
             android:layout_width="match_parent"
@@ -32,26 +44,26 @@
                     android:layout_height="wrap_content"
                     android:orientation="horizontal"
                     android:padding="12dp"
-                    android:visibility="visible">
+                    android:visibility="gone">
 
                     <EditText
                         android:id="@+id/input_et"
-                android:layout_width="match_parent"
-                android:layout_height="30dp"
-                android:layout_weight="1"
-                android:background="@drawable/shape_bg_gray_input"
-                android:drawableLeft="@drawable/icon_search"
-                android:drawablePadding="5dp"
-                android:ellipsize="end"
-                android:hint="@string/input_content"
-                android:lines="1"
-                android:paddingLeft="10dp"
-                android:paddingRight="10dp"
-                android:singleLine="true"
-                android:text="@={viewModel.keyword}"
-                android:textColor="@color/color_black_text"
-                android:textColorHint="@color/color_gray_light_text"
-                android:textSize="12dp" />
+                        android:layout_width="match_parent"
+                        android:layout_height="44dp"
+                        android:layout_weight="1"
+                        android:background="@drawable/shape_bg_white_input"
+                        android:drawableLeft="@drawable/icon_search"
+                        android:drawablePadding="5dp"
+                        android:ellipsize="end"
+                        android:hint="请输入摄像头名称"
+                        android:lines="1"
+                        android:paddingLeft="10dp"
+                        android:paddingRight="10dp"
+                        android:singleLine="true"
+                        android:text="@={viewModel.keyword}"
+                        android:textColor="@color/color_black_text"
+                        android:textColorHint="@color/color_gray_light_text"
+                        android:textSize="12dp" />
 
             <TextView
                 android:id="@+id/search_tv"

+ 167 - 28
app/src/main/res/layout/item_camera_list_layout.xml

@@ -5,47 +5,186 @@
 
         <variable
             name="bean"
-            type="com.sjkj.base_lib.camera.dh.bean.CameraBean" />
+            type="com.sjkj.appthreefloor_tsgz.bean.AllCameraBean.Rows" />
     </data>
 
     <LinearLayout
-        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:gravity="center_vertical"
-        android:padding="10dp">
+        android:layout_marginLeft="15dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginRight="15dp"
+        android:layout_width="match_parent"
+        android:background="@drawable/shape_common_corners_10dp"
+        android:orientation="vertical">
 
-        <ImageView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:src="@drawable/icon_camera" />
 
         <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:gravity="center_vertical"
+            android:layout_height="90dp"
             android:layout_marginLeft="10dp"
-            android:orientation="vertical">
+            android:orientation="horizontal">
 
-            <TextView
-                android:layout_gravity="center_vertical"
-                android:layout_width="match_parent"
+            <LinearLayout
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:text="@{bean.cameraName}"
-                android:textColor="@color/color_black_3"
-                android:textSize="16dp" />
-
-<!--            <TextView-->
-<!--                android:layout_width="match_parent"-->
-<!--                android:layout_height="wrap_content"-->
-<!--                android:layout_marginTop="6dp"-->
-<!--                android:gravity="center_vertical"-->
-<!--                android:text='@{bean.distance+"km"}'-->
-<!--                android:textColor="@color/color_black_3"-->
-<!--                android:textSize="14dp" />-->
+                android:layout_marginLeft="10dp"
+                android:layout_marginTop="10dp"
+                android:background="@drawable/shape_corners"
+                android:padding="10dp">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_vertical"
+                    android:background="@drawable/icon_camear" />
+
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginTop="10dp"
+                android:layout_marginRight="15dp"
+                android:orientation="vertical">
+
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="10dp"
+                    android:ellipsize="end"
+                    android:singleLine="true"
+                    android:text="@{bean.cameraName}"
+                    android:textColor="@color/black"
+                    android:textSize="14dp" />
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="10dp"
+                    android:layout_marginTop="7dp"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="类型:"
+                        android:textColor="#AAAAAA"
+                        android:textSize="12dp" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="@{bean.cameraType}"
+                        android:textColor="#32465E"
+                        android:textSize="12dp" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="类型:"
+                        android:textColor="#AAAAAA"
+                        android:textSize="12dp" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="@{bean.cameraActuality}"
+                        android:textColor="#32465E"
+                        android:textSize="12dp" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="范围:"
+                        android:textColor="#AAAAAA"
+                        android:textSize="12dp" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text='@{bean.cameraRadius+"km"}'
+                        android:textColor="#32465E"
+                        android:textSize="12dp" />
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_title"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="10dp"
+                    android:layout_marginTop="7dp"
+                    android:orientation="horizontal">
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/recyclerView"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content">
+
+                    </androidx.recyclerview.widget.RecyclerView>
+
+                </LinearLayout>
+            </LinearLayout>
+
+
         </LinearLayout>
 
+        <View
+
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginTop="5dp"
+            android:layout_marginLeft="15dp"
+            android:layout_marginRight="15dp"
+            android:background="#D8D8D8" />
+
 
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:layout_marginLeft="15dp">
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentLeft="true"
+                android:layout_centerVertical="true"
+                android:layout_toLeftOf="@+id/iv_next"
+                android:background="@drawable/rounded_30eeeff4"
+                android:orientation="horizontal"
+                android:padding="3dp">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:layout_gravity="center_vertical"
+                    android:layout_marginLeft="5dp"
+                    android:background="@drawable/icon_address" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="5dp"
+                    android:layout_marginRight="10dp"
+                    android:text="@{bean.address}"
+                    android:textColor="#32465E"
+                    android:textSize="12dp" />
+            </LinearLayout>
+
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginRight="15dp"
+                android:background="@drawable/icon_camear_next" />
+        </RelativeLayout>
     </LinearLayout>
 </layout>

+ 23 - 0
app/src/main/res/layout/item_view.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+
+    <TextView
+
+        android:id="@+id/textView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical|center_horizontal"
+        android:layout_marginRight="8dp"
+        android:background="@drawable/shape_5af3b8_corners_10dp"
+        android:gravity="center_vertical|center_horizontal"
+        android:paddingLeft="10dp"
+        android:paddingTop="3dp"
+        android:paddingRight="10dp"
+        android:paddingBottom="3dp"
+        android:textColor="#00F0B9"
+        android:textSize="12dp">
+
+    </TextView>
+</LinearLayout>

+ 30 - 18
app/src/main/res/layout/player_activity.xml

@@ -1,22 +1,34 @@
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
+<?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="match_parent">
+    <data>
 
-    <com.google.android.exoplayer2.ui.PlayerView
-        android:id="@+id/player_view"
+        <variable
+            name="viewModel"
+            type="com.sjkj.appthreefloor_tsgz.activity.viewModel.PlayViewModel" />
+    </data>
+
+    <RelativeLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_height="match_parent">
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+            <com.google.android.exoplayer2.ui.PlayerView
+                android:id="@+id/player_view"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
 
-    <Button
-        android:id="@+id/fullscreen_button"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:layout_centerHorizontal="true"
-        android:text="全屏" />
-  </RelativeLayout>
-</RelativeLayout>
+            <Button
+                android:id="@+id/fullscreen_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentBottom="true"
+                android:layout_centerHorizontal="true"
+                android:text="全屏"
+                android:visibility="gone" />
+        </RelativeLayout>
+    </RelativeLayout>
+</layout>

+ 3 - 3
base-lib/src/main/java/com/sjkj/base_lib/adapter/BaseRecAdapter.java

@@ -61,9 +61,9 @@ public abstract class BaseRecAdapter<T, B extends ViewDataBinding> extends Recyc
     public void refreshList(List<T> list) {
         this.list = list;
         notifyDataSetChanged();
-        if (this.list == null || this.list.size() <= 0) {
-            ToastUtils.show("暂无更多数据");
-        }
+//        if (this.list == null || this.list.size() <= 0) {
+//            ToastUtils.show("暂无更多数据");
+//        }
     }
 
     public void refreshList(List<T> list, boolean isEdit) {

+ 5 - 0
base-lib/src/main/res/drawable/shape_bg_white_input.xml

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

+ 1 - 1
config.gradle

@@ -3,7 +3,7 @@ ext {
     android = [
             applicationId    : "com.sjkj.appthreefloor_tsgz",
             minSdkVersion    : 21,
-            targetSdkVersion : 31,
+            targetSdkVersion : 30,
             compileSdkVersion: 30,
             versionCode      : 10000,
             versionName      : "1.0.0",