zhanghongrui 2 semanas atrás
pai
commit
0f34e0e612
73 arquivos alterados com 1546 adições e 416 exclusões
  1. 11 5
      app/build.gradle
  2. BIN
      app/libs/comprehensive-lib-release.aar
  3. 7 2
      app/src/main/AndroidManifest.xml
  4. 80 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/ExoPlayerActivity.java
  5. 25 8
      app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/MainActivity.java
  6. 55 32
      app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/MonitoringCenterActivity.java
  7. 29 34
      app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/WaterCraneResourcesActivity.java
  8. 51 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/DrawerAdapter.java
  9. 102 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/RightAdapter.java
  10. 15 14
      app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/ViewPagerAdapter.java
  11. 2 3
      app/src/main/java/com/sjkj/appthreefloor_tsgz/app/App.java
  12. 29 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/DrawerItem.java
  13. 43 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/RightModelBean.java
  14. 21 21
      app/src/main/java/com/sjkj/appthreefloor_tsgz/fragment/EventFragment.java
  15. 8 2
      app/src/main/java/com/sjkj/appthreefloor_tsgz/fragment/MainFragment.java
  16. 2 6
      app/src/main/java/com/sjkj/appthreefloor_tsgz/login/LoginActivity.java
  17. 1 2
      app/src/main/java/com/sjkj/appthreefloor_tsgz/utils/AppSystemUtils.java
  18. 664 0
      app/src/main/java/com/sjkj/appthreefloor_tsgz/utils/MyVideoView.java
  19. 5 5
      app/src/main/java/com/sjkj/appthreefloor_tsgz/web/WebViewActivity.java
  20. BIN
      app/src/main/res/drawable-xxhdpi/icon_arrow_right.png
  21. BIN
      app/src/main/res/drawable-xxhdpi/icon_banner.png
  22. BIN
      app/src/main/res/drawable-xxhdpi/icon_bg.png
  23. BIN
      app/src/main/res/drawable-xxhdpi/icon_camera.png
  24. BIN
      app/src/main/res/drawable-xxhdpi/icon_enent_select.png
  25. BIN
      app/src/main/res/drawable-xxhdpi/icon_event.png
  26. BIN
      app/src/main/res/drawable-xxhdpi/icon_home.png
  27. BIN
      app/src/main/res/drawable-xxhdpi/icon_home_select.png
  28. BIN
      app/src/main/res/drawable-xxhdpi/icon_hu.png
  29. BIN
      app/src/main/res/drawable-xxhdpi/icon_intake.png
  30. BIN
      app/src/main/res/drawable-xxhdpi/icon_me.png
  31. BIN
      app/src/main/res/drawable-xxhdpi/icon_me_select.png
  32. BIN
      app/src/main/res/drawable-xxhdpi/icon_more.png
  33. BIN
      app/src/main/res/drawable-xxhdpi/icon_notice.png
  34. BIN
      app/src/main/res/drawable-xxhdpi/icon_noticebg.png
  35. BIN
      app/src/main/res/drawable-xxhdpi/icon_sensor.png
  36. BIN
      app/src/main/res/drawable-xxhdpi/icon_title.png
  37. BIN
      app/src/main/res/drawable-xxhdpi/icon_water_crane.png
  38. BIN
      app/src/main/res/drawable-xxhdpi/icon_water_source.png
  39. BIN
      app/src/main/res/drawable-xxhdpi/icon_zanding01.png
  40. BIN
      app/src/main/res/drawable-xxhdpi/icon_zanding02.png
  41. BIN
      app/src/main/res/drawable-xxhdpi/icon_zanding03.png
  42. BIN
      app/src/main/res/drawable-xxhdpi/icon_zanding04.png
  43. BIN
      app/src/main/res/drawable-xxhdpi/icon_zanding05.png
  44. 13 0
      app/src/main/res/drawable/bg_notice.xml
  45. 4 4
      app/src/main/res/drawable/round_corner_top_letf_right.xml
  46. 9 0
      app/src/main/res/drawable/rounded_corners.xml
  47. 6 0
      app/src/main/res/drawable/selector_event.xml
  48. 6 0
      app/src/main/res/drawable/selector_home.xml
  49. 6 0
      app/src/main/res/drawable/selector_me.xml
  50. 5 0
      app/src/main/res/drawable/shape_details_gray_solid_5.xml
  51. 5 0
      app/src/main/res/drawable/shape_screen_blue_solid_5.xml
  52. 58 80
      app/src/main/res/layout/activity_camera_list.xml
  53. 23 0
      app/src/main/res/layout/activity_exo.xml
  54. 24 18
      app/src/main/res/layout/activity_main.xml
  55. 12 12
      app/src/main/res/layout/activity_resource_water_crane.xml
  56. 16 0
      app/src/main/res/layout/activity_right_list_item.xml
  57. 18 0
      app/src/main/res/layout/drawer_item.xml
  58. 13 13
      app/src/main/res/layout/fragment_event.xml
  59. 70 48
      app/src/main/res/layout/fragment_main.xml
  60. 23 0
      app/src/main/res/layout/player_activity.xml
  61. 8 11
      app/src/main/res/menu/bottom_navigation_tab.xml
  62. 4 3
      app/src/main/res/values/colors.xml
  63. 15 0
      app/src/main/res/xml/file_paths.xml
  64. 9 0
      app/src/main/res/xml/network_security_config.xml
  65. 2 2
      base-lib/build.gradle
  66. 0 1
      base-lib/src/main/AndroidManifest.xml
  67. 0 46
      base-lib/src/main/java/com/sjkj/base_lib/utils/PushUtils.java
  68. 13 13
      base-lib/src/main/res/values-night/themes.xml
  69. 1 0
      base-lib/src/main/res/values/colors.xml
  70. 13 13
      base-lib/src/main/res/values/themes.xml
  71. 2 2
      build.gradle
  72. 5 6
      config.gradle
  73. 13 10
      settings.gradle

+ 11 - 5
app/build.gradle

@@ -14,11 +14,7 @@ android {
         ndk {
             abiFilters 'armeabi-v7a','arm64-v8a'
         }
-        manifestPlaceholders = [
-                JPUSH_PKGNAME: rootProject.ext.android.applicationId,
-                JPUSH_APPKEY : rootProject.ext.android.jpush_appkey, //JPush 上注册的包名对应的 Appkey.
-                JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
-        ]
+
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         javaCompileOptions {
             annotationProcessorOptions {
@@ -69,6 +65,16 @@ dependencies {
     implementation 'androidx.navigation:navigation-fragment:2.3.5'
     implementation 'androidx.navigation:navigation-ui:2.3.5'
     implementation 'io.github.youth5201314:banner:2.2.3'
+    implementation 'com.google.android.exoplayer:exoplayer-core:2.19.1'
+    implementation 'com.google.android.exoplayer:exoplayer-ui:2.19.1'
+    // implementation 'com.google.android.exoplayer:exoplayer-dash:latest_version'
+    implementation 'com.google.android.exoplayer:exoplayer-hls:2.19.1'
+    implementation 'com.github.ittianyu:BottomNavigationViewEx:2.0.4'
+    //implementation 'com.android.support:appcompat-v7:28.0.0'
+    //implementation "com.google.android.material:material:1.4.0"
+    //implementation 'com.google.android.material:material:1.1.0'
+
+
 }
 
 

BIN
app/libs/comprehensive-lib-release.aar


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

@@ -43,7 +43,6 @@
     <!-- <uses-permission android:name="android.permission.VIBRATE" /> -->
     <uses-permission android:name="android.permission.NOTIFICATION_SERVICE" />
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
-    <uses-permission android:name="${applicationId}.permission.JPUSH_MESSAGE" />
 
     <application
         android:name="com.sjkj.appthreefloor_tsgz.app.App"
@@ -60,6 +59,7 @@
         <activity
             android:name="com.sjkj.appthreefloor_tsgz.activity.SplashActivity"
             android:noHistory="true"
+            android:exported="true"
             android:theme="@style/SplashTheme">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -116,7 +116,8 @@
             android:screenOrientation="portrait" />
         <activity
             android:name="com.sjkj.appthreefloor_tsgz.activity.WaterCraneResourcesActivity"
-            android:screenOrientation="portrait" />
+            android:exported='false'
+            android:screenOrientation="fullSensor" />
         <activity
             android:name="com.sjkj.appthreefloor_tsgz.activity.PermissionListActivity"
             android:screenOrientation="portrait" />
@@ -130,5 +131,9 @@
         <activity
             android:name="com.sjkj.appthreefloor_tsgz.activity.MyVideoPlayerActivity"
             android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sjkj.appthreefloor_tsgz.activity.ExoPlayerActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="unspecified" />
     </application>
 </manifest>

+ 80 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/ExoPlayerActivity.java

@@ -0,0 +1,80 @@
+package com.sjkj.appthreefloor_tsgz.activity;
+
+import android.content.pm.ActivityInfo;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.google.android.exoplayer2.ExoPlayer;
+import com.google.android.exoplayer2.MediaItem;
+import com.google.android.exoplayer2.ui.PlayerView;
+import com.sjkj.appthreefloor_tsgz.R;
+
+public class ExoPlayerActivity extends AppCompatActivity {
+    private PlayerView playerView;
+    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);
+
+        initializePlayer();
+
+        fullscreenButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                toggleFullScreen();
+            }
+        });
+    }
+
+    private void initializePlayer() {
+        player = new ExoPlayer.Builder(this).build();
+        playerView.setUseController(false); // 设置为不使用控制器
+        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"));
+        player.setMediaItem(mediaItem);
+        player.prepare();
+        player.play();
+    }
+
+    private void toggleFullScreen() {
+        if (currentOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
+            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+            currentOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
+        } else {
+            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+            currentOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+        }
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        if (player != null) {
+            player.pause();
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (player != null) {
+            player.release();
+            player = null;
+        }
+    }
+
+}

+ 25 - 8
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/MainActivity.java

@@ -4,6 +4,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.util.SparseIntArray;
 import android.view.KeyEvent;
 import android.view.MenuItem;
 import android.widget.Toast;
@@ -11,7 +12,7 @@ import android.widget.Toast;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
 import androidx.lifecycle.ViewModelProvider;
-import androidx.viewpager2.widget.ViewPager2;
+import androidx.viewpager.widget.ViewPager;
 
 import com.google.android.material.bottomnavigation.BottomNavigationView;
 import com.sjkj.appthreefloor_tsgz.R;
@@ -21,8 +22,6 @@ import com.sjkj.appthreefloor_tsgz.databinding.ActivityMainBinding;
 import com.sjkj.appthreefloor_tsgz.fragment.EventFragment;
 import com.sjkj.appthreefloor_tsgz.fragment.MainFragment;
 import com.sjkj.appthreefloor_tsgz.fragment.MineFragment;
-import com.sjkj.base_lib.app.AppManager;
-import com.sjkj.base_lib.utils.ToastUtils;
 import com.sjkj.base_lib.view.BaseActivity;
 
 import java.util.ArrayList;
@@ -35,6 +34,7 @@ public class MainActivity extends BaseActivity {
     private EventFragment eventFragment = new EventFragment();
     private MineFragment mineFragment = new MineFragment();
     private ViewPagerAdapter pagerAdapter;
+    private SparseIntArray items;
 
     @Override
     protected int initLayout() {
@@ -65,19 +65,35 @@ public class MainActivity extends BaseActivity {
         fragmentArrayList.add(eventFragment);
         fragmentArrayList.add(mainFragment);
         fragmentArrayList.add(mineFragment);
-        pagerAdapter = new ViewPagerAdapter(this, fragmentArrayList);
+        pagerAdapter = new ViewPagerAdapter(MainActivity.this.getSupportFragmentManager(), fragmentArrayList);
         binding.viewPager.setAdapter(pagerAdapter);
 
-        binding.viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
+        binding.viewPager.setCurrentItem(1);
+        binding.mNavigation.setCurrentItem(1);
+        binding.mNavigation.enableAnimation(false);
+        binding.mNavigation.enableShiftingMode(false);
+        binding.mNavigation.enableItemShiftingMode(false);
+        binding.mNavigation.setTextVisibility(false);
+        binding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+
+            }
+
             @Override
             public void onPageSelected(int position) {
-                super.onPageSelected(position);
+                binding.mNavigation.setCurrentItem(position);
                 binding.mNavigation.getMenu().getItem(position).setChecked(true);
             }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+
+            }
         });
-        binding.viewPager.setCurrentItem(1);
-        binding.viewPager.setUserInputEnabled(false);
+
         binding.mNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
+
             @Override
             public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                 switch (item.getItemId()) {
@@ -95,6 +111,7 @@ public class MainActivity extends BaseActivity {
                     default:
                         break;
                 }
+
                 return false;
             }
         });

+ 55 - 32
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/MonitoringCenterActivity.java

@@ -1,18 +1,25 @@
 package com.sjkj.appthreefloor_tsgz.activity;
 
 import android.content.Intent;
+import android.graphics.drawable.Drawable;
 import android.view.View;
 
 import androidx.lifecycle.ViewModelProvider;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
+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.scwang.smartrefresh.layout.api.RefreshLayout;
 import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
 import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
 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.RightModelBean;
 import com.sjkj.appthreefloor_tsgz.databinding.ActivityCameraListBinding;
 import com.sjkj.appthreefloor_tsgz.net.CameraAllListRequest;
 import com.sjkj.base_lib.adapter.BaseRecAdapter;
@@ -24,6 +31,7 @@ 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.view.BaseActivity;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -34,10 +42,10 @@ public class MonitoringCenterActivity extends BaseActivity {
 
     public static final String TAG = MonitoringCenterActivity.class.getSimpleName();
     private CameraAdapter adapter;
-    //    private RegionAdapter regionAdapter;
-//    private TypeAdapter typeAdapter;
-//    private List<TypeModel> typeList = new ArrayList<>();
-//    private List<RegionModel> regionList = new ArrayList<>();
+    private RightAdapter rightAdapter;
+    //    private TypeAdapter typeAdapter;
+    private List<RightModelBean> typeList = new ArrayList<>();
+    //    private List<RegionModel> regionList = new ArrayList<>();
     private List<CameraBean> list = new ArrayList<>();
     private int currentPage = 1;
     private ActivityCameraListBinding binding;
@@ -60,7 +68,42 @@ public class MonitoringCenterActivity extends BaseActivity {
 
     @Override
     public void initView() {
+        Drawable drawable = getDrawable(R.drawable.icon_camera);
+        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.VISIBLE);
         titleName = getIntent().getStringExtra("titleName");
+        //DrawerAdapter adapter1 = new DrawerAdapter(items);
+
+        FlexboxLayoutManager manager = new FlexboxLayoutManager();
+//        //设置主轴排列方式
+        manager.setFlexDirection(FlexDirection.ROW);
+        //设置是否换行
+        manager.setFlexWrap(FlexWrap.WRAP);
+        manager.setAlignItems(AlignItems.BASELINE);
+        binding.recyclerView.setLayoutManager(manager);
+
+        FlexboxLayoutManager manager1 = new FlexboxLayoutManager();
+        //设置主轴排列方式
+        manager1.setFlexDirection(FlexDirection.ROW);
+        //设置是否换行
+        manager1.setFlexWrap(FlexWrap.WRAP);
+        manager1.setAlignItems(AlignItems.BASELINE);
+        binding.typerecyclerView.setLayoutManager(manager1);
+
+        rightAdapter = new RightAdapter(this);
+        binding.typerecyclerView.setAdapter(rightAdapter);
+
 //        if (TextUtils.isEmpty(titleName)) {
 //            getTitleView().setText(getString(R.string.monitor_center));
 //        } else {
@@ -91,27 +134,7 @@ public class MonitoringCenterActivity extends BaseActivity {
         binding.smartRefreshLayout.setEnableRefresh(true);
         binding.smartRefreshLayout.setEnableLoadMore(true);
 
-//        FlexboxLayoutManager manager = new FlexboxLayoutManager();
-//        //设置主轴排列方式
-//        manager.setFlexDirection(FlexDirection.ROW);
-//        //设置是否换行
-//        manager.setFlexWrap(FlexWrap.WRAP);
-//        manager.setAlignItems(AlignItems.BASELINE);
-//        binding.recyclerView.setLayoutManager(manager);
-//
-//        FlexboxLayoutManager manager1 = new FlexboxLayoutManager();
-//        //设置主轴排列方式
-//        manager1.setFlexDirection(FlexDirection.ROW);
-//        //设置是否换行
-//        manager1.setFlexWrap(FlexWrap.WRAP);
-//        manager1.setAlignItems(AlignItems.BASELINE);
-//        binding.typeRecyclerView.setLayoutManager(manager1);
-//
-//        regionAdapter = new RegionAdapter(this);
-//        binding.recyclerView.setAdapter(regionAdapter);
 //
-//        typeAdapter = new TypeAdapter(this);
-//        binding.typeRecyclerView.setAdapter(typeAdapter);
     }
 
     @Override
@@ -182,14 +205,14 @@ public class MonitoringCenterActivity extends BaseActivity {
 //            }
 //        });
 
-//        typeList.add(new TypeModel("camera_type_2", "森林防火", false));
-//        typeList.add(new TypeModel("camera_type_4", "病虫害", false));
-//        typeList.add(new TypeModel("camera_type_1", "秸秆禁烧", false));
-//        typeList.add(new TypeModel("camera_type_3", "粪污处理", false));
-//        typeList.add(new TypeModel("camera_type_5", "水利监控", false));
-//        typeList.add(new TypeModel("camera_type_6", "违法建筑", false));
-//        typeList.add(new TypeModel("camera_type_7", "火情防控", false));
-//        typeAdapter.setList(typeList);
+        typeList.add(new RightModelBean("camera_type_2", "森林防火", false));
+        typeList.add(new RightModelBean("camera_type_4", "病虫害", false));
+        typeList.add(new RightModelBean("camera_type_1", "秸秆禁烧", false));
+        typeList.add(new RightModelBean("camera_type_3", "粪污处理", false));
+        typeList.add(new RightModelBean("camera_type_5", "水利监控", false));
+        typeList.add(new RightModelBean("camera_type_6", "违法建筑", false));
+        typeList.add(new RightModelBean("camera_type_7", "火情防控", false));
+        rightAdapter.setList(typeList);
     }
 
     private void requestListRefresh() {

+ 29 - 34
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/WaterCraneResourcesActivity.java

@@ -1,6 +1,5 @@
 package com.sjkj.appthreefloor_tsgz.activity;
 
-import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 
@@ -8,10 +7,8 @@ import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentTransaction;
 import androidx.lifecycle.ViewModelProvider;
 
-import com.google.android.material.tabs.TabLayout;
 import com.sjkj.appthreefloor_tsgz.R;
 import com.sjkj.appthreefloor_tsgz.activity.viewModel.ResourceVisualizationViewModel;
-import com.sjkj.appthreefloor_tsgz.adapter.ViewPagerAdapter;
 import com.sjkj.appthreefloor_tsgz.app.App;
 import com.sjkj.appthreefloor_tsgz.bean.ResourceVisualizationBean;
 import com.sjkj.appthreefloor_tsgz.databinding.ActivityResourceWaterCraneBinding;
@@ -19,10 +16,8 @@ import com.sjkj.appthreefloor_tsgz.fragment.CommonDataListFragment;
 import com.sjkj.appthreefloor_tsgz.fragment.CommonMapFragment;
 import com.sjkj.appthreefloor_tsgz.map.MapMarkBean;
 import com.sjkj.appthreefloor_tsgz.net.NewDataCenterRequest;
-import com.sjkj.appthreefloor_tsgz.net.WaterCraneRequest;
 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 com.sjkj.base_lib.weight.LoadingDialog;
@@ -33,7 +28,7 @@ import java.util.List;
 public class WaterCraneResourcesActivity extends BaseActivity {
     private ResourceVisualizationViewModel viewModel;
     private ActivityResourceWaterCraneBinding binding;
-    private ViewPagerAdapter pagerAdapter;
+   // private ViewPagerAdapter pagerAdapter;
     private NewDataCenterRequest newDataCenterRequest = new NewDataCenterRequest(App.getInstance());
     private List<ResourceVisualizationBean> mList = new ArrayList<>();
     private List<MapMarkBean> mapList = new ArrayList<>();
@@ -61,34 +56,34 @@ public class WaterCraneResourcesActivity extends BaseActivity {
         super.initView();
         //eventTypeName = getIntent().getStringExtra("name");
         getTitleView().setText(getIntent().getStringExtra("title"));
-        binding.tabLayout.addTab(binding.tabLayout.newTab().setText("数据"));
-        binding.tabLayout.addTab(binding.tabLayout.newTab().setText("地图"));
-        binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
-            @Override
-            public void onTabSelected(TabLayout.Tab tab) {
-                if (TextUtils.equals(tab.getText(), "数据")) {
-                    getSupportFragmentManager().beginTransaction()
-                            .show(dataListFragment)
-                            .hide(mapFragment)
-                            .commit();
-                } else {
-                    getSupportFragmentManager().beginTransaction()
-                            .hide(dataListFragment)
-                            .show(mapFragment)
-                            .commit();
-                }
-            }
-
-            @Override
-            public void onTabUnselected(TabLayout.Tab tab) {
-
-            }
-
-            @Override
-            public void onTabReselected(TabLayout.Tab tab) {
-
-            }
-        });
+//        binding.tabLayout.addTab(binding.tabLayout.newTab().setText("数据"));
+//        binding.tabLayout.addTab(binding.tabLayout.newTab().setText("地图"));
+//        binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+//            @Override
+//            public void onTabSelected(TabLayout.Tab tab) {
+//                if (TextUtils.equals(tab.getText(), "数据")) {
+//                    getSupportFragmentManager().beginTransaction()
+//                            .show(dataListFragment)
+//                            .hide(mapFragment)
+//                            .commit();
+//                } else {
+//                    getSupportFragmentManager().beginTransaction()
+//                            .hide(dataListFragment)
+//                            .show(mapFragment)
+//                            .commit();
+//                }
+//            }
+//
+//            @Override
+//            public void onTabUnselected(TabLayout.Tab tab) {
+//
+//            }
+//
+//            @Override
+//            public void onTabReselected(TabLayout.Tab tab) {
+//
+//            }
+//        });
 
         dataListFragment = new CommonDataListFragment(eventTypeName);
         mapFragment = new CommonMapFragment(eventTypeName);

+ 51 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/DrawerAdapter.java

@@ -0,0 +1,51 @@
+package com.sjkj.appthreefloor_tsgz.adapter;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.sjkj.appthreefloor_tsgz.R;
+import com.sjkj.appthreefloor_tsgz.bean.DrawerItem;
+
+import java.util.List;
+
+public class DrawerAdapter extends RecyclerView.Adapter<DrawerAdapter.ViewHolder> {
+    private List<DrawerItem> items;
+
+    public DrawerAdapter(List<DrawerItem> items) {
+        this.items = items;
+    }
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.drawer_item, parent, false);
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        DrawerItem item = items.get(position);
+        holder.icon.setImageResource(item.getIconRes());
+        holder.title.setText(item.getTitle());
+    }
+
+    @Override
+    public int getItemCount() {
+        return items.size();
+    }
+
+    public class ViewHolder extends RecyclerView.ViewHolder {
+        public ImageView icon;
+        public TextView title;
+
+        public ViewHolder(View itemView) {
+            super(itemView);
+            icon = itemView.findViewById(R.id.icon);
+            title = itemView.findViewById(R.id.title);
+        }
+    }
+}

+ 102 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/RightAdapter.java

@@ -0,0 +1,102 @@
+package com.sjkj.appthreefloor_tsgz.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.sjkj.appthreefloor_tsgz.R;
+import com.sjkj.appthreefloor_tsgz.bean.RightModelBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * CREATE BY LiYang
+ * ON 2021-03-25
+ * SUPPLY : Thanks for watching
+ */
+public class RightAdapter extends RecyclerView.Adapter<RightAdapter.ViewHolder> {
+    private Context context;
+    private LayoutInflater inflater;
+    private List<RightModelBean> list = new ArrayList<>();
+    private ChangeStateListener listener;
+
+    public RightAdapter(Context context) {
+        this.context = context;
+        inflater = LayoutInflater.from(context);
+    }
+
+    public void setList(List<RightModelBean> list) {
+        this.list = list;
+        notifyDataSetChanged();
+    }
+
+    public void clear() {
+        this.list.clear();
+        notifyDataSetChanged();
+    }
+
+
+    @NonNull
+    @Override
+    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(context).inflate(R.layout.activity_right_list_item, parent, false);
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+        holder.checkBox.setText(list.get(position).getName());
+        if (list.get(position).isState()) {
+            holder.checkBox.setBackground(ContextCompat.getDrawable(context, R.drawable.shape_screen_blue_solid_5));
+            holder.checkBox.setTextColor(ContextCompat.getColor(context, R.color.color_white));
+        } else {
+            holder.checkBox.setBackground(ContextCompat.getDrawable(context, R.drawable.shape_details_gray_solid_5));
+            holder.checkBox.setTextColor(ContextCompat.getColor(context, R.color.color_black));
+        }
+    }
+
+    @Override
+    public int getItemCount() {
+        return list.size();
+    }
+
+    public class ViewHolder extends RecyclerView.ViewHolder {
+
+        private TextView checkBox;
+
+        public ViewHolder(@NonNull View itemView) {
+            super(itemView);
+            checkBox = itemView.findViewById(R.id.checkBox);
+            checkBox.setOnClickListener(v -> {
+                if (list.get(getAdapterPosition()).isState()) {
+                    list.get(getAdapterPosition()).setState(false);
+                    listener.change("");
+                    notifyItemChanged(getAdapterPosition());
+
+                } else {
+                    for (int i = 0; i < list.size(); i++) {
+                        list.get(i).setState(false);
+                    }
+                    list.get(getAdapterPosition()).setState(true);
+                    listener.change(list.get(getAdapterPosition()).getId());
+                    notifyDataSetChanged();
+                }
+            });
+        }
+    }
+
+    public interface ChangeStateListener {
+        void change(String item);
+    }
+
+    public void setListener(ChangeStateListener listener) {
+        this.listener = listener;
+    }
+}

+ 15 - 14
app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/ViewPagerAdapter.java

@@ -1,29 +1,30 @@
 package com.sjkj.appthreefloor_tsgz.adapter;
 
-import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
 
 import java.util.List;
 
-public class ViewPagerAdapter extends FragmentStateAdapter {
-    private List<Fragment> list;
+/**
+ * view pager adapter
+ */
+public   class ViewPagerAdapter extends FragmentPagerAdapter {
+    private List<Fragment> data;
 
-    public ViewPagerAdapter(@NonNull FragmentActivity fragmentActivity, List<Fragment> list) {
-        super(fragmentActivity);
-        this.list = list;
+
+    public ViewPagerAdapter(FragmentManager fm, List<Fragment> data) {
+        super(fm);
+        this.data = data;
     }
 
-    @NonNull
     @Override
-    public Fragment createFragment(int position) {
-        return list.get(position);
+    public int getCount() {
+        return data.size();
     }
 
     @Override
-    public int getItemCount() {
-        return list == null ? 0 : list.size();
+    public Fragment getItem(int position) {
+        return data.get(position);
     }
-
 }

+ 2 - 3
app/src/main/java/com/sjkj/appthreefloor_tsgz/app/App.java

@@ -18,7 +18,6 @@ import com.sjkj.appthreefloor_tsgz.utils.CrashHandler;
 import com.sjkj.base_lib.app.BaseApp;
 import com.sjkj.base_lib.utils.AppTools;
 import com.sjkj.base_lib.utils.Constants;
-import com.sjkj.base_lib.utils.PushUtils;
 
 public class App extends BaseApp {
 
@@ -47,8 +46,8 @@ public class App extends BaseApp {
         // 本地存储
 //        MMKV.initialize(this);
         //极光推送
-        PushUtils.pushInit();
-        PushUtils.getRegistrationId();
+//        PushUtils.pushInit();
+//        PushUtils.getRegistrationId();
 //        initHuaWeiMeeting();
         AppTools.initLog();
         CrashHandler.getInstance().init(getApplicationContext());

+ 29 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/DrawerItem.java

@@ -0,0 +1,29 @@
+package com.sjkj.appthreefloor_tsgz.bean;
+
+public class DrawerItem {
+    public DrawerItem(int icon_camera, String s) {
+        setIconRes(icon_camera);
+        setTitle(s);
+    }
+
+
+
+    public int getIconRes() {
+        return iconRes;
+    }
+
+    public void setIconRes(int iconRes) {
+        this.iconRes = iconRes;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    private int iconRes;
+    private String title;
+}

+ 43 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/RightModelBean.java

@@ -0,0 +1,43 @@
+package com.sjkj.appthreefloor_tsgz.bean;
+
+/**
+ * CREATE BY LiYang
+ * ON 2021-03-25
+ * SUPPLY : Thanks for watching
+ */
+public class RightModelBean {
+
+    private String id;
+    private String name;
+    private boolean state;
+    public RightModelBean(String id, String name, boolean state) {
+        super();
+        this.id = id;
+        this.name = name;
+        this.state = state;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public boolean isState() {
+        return state;
+    }
+
+    public void setState(boolean state) {
+        this.state = state;
+    }
+}

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

@@ -96,9 +96,9 @@ public class EventFragment extends BaseFragment /*implements View.OnClickListene
     }
 
     private void initTab() {
-        for (int i = 0; i < eventStatusNames.length; i++) {
-            binding.tabLayout.addTab(binding.tabLayout.newTab().setText(eventStatusNames[i]).setTag(eventStatusValues[i]));
-        }
+//        for (int i = 0; i < eventStatusNames.length; i++) {
+//            binding.tabLayout.addTab(binding.tabLayout.newTab().setText(eventStatusNames[i]).setTag(eventStatusValues[i]));
+//        }
     }
 
     private void requestListRefresh() {
@@ -294,24 +294,24 @@ public class EventFragment extends BaseFragment /*implements View.OnClickListene
                 requestListRefresh();
             }
         });
-        binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
-            @Override
-            public void onTabSelected(TabLayout.Tab tab) {
-                viewModel.eventStatus.set(tab.getText().toString());
-                viewModel.eventStatusValue.set(tab.getTag().toString());
-                requestListRefresh();
-            }
-
-            @Override
-            public void onTabUnselected(TabLayout.Tab tab) {
-
-            }
-
-            @Override
-            public void onTabReselected(TabLayout.Tab tab) {
-
-            }
-        });
+//        binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+//            @Override
+//            public void onTabSelected(TabLayout.Tab tab) {
+//                viewModel.eventStatus.set(tab.getText().toString());
+//                viewModel.eventStatusValue.set(tab.getTag().toString());
+//                requestListRefresh();
+//            }
+//
+//            @Override
+//            public void onTabUnselected(TabLayout.Tab tab) {
+//
+//            }
+//
+//            @Override
+//            public void onTabReselected(TabLayout.Tab tab) {
+//
+//            }
+//        });
 
     }
 

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

@@ -14,7 +14,9 @@ import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
 import com.bumptech.glide.request.RequestOptions;
 import com.sjkj.appthreefloor_tsgz.R;
+import com.sjkj.appthreefloor_tsgz.activity.ExoPlayerActivity;
 import com.sjkj.appthreefloor_tsgz.activity.MonitoringCenterActivity;
+import com.sjkj.appthreefloor_tsgz.activity.MyVideoPlayerActivity;
 import com.sjkj.appthreefloor_tsgz.activity.WaterCraneResourcesActivity;
 import com.sjkj.appthreefloor_tsgz.app.App;
 import com.sjkj.appthreefloor_tsgz.bean.BannerDataBean;
@@ -28,6 +30,7 @@ import com.sjkj.base_lib.utils.ToastUtils;
 import com.sjkj.base_lib.view.BaseFragment;
 import com.youth.banner.adapter.BannerImageAdapter;
 import com.youth.banner.holder.BannerImageHolder;
+import com.youth.banner.indicator.CircleIndicator;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -70,6 +73,7 @@ public class MainFragment extends BaseFragment {
             @Override
             public void onClick(View view) {
 
+                startActivity(new Intent(getActivity(), ExoPlayerActivity.class));
             }
         });
         //水鹤
@@ -99,6 +103,7 @@ public class MainFragment extends BaseFragment {
             @Override
             public void onClick(View view) {
 
+                startActivity(new Intent(getActivity(), MyVideoPlayerActivity.class).putExtra("videoUrl", "https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/.m3u8"));
             }
         });
         //水源
@@ -149,9 +154,10 @@ public class MainFragment extends BaseFragment {
                                 }
                             });
                             binding.banner.setLoopTime(1500);
-                           // binding.banner.setIndicator(new CircleIndicator(getActivity()));
+                            binding.banner.setIndicator(new CircleIndicator(getActivity()));
+                            //binding.banner.setIndicator(new CircleIndicator(getActivity()));
                             //添加画廊效果
-                            binding.banner.setBannerGalleryEffect(50, 10);
+                            //binding.banner.setBannerGalleryEffect(50, 10);
                             //binding.banner.setBannerGalleryMZ(20);
                         }
                     }

+ 2 - 6
app/src/main/java/com/sjkj/appthreefloor_tsgz/login/LoginActivity.java

@@ -1,11 +1,8 @@
 package com.sjkj.appthreefloor_tsgz.login;
 
 import android.content.Intent;
-import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
 import android.os.Handler;
 import android.text.TextUtils;
-import android.util.TypedValue;
 import android.view.View;
 
 import androidx.lifecycle.ViewModelProvider;
@@ -27,7 +24,6 @@ import com.sjkj.base_lib.app.AppManager;
 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.PushUtils;
 import com.sjkj.base_lib.utils.ToastUtils;
 import com.sjkj.base_lib.view.BaseLoginActivity;
 import com.sjkj.base_lib.weight.LoadingDialog;
@@ -161,7 +157,7 @@ public class LoginActivity extends BaseLoginActivity {
         params.put("password", viewModel.password2.get());
         params.put("code", "5521");
         params.put("sessionId", viewModel.sessionId.get());
-        params.put("deviceid", PushUtils.getRegistrationId());
+        //params.put("deviceid", PushUtils.getRegistrationId());
         loginRequest.setParams(params);
         loginRequest.execute(new ProcessErrorSubscriber<LoginBean>() {
             @Override
@@ -203,7 +199,7 @@ public class LoginActivity extends BaseLoginActivity {
                     if (data != null && data.isUpdatePwd()) {//过期
                        // AppManager.getAppManager().currentActivity().startActivity(new Intent(AppManager.getAppManager().currentActivity(), UpdatePasswordActivity.class));
                     }else{
-                        PushUtils.pushRestart();
+                      //  PushUtils.pushRestart();
                         if ("四平市".equals(data.getUserinfo().getSysUser().getDeptNames()) ||
                                 "双辽市".equals(data.getUserinfo().getSysUser().getDeptNames()) ||
                                 "伊通县".equals(data.getUserinfo().getSysUser().getDeptNames()) ||

+ 1 - 2
app/src/main/java/com/sjkj/appthreefloor_tsgz/utils/AppSystemUtils.java

@@ -9,7 +9,6 @@ import com.sjkj.appthreefloor_tsgz.bean.MenuMainItemBean;
 import com.sjkj.appthreefloor_tsgz.login.LoginActivity;
 import com.sjkj.base_lib.app.AppManager;
 import com.sjkj.base_lib.utils.AppTools;
-import com.sjkj.base_lib.utils.PushUtils;
 import com.tencent.mmkv.MMKV;
 
 import java.util.ArrayList;
@@ -33,7 +32,7 @@ public class AppSystemUtils {
             //AppTools.setUserName("");
 //            AppTools.setPassword("");
             //停止、清除登录人推送信息
-            PushUtils.pushStop();
+            //PushUtils.pushStop();
             //页面跳转登录页
             Intent intent = new Intent(AppManager.getAppManager().currentActivity(), LoginActivity.class);
             intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

+ 664 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/utils/MyVideoView.java

@@ -0,0 +1,664 @@
+package com.sjkj.appthreefloor_tsgz.utils;
+
+import android.content.Context;
+import android.media.MediaPlayer;
+import android.os.CountDownTimer;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.RelativeLayout;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.google.android.exoplayer2.DeviceInfo;
+import com.google.android.exoplayer2.ExoPlayer;
+import com.google.android.exoplayer2.MediaItem;
+import com.google.android.exoplayer2.MediaMetadata;
+import com.google.android.exoplayer2.PlaybackException;
+import com.google.android.exoplayer2.PlaybackParameters;
+import com.google.android.exoplayer2.Player;
+import com.google.android.exoplayer2.Timeline;
+import com.google.android.exoplayer2.Tracks;
+import com.google.android.exoplayer2.audio.AudioAttributes;
+import com.google.android.exoplayer2.metadata.Metadata;
+import com.google.android.exoplayer2.text.CueGroup;
+import com.google.android.exoplayer2.trackselection.TrackSelectionParameters;
+import com.google.android.exoplayer2.ui.PlayerView;
+import com.google.android.exoplayer2.video.VideoSize;
+import com.king.zxing.util.LogUtils;
+
+import java.util.Map;
+
+/**
+ * createTime   :2024/6/21 9:14
+ * createBy     :lkl
+ */
+public class MyVideoView extends RelativeLayout {
+    /**
+     * 准备时长,超过这个时间就重试加载
+     */
+    private static final long INIT_TIME_OUT = 1000 * 15;
+    /**
+     * 进度回调间隔
+     */
+    private final static long TimeInterval = 1000;
+    //计时器
+    private CountDownTimer timer;
+    //准备就绪后开始播放(默认false)
+    private boolean autoPlay = false;
+    //视频时长
+    private long duration;
+    //回调
+    private OnVideoCallBack onVideoCallBack;
+    //
+    private int videoWidth, videoHeight;
+    //是否准备就绪了
+    private boolean isReady = false;
+    //暂停时的位置、需要恢复的位置
+    private long currentPosition = -1;
+    //出错时,重试的次数
+    private int retryCount = 0;
+    //视频连接
+    private String videoPath;
+    //头部信息
+    private Map<String, String> header;
+    private final ExoPlayer player;
+    private final Context context;
+
+    public MyVideoView(Context context) {
+        this(context, null, 0, 0);
+    }
+
+    public MyVideoView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0, 0);
+    }
+
+    public MyVideoView(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public MyVideoView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        this.context = context;
+        this.player = new ExoPlayer.Builder(context).build();
+        PlayerView videoView = new PlayerView(context);
+        videoView.setPlayer(player);
+        videoView.setUseController(false);
+        videoView.setClickable(false);
+        videoView.setFocusableInTouchMode(false);
+        RelativeLayout.LayoutParams lp = new LayoutParams(-1, -1);
+        lp.addRule(CENTER_IN_PARENT);
+        videoView.setLayoutParams(lp);
+        addView(videoView);
+        initListener();
+    }
+
+    private void initListener() {
+        player.addListener(new Player.Listener() {
+            @Override
+            public void onEvents(@NonNull Player player, @NonNull Player.Events events) {
+                Player.Listener.super.onEvents(player, events);
+            }
+
+            @Override
+            public void onTimelineChanged(@NonNull Timeline timeline, int reason) {
+                Player.Listener.super.onTimelineChanged(timeline, reason);
+            }
+
+            @Override
+            public void onMediaItemTransition(@Nullable MediaItem mediaItem, int reason) {
+                Player.Listener.super.onMediaItemTransition(mediaItem, reason);
+            }
+
+            @Override
+            public void onTracksChanged(@NonNull Tracks tracks) {
+                Player.Listener.super.onTracksChanged(tracks);
+            }
+
+            @Override
+            public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) {
+                Player.Listener.super.onMediaMetadataChanged(mediaMetadata);
+            }
+
+            @Override
+            public void onPlaylistMetadataChanged(@NonNull MediaMetadata mediaMetadata) {
+                Player.Listener.super.onPlaylistMetadataChanged(mediaMetadata);
+            }
+
+            @Override
+            public void onIsLoadingChanged(boolean isLoading) {
+                Player.Listener.super.onIsLoadingChanged(isLoading);
+            }
+
+            @Override
+            public void onAvailableCommandsChanged(@NonNull Player.Commands availableCommands) {
+                Player.Listener.super.onAvailableCommandsChanged(availableCommands);
+            }
+
+            @Override
+            public void onTrackSelectionParametersChanged(@NonNull TrackSelectionParameters parameters) {
+                Player.Listener.super.onTrackSelectionParametersChanged(parameters);
+            }
+
+            @Override
+            public void onPlaybackStateChanged(int playbackState) {
+                Player.Listener.super.onPlaybackStateChanged(playbackState);
+                switch (playbackState) {
+                    case Player.STATE_READY:
+                        onPreparedCallBack();
+                        if (onVideoCallBack != null) {
+                            onVideoCallBack.onBufferEnd();
+                        }
+                        if (timer != null) {
+                            timer.cancel();
+                        }
+                        timeOut.cancel();
+                        break;
+                    case Player.STATE_BUFFERING:
+                        if (onVideoCallBack != null) {
+                            onVideoCallBack.onBufferStart();
+                        }
+                        if (timer != null) {
+                            timer.cancel();
+                        }
+                        timeOut.cancel();
+                        timeOut.start();
+                        break;
+                    case Player.STATE_ENDED:
+                        if (onVideoCallBack != null) {
+                            onVideoCallBack.onComplete();
+                        }
+                        if (timer != null) {
+                            timer.cancel();
+                        }
+                        break;
+                    case Player.STATE_IDLE:
+                        //玩家是空闲的,这意味着它只拥有有限的资源。播放器在播放媒体之前必须做好准备。
+                        LogUtils.i("初始状态");
+                        if (timer != null) {
+                            timer.cancel();
+                        }
+                        break;
+                    default:
+                        LogUtils.i("播放器状态:" + playbackState);
+                        break;
+                }
+            }
+
+            @Override
+            public void onPlayWhenReadyChanged(boolean playWhenReady, int reason) {
+                Player.Listener.super.onPlayWhenReadyChanged(playWhenReady, reason);
+            }
+
+            @Override
+            public void onPlaybackSuppressionReasonChanged(int playbackSuppressionReason) {
+                Player.Listener.super.onPlaybackSuppressionReasonChanged(playbackSuppressionReason);
+            }
+
+            @Override
+            public void onIsPlayingChanged(boolean isPlaying) {
+                Player.Listener.super.onIsPlayingChanged(isPlaying);
+                if (onVideoCallBack != null) {
+                    if (isPlaying) {
+                        onVideoCallBack.onStart();
+                        if (timer != null) {
+                            timer.start();
+                        }
+                    } else {
+                        onVideoCallBack.onPause();
+                        if (timer != null) {
+                            timer.cancel();
+                        }
+                    }
+                }
+            }
+
+            @Override
+            public void onRepeatModeChanged(int repeatMode) {
+                Player.Listener.super.onRepeatModeChanged(repeatMode);
+            }
+
+            @Override
+            public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {
+                Player.Listener.super.onShuffleModeEnabledChanged(shuffleModeEnabled);
+            }
+
+            @Override
+            public void onPlayerError(@NonNull PlaybackException error) {
+                Player.Listener.super.onPlayerError(error);
+            }
+
+            @Override
+            public void onPlayerErrorChanged(@Nullable PlaybackException error) {
+                Player.Listener.super.onPlayerErrorChanged(error);
+            }
+
+            @Override
+            public void onPositionDiscontinuity(@NonNull Player.PositionInfo oldPosition, @NonNull Player.PositionInfo newPosition, int reason) {
+                Player.Listener.super.onPositionDiscontinuity(oldPosition, newPosition, reason);
+            }
+
+            @Override
+            public void onPlaybackParametersChanged(@NonNull PlaybackParameters playbackParameters) {
+                Player.Listener.super.onPlaybackParametersChanged(playbackParameters);
+            }
+
+            @Override
+            public void onSeekBackIncrementChanged(long seekBackIncrementMs) {
+                Player.Listener.super.onSeekBackIncrementChanged(seekBackIncrementMs);
+            }
+
+            @Override
+            public void onSeekForwardIncrementChanged(long seekForwardIncrementMs) {
+                Player.Listener.super.onSeekForwardIncrementChanged(seekForwardIncrementMs);
+            }
+
+            @Override
+            public void onMaxSeekToPreviousPositionChanged(long maxSeekToPreviousPositionMs) {
+                Player.Listener.super.onMaxSeekToPreviousPositionChanged(maxSeekToPreviousPositionMs);
+            }
+
+            @Override
+            public void onAudioSessionIdChanged(int audioSessionId) {
+                Player.Listener.super.onAudioSessionIdChanged(audioSessionId);
+            }
+
+            @Override
+            public void onAudioAttributesChanged(@NonNull AudioAttributes audioAttributes) {
+                Player.Listener.super.onAudioAttributesChanged(audioAttributes);
+            }
+
+            @Override
+            public void onVolumeChanged(float volume) {
+                Player.Listener.super.onVolumeChanged(volume);
+            }
+
+            @Override
+            public void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled) {
+                Player.Listener.super.onSkipSilenceEnabledChanged(skipSilenceEnabled);
+            }
+
+            @Override
+            public void onDeviceInfoChanged(@NonNull DeviceInfo deviceInfo) {
+                Player.Listener.super.onDeviceInfoChanged(deviceInfo);
+            }
+
+            @Override
+            public void onDeviceVolumeChanged(int volume, boolean muted) {
+                Player.Listener.super.onDeviceVolumeChanged(volume, muted);
+            }
+
+            @Override
+            public void onVideoSizeChanged(@NonNull VideoSize videoSize) {
+                Player.Listener.super.onVideoSizeChanged(videoSize);
+            }
+
+            @Override
+            public void onSurfaceSizeChanged(int width, int height) {
+                Player.Listener.super.onSurfaceSizeChanged(width, height);
+            }
+
+            @Override
+            public void onRenderedFirstFrame() {
+                Player.Listener.super.onRenderedFirstFrame();
+            }
+
+            @Override
+            public void onCues(@NonNull CueGroup cueGroup) {
+                Player.Listener.super.onCues(cueGroup);
+            }
+
+            @Override
+            public void onMetadata(@NonNull Metadata metadata) {
+                Player.Listener.super.onMetadata(metadata);
+            }
+        });
+    }
+
+    private void onPreparedCallBack() {
+        if (isReady) {
+            LogUtils.i("无需重复调用准备就绪回调");
+            return;
+        }
+        LogUtils.i("准备就绪!!!");
+        timeOut.cancel();
+        isReady = true;
+        VideoSize size = player.getVideoSize();
+        videoWidth = size.width;
+        videoHeight = size.height;
+        duration = player.getDuration();
+        if (timer != null) {
+            timer.cancel();
+        }
+        timer = new CountDownTimer(duration, TimeInterval) {
+            @Override
+            public void onTick(long left) {
+                if (onVideoCallBack != null) {
+                    currentPosition = player.getCurrentPosition();
+                    onVideoCallBack.onProgress(currentPosition, duration);
+                }
+            }
+
+            @Override
+            public void onFinish() {
+
+            }
+        };
+        if (onVideoCallBack != null) {
+            onVideoCallBack.onPrepared(duration);
+        }
+        if (currentPosition != -1) {
+            //恢复播放
+            LogUtils.i("恢复播放,恢复进度:" + currentPosition);
+            seekTo(currentPosition);
+            start();
+        } else {
+            if (autoPlay) {
+                start();
+            }
+        }
+    }
+
+    public void timePause() {
+        if (timer != null) {
+            timer.cancel();
+        }
+    }
+
+    public void timeContinue() {
+        if (timer != null) {
+            timer.cancel();
+            timer.start();
+        }
+    }
+
+    public boolean isReady() {
+        return isReady;
+    }
+
+    public void setAutoPlay(boolean autoPlay) {
+        this.autoPlay = autoPlay;
+    }
+
+    public int getVideoWidth() {
+        return videoWidth;
+    }
+
+    public int getVideoHeight() {
+        return videoHeight;
+    }
+
+    public void setOnVideoCallBack(OnVideoCallBack onVideoCallBack) {
+        this.onVideoCallBack = onVideoCallBack;
+    }
+
+    public interface OnVideoCallBack {
+        void onStartPrepare();
+
+        void onPrepared(long duration);
+
+        void onStart();
+
+        void onPause();
+
+        void onBufferStart();
+
+        void onBufferEnd();
+
+        void onProgress(long progress, long duration);
+
+        void onComplete();
+
+        void onError(String error);
+    }
+
+    public void retry() {
+        reset();
+        setVideoPath(videoPath, header);
+    }
+
+    /**
+     * 播放出错后,尝试重新播放
+     */
+    private void retryPlay(int what, String defError) {
+        if (timer != null) {
+            timer.cancel();
+        }
+        if (retryCount >= 2) {
+            if (onVideoCallBack != null) {
+                onVideoCallBack.onError(defError + what);
+                onVideoCallBack.onPause();
+            }
+            retryCount = 0;
+            reset();
+            LogUtils.e("确实播放出错了,编号:" + what);
+        } else {
+            retryCount++;
+            LogUtils.e("准备重试,第" + retryCount + "次(" + what + ")");
+            reset();
+            postDelayed(retryRunnable, 3000);
+        }
+    }
+
+    //超时计时器
+    private final CountDownTimer timeOut = new CountDownTimer(INIT_TIME_OUT, 1000) {
+        @Override
+        public void onTick(long left) {
+//            LogUtils.i("超时倒计时:" + (left / 1000));
+        }
+
+        @Override
+        public void onFinish() {
+            onErrorListener.onError(null, MediaPlayer.MEDIA_ERROR_TIMED_OUT, 0);
+        }
+    };
+    //重试倒计时
+    private final Runnable retryRunnable = () -> setVideoPath(videoPath, header);
+    //错误回调
+    private final MediaPlayer.OnErrorListener onErrorListener = (mp, what, extra) -> {
+        int p = mp != null ? mp.getCurrentPosition() : 0;
+        if (p > 0) {
+            currentPosition = p;
+        }
+        switch (what) {
+            case MediaPlayer.MEDIA_ERROR_IO:
+                retryPlay(what, "无法加载视频");
+                break;
+            case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
+                retryPlay(what, "加载超时");
+                break;
+            case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
+                retryPlay(what, "拒绝访问");
+                break;
+            default:
+                retryPlay(what, "播放出错,请重试");
+                break;
+        }
+        return true;
+    };
+
+    public void setVideoPath(String videoPath, Map<String, String> headers) {
+        try {
+            if (videoPath == null) {
+                return;
+            }
+            if (!videoPath.equals(this.videoPath)) {
+                currentPosition = -1;
+            }
+            this.videoPath = videoPath;
+            this.header = headers;
+            reset();
+            if (this.header == null) {
+                player.setMediaItem(MediaItem.fromUri(videoPath));
+            } else {
+                MediaItem mediaItem = new MediaItem.Builder().setDrmLicenseRequestHeaders(headers).setUri(videoPath).build();
+                player.setMediaItem(mediaItem);
+            }
+            player.prepare();
+//            videoView.setVideoURI(Uri.parse(videoPath), headers);
+//            videoView.prepareAsync();
+            if (isReady) {
+                //曾经准备就绪过,只是因为出错了,要重新准备
+                if (onVideoCallBack != null) {
+                    onVideoCallBack.onBufferStart();
+                }
+                LogUtils.i("曾经准备就绪过,只是因为出错了,要重新准备,播放位置为:" + currentPosition);
+            } else {
+//            lastPausePosition = -1;
+                if (onVideoCallBack != null) {
+                    onVideoCallBack.onStartPrepare();
+                }
+            }
+            isReady = false;
+            timeOut.cancel();
+            timeOut.start();
+            LogUtils.i("开始准备:" + videoPath);
+        } catch (Exception e) {
+            LogUtils.e(e);
+            if (onVideoCallBack != null) {
+                onVideoCallBack.onError(e.toString());
+            }
+        }
+
+    }
+
+    public void start() {
+        if (player == null) {
+            LogUtils.e("mediaPlayer不能为空");
+            return;
+        }
+        if (!isReady) {
+            return;
+        }
+        switch (player.getPlaybackState()) {
+            case Player.STATE_READY:
+            case Player.STATE_BUFFERING:
+                player.play();
+                break;
+            case Player.STATE_ENDED:
+            case Player.STATE_IDLE:
+                isReady = false;
+                currentPosition = -1;
+                setVideoPath(videoPath, header);
+                player.play();
+                break;
+        }
+
+    }
+
+    public void pause() {
+        if (player == null) {
+            LogUtils.e("mediaPlayer不能为空");
+            return;
+        }
+        if (!isReady) {
+            return;
+        }
+        player.pause();
+        currentPosition = player.getCurrentPosition();
+    }
+
+    public void resume() {
+//        mediaPlayer.resume();
+        if (currentPosition > 1000) {
+            seekTo(currentPosition);
+        }
+    }
+
+    private void reset() {
+        if (player == null) {
+            LogUtils.e("mediaPlayer不能为空");
+            return;
+        }
+        try {
+            player.stop();
+        } catch (Exception e) {
+            LogUtils.e(e);
+        }
+
+    }
+
+    public void onDestroy() {
+        this.reset();
+        removeCallbacks(retryRunnable);
+        //结束并释放资源
+        reset();
+        if (timer != null) {
+            timer.cancel();
+            timer = null;
+        }
+//        holder.removeCallback(holderCallback);
+        timeOut.cancel();
+    }
+
+    public void seekTo(long msec) {
+        this.seekTo((int) msec);
+    }
+
+    public void seekTo(int msec) {
+        if (!isReady) {
+            return;
+        }
+        if (player == null) {
+            LogUtils.e("mediaPlayer不能为空");
+            return;
+        }
+        player.seekTo(msec);
+    }
+
+    public boolean isPlaying() {
+        if (player == null) {
+            LogUtils.e("mediaPlayer不能为空");
+            return false;
+        }
+        return player.isPlaying();
+    }
+
+    public static abstract class MySingleOrDoubleClickListener implements View.OnClickListener {
+        /**
+         * 双击有效时长(毫秒),建议200~500毫秒内
+         */
+        private static final long ClickInterval = 210L;
+        //上次点击的时间
+        private long tLastClick = 0;
+        private View v;
+
+        @Override
+        public void onClick(View v) {
+            this.v = v;
+            long t = System.currentTimeMillis();
+            if (tLastClick == 0) {
+                timer.start();
+            } else {
+                if (t - tLastClick <= ClickInterval) {
+                    onDouble(v);
+                    timer.cancel();
+                } else {
+                    timer.start();
+                }
+            }
+            tLastClick = t;
+        }
+
+        /**
+         * 单击倒计时
+         */
+        private final CountDownTimer timer = new CountDownTimer(ClickInterval, ClickInterval) {
+            @Override
+            public void onTick(long millisUntilFinished) {
+
+            }
+
+            @Override
+            public void onFinish() {
+                onSingle(v);
+            }
+        };
+
+        public abstract void onSingle(View v);
+
+        public abstract void onDouble(View v);
+    }
+}
+
+

+ 5 - 5
app/src/main/java/com/sjkj/appthreefloor_tsgz/web/WebViewActivity.java

@@ -60,11 +60,11 @@ public class WebViewActivity extends BaseActivity {
         }
         binding.webView.addJavascriptInterface(this, "$App");
         //localStorage  允许存储
-        binding.webView.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);//存储的最大容量
-        String appCachePath = getCacheDir().getAbsolutePath();
-        binding.webView.getSettings().setAppCachePath(appCachePath);
-        binding.webView.getSettings().setAllowFileAccess(true);
-        binding.webView.getSettings().setAppCacheEnabled(true);
+//        binding.webView.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);//存储的最大容量
+//        String appCachePath = getCacheDir().getAbsolutePath();
+//        binding.webView.getSettings().setAppCachePath(appCachePath);
+//        binding.webView.getSettings().setAllowFileAccess(true);
+//        binding.webView.getSettings().setAppCacheEnabled(true);
 
         WebSettings webSettings = binding.webView.getSettings();
         //如果访问的页面中要与Javascript交互,则webView必须设置支持Javascript

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


+ 13 - 0
app/src/main/res/drawable/bg_notice.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="rectangle">
+            <stroke android:width="1dp" android:color="#ffffffff" />
+            <gradient android:type="linear" android:useLevel="true" android:startColor="#ffedf3f8" android:endColor="#fffafafa" android:angle="157" />
+            <corners android:topLeftRadius="8dp" android:topRightRadius="8dp" android:bottomLeftRadius="8dp" android:bottomRightRadius="8dp" />
+            <item android:name="android:shadowColor">#8000000</item>
+            <item android:name="android:shadowDx">0</item>
+            <item android:name="android:shadowDy">1</item>
+        </shape>
+    </item>
+</selector>

+ 4 - 4
app/src/main/res/drawable/round_corner_top_letf_right.xml

@@ -2,8 +2,8 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
     <solid android:color="#FFFFFF" /> <!-- 白色背景 -->
     <corners
-        android:bottomLeftRadius="0dp"
-        android:bottomRightRadius="0dp"
-        android:topLeftRadius="40dp"
-        android:topRightRadius="40dp" />
+        android:bottomLeftRadius="10dp"
+        android:bottomRightRadius="10dp"
+        android:topLeftRadius="10dp"
+        android:topRightRadius="10dp" />
 </shape>

+ 9 - 0
app/src/main/res/drawable/rounded_corners.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="#FFFFFF"/> <!-- 背景颜色 -->
+    <corners
+        android:topLeftRadius="20dp"
+        android:topRightRadius="20dp"
+        android:bottomLeftRadius="0dp"
+        android:bottomRightRadius="0dp"/>
+</shape>

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

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/icon_enent_select" android:state_checked="true" />
+    <item android:drawable="@drawable/icon_enent_select" android:state_pressed="true" />
+    <item android:drawable="@drawable/icon_event" />
+</selector>

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

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/icon_home_select" android:state_checked="true" />
+    <item android:drawable="@drawable/icon_home_select" android:state_pressed="true" />
+    <item android:drawable="@drawable/icon_home" />
+</selector>

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

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/icon_me_select" android:state_checked="true" />
+    <item android:drawable="@drawable/icon_me_select" android:state_pressed="true" />
+    <item android:drawable="@drawable/icon_me" />
+</selector>

+ 5 - 0
app/src/main/res/drawable/shape_details_gray_solid_5.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/light_gray_12" />
+    <corners android:radius="5dp" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/shape_screen_blue_solid_5.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/main_blue_color" />
+    <corners android:radius="5dp" />
+</shape>

+ 58 - 80
app/src/main/res/layout/activity_camera_list.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
 
     <data>
 
@@ -16,20 +15,27 @@
         android:layout_height="match_parent"
         android:orientation="vertical">
 
-        <!--        <androidx.drawerlayout.widget.DrawerLayout-->
-        <!--            android:id="@+id/drawerLayout"-->
-        <!--            android:layout_width="match_parent"-->
-        <!--            android:layout_height="match_parent">-->
-        <LinearLayout
-            android:visibility="visible"
+        <androidx.drawerlayout.widget.DrawerLayout
+            android:id="@+id/drawerLayout"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:gravity="center_vertical"
-            android:orientation="horizontal"
-            android:padding="12dp">
+            android:layout_height="match_parent">
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
 
-            <EditText
-                android:id="@+id/input_et"
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="12dp"
+                    android:visibility="visible">
+
+                    <EditText
+                        android:id="@+id/input_et"
                 android:layout_width="match_parent"
                 android:layout_height="30dp"
                 android:layout_weight="1"
@@ -59,6 +65,7 @@
 
         <com.scwang.smartrefresh.layout.SmartRefreshLayout
             android:id="@+id/smartRefreshLayout"
+
             android:layout_width="match_parent"
             android:layout_height="match_parent">
 
@@ -69,71 +76,42 @@
                 android:overScrollMode="never" />
         </com.scwang.smartrefresh.layout.SmartRefreshLayout>
 
-        <!--            &lt;!&ndash; 右边菜单 &ndash;&gt;-->
-        <!--            <ScrollView android:overScrollMode="never"-->
-        <!--                android:id="@+id/rightLayout"-->
-        <!--                android:layout_width="match_parent"-->
-        <!--                android:layout_height="match_parent"-->
-        <!--                android:layout_gravity="end"-->
-        <!--                android:background="@color/color_white"-->
-        <!--                android:orientation="vertical">-->
-
-        <!--                <LinearLayout-->
-        <!--                    android:layout_width="match_parent"-->
-        <!--                    android:layout_height="match_parent"-->
-        <!--                    android:orientation="vertical">-->
-
-        <!--                    <EditText-->
-        <!--                        android:id="@+id/searchName"-->
-        <!--                        android:layout_width="match_parent"-->
-        <!--                        android:layout_height="40dp"-->
-        <!--                        android:layout_margin="20dp"-->
-        <!--                        android:background="@drawable/shape_edit_text_white" />-->
-
-        <!--                    <TextView-->
-        <!--                        android:layout_width="wrap_content"-->
-        <!--                        android:layout_height="wrap_content"-->
-        <!--                        android:layout_marginLeft="10dp"-->
-        <!--                        android:layout_marginTop="10dp"-->
-        <!--                        android:text="探头类别"-->
-        <!--                        android:textColor="@color/light_gray_10" />-->
-
-
-        <!--                    <androidx.recyclerview.widget.RecyclerView android:overScrollMode="never"-->
-        <!--                        android:id="@+id/typeRecyclerView"-->
-        <!--                        android:layout_width="match_parent"-->
-        <!--                        android:layout_height="match_parent"-->
-        <!--                        android:layout_marginLeft="10dp"-->
-        <!--                        android:layout_marginTop="10dp" />-->
-
-        <!--                    <TextView-->
-        <!--                        android:layout_width="wrap_content"-->
-        <!--                        android:layout_height="wrap_content"-->
-        <!--                        android:layout_marginLeft="10dp"-->
-        <!--                        android:layout_marginTop="10dp"-->
-        <!--                        android:text="地址区域"-->
-        <!--                        android:textColor="@color/light_gray_10" />-->
-
-        <!--                    <androidx.recyclerview.widget.RecyclerView android:overScrollMode="never"-->
-        <!--                        android:id="@+id/recyclerView"-->
-        <!--                        android:layout_width="match_parent"-->
-        <!--                        android:layout_height="match_parent"-->
-        <!--                        android:layout_marginLeft="10dp"-->
-        <!--                        android:layout_marginTop="10dp" />-->
-
-        <!--                    <Button-->
-        <!--                        android:id="@+id/searchBtn"-->
-        <!--                        android:layout_width="200dp"-->
-        <!--                        android:layout_height="45dp"-->
-        <!--                        android:layout_gravity="center"-->
-        <!--                        android:layout_marginTop="5dp"-->
-        <!--                        android:layout_marginBottom="5dp"-->
-        <!--                        android:background="@drawable/shape_emergency_solid_blue_5"-->
-        <!--                        android:text="搜索"-->
-        <!--                        android:textColor="@color/color_white" />-->
-
-        <!--                </LinearLayout>-->
-        <!--            </ScrollView>-->
-        <!--        </androidx.drawerlayout.widget.DrawerLayout>-->
+            </LinearLayout>
+            <!-- 左边菜单 -->
+            <ScrollView
+                android:id="@+id/rightLayout"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_gravity="start"
+                android:background="@color/color_white"
+                android:orientation="vertical"
+                android:overScrollMode="never">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical">
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/typerecyclerView"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginTop="10dp"
+                        android:overScrollMode="never" />
+
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/recyclerView"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginTop="10dp"
+                        android:overScrollMode="never" />
+
+
+                </LinearLayout>
+            </ScrollView>
+        </androidx.drawerlayout.widget.DrawerLayout>
     </LinearLayout>
 </layout>

+ 23 - 0
app/src/main/res/layout/activity_exo.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="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="vertical">
+    <com.sjkj.appthreefloor_tsgz.utils.MyVideoView
+        android:id="@+id/player_view"
+        android:layout_width="match_parent"
+        android:layout_height="500dp"
+       />
+    <Button
+        android:id="@+id/btn_cut"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="one" />
+
+    <Button
+        android:id="@+id/btn_cut2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="two" />
+</LinearLayout>

+ 24 - 18
app/src/main/res/layout/activity_main.xml

@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools">
+    xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <data>
 
@@ -10,16 +9,24 @@
             type="com.sjkj.appthreefloor_tsgz.activity.viewModel.MainViewModel" />
     </data>
 
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="vertical">
 
-        <androidx.viewpager2.widget.ViewPager2
+        <com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
+            android:id="@+id/mNavigation"
+            android:layout_width="match_parent"
+            android:layout_height="60dp"
+            android:layout_alignParentBottom="true"
+            android:background="@drawable/rounded_corners"
+            app:menu="@menu/bottom_navigation_tab" />
+
+        <androidx.viewpager.widget.ViewPager
             android:id="@+id/view_pager"
             android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1" />
+            android:layout_height="match_parent"
+            android:layout_above="@id/mNavigation" />
 
         <!--        <FrameLayout-->
         <!--            android:id="@+id/mFrameLayout"-->
@@ -27,17 +34,16 @@
         <!--            android:layout_height="0dp"-->
         <!--            android:layout_weight="1" />-->
 
-        <com.google.android.material.bottomnavigation.BottomNavigationView
-            android:id="@+id/mNavigation"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="@color/color_white"
-            app:itemIconTint="@drawable/selector_navigation_tab_color"
-            app:itemTextAppearanceActive="@style/bottom_tab_title_active"
-            app:itemTextAppearanceInactive="@style/bottom_tab_title_inactive"
-            app:itemTextColor="@drawable/selector_navigation_tab_color"
-            app:labelVisibilityMode="labeled"
-            app:menu="@menu/bottom_navigation_tab" />
+        <!--        <com.google.android.material.bottomnavigation.BottomNavigationView-->
+        <!--            android:id="@+id/mNavigation"-->
+        <!--            android:layout_width="match_parent"-->
+        <!--            android:layout_height="wrap_content"-->
+        <!--            android:background="@color/color_white"-->
+        <!--            app:itemTextAppearanceActive="@style/bottom_tab_title_active"-->
+
+        <!--            app:itemTextAppearanceInactive="@style/bottom_tab_title_inactive"-->
+        <!--            app:labelVisibilityMode="labeled"-->
+        <!--            app:menu="@menu/bottom_navigation_tab" />-->
 
-    </LinearLayout>
+    </RelativeLayout>
 </layout>

+ 12 - 12
app/src/main/res/layout/activity_resource_water_crane.xml

@@ -49,18 +49,18 @@
                 android:textColor="@color/main_blue_color" />
         </LinearLayout>
 
-        <com.google.android.material.tabs.TabLayout
-            android:id="@+id/tabLayout"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:tabIndicatorColor="@color/main_blue_color"
-            app:tabIndicatorFullWidth="false"
-            app:tabIndicatorHeight="2dp"
-            app:tabMode="auto"
-            app:tabRippleColor="@android:color/transparent"
-            app:tabSelectedTextColor="@color/main_blue_color"
-            app:tabTextAppearance="@style/TabLayoutStyle"
-            app:tabTextColor="@color/color_gray_text" />
+<!--        <com.google.android.material.tabs.TabLayout-->
+<!--            android:id="@+id/tabLayout"-->
+<!--            android:layout_width="wrap_content"-->
+<!--            android:layout_height="wrap_content"-->
+<!--            app:tabIndicatorColor="@color/main_blue_color"-->
+<!--            app:tabIndicatorFullWidth="false"-->
+<!--            app:tabIndicatorHeight="2dp"-->
+<!--            app:tabMode="auto"-->
+<!--            app:tabRippleColor="@android:color/transparent"-->
+<!--            app:tabSelectedTextColor="@color/main_blue_color"-->
+<!--            app:tabTextAppearance="@style/TabLayoutStyle"-->
+<!--            app:tabTextColor="@color/color_gray_text" />-->
 
         <FrameLayout
             android:id="@+id/fragment_layout"

+ 16 - 0
app/src/main/res/layout/activity_right_list_item.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:padding="10dp">
+
+    <TextView
+        android:id="@+id/checkBox"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:minHeight="40dp"
+
+        android:button="@null"
+        android:gravity="center" />
+
+</RelativeLayout>

+ 18 - 0
app/src/main/res/layout/drawer_item.xml

@@ -0,0 +1,18 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal">
+
+    <ImageView
+        android:id="@+id/icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:src="@drawable/ic_launcher_logo_siping_tsgz" />
+
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Item Title" />
+
+</LinearLayout>

+ 13 - 13
app/src/main/res/layout/fragment_event.xml

@@ -186,19 +186,19 @@
         </LinearLayout>
 
 
-        <com.google.android.material.tabs.TabLayout
-            android:id="@+id/tabLayout"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            app:tabGravity="fill"
-            app:tabIndicatorColor="@color/main_blue_color"
-            app:tabIndicatorFullWidth="false"
-            app:tabIndicatorHeight="2dp"
-            app:tabMode="fixed"
-            app:tabRippleColor="@android:color/transparent"
-            app:tabSelectedTextColor="@color/main_blue_color"
-            app:tabTextAppearance="@style/TabLayoutStyle"
-            app:tabTextColor="@color/color_gray_text" />
+<!--        <com.google.android.material.tabs.TabLayout-->
+<!--            android:id="@+id/tabLayout"-->
+<!--            android:layout_width="match_parent"-->
+<!--            android:layout_height="wrap_content"-->
+<!--            app:tabGravity="fill"-->
+<!--            app:tabIndicatorColor="@color/main_blue_color"-->
+<!--            app:tabIndicatorFullWidth="false"-->
+<!--            app:tabIndicatorHeight="2dp"-->
+<!--            app:tabMode="fixed"-->
+<!--            app:tabRippleColor="@android:color/transparent"-->
+<!--            app:tabSelectedTextColor="@color/main_blue_color"-->
+<!--            app:tabTextAppearance="@style/TabLayoutStyle"-->
+<!--            app:tabTextColor="@color/color_gray_text" />-->
 
         <com.scwang.smartrefresh.layout.SmartRefreshLayout
             android:id="@+id/smartRefreshLayout"

+ 70 - 48
app/src/main/res/layout/fragment_main.xml

@@ -22,6 +22,7 @@
         android:orientation="vertical">
 
         <LinearLayout
+            android:background="#ECEDF4"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical">
@@ -29,16 +30,30 @@
 
             <FrameLayout
                 android:layout_width="match_parent"
-                android:layout_height="550dp">
+                android:layout_height="450dp">
 
-                <ImageView
+                <FrameLayout
                     android:layout_width="match_parent"
-                    android:layout_height="350dp"
-                    android:background="@mipmap/bg_login_siping_tsgz">
+                    android:layout_height="250dp">
+
+                    <ImageView
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_marginBottom="10dp"
+                        android:background="@mipmap/bg_splash_tsgz" />
+
+                    <ImageView
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="bottom"
+                        android:background="@drawable/icon_hu" />
+                </FrameLayout>
 
-                </ImageView>
 
                 <LinearLayout
+
+                    android:layout_marginLeft="15dp"
+                    android:layout_marginRight="15dp"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_gravity="bottom"
@@ -47,6 +62,7 @@
 
 
                     <LinearLayout
+
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="10dp"
@@ -65,9 +81,8 @@
                             <ImageView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:background="@drawable/bg_tsgz_blue"
                                 android:padding="10dp"
-                                android:src="@drawable/icon_daily">
+                                android:background="@drawable/icon_camera">
 
                             </ImageView>
 
@@ -94,9 +109,8 @@
                             <ImageView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:background="@drawable/bg_tsgz_blue"
                                 android:padding="10dp"
-                                android:src="@drawable/icon_daily">
+                                android:background="@drawable/icon_sensor">
 
                             </ImageView>
 
@@ -123,9 +137,8 @@
                             <ImageView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:background="@drawable/bg_tsgz_blue"
                                 android:padding="10dp"
-                                android:src="@drawable/icon_daily">
+                                android:background="@drawable/icon_intake">
 
                             </ImageView>
 
@@ -152,9 +165,8 @@
                             <ImageView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:background="@drawable/bg_tsgz_blue"
                                 android:padding="10dp"
-                                android:src="@drawable/icon_daily">
+                                android:background="@drawable/icon_water_crane">
 
                             </ImageView>
 
@@ -191,9 +203,8 @@
                             <ImageView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:background="@drawable/bg_tsgz_blue"
                                 android:padding="10dp"
-                                android:src="@drawable/icon_daily">
+                                android:background="@drawable/icon_water_source">
 
                             </ImageView>
 
@@ -219,9 +230,8 @@
                             <ImageView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:background="@drawable/bg_tsgz_blue"
                                 android:padding="10dp"
-                                android:src="@drawable/icon_daily">
+                                android:background="@drawable/icon_zanding01">
 
                             </ImageView>
 
@@ -231,7 +241,7 @@
                                 android:layout_gravity="center_horizontal"
                                 android:layout_marginTop="8dp"
                                 android:gravity="center"
-                                android:text="一级"
+                                android:text="标题"
                                 android:textColor="@color/color_black_text"
                                 android:textSize="14dp" />
                         </LinearLayout>
@@ -247,9 +257,8 @@
                             <ImageView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:background="@drawable/bg_tsgz_blue"
                                 android:padding="10dp"
-                                android:src="@drawable/icon_daily">
+                                android:background="@drawable/icon_zanding02">
 
                             </ImageView>
 
@@ -259,7 +268,7 @@
                                 android:layout_gravity="center_horizontal"
                                 android:layout_marginTop="8dp"
                                 android:gravity="center"
-                                android:text="二级"
+                                android:text="标题"
                                 android:textColor="@color/color_black_text"
                                 android:textSize="14dp" />
                         </LinearLayout>
@@ -275,9 +284,8 @@
                             <ImageView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:background="@drawable/bg_tsgz_blue"
                                 android:padding="10dp"
-                                android:src="@drawable/icon_daily">
+                                android:background="@drawable/icon_more">
 
                             </ImageView>
 
@@ -299,9 +307,12 @@
 
 
             <LinearLayout
+                android:layout_height="70dp"
+                android:layout_marginLeft="15dp"
+                android:layout_marginTop="10dp"
                 android:layout_width="match_parent"
-                android:layout_height="100dp"
-                android:background="@color/C11">
+                android:layout_marginRight="15dp"
+                android:background="@drawable/icon_noticebg">
 
                 <LinearLayout
                     android:layout_width="match_parent"
@@ -309,11 +320,11 @@
                     android:orientation="horizontal">
 
                     <ImageView
-                        android:layout_width="70dp"
-                        android:layout_height="70dp"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
                         android:layout_gravity="center_vertical"
                         android:layout_marginLeft="30dp"
-                        android:background="@drawable/icon_daily">
+                        android:background="@drawable/icon_notice">
 
                     </ImageView>
 
@@ -333,8 +344,8 @@
                             android:ellipsize="end"
                             android:gravity="center_vertical"
                             android:singleLine="true"
-                            android:text="333333333"
-                            android:textColor="@color/black" />
+                            android:text="333333333333333333333333333333333333333333333333333333333333333333333333"
+                            android:textColor="@color/color_notice" />
 
                         <TextView
                             android:layout_width="match_parent"
@@ -344,7 +355,7 @@
                             android:gravity="center_vertical"
                             android:singleLine="true"
                             android:text="4444"
-                            android:textColor="@color/black" />
+                            android:textColor="@color/color_notice" />
                     </LinearLayout>
 
                 </LinearLayout>
@@ -352,15 +363,17 @@
 
             </LinearLayout>
 
-            
 
-            <com.youth.banner.Banner
-                android:id="@+id/banner"
-                android:layout_width="match_parent"
-                android:layout_height="150dp"
-                android:layout_marginTop="15dp"
-                app:banner_indicator_normal_color="@color/transparent_click"
-                app:banner_indicator_selected_color="@color/transparent_click" />
+                        <com.youth.banner.Banner
+                            android:id="@+id/banner"
+                            android:layout_width="match_parent"
+                            android:layout_marginLeft="15dp"
+                            android:layout_marginRight="15dp"
+                            android:layout_height="120dp"
+                            android:layout_marginTop="15dp"
+                            app:banner_radius="5dp"
+                            app:banner_indicator_normal_color="@color/divider"
+                            app:banner_indicator_selected_color="@color/white" />
 
 
             <RelativeLayout
@@ -371,58 +384,67 @@
 
                 <TextView
                     android:layout_width="match_parent"
+                    android:drawableLeft="@drawable/icon_title"
                     android:layout_height="wrap_content"
                     android:layout_centerInParent="true"
                     android:layout_marginLeft="15dp"
                     android:layout_toLeftOf="@+id/tv_all"
-                    android:text="一级标题"
+                    android:drawablePadding="10dp"
+                    android:text="更多应用"
                     android:textColor="@color/black"
-                    android:textSize="14dp" />
+                    android:textSize="18dp" />
 
                 <TextView
                     android:id="@+id/tv_all"
                     android:layout_width="wrap_content"
+                    android:layout_centerVertical="true"
                     android:layout_height="wrap_content"
                     android:layout_alignParentRight="true"
                     android:layout_marginRight="15dp"
                     android:drawableRight="@drawable/icon_arrow_right"
 
                     android:text="全部"
-                    android:textColor="@color/text_gray"
-                    android:textSize="12dp"></TextView>
+                    android:textColor="@color/text_gray3"
+                    android:textSize="14dp" />
             </RelativeLayout>
 
             <LinearLayout
+                android:layout_marginBottom="45dp"
+
                 android:layout_marginTop="10dp"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:orientation="horizontal">
 
                 <LinearLayout
+                    android:layout_height="220dp"
+                    android:layout_marginLeft="10dp"
                     android:layout_width="0dp"
-                    android:layout_height="150dp"
+                    android:layout_marginRight="10dp"
                     android:layout_weight="1"
-                    android:background="@color/black">
+                    android:background="@drawable/icon_zanding03">
 
                 </LinearLayout>
 
                 <LinearLayout
                     android:layout_width="0dp"
-                    android:layout_height="150dp"
+                    android:layout_height="220dp"
+                    android:layout_marginRight="15dp"
                     android:layout_weight="1"
                     android:orientation="vertical">
 
                     <TextView
+                        android:layout_marginBottom="10dp"
                         android:layout_width="match_parent"
                         android:layout_height="0dp"
                         android:layout_weight="1"
-                        android:background="@color/red_color" />
+                        android:background="@drawable/icon_zanding04" />
 
                     <TextView
                         android:layout_width="match_parent"
                         android:layout_height="0dp"
                         android:layout_weight="1"
-                        android:background="@color/C11" />
+                        android:background="@drawable/icon_zanding05" />
                 </LinearLayout>
             </LinearLayout>
         </LinearLayout>

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

@@ -0,0 +1,23 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+  <RelativeLayout
+      android:background="@color/color_white"
+      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>

+ 8 - 11
app/src/main/res/menu/bottom_navigation_tab.xml

@@ -1,21 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:id="@+id/action_event"
-        android:icon="@drawable/ic_home"
-        android:title="@string/navigation_1"
-        app:showAsAction="ifRoom" />
+        android:icon="@drawable/selector_event"
+        android:title="@string/navigation_1" />
     <item
         android:id="@+id/action_main"
-        android:icon="@drawable/ic_periphery"
-        android:title="@string/navigation_2"
-        app:showAsAction="ifRoom" />
+        android:checked="true"
+        android:icon="@drawable/selector_home"
+        android:title="@string/navigation_2" />
 
 
     <item
         android:id="@+id/action_mine"
-        android:icon="@drawable/ic_me"
-        android:title="@string/navigation_3"
-        app:showAsAction="ifRoom" />
+        android:icon="@drawable/selector_me"
+        android:title="@string/navigation_3" />
 </menu>

+ 4 - 3
app/src/main/res/values/colors.xml

@@ -4,16 +4,17 @@
     <color name="colorPrimaryDark">#225298</color>
     <color name="colorAccent">#5394ff</color>
     <color name="color_input_red">#D81B60</color>
-
+    <color name="green_color">#27be6d</color>
     <color name="color_gray">#8a8a8a</color>
     <color name="main_blue_color">#5394ff</color>
     <color name="color_white">#fff</color>
     <color name="color_black">#000</color>
     <color name="color_blue_light">#0368ff</color>
     <color name="line_DDDDDD">#DDDDDD</color>
-
+    <color name="red_color">#F44336</color>
     <color name="gray">#dedede</color>
     <color name="text_gray">#999999</color>
+    <color name="text_gray3">#979797</color>
     <color name="text_gray2">#666666</color>
     <color name="divider_color">#E5E5E5</color>
     <color name="color_blue">#5394ff</color>
@@ -31,7 +32,7 @@
     <color name="light_gray_12">#EDEDED</color>
     <drawable name="gray">#D8D8D8</drawable>
     <color name="color_transparent00">#00000000</color>
-
+    <color name="color_notice">#334960</color>
     <color name="C0">#FFFFFF</color>
     <color name="C00">#000000</color>
     <color name="C1">#2c2c2c</color>

+ 15 - 0
app/src/main/res/xml/file_paths.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<paths>
+    <external-path
+        name="external_files"
+        path="." />
+    <external-path
+        name="files_root"
+        path="Android/data/${applicationId}/" />
+    <!--<external-path
+        name="external_files"
+        path="Android/data/com.sjkj.integratedplatform/filetmp/" />
+    <external-path
+        name="external_files"
+        path="Android/data/com.sjkj.integratedplatform/files/Pictures/" />-->
+</paths>

+ 9 - 0
app/src/main/res/xml/network_security_config.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<network-security-config>
+    <base-config cleartextTrafficPermitted="true">
+        <trust-anchors>
+<!--            <certificates src="@raw/supermap"/>-->
+            <certificates src="system" />
+        </trust-anchors>
+    </base-config>
+</network-security-config>

+ 2 - 2
base-lib/build.gradle

@@ -80,9 +80,9 @@ dependencies {
     api rootProject.ext.dependencies["zxing"]
     api rootProject.ext.dependencies["legacy"]
     //api rootProject.ext.dependencies["banner"]
-    api rootProject.ext.dependencies["multipleselector"]
+    //api rootProject.ext.dependencies["multipleselector"]
     api rootProject.ext.dependencies["flexbox"]
-    api rootProject.ext.dependencies["jiguangpush"]
+//    api rootProject.ext.dependencies["jiguangpush"]
     api rootProject.ext.dependencies["jiguangcore"]
     api rootProject.ext.dependencies["silicompressor"]
 //    api rootProject.ext.dependencies["palette"]

+ 0 - 1
base-lib/src/main/AndroidManifest.xml

@@ -44,7 +44,6 @@
     <uses-permission android:name="android.permission.NOTIFICATION_SERVICE" />
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
 
-    <uses-permission android:name="com.sjkj.integratedplatform_siping_tsgz.permission.JPUSH_MESSAGE" />
 
     <application>
 

+ 0 - 46
base-lib/src/main/java/com/sjkj/base_lib/utils/PushUtils.java

@@ -1,46 +0,0 @@
-package com.sjkj.base_lib.utils;
-
-import android.text.TextUtils;
-
-import com.sjkj.base_lib.BuildConfig;
-import com.sjkj.base_lib.app.BaseApp;
-import com.tencent.mmkv.MMKV;
-
-import cn.jpush.android.api.JPushInterface;
-
-public class PushUtils {
-    private static MMKV mmkv = MMKV.defaultMMKV();
-
-    public static void pushInit() {
-        JPushInterface.setDebugMode(BuildConfig.DEBUG);
-        JPushInterface.init(BaseApp.getInstance());
-    }
-    public static String getRegistrationId() {
-        String registrationId = mmkv.decodeString("registrationId");
-        if (TextUtils.isEmpty(registrationId)) {
-            registrationId = JPushInterface.getRegistrationID(BaseApp.getInstance());
-            setRegistrationId(registrationId);
-        } else {
-            pushStop();
-        }
-        return registrationId;
-    }
-
-    public static void setRegistrationId(String registrationId) {
-        if (TextUtils.isEmpty(registrationId)) return;
-        mmkv.encode("registrationId", registrationId);
-        pushStop();
-    }
-
-    public static void pushStop() {
-        if (!JPushInterface.isPushStopped(BaseApp.getInstance())) {
-            JPushInterface.stopPush(BaseApp.getInstance());
-        }
-    }
-
-    public static void pushRestart() {
-        if (JPushInterface.isPushStopped(BaseApp.getInstance())) {
-            JPushInterface.resumePush(BaseApp.getInstance());
-        }
-    }
-}

+ 13 - 13
base-lib/src/main/res/values-night/themes.xml

@@ -1,16 +1,16 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="Theme.BaseApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
-        <!-- Primary brand color. -->
-        <item name="colorPrimary">@color/purple_200</item>
-        <item name="colorPrimaryVariant">@color/purple_700</item>
-        <item name="colorOnPrimary">@color/black</item>
-        <!-- Secondary brand color. -->
-        <item name="colorSecondary">@color/teal_200</item>
-        <item name="colorSecondaryVariant">@color/teal_200</item>
-        <item name="colorOnSecondary">@color/black</item>
-        <!-- Status bar color. -->
-        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
-        <!-- Customize your theme here. -->
-    </style>
+<!--    <style name="Theme.BaseApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">-->
+<!--        &lt;!&ndash; Primary brand color. &ndash;&gt;-->
+<!--        <item name="colorPrimary">@color/purple_200</item>-->
+<!--        <item name="colorPrimaryVariant">@color/purple_700</item>-->
+<!--        <item name="colorOnPrimary">@color/black</item>-->
+<!--        &lt;!&ndash; Secondary brand color. &ndash;&gt;-->
+<!--        <item name="colorSecondary">@color/teal_200</item>-->
+<!--        <item name="colorSecondaryVariant">@color/teal_200</item>-->
+<!--        <item name="colorOnSecondary">@color/black</item>-->
+<!--        &lt;!&ndash; Status bar color. &ndash;&gt;-->
+<!--        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>-->
+<!--        &lt;!&ndash; Customize your theme here. &ndash;&gt;-->
+<!--    </style>-->
 </resources>

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

@@ -16,4 +16,5 @@
     <color name="color_gray">#8a8a8a</color>
     <color name="color_blue">#5394ff</color>
 
+
 </resources>

+ 13 - 13
base-lib/src/main/res/values/themes.xml

@@ -1,16 +1,16 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="Theme.BaseApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
-        <!-- Primary brand color. -->
-        <item name="colorPrimary">@color/purple_500</item>
-        <item name="colorPrimaryVariant">@color/purple_700</item>
-        <item name="colorOnPrimary">@color/white</item>
-        <!-- Secondary brand color. -->
-        <item name="colorSecondary">@color/teal_200</item>
-        <item name="colorSecondaryVariant">@color/teal_700</item>
-        <item name="colorOnSecondary">@color/black</item>
-        <!-- Status bar color. -->
-        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
-        <!-- Customize your theme here. -->
-    </style>
+<!--    <style name="Theme.BaseApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">-->
+<!--        &lt;!&ndash; Primary brand color. &ndash;&gt;-->
+<!--        <item name="colorPrimary">@color/purple_500</item>-->
+<!--        <item name="colorPrimaryVariant">@color/purple_700</item>-->
+<!--        <item name="colorOnPrimary">@color/white</item>-->
+<!--        &lt;!&ndash; Secondary brand color. &ndash;&gt;-->
+<!--        <item name="colorSecondary">@color/teal_200</item>-->
+<!--        <item name="colorSecondaryVariant">@color/teal_700</item>-->
+<!--        <item name="colorOnSecondary">@color/black</item>-->
+<!--        &lt;!&ndash; Status bar color. &ndash;&gt;-->
+<!--        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>-->
+<!--        &lt;!&ndash; Customize your theme here. &ndash;&gt;-->
+<!--    </style>-->
 </resources>

+ 2 - 2
build.gradle

@@ -1,7 +1,7 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 plugins {
-    id 'com.android.application' version '7.1.2' apply false
-    id 'com.android.library' version '7.1.2' apply false
+    id 'com.android.application' version '7.3.0' apply false
+    id 'com.android.library' version '7.3.0' apply false
 }
 
 task clean(type: Delete) {

+ 5 - 6
config.gradle

@@ -3,11 +3,10 @@ ext {
     android = [
             applicationId    : "com.sjkj.appthreefloor_tsgz",
             minSdkVersion    : 21,
-            targetSdkVersion : 30,
-            compileSdkVersion: 30,
+            targetSdkVersion : 31,
+            compileSdkVersion: 33,
             versionCode      : 10403,
             versionName      : "1.4.3",
-            jpush_appkey     : "595eecb75fc3d712a585cc07"
     ]
 
     //Libraries
@@ -20,7 +19,7 @@ ext {
             "gson"                    : 'com.google.code.gson:gson:2.8.6',
             "okhttp3"                 : 'com.squareup.okhttp3:okhttp:4.9.1',
             "appcompat"               : 'androidx.appcompat:appcompat:1.3.0',
-            "design"                  : 'com.google.android.material:material:1.4.0',
+            "design"                  : 'com.google.android.material:material:1.2.0',
             "glide"                   : 'com.github.bumptech.glide:glide:4.12.0',
             "glide-compiler"          : 'com.github.bumptech.glide:compiler:4.12.0',
             "zxing"                   : 'com.king.zxing:zxing-lite:2.0.3',
@@ -41,7 +40,7 @@ ext {
             "hms:scan-kit"            : 'com.huawei.hms:scan:1.1.3.301',
             "legacy"                  : 'androidx.legacy:legacy-support-v13:1.0.0',
             "swiperefreshlayout"      : 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0',
-            "jiguangpush"             : 'cn.jiguang.sdk:jpush:3.8.6',  // 此处以JPush 3.8.6 版本为例。
+          //  "jiguangpush"             : 'cn.jiguang.sdk:jpush:3.8.6',  // 此处以JPush 3.8.6 版本为例。
             "jiguangcore"             : 'cn.jiguang.sdk:jcore:2.5.5',  // 此处以JCore 2.5.5 版本为例。
             "xpermissions"            : 'com.github.getActivity:XXPermissions:18.2',
             "matisse"                 : 'com.zhihu.android:matisse:0.5.3-beta3',
@@ -55,7 +54,7 @@ ext {
             "kotlin"                  : 'org.jetbrains.kotlin:kotlin-stdlib:1.5.30',
             "dialogx"                 : 'com.github.kongzue.DialogX:DialogX:0.0.48',
             "dialogxsample"           : 'com.github.kongzue.DialogXSample:DatePicker:0.0.3',
-            "multipleselector"        : 'com.swy:multipleselector:1.0.0',
+           // "multipleselector"        : 'com.swy:multipleselector:1.0.0',
             "relinker"                : 'com.getkeepsafe.relinker:relinker:1.3.1',
             "silicompressor"          : 'com.iceteck.silicompressorr:silicompressor:2.2.4',
 

+ 13 - 10
settings.gradle

@@ -1,26 +1,29 @@
 pluginManagement {
     repositories {
         gradlePluginPortal()
-        flatDir { dirs 'libs' }
         google()
         mavenCentral()
-        maven { url 'https://jitpack.io' }
-        maven {url 'https://maven.aliyun.com/repository/jcenter'}
-        maven {url 'https://maven.aliyun.com/repository/google'}
-        maven {url 'https://maven.aliyun.com/repository/gradle-plugin'}
-        maven { url "https://s01.oss.sonatype.org/content/groups/public" }
-//        maven {url 'http://maven.aliyun.com/nexus/content/groups/public'}
+        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
+        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
+        maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
+        maven { url 'https://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
+        maven { url "https://jitpack.io" }
+
+
     }
 }
 dependencyResolutionManagement {
     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
     repositories {
-        gradlePluginPortal()
-        flatDir { dirs 'libs' }
         google()
         mavenCentral()
-        maven { url 'https://jitpack.io' }
+        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
+        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
+        maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
+        maven { url 'https://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
+        maven { url "https://jitpack.io" }
     }
+
 }
 rootProject.name = "AppThreeFloor"
 include ':app'