Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	app/src/main/java/com/silence/commonframe/activity/AirGuardActivity.java
#	app/src/main/java/com/silence/commonframe/activity/AirGuardDetailActivity.java
#	app/src/main/java/com/silence/commonframe/activity/AirGuardNewTimeActivity.java
#	app/src/main/java/com/silence/commonframe/activity/AirGuardTimeClockActivity.java
#	app/src/main/java/com/silence/commonframe/activity/AirGuardWordTimeActivity.java
#	app/src/main/java/com/silence/commonframe/activity/Interface/AirGuardListener.java
#	app/src/main/java/com/silence/commonframe/activity/Interface/AirGuardWordTimeListener.java
#	app/src/main/java/com/silence/commonframe/activity/presenter/AirGuardPresenter.java
#	app/src/main/java/com/silence/commonframe/activity/presenter/AirGuardWordTimePresenter.java
#	app/src/main/java/com/silence/commonframe/adapter/AirGuardWorKTimeAdapter.java
#	app/src/main/java/com/silence/commonframe/base/basemvp/BaseFragment.java
#	app/src/main/java/com/silence/commonframe/common/constant/UrlConstants.java
#	app/src/main/java/com/silence/commonframe/fragment/DeviceFragment.java
740085783@qq.com 6 gadi atpakaļ
vecāks
revīzija
e0a838b0a4
39 mainītis faili ar 2532 papildinājumiem un 51 dzēšanām
  1. 9 1
      Android-zxyun.iml
  2. 51 29
      app/src/main/AndroidManifest.xml
  3. 3 1
      app/src/main/java/com/silence/commonframe/ApiService.java
  4. 21 0
      app/src/main/java/com/silence/commonframe/activity/Interface/AirGuardDetailListener.java
  5. 26 0
      app/src/main/java/com/silence/commonframe/activity/Interface/AirGuardNewTimeListener.java
  6. 20 0
      app/src/main/java/com/silence/commonframe/activity/Interface/AirGuardTimeClockListener.java
  7. 2 1
      app/src/main/java/com/silence/commonframe/activity/LoginCompanyActivity.java
  8. 59 0
      app/src/main/java/com/silence/commonframe/activity/presenter/AirGuardDetailPresenter.java
  9. 96 0
      app/src/main/java/com/silence/commonframe/activity/presenter/AirGuardNewTimePresenter.java
  10. 59 0
      app/src/main/java/com/silence/commonframe/activity/presenter/AirGuardTimeClockPresenter.java
  11. 1 1
      app/src/main/java/com/silence/commonframe/adapter/AddDeviceAdapter.java
  12. 2 0
      app/src/main/java/com/silence/commonframe/base/basemvp/BaseActivity.java
  13. 146 0
      app/src/main/java/com/silence/commonframe/model/AirGuardRunTimeListModel.java
  14. 26 0
      app/src/main/java/com/silence/commonframe/utils/LoginIn.java
  15. 92 0
      app/src/main/java/com/silence/tech/adapter/MoniTroubleAdapter.java
  16. 232 0
      app/src/main/java/com/silence/tech/bean/TroubleListBean.java
  17. 76 0
      app/src/main/java/com/silence/tech/bean/TroubleTypeBean.java
  18. 32 0
      app/src/main/java/com/silence/tech/constant/UrlConstantsTech.java
  19. 194 0
      app/src/main/java/com/silence/tech/ui/MainCompanyActivity.java
  20. 22 0
      app/src/main/java/com/silence/tech/ui/device/activity/DeviceTechFragment.java
  21. 22 0
      app/src/main/java/com/silence/tech/ui/files/activity/FilesFragment.java
  22. 26 0
      app/src/main/java/com/silence/tech/ui/moni/Interface/MoniListener.java
  23. 19 0
      app/src/main/java/com/silence/tech/ui/moni/Interface/MoniTroubleListener.java
  24. 231 0
      app/src/main/java/com/silence/tech/ui/moni/activity/MoniFragment.java
  25. 175 0
      app/src/main/java/com/silence/tech/ui/moni/activity/MoniTroubleActivity.java
  26. 83 0
      app/src/main/java/com/silence/tech/ui/moni/presenter/MoniPresenter.java
  27. 55 0
      app/src/main/java/com/silence/tech/ui/moni/presenter/MoniTroublePresenter.java
  28. 116 0
      app/src/main/java/com/silence/tech/ui/my/activity/MineTechFragment.java
  29. 22 0
      app/src/main/res/drawable/tab_btn_files.xml
  30. 22 0
      app/src/main/res/drawable/tab_btn_moni.xml
  31. 0 14
      app/src/main/res/layout/activity_main.xml
  32. 61 0
      app/src/main/res/layout/activity_main_company.xml
  33. 58 0
      app/src/main/res/layout/activity_moni_trouble.xml
  34. 29 0
      app/src/main/res/layout/fragment_device_tech.xml
  35. 29 0
      app/src/main/res/layout/fragment_files.xml
  36. 253 0
      app/src/main/res/layout/fragment_mine_tech.xml
  37. 158 0
      app/src/main/res/layout/fragment_moni.xml
  38. 0 3
      app/src/main/res/layout/item_recylerview.xml
  39. 4 1
      app/src/main/res/values/strings.xml

+ 9 - 1
Android-zxyun.iml

@@ -1,11 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module external.linked.project.id="Android-zxyun" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="java-gradle" name="Java-Gradle">
+      <configuration>
+        <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
+        <option name="BUILDABLE" value="false" />
+      </configuration>
+    </facet>
+  </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
     <exclude-output />
     <content url="file://$MODULE_DIR$">
       <excludeFolder url="file://$MODULE_DIR$/.gradle" />
     </content>
-    <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
+    <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
 </module>

+ 51 - 29
app/src/main/AndroidManifest.xml

@@ -9,9 +9,11 @@
     <!-- 二维码相关权限 -->
     <uses-permission android:name="android.permission.VIBRATE" />
     <uses-permission android:name="android.permission.CAMERA" />
+
     <uses-feature android:name="android.hardware.camera" />
     <uses-feature android:name="android.hardware.camera.autofocus" />
     <uses-feature android:name="android.hardware.camera.flash" />
+
     <uses-permission android:name="android.permission.FLASHLIGHT" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
     <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
@@ -49,6 +51,7 @@
     <uses-permission android:name="android.permission.RECORD_VIDEO" />
     <uses-permission android:name="android.permission.READ_LOGS" />
     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+
     <application
         android:name=".App"
         android:allowBackup="true"
@@ -64,6 +67,7 @@
         <!-- android:value="4abbaf9cb40a64046f30ccf9970a7f26" /> -->
         <!-- android:value="70d24ce161a21cb552b195b743058b3a" /> -->
 
+
         <!-- <activity android:name=".activity.MainActivity">   .activity.WelcomeActivity" -->
         <activity
             android:name=".activity.WelcomeActivity"
@@ -92,26 +96,26 @@
             android:launchMode="singleTask"
             android:taskAffinity="com.silence.commonframe"
             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
-        <!--   登录   -->
+        <!-- 登录 -->
         <activity
             android:name=".activity.LoginActivity"
             android:launchMode="singleTask"
             android:screenOrientation="portrait" />
-        <!--    android:launchMode="singleTask"-->
-        <!--   主页   -->
+        <!-- android:launchMode="singleTask" -->
+        <!-- 主页 -->
         <activity
             android:name=".activity.MainActivity"
             android:launchMode="singleTask"
             android:screenOrientation="portrait" />
-        <!--   注册   -->
+        <!-- 注册 -->
         <activity
             android:name=".activity.RegisterActivity"
             android:screenOrientation="portrait" />
-        <!--   忘记密码   -->
+        <!-- 忘记密码 -->
         <activity
             android:name=".activity.ForgetPasswordActivity"
             android:screenOrientation="portrait" />
-        <!--   设备列表   -->
+        <!-- 设备列表 -->
         <activity
             android:name=".activity.AdddeviceActivity"
             android:screenOrientation="portrait" />
@@ -126,13 +130,13 @@
             android:screenOrientation="portrait" />
         <!-- 图片浏览 -->
         <activity android:name=".utils.image.ImageBrowseActivity" />
-        <!-- 添加场景-->
+        <!-- 添加场景 -->
         <activity
             android:name=".activity.AddSiteActivity"
-            android:screenOrientation="portrait"
             android:configChanges="keyboard"
             android:exported="false"
-            android:windowSoftInputMode="stateHidden|adjustResize"/>
+            android:screenOrientation="portrait"
+            android:windowSoftInputMode="stateHidden|adjustResize" />
         <!-- 定位需要的服务 使用2.0的定位需要加上这个 -->
         <service android:name="com.amap.api.location.APSService" />
 
@@ -150,8 +154,7 @@
         <!-- <meta-data -->
         <!-- android:name="com.google.android.actions" -->
         <!-- android:resource="@xml/buttonstyle" /> -->
-        <activity
-            android:name=".activity.SitedetailActivity"/>
+        <activity android:name=".activity.SitedetailActivity" />
         <!-- 添加设备 -->
         <activity
             android:name=".activity.AdddevicedetailActivity"
@@ -215,8 +218,7 @@
             android:name=".activity.SubmitActivity"
             android:screenOrientation="portrait" />
         <!-- 信息上报 -->
-        <activity
-            android:name=".activity.NewSubmitActivity"/>
+        <activity android:name=".activity.NewSubmitActivity" />
         <activity
             android:name=".activity.FireAlarmActivity"
             android:theme="@style/Theme.Transparent" />
@@ -226,22 +228,24 @@
             android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
         <!-- android:theme="@style/Theme.Transparent" -->
 
+
         <!-- 极光推送 -->
         <service
             android:name="cn.jpush.android.service.PushService"
             android:enabled="true"
             android:exported="false"
             android:process=":multiprocess"
-            tools:node="replace" >
+            tools:node="replace">
             <intent-filter>
                 <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!-- Required  用户注册SDK的intent -->
                 <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!-- Required  用户接收SDK消息的intent -->
                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!-- Required  用户接收SDK通知栏信息的intent -->
                 <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!-- Required  用户打开自定义通知栏的intent -->
                 <action android:name="cn.jpush.android.intent.CONNECTION" /> <!-- 接收网络变化 连接/断开 since 1.6.3 -->
-                <category android:name="com.silence.commonframe" /> <!--JPush上注册的包名 -->
+                <category android:name="com.silence.commonframe" /> <!-- JPush上注册的包名 -->
             </intent-filter>
         </service>
+
         <receiver
             android:name=".tuisong.MyReceiver"
             android:enabled="true"
@@ -322,29 +326,47 @@
             android:theme="@style/Theme.Transparent" />
         <activity
             android:name=".activity.QuickSetupActivity"
-
             android:screenOrientation="portrait" />
         <activity android:name=".activity.NewsdetailActivityShow" />
         <activity
             android:name=".activity.LoginCompanyActivity"
-            android:screenOrientation="portrait"></activity>
+            android:screenOrientation="portrait" />
         <activity
             android:name="cn.finalteam.rxgalleryfinal.ui.activity.MediaActivity"
-            android:screenOrientation="portrait"
-            android:exported="true" />
+            android:exported="true"
+            android:screenOrientation="portrait" />
         <activity
             android:name="com.yalantis.ucrop.UCropActivity"
             android:screenOrientation="portrait" />
-        <!--空气卫士主界面-->
-        <activity android:name=".activity.AirGuardActivity" android:screenOrientation="portrait"/>
-        <!--空气卫士工作时间段界面-->
-        <activity android:name=".activity.AirGuardWordTimeActivity" android:screenOrientation="portrait"/>
-        <!--空气卫士添加时间段界面-->
-        <activity android:name=".activity.AirGuardNewTimeActivity" android:screenOrientation="portrait"/>
-        <!--空气卫士同步实时时间界面-->
-        <activity android:name=".activity.AirGuardTimeClockActivity" android:screenOrientation="portrait"/>
-        <!--空气卫士详情界面-->
-        <activity android:name=".activity.AirGuardDetailActivity" android:screenOrientation="portrait"></activity>
+        <!-- 空气卫士主界面 -->
+        <activity
+            android:name=".activity.AirGuardActivity"
+            android:screenOrientation="portrait" />
+        <!-- 空气卫士工作时间段界面 -->
+        <activity
+            android:name=".activity.AirGuardWordTimeActivity"
+            android:screenOrientation="portrait" />
+        <!-- 空气卫士添加时间段界面 -->
+        <activity
+            android:name=".activity.AirGuardNewTimeActivity"
+            android:screenOrientation="portrait" />
+        <!-- 空气卫士同步实时时间界面 -->
+        <activity
+            android:name=".activity.AirGuardTimeClockActivity"
+            android:screenOrientation="portrait" />
+        <!-- 空气卫士详情界面 -->
+        <activity
+            android:name=".activity.AirGuardDetailActivity"
+            android:screenOrientation="portrait" />
+
+        <!-- 企业版主界面 -->
+        <activity
+            android:name="com.silence.tech.ui.MainCompanyActivity"
+            android:screenOrientation="portrait" />
+        <!-- 企业版监控异常界面 -->
+        <activity android:name="com.silence.tech.ui.moni.activity.MoniTroubleActivity"
+            android:screenOrientation="portrait"
+            ></activity>
     </application>
 
 </manifest>

+ 3 - 1
app/src/main/java/com/silence/commonframe/ApiService.java

@@ -8,7 +8,9 @@ public interface ApiService {
 
 //   String httpUrl1   = "https://www.hsh-iot.com/hsh_app";
 
-  String httpUrl1   =   "https://www.hsh-iot.com/test/hsh_app";
+   String httpUrl1   =   "https://www.hsh-iot.com/test/hsh_app";
+
+//    String httpUrl1   =   "http://192.168.1.111:8080";
 
   //  String httpUrl1   =   "https://www.hsh-iot.com/hsh_app";
 

+ 21 - 0
app/src/main/java/com/silence/commonframe/activity/Interface/AirGuardDetailListener.java

@@ -0,0 +1,21 @@
+package com.silence.commonframe.activity.Interface;
+
+import com.silence.commonframe.base.basemvp.BaseModel;
+import com.silence.commonframe.base.basemvp.BasePresenter;
+
+/**
+ * 空气卫士详情接口
+ */
+public interface AirGuardDetailListener {
+    interface View{
+        String getDevId();
+        String getDevName();
+
+        void onUpdateAirNameSuccess();
+        void onFile(String msg);
+    }
+
+    abstract class Presenter extends BasePresenter<View,BaseModel> {
+        public abstract void updateDeviceName();
+    }
+}

+ 26 - 0
app/src/main/java/com/silence/commonframe/activity/Interface/AirGuardNewTimeListener.java

@@ -0,0 +1,26 @@
+package com.silence.commonframe.activity.Interface;
+
+import com.silence.commonframe.base.basemvp.BaseModel;
+import com.silence.commonframe.base.basemvp.BasePresenter;
+
+/**
+ * 空气卫士添加修改运行时间间隔接口
+ * @author moon
+ */
+public interface AirGuardNewTimeListener {
+    interface View{
+        String getDevId();
+        String getId();
+        String getStartTime();
+        String getEndTime();
+        int getSpeedType();
+
+        void onAddTimeSuccess();
+        void onUpdateTimeSuccess();
+        void onFile(String msg);
+    }
+    abstract class Presenter extends BasePresenter<View,BaseModel> {
+        public abstract void addTime();
+        public abstract void updateTime();
+    }
+}

+ 20 - 0
app/src/main/java/com/silence/commonframe/activity/Interface/AirGuardTimeClockListener.java

@@ -0,0 +1,20 @@
+package com.silence.commonframe.activity.Interface;
+
+import com.silence.commonframe.base.basemvp.BaseModel;
+import com.silence.commonframe.base.basemvp.BasePresenter;
+
+/**
+ * 空气卫士实时时钟接口
+ * @author moon
+ */
+public interface AirGuardTimeClockListener {
+    interface View{
+        String getDevId();
+
+        void onSuccess();
+        void onFile(String msg);
+    }
+    abstract class Presenter extends BasePresenter<View,BaseModel> {
+        public abstract void setTimeClock();
+    }
+}

+ 2 - 1
app/src/main/java/com/silence/commonframe/activity/LoginCompanyActivity.java

@@ -23,6 +23,7 @@ import com.silence.commonframe.model.LoginFromPasswordModel;
 import com.silence.commonframe.model.SiteModel;
 import com.silence.commonframe.utils.Data;
 import com.silence.commonframe.utils.LoadingPopupHelper;
+import com.silence.tech.ui.MainCompanyActivity;
 
 import java.net.NetworkInterface;
 import java.util.Collections;
@@ -73,7 +74,7 @@ public class LoginCompanyActivity extends AppCompatActivity {
     }
     private void  goGuide(){
         loadingPopupHelper.dismissLoading();
-        Intent intent = new Intent(this,MainActivity.class);
+        Intent intent = new Intent(this,MainCompanyActivity.class);
         startActivity(intent);
         //   startActivity(intent, oc2.toBundle());
         finish();

+ 59 - 0
app/src/main/java/com/silence/commonframe/activity/presenter/AirGuardDetailPresenter.java

@@ -0,0 +1,59 @@
+package com.silence.commonframe.activity.presenter;
+
+import android.app.Activity;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.lzy.okgo.OkGo;
+import com.lzy.okgo.cache.CacheMode;
+import com.lzy.okgo.callback.StringCallback;
+import com.silence.commonframe.activity.Interface.AirGuardDetailListener;
+import com.silence.commonframe.bean.BaseBean;
+import com.silence.commonframe.common.constant.UrlConstants;
+import com.silence.commonframe.utils.Data;
+import com.silence.commonframe.utils.LoginIn;
+
+import okhttp3.Call;
+import okhttp3.Response;
+
+/**
+ * 空气卫士详情Presenter
+ */
+public class AirGuardDetailPresenter extends AirGuardDetailListener.Presenter {
+
+    public AirGuardDetailPresenter(Activity mContext, AirGuardDetailListener.View mView){
+        this.mContext=mContext;
+        this.mView=mView;
+    }
+
+    //修改设备名字
+    @Override
+    public void updateDeviceName() {
+        OkGo.get(UrlConstants.AIRGUARD_DEV_DETAIL)
+                .tag(this)
+                .params("deviceId",mView.getDevId())
+                .params("deviceName",mView.getDevName())
+                .cacheKey("cacheGetKey")
+                .cacheMode(CacheMode.DEFAULT)
+                .headers("token", Data.getToken())
+                .execute(new StringCallback() {
+                    @Override
+                    public void onSuccess(String s, Call call, Response response) {
+                        BaseBean data = new Gson().fromJson(s,new TypeToken<BaseBean>(){}.getType());
+                        if (data.code == 0){
+                            mView.onFile("修改成功");
+                            mView.onUpdateAirNameSuccess();
+                        }else {
+                            LoginIn.tokenOut(data.code,mContext);
+                            mView.onFile(data.msg);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Call call, Response response, Exception e) {
+                        super.onError(call, response, e);
+                        mView.onFile("信息获取失败");
+                    }
+                });
+    }
+}

+ 96 - 0
app/src/main/java/com/silence/commonframe/activity/presenter/AirGuardNewTimePresenter.java

@@ -0,0 +1,96 @@
+package com.silence.commonframe.activity.presenter;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.widget.Toast;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.lzy.okgo.OkGo;
+import com.lzy.okgo.cache.CacheMode;
+import com.lzy.okgo.callback.StringCallback;
+import com.silence.commonframe.activity.AirGuardNewTimeActivity;
+import com.silence.commonframe.activity.Interface.AirGuardNewTimeListener;
+import com.silence.commonframe.bean.BaseBean;
+import com.silence.commonframe.common.constant.UrlConstants;
+import com.silence.commonframe.utils.Data;
+import com.silence.commonframe.utils.LoginIn;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import okhttp3.Call;
+import okhttp3.Response;
+
+public class AirGuardNewTimePresenter extends AirGuardNewTimeListener.Presenter {
+
+    public AirGuardNewTimePresenter(Activity mContext, AirGuardNewTimeListener.View mView){
+        this.mContext=mContext;
+        this.mView=mView;
+    }
+
+    //添加运行时间
+    @Override
+    public void addTime() {
+        OkGo.get(UrlConstants.AIRGUARD_RUNTIME)
+                .tag(this)
+                .params("deviceId",mView.getDevId())
+                .params("startTime",mView.getStartTime())
+                .params("endTime",mView.getEndTime())
+                .params("speedType",mView.getSpeedType())
+                .cacheKey("cacheGetKey")
+                .cacheMode(CacheMode.DEFAULT)
+                .headers("token", Data.getToken())
+                .execute(new StringCallback() {
+                    @Override
+                    public void onSuccess(String s, Call call, Response response) {
+                        BaseBean data = new Gson().fromJson(s,new TypeToken<BaseBean>(){}.getType());
+                        if (data.code == 0){
+                            mView.onFile("添加成功");
+                            mView.onAddTimeSuccess();
+                        }else {
+                            LoginIn.tokenOut(data.code,mContext);
+                            mView.onFile(data.msg);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Call call, Response response, Exception e) {
+                        super.onError(call, response, e);
+                        mView.onFile("信息获取失败");
+                    }
+                });
+    }
+
+    //修改运行时间
+    @Override
+    public void updateTime() {
+        OkGo.get(UrlConstants.AIRGUARD_UPDATE_RUNTIME)
+                .params("id",mView.getId())
+                .params("startTime",mView.getStartTime())
+                .params("endTime",mView.getEndTime())
+                .params("speedType",mView.getSpeedType())
+                .cacheKey("cacheGetKey")
+                .cacheMode(CacheMode.DEFAULT)
+                .headers("token", Data.getToken())
+                .execute(new StringCallback() {
+                    @Override
+                    public void onSuccess(String s, Call call, Response response) {
+                        BaseBean data = new Gson().fromJson(s,new TypeToken<BaseBean>(){}.getType());
+                        if (data.code == 0){
+                            mView.onFile("修改成功");
+                            mView.onUpdateTimeSuccess();
+                        }else {
+                            LoginIn.tokenOut(data.code,mContext);
+                            mView.onFile(data.msg);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Call call, Response response, Exception e) {
+                        super.onError(call, response, e);
+                        mView.onFile("信息获取失败");
+                    }
+                });
+    }
+}

+ 59 - 0
app/src/main/java/com/silence/commonframe/activity/presenter/AirGuardTimeClockPresenter.java

@@ -0,0 +1,59 @@
+package com.silence.commonframe.activity.presenter;
+
+import android.app.Activity;
+import android.widget.Toast;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.lzy.okgo.OkGo;
+import com.lzy.okgo.cache.CacheMode;
+import com.lzy.okgo.callback.StringCallback;
+import com.silence.commonframe.activity.Interface.AirGuardTimeClockListener;
+import com.silence.commonframe.bean.BaseBean;
+import com.silence.commonframe.common.constant.UrlConstants;
+import com.silence.commonframe.utils.Data;
+import com.silence.commonframe.utils.LoginIn;
+
+import okhttp3.Call;
+import okhttp3.Response;
+
+/**
+ * 空气卫士实时时钟presenter
+ * @author moon
+ */
+public class AirGuardTimeClockPresenter extends AirGuardTimeClockListener.Presenter {
+
+    public AirGuardTimeClockPresenter(Activity mContext, AirGuardTimeClockListener.View mView){
+        this.mContext = mContext;
+        this.mView = mView;
+    }
+
+    //同步实时时钟
+    @Override
+    public void setTimeClock() {
+        OkGo.get(UrlConstants.AIRGUARD_SETTIME)
+                .tag(this)
+                .cacheKey("cacheGetKey")
+                .cacheMode(CacheMode.DEFAULT)
+                .headers("token", Data.getToken())
+                .params("deviceId",mView.getDevId())
+                .execute(new StringCallback() {
+                    @Override
+                    public void onSuccess(String s, Call call, Response response) {
+                        BaseBean data = new Gson().fromJson(s,new TypeToken<BaseBean>(){}.getType());
+                        if (data.code == 0){
+                            mView.onSuccess();
+                        }else {
+                            LoginIn.tokenOut(data.code,mContext);
+                            mView.onFile(data.msg);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Call call, Response response, Exception e) {
+                        super.onError(call, response, e);
+                        mView.onFile("信息获取失败");
+                    }
+                });
+    }
+}

+ 1 - 1
app/src/main/java/com/silence/commonframe/adapter/AddDeviceAdapter.java

@@ -22,7 +22,7 @@ import java.util.HashMap;
 import java.util.List;
 
 /**
- * 添加设备(设备类型)构造
+ * 添加设备(设备类型)适配
  * @author 郑嘉明
  */
 public class AddDeviceAdapter extends RecyclerView.Adapter<AddDeviceAdapter.MyViewHolder> {

+ 2 - 0
app/src/main/java/com/silence/commonframe/base/basemvp/BaseActivity.java

@@ -25,6 +25,7 @@ import com.silence.commonframe.R;
 import com.silence.commonframe.base.base.AppManager;
 import com.silence.commonframe.base.utils.StatusBarCompat;
 import com.silence.commonframe.base.utils.TUtil;
+import com.silence.commonframe.utils.AtyContainer;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -94,6 +95,7 @@ public abstract class BaseActivity<T extends BasePresenter, E extends BaseModel>
             mPresenter.mContext=this;
         }
             butterKnife = ButterKnife.bind(this);
+            AtyContainer.getInstance().addActivity(this);
         this.initPresenter();
         this.initView();
         }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 146 - 0
app/src/main/java/com/silence/commonframe/model/AirGuardRunTimeListModel.java


+ 26 - 0
app/src/main/java/com/silence/commonframe/utils/LoginIn.java

@@ -112,4 +112,30 @@ public class LoginIn {
             builder.show();
         }
     }
+    public static void tokenOut(int code, final Context context){
+        if (code ==10001 ||code == 10002 || code== 10003){
+            CDialog.Builder builder = new CDialog.Builder(context);
+            builder.setCancelable(false);
+            builder.setTitle("提示");
+            builder.setMessage("登陆失效,请重新登陆!");
+
+            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+                @Override
+                public void onClick(DialogInterface dialog, int which) {
+                    AtyContainer.getInstance().finishAllActivity();
+                    Intent i2 = new Intent(context,LoginActivity.class);
+                    context.startActivity(i2);
+                }
+            });
+
+            builder.setNegativeButton("退出", true, new DialogInterface.OnClickListener() {
+                @Override
+                public void onClick(DialogInterface dialog, int which) {
+                    dialog.dismiss();
+                    AtyContainer.getInstance().finishAllActivity();
+                }
+            });
+            builder.show();
+        }
+    }
 }

+ 92 - 0
app/src/main/java/com/silence/tech/adapter/MoniTroubleAdapter.java

@@ -0,0 +1,92 @@
+package com.silence.tech.adapter;
+
+import android.graphics.Color;
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.silence.commonframe.R;
+import com.silence.tech.bean.TroubleListBean;
+
+import java.util.List;
+
+public class MoniTroubleAdapter extends BaseQuickAdapter<TroubleListBean.DataBean.DataListBean, BaseViewHolder> {
+    mOnClickListener onclick;
+    List<TroubleListBean.DataBean.DataListBean> listData;
+
+    public MoniTroubleAdapter(int layoutResId, @Nullable List<TroubleListBean.DataBean.DataListBean> listData, mOnClickListener onclick) {
+        super(layoutResId, listData);
+        this.onclick = onclick;
+        this.listData = listData;
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, TroubleListBean.DataBean.DataListBean data) {
+        TextView tvDeviceName = helper.itemView.findViewById(R.id.recycler_view_test_item_person_name_tv);  //设备名称
+        TextView tvRegionName = helper.itemView.findViewById(R.id.recycler_view_place);     //区域名
+        ImageView ivTrouble = helper.itemView.findViewById(R.id.imageView_fire);            //状态图标
+        TextView tvTroubleType = helper.itemView.findViewById(R.id.fire);                   //设备状态
+        TextView tvDeviceId = helper.itemView.findViewById(R.id.number);            //设备编号
+        TextView tvDeviceLocation = helper.itemView.findViewById(R.id.place);           //位置
+        TextView tvTime = helper.itemView.findViewById(R.id.time);                  //时间
+        TextView tvLocation = helper.itemView.findViewById(R.id.place1);            //地址
+        ImageView ivCheck = helper.itemView.findViewById(R.id.imageView_check);     //是否复核
+
+        tvDeviceName.setText(data.getDeviceName());
+        String regionName = "区域名:" + data.getRegionName();
+        tvRegionName.setText(regionName);
+
+        if ("1".equals(data.getTroubleType())){
+            tvTroubleType.setText(R.string.state_fire);
+            tvTroubleType.setTextColor(Color.rgb(250,85,58));
+            ivTrouble.setImageResource(R.mipmap.redlinght);
+        }else if ("2".equals(data.getTroubleType())){
+            tvTroubleType.setText(R.string.state_fault);
+            tvTroubleType.setTextColor(Color.rgb(255,153,51));
+            ivTrouble.setImageResource(R.mipmap.redlinght0);
+        }else if ("3".equals(data.getTroubleType())){
+            tvTroubleType.setText(R.string.state_abnormal);
+            tvTroubleType.setTextColor(Color.rgb(68,68,68));
+            ivTrouble.setImageResource(R.mipmap.light);
+        }else if ("0".equals(data.getTroubleType())){
+            tvTroubleType.setText(R.string.state_hidtrouble);
+            tvTroubleType.setTextColor(Color.rgb(68,68,68));
+            ivTrouble.setImageResource(R.mipmap.light);
+        }
+
+        String deviceId = "编号:" + data.getDeviceId();
+        tvDeviceId.setText(deviceId);
+        String deviceLocation = "位置:" + data.getDeviceLocation();
+        tvDeviceLocation.setText(deviceLocation);
+        String time = "时间:" + data.getGmtCreate();
+        tvTime.setText(time);
+        String location = "地址:" + data.getLocation();
+        tvLocation.setText(location);
+
+        if (data.getRecheckId() == null){
+            ivCheck.setImageResource(R.mipmap.unaudited1);
+        }else {
+            if ("0".equals(data.getIsValid())){
+                ivCheck.setImageResource(R.mipmap.unaudited3);
+            }
+            if ("1".equals(data.getIsValid())){
+                ivCheck.setImageResource(R.mipmap.unaudited0);
+            }
+        }
+
+        helper.itemView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                onclick.itemOnClick(helper.getLayoutPosition(),listData);
+            }
+        });
+    }
+
+    public interface mOnClickListener{
+        void itemOnClick(int position, List<TroubleListBean.DataBean.DataListBean> listData);
+    }
+}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 232 - 0
app/src/main/java/com/silence/tech/bean/TroubleListBean.java


+ 76 - 0
app/src/main/java/com/silence/tech/bean/TroubleTypeBean.java

@@ -0,0 +1,76 @@
+package com.silence.tech.bean;
+
+import java.util.List;
+
+public class TroubleTypeBean {
+
+    /**
+     * code : 0
+     * msg : success
+     * data : [{"typeId":"1","typeName":"火警","count":1},{"typeId":"2","typeName":"故障","count":0},{"typeId":"0","typeName":"异常","count":0},{"typeId":"3","typeName":"隐患","count":0}]
+     */
+
+    private int code;
+    private String msg;
+    private List<DataBean> data;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public List<DataBean> getData() {
+        return data;
+    }
+
+    public void setData(List<DataBean> data) {
+        this.data = data;
+    }
+
+    public static class DataBean {
+        /**
+         * typeId : 1
+         * typeName : 火警
+         * count : 1
+         */
+
+        private String typeId;
+        private String typeName;
+        private int count;
+
+        public String getTypeId() {
+            return typeId;
+        }
+
+        public void setTypeId(String typeId) {
+            this.typeId = typeId;
+        }
+
+        public String getTypeName() {
+            return typeName;
+        }
+
+        public void setTypeName(String typeName) {
+            this.typeName = typeName;
+        }
+
+        public int getCount() {
+            return count;
+        }
+
+        public void setCount(int count) {
+            this.count = count;
+        }
+    }
+}

+ 32 - 0
app/src/main/java/com/silence/tech/constant/UrlConstantsTech.java

@@ -0,0 +1,32 @@
+package com.silence.tech.constant;
+
+import com.silence.commonframe.ApiService;
+
+/**
+ * author:
+ * date:
+ * description: 网络地址常量类
+ */
+
+public interface UrlConstantsTech {
+    String FILEUPLOAD=ApiService.httpUrl1 +"/sysCore/fileUpload";
+
+    /*----------------------------------------------接口地址--------------------------------------------*/
+    String UPDATE_IMAGE=FILEUPLOAD+"?attachType=";
+
+    String WEBVIEW_URL_QUESTION="https://www.hsh-iot.com/app_page/index.html";
+    String WEBVIEW_URL_SZC= "https://www.hsh-iot.com/app_page/hshyszc.html";
+
+    String BASE_LOCAL = "https://www.hsh-iot.com/test/hsh_app/";
+    String BASE_COMPANY = "app/company/";
+
+    //获取未处理统计数量
+    String DEV_TROUBLE_COUNT = BASE_LOCAL + BASE_COMPANY + "getDevTroubleCount";
+    //获取异常的类型
+    String TROUBLE_TYPE = BASE_LOCAL + BASE_COMPANY + "getTroubleType";
+    //查询未处理的设备异常记录
+    String DEV_TROUBLE_LIST = BASE_LOCAL + BASE_COMPANY + "getDevTroubleList";
+
+    String DEV_TROUBLE_LIST_BY_TYPE = BASE_LOCAL + BASE_COMPANY + "getDevTroubleListByType";
+}
+

+ 194 - 0
app/src/main/java/com/silence/tech/ui/MainCompanyActivity.java

@@ -0,0 +1,194 @@
+package com.silence.tech.ui;
+
+import android.app.Activity;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.os.Build;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+
+import com.silence.commonframe.App;
+import com.silence.commonframe.Dialog.CDialog;
+import com.silence.commonframe.R;
+import com.silence.commonframe.base.basemvp.BaseActivity;
+import com.silence.tech.ui.device.activity.DeviceTechFragment;
+import com.silence.tech.ui.files.activity.FilesFragment;
+import com.silence.tech.ui.moni.activity.MoniFragment;
+import com.silence.tech.ui.my.activity.MineTechFragment;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class MainCompanyActivity extends BaseActivity {
+
+    @BindView(R.id.btn_tab_moni)
+    Button mBtnTabMoni;
+    @BindView(R.id.btn_tab_files)
+    Button mBtnTabFiles;
+    @BindView(R.id.btn_tab_contact)
+    Button mBtnTabContact;
+    @BindView(R.id.btn_tab_mine)
+    Button mBtnTabMine;
+    private MoniFragment mMoniFragment;
+    private DeviceTechFragment mDeviceTechFragment;
+    private FilesFragment mFilesFragment;
+    private MineTechFragment mMineTechFragment;
+    private FragmentManager mFragmentManager;
+
+    public static boolean isForeground = false;
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.activity_main_company;
+    }
+
+    @Override
+    public void initPresenter() {
+
+    }
+
+    @Override
+    public void initView() {
+        mFragmentManager = getSupportFragmentManager();
+        mBtnTabMoni.setSelected(true);
+        mMoniFragment = new MoniFragment();
+        mFragmentManager.beginTransaction().add(R.id.fragment_container, mMoniFragment).commit();
+
+        initWindows();
+        addActivity(this);
+    }
+
+    @OnClick({R.id.btn_tab_moni, R.id.btn_tab_files, R.id.btn_tab_contact, R.id.btn_tab_mine})
+    public void onClick(View view){
+        switch (view.getId()){
+            case R.id.btn_tab_moni: {
+                if (mMoniFragment == null){
+                    mMoniFragment = new MoniFragment();
+                }
+                switchFragment(mMoniFragment);
+                switchState(mBtnTabMoni);
+            }
+            break;
+            case R.id.btn_tab_files: {
+                if (mFilesFragment == null){
+                    mFilesFragment = new FilesFragment();
+                }
+                switchFragment(mFilesFragment);
+                switchState(mBtnTabFiles);
+            }
+            break;
+            case R.id.btn_tab_contact: {
+                if (mDeviceTechFragment == null){
+                    mDeviceTechFragment = new DeviceTechFragment();
+                }
+                switchFragment(mDeviceTechFragment);
+                switchState(mBtnTabContact);
+            }
+            break;
+            case R.id.btn_tab_mine: {
+                if (mMineTechFragment == null){
+                    mMineTechFragment = new MineTechFragment();
+                }
+                switchFragment(mMineTechFragment);
+                switchState(mBtnTabMine);
+            }
+            break;
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        isForeground = true;
+    }
+
+    private long lastTime=0; //记录上次点击的时间
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if(keyCode== KeyEvent.KEYCODE_BACK&&event.getAction()==KeyEvent.ACTION_DOWN){
+            if((System.currentTimeMillis()-lastTime)>2000){
+                lastTime=System.currentTimeMillis();
+            }else {
+                CDialog.Builder builder = new CDialog.Builder(this);
+                builder.setMessage("你确定要退出系统吗?");
+                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which)
+                    {
+                        System.exit(0);
+                    }
+                });
+                builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){
+                    @Override
+                    public void onClick(DialogInterface dialog, int which)
+                    {
+                        dialog.dismiss();
+                    }
+                });
+                builder.show();
+            }
+            return  true;
+        }
+        return super.onKeyDown(keyCode, event);
+    }
+
+    //选择相应的tab
+    private void switchState(Button selectedButton) {
+        mBtnTabMoni.setSelected(false);
+        mBtnTabContact.setSelected(false);
+        mBtnTabFiles.setSelected(false);
+        mBtnTabMine.setSelected(false);
+        selectedButton.setSelected(true);
+    }
+
+    //切换到xiang
+    private void switchFragment(Fragment newFragment) {
+        FragmentTransaction transaction = mFragmentManager.beginTransaction();
+        if (!newFragment.isAdded()) {
+            transaction.add(R.id.fragment_container, newFragment);
+        }
+        if (mMoniFragment != null && mMoniFragment.isVisible()) {
+            transaction.hide(mMoniFragment);
+        }
+        if (mDeviceTechFragment != null && mDeviceTechFragment.isVisible()) {
+            transaction.hide(mDeviceTechFragment);
+        }
+        if (mFilesFragment != null && mFilesFragment.isVisible()) {
+            transaction.hide(mFilesFragment);
+        }
+        if (mMineTechFragment != null && mMineTechFragment.isVisible()) {
+            transaction.hide(mMineTechFragment);
+        }
+        transaction.show(newFragment);
+        transaction.commit();
+    }
+
+    //沉浸式状态栏
+    private void initWindows() {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            Window window = getWindow();
+            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
+                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+            window.setStatusBarColor(Color.TRANSPARENT);
+            window.setNavigationBarColor(Color.BLACK);
+        }
+    }
+
+    /*** 添加Activity*/
+    public void addActivity(Activity activity) {// 判断当前集合中不存在该Activity
+        if (!App.oList.contains(activity)) {
+            App.oList.add(activity);//把当前Activity添加到集合中}
+        }
+    }
+}

+ 22 - 0
app/src/main/java/com/silence/tech/ui/device/activity/DeviceTechFragment.java

@@ -0,0 +1,22 @@
+package com.silence.tech.ui.device.activity;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.silence.commonframe.R;
+
+public class DeviceTechFragment extends Fragment {
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.fragment_device_tech, container, false);
+
+        return view;
+    }
+}

+ 22 - 0
app/src/main/java/com/silence/tech/ui/files/activity/FilesFragment.java

@@ -0,0 +1,22 @@
+package com.silence.tech.ui.files.activity;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.silence.commonframe.R;
+
+public class FilesFragment extends Fragment {
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.fragment_files, container, false);
+
+        return view;
+    }
+}

+ 26 - 0
app/src/main/java/com/silence/tech/ui/moni/Interface/MoniListener.java

@@ -0,0 +1,26 @@
+package com.silence.tech.ui.moni.Interface;
+
+import com.silence.commonframe.base.basemvp.BaseModel;
+import com.silence.commonframe.base.basemvp.BasePresenter;
+import com.silence.tech.bean.TroubleListBean;
+import com.silence.tech.bean.TroubleTypeBean;
+
+import java.util.List;
+
+/**
+ * 监控界面接口
+ */
+public interface MoniListener {
+    interface View{
+        int getPage();
+
+        void onTroubleListSuccess(TroubleListBean.DataBean dataBean);
+        void onTroubleTypeSuccess(List<TroubleTypeBean.DataBean> data);
+        void onFile(String msg);
+    }
+
+    abstract class Presenter extends BasePresenter<View,BaseModel> {
+        public abstract void getTroubleType();
+        public abstract void getTroubleList();
+    }
+}

+ 19 - 0
app/src/main/java/com/silence/tech/ui/moni/Interface/MoniTroubleListener.java

@@ -0,0 +1,19 @@
+package com.silence.tech.ui.moni.Interface;
+
+import com.silence.commonframe.base.basemvp.BaseModel;
+import com.silence.commonframe.base.basemvp.BasePresenter;
+import com.silence.tech.bean.TroubleListBean;
+
+public interface MoniTroubleListener {
+    interface View {
+        String getTroubleType();
+        int getPage();
+
+        void onDevTroubleListSuccess(TroubleListBean.DataBean dataBean);
+        void onFile(String msg);
+
+    }
+    abstract class Presenter extends BasePresenter<View,BaseModel> {
+        public abstract void getDevTroubleListByType();
+    }
+}

+ 231 - 0
app/src/main/java/com/silence/tech/ui/moni/activity/MoniFragment.java

@@ -0,0 +1,231 @@
+package com.silence.tech.ui.moni.activity;
+
+import android.content.Intent;
+import android.support.annotation.NonNull;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
+import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
+import com.silence.commonframe.R;
+import com.silence.commonframe.base.basemvp.BaseFragment;
+import com.silence.commonframe.common.constant.BaseConstants;
+import com.silence.tech.adapter.MoniTroubleAdapter;
+import com.silence.tech.bean.TroubleListBean;
+import com.silence.tech.bean.TroubleTypeBean;
+import com.silence.tech.ui.moni.Interface.MoniListener;
+import com.silence.tech.ui.moni.presenter.MoniPresenter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+
+public class MoniFragment extends BaseFragment implements MoniListener.View{
+
+    /**
+     * 导航栏信息
+     * back_pic、navi_head_back_text(透明)、navi_head_text、navi_head_text_right(右侧文字)、navi_head_img_right(右侧图片)
+     */
+    @BindView(R.id.navi_head_text)
+    TextView navi_head_text;    //标题
+    @BindView(R.id.back_pic)
+    ImageView ivBackPic;
+
+    private String TROUBLE_FIRE_ALARM = "1";        //类型火警
+    private String TROUBLE_FAULT = "2";             //类型故障
+    private String TROUBLE_ABNORMAL = "0";          //类型异常
+    private String TROUBLE_HID_TROUBLE = "3";       //类型隐患
+
+    private int page = 1;
+
+    @BindView(R.id.ll_no_message)
+    LinearLayout llNoMessage;
+    @BindView(R.id.tv_fire_alarm)
+    TextView tvFireAlarm;
+    @BindView(R.id.tv_fault)
+    TextView tvFault;
+    @BindView(R.id.tv_abnormal)
+    TextView tvAbnormal;
+    @BindView(R.id.tv_hidtrouble)
+    TextView tvHidTrouble;
+    @BindView(R.id.rv_moni_msg)
+    RecyclerView rvTroubleList;
+    @BindView(R.id.srl_refresh)
+    SmartRefreshLayout srlRefresh;
+
+    List<TroubleTypeBean.DataBean> listTroubleType = new ArrayList<>();
+
+    MoniPresenter presenter;
+
+    MoniTroubleAdapter mTroubleListAdapter;
+
+    private List<HashMap<String, String>> listmap = new ArrayList<>();
+
+    @Override
+    protected int getLayoutResource() {
+        return R.layout.fragment_moni;
+    }
+
+    @Override
+    public void initPresenter() {
+        presenter = new MoniPresenter(getActivity(),this);
+    }
+
+    @Override
+    protected void initView() {
+        navi_head_text.setText(R.string.text_tab_moni);
+        ivBackPic.setVisibility(View.GONE);
+
+        srlRefresh.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                presenter.getTroubleType();
+                presenter.getTroubleList();
+            }
+        });
+        srlRefresh.setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+                page = page + 1;
+                presenter.getTroubleList();
+            }
+        });
+        srlRefresh.autoRefresh();
+        srlRefresh.setEnableLoadMore(false);
+    }
+
+    @Override
+    protected void lazyLoad() {
+
+    }
+
+    //设置异常类型
+    private void setTroubleType() {
+        for (int i = 0; i < listTroubleType.size(); i++){
+            switch (listTroubleType.get(i).getTypeId()){
+                case "1":{
+                    String fireAlarm = listTroubleType.get(i).getCount() + listTroubleType.get(i).getTypeName();
+                    tvFireAlarm.setText(fireAlarm);
+                }
+                break;
+                case "2":{
+                    String fault = listTroubleType.get(i).getCount() + listTroubleType.get(i).getTypeName();
+                    tvFault.setText(fault);
+                }
+                break;
+                case "0":{
+                    String abNormal = listTroubleType.get(i).getCount() + listTroubleType.get(i).getTypeName();
+                    tvAbnormal.setText(abNormal);
+                }
+                break;
+                case "3":{
+                    String hidTrouble = listTroubleType.get(i).getCount() + listTroubleType.get(i).getTypeName();
+                    tvHidTrouble.setText(hidTrouble);
+                }
+                break;
+            }
+        }
+    }
+
+    //点击事件
+    @OnClick({R.id.ll_fire_alarm, R.id.ll_fault, R.id.ll_abnormal, R.id.ll_hidtrouble})
+    public void onClick(View view){
+        switch (view.getId()){
+            case R.id.ll_fire_alarm:{
+                Intent intent = new Intent(getActivity(),MoniTroubleActivity.class);
+                intent.putExtra("troubleType",TROUBLE_FIRE_ALARM);
+                startActivity(intent);
+            }
+            break;
+            case R.id.ll_fault:{
+                Intent intent = new Intent(getActivity(),MoniTroubleActivity.class);
+                intent.putExtra("troubleType",TROUBLE_FAULT);
+                startActivity(intent);
+            }
+            break;
+            case R.id.ll_abnormal:{
+                Intent intent = new Intent(getActivity(),MoniTroubleActivity.class);
+                intent.putExtra("troubleType",TROUBLE_ABNORMAL);
+                startActivity(intent);
+            }
+            break;
+            case R.id.ll_hidtrouble:{
+                Intent intent = new Intent(getActivity(),MoniTroubleActivity.class);
+                intent.putExtra("troubleType",TROUBLE_HID_TROUBLE);
+                startActivity(intent);
+            }
+            break;
+        }
+    }
+
+    @Override
+    public int getPage() {
+        return page;
+    }
+
+    MoniTroubleAdapter.mOnClickListener onclick = new MoniTroubleAdapter.mOnClickListener() {
+        @Override
+        public void itemOnClick(int position, List<TroubleListBean.DataBean.DataListBean> listData) {
+//            HashMap<String,String> hashMap = new HashMap<>();
+//            hashMap.put("processId", listData.get(position).getId());
+//            hashMap.put("deviceId", listData.get(position).getDeviceId());
+//            hashMap.put("deployment", listData.get(position).getDeployment());
+//            hashMap.put("location", listData.get(position).getLocation());
+//            hashMap.put("regionName", listData.get(position).getRegionName());
+//            hashMap.put("deviceLocation", listData.get(position).getDeviceLocation());
+//            hashMap.put("gmtCreate", listData.get(position).getGmtCreate());
+//            hashMap.put("troubleType", listData.get(position).getTroubleType());
+//            hashMap.put("deviceName", listData.get(position).getDeviceName());
+//            hashMap.put("recheckTime", listData.get(position).getRecheckTime());
+//            hashMap.put("recheckType", recheckType);
+//            hashMap.put("isValid", isValid);
+        }
+    };
+
+    //获取异常列表回调
+    @Override
+    public void onTroubleListSuccess(TroubleListBean.DataBean dataBean) {
+        if (srlRefresh != null){
+            srlRefresh.finishRefresh();
+        }
+        if (dataBean.getRows() == 0){
+            llNoMessage.setVisibility(View.VISIBLE);
+        }else {
+            mTroubleListAdapter = new MoniTroubleAdapter(R.layout.item_recylerview,dataBean.getDataList(),onclick);
+            rvTroubleList.setLayoutManager(new LinearLayoutManager(getContext()));
+            rvTroubleList.setAdapter(mTroubleListAdapter);
+            mTroubleListAdapter.notifyDataSetChanged();
+        }
+        if (dataBean.getRows() >= Integer.valueOf(BaseConstants.PAGE_SIZE)){
+            srlRefresh.setEnableLoadMore(true);
+        }
+    }
+
+    //获取异常类型回调
+    @Override
+    public void onTroubleTypeSuccess(List<TroubleTypeBean.DataBean> data) {
+        listTroubleType.clear();
+        listTroubleType.addAll(data);
+        setTroubleType();
+        if (srlRefresh != null){
+            srlRefresh.finishRefresh();
+        }
+    }
+
+    @Override
+    public void onFile(String msg){
+        Toast.makeText(getContext(),""+msg,Toast.LENGTH_SHORT).show();
+    }
+
+}

+ 175 - 0
app/src/main/java/com/silence/tech/ui/moni/activity/MoniTroubleActivity.java

@@ -0,0 +1,175 @@
+package com.silence.tech.ui.moni.activity;
+
+import android.graphics.Color;
+import android.os.Build;
+import android.support.annotation.NonNull;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
+import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
+import com.silence.commonframe.R;
+import com.silence.commonframe.base.basemvp.BaseActivity;
+import com.silence.commonframe.common.constant.BaseConstants;
+import com.silence.tech.adapter.MoniTroubleAdapter;
+import com.silence.tech.bean.TroubleListBean;
+import com.silence.tech.ui.moni.Interface.MoniTroubleListener;
+import com.silence.tech.ui.moni.presenter.MoniTroublePresenter;
+
+import java.util.List;
+
+import butterknife.BindView;
+
+public class MoniTroubleActivity extends BaseActivity implements MoniTroubleListener.View {
+
+    /**
+     * 导航栏信息
+     * back_pic、navi_head_back_text(透明)、navi_head_text、navi_head_text_right(右侧文字)、navi_head_img_right(右侧图片)
+     */
+    @BindView(R.id.navi_head_text)
+    TextView navi_head_text;    //标题
+    @BindView(R.id.rv_trouble_list)
+    RecyclerView rvTroubleList;
+    @BindView(R.id.ll_no_message)
+    LinearLayout llNoMessage;
+    @BindView(R.id.srl_refresh)
+    SmartRefreshLayout srlRefresh;
+
+    private int page = 1;
+
+    private String title;
+    private String troubleType;
+
+    MoniTroublePresenter presenter;
+
+    MoniTroubleAdapter mTroubleListAdapter;
+
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.activity_moni_trouble;
+    }
+
+    @Override
+    public void initPresenter() {
+        presenter = new MoniTroublePresenter(this,this);
+    }
+
+    @Override
+    public void initView() {
+        initWindows();
+        switch (getIntent().getStringExtra("troubleType")){
+            case "1": {
+                title = getResources().getString(R.string.state_fire) + getResources().getString(R.string.text_tab_moni);
+                troubleType = "1";
+            }
+            break;
+            case "2": {
+                title = getResources().getString(R.string.state_fault) + getResources().getString(R.string.text_tab_moni);
+                troubleType = "2";
+            }
+            break;
+            case "0": {
+                title = getResources().getString(R.string.state_abnormal) + getResources().getString(R.string.text_tab_moni);
+                troubleType = "0";
+            }
+            break;
+            case "3": {
+                title = getResources().getString(R.string.state_hidtrouble) + getResources().getString(R.string.text_tab_moni);
+                troubleType = "3";
+            }
+            break;
+        }
+        navi_head_text.setText(title);      //标题
+
+        //刷新
+        srlRefresh.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                presenter.getDevTroubleListByType();
+            }
+        });
+        //加载更多
+        srlRefresh.setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+                presenter.getDevTroubleListByType();
+            }
+        });
+        srlRefresh.autoRefresh();
+
+    }
+
+    /**
+     * 返回按钮
+     */
+    public void click_back(View view) {
+        finish();
+    }
+
+    @Override
+    public String getTroubleType() {
+        return troubleType;
+    }
+
+    @Override
+    public int getPage() {
+        return page;
+    }
+
+    MoniTroubleAdapter.mOnClickListener onclick = new MoniTroubleAdapter.mOnClickListener() {
+        @Override
+        public void itemOnClick(int position, List<TroubleListBean.DataBean.DataListBean> listData) {
+
+        }
+    };
+
+    @Override
+    public void onDevTroubleListSuccess(TroubleListBean.DataBean dataBean) {
+        if (srlRefresh != null){
+            srlRefresh.finishRefresh();
+        }
+        if (dataBean.getRows() == 0){
+            llNoMessage.setVisibility(View.VISIBLE);
+        }else {
+            llNoMessage.setVisibility(View.GONE);
+            mTroubleListAdapter = new MoniTroubleAdapter(R.layout.item_recylerview,dataBean.getDataList(),onclick);
+            rvTroubleList.setLayoutManager(new LinearLayoutManager(this));
+            rvTroubleList.setAdapter(mTroubleListAdapter);
+            mTroubleListAdapter.notifyDataSetChanged();
+        }
+        if (dataBean.getRows() >= Integer.valueOf(BaseConstants.PAGE_SIZE)){
+            srlRefresh.setEnableLoadMore(true);
+        }
+    }
+
+    @Override
+    public void onFile(String msg) {
+        Toast.makeText(this,""+msg,Toast.LENGTH_SHORT).show();
+    }
+
+    /**
+     * 页面全屏
+     */
+    private void initWindows() {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            Window window = getWindow();
+            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
+                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+            window.setStatusBarColor(Color.TRANSPARENT);
+            window.setNavigationBarColor(Color.BLACK);
+        }
+    }
+}

+ 83 - 0
app/src/main/java/com/silence/tech/ui/moni/presenter/MoniPresenter.java

@@ -0,0 +1,83 @@
+package com.silence.tech.ui.moni.presenter;
+
+import android.app.Activity;
+
+import com.google.gson.Gson;
+import com.lzy.okgo.OkGo;
+import com.lzy.okgo.cache.CacheMode;
+import com.lzy.okgo.callback.StringCallback;
+import com.silence.commonframe.common.constant.BaseConstants;
+import com.silence.commonframe.utils.Data;
+import com.silence.commonframe.utils.LoginIn;
+import com.silence.tech.bean.TroubleListBean;
+import com.silence.tech.bean.TroubleTypeBean;
+import com.silence.tech.constant.UrlConstantsTech;
+import com.silence.tech.ui.moni.Interface.MoniListener;
+
+import okhttp3.Call;
+import okhttp3.Response;
+
+public class MoniPresenter extends MoniListener.Presenter {
+
+    public MoniPresenter(Activity mContext, MoniListener.View mView){
+        this.mContext = mContext;
+        this.mView = mView;
+    }
+
+    @Override
+    public void getTroubleType() {
+        OkGo.get(UrlConstantsTech.DEV_TROUBLE_COUNT)
+                .tag(this)
+                .cacheKey("cacheGetKey")
+                .cacheMode(CacheMode.DEFAULT)
+                .headers("token", Data.getToken())
+                .execute(new StringCallback() {
+                    @Override
+                    public void onSuccess(String s, Call call, Response response) {
+                        TroubleTypeBean data = new Gson().fromJson(s,TroubleTypeBean.class);
+                        if (data.getCode() == 0){
+                            mView.onTroubleTypeSuccess(data.getData());
+                        }else {
+                            LoginIn.tokenOut(data.getCode(),mContext);
+                            mView.onFile(data.getMsg());
+                        }
+                    }
+
+                    @Override
+                    public void onError(Call call, Response response, Exception e) {
+                        super.onError(call, response, e);
+                        mView.onFile("信息获取失败");
+                    }
+                });
+    }
+
+    @Override
+    public void getTroubleList() {
+        OkGo.get(UrlConstantsTech.DEV_TROUBLE_LIST)
+                .tag(this)
+                .params("page",mView.getPage())
+                .params("pageSize",Integer.valueOf(BaseConstants.PAGE_SIZE))
+                .cacheKey("cacheGetKey")
+                .cacheMode(CacheMode.DEFAULT)
+                .headers("token", Data.getToken())
+                .execute(new StringCallback() {
+                    @Override
+                    public void onSuccess(String s, Call call, Response response) {
+                        TroubleListBean data = new Gson().fromJson(s,TroubleListBean.class);
+                        if (data.getCode() == 0){
+                            mView.onTroubleListSuccess(data.getData());
+                        }else {
+                            LoginIn.tokenOut(data.getCode(),mContext);
+                            mView.onFile(data.getMsg());
+                        }
+                    }
+
+                    @Override
+                    public void onError(Call call, Response response, Exception e) {
+                        super.onError(call, response, e);
+                        mView.onFile("信息获取失败");
+                    }
+                });
+    }
+
+}

+ 55 - 0
app/src/main/java/com/silence/tech/ui/moni/presenter/MoniTroublePresenter.java

@@ -0,0 +1,55 @@
+package com.silence.tech.ui.moni.presenter;
+
+import android.app.Activity;
+
+import com.google.gson.Gson;
+import com.lzy.okgo.OkGo;
+import com.lzy.okgo.cache.CacheMode;
+import com.lzy.okgo.callback.StringCallback;
+import com.silence.commonframe.common.constant.BaseConstants;
+import com.silence.commonframe.utils.Data;
+import com.silence.commonframe.utils.LoginIn;
+import com.silence.tech.bean.TroubleListBean;
+import com.silence.tech.constant.UrlConstantsTech;
+import com.silence.tech.ui.moni.Interface.MoniTroubleListener;
+
+import okhttp3.Call;
+import okhttp3.Response;
+
+public class MoniTroublePresenter extends MoniTroubleListener.Presenter {
+
+    public MoniTroublePresenter(Activity mContext, MoniTroubleListener.View mView){
+        this.mContext=mContext;
+        this.mView=mView;
+    }
+
+
+    @Override
+    public void getDevTroubleListByType() {
+        OkGo.get(UrlConstantsTech.DEV_TROUBLE_LIST_BY_TYPE)
+                .params("page",mView.getPage())
+                .params("pageSize",Integer.valueOf(BaseConstants.PAGE_SIZE))
+                .params("troubleType",mView.getTroubleType())
+                .cacheKey("cachePostRegister11")
+                .cacheMode(CacheMode.DEFAULT)
+                .headers("token", Data.getToken())
+                .execute(new StringCallback() {
+                    @Override
+                    public void onSuccess(String s, Call call, Response response) {
+                        TroubleListBean data = new Gson().fromJson(s,TroubleListBean.class);
+                        if (data.getCode() == 0){
+                            mView.onDevTroubleListSuccess(data.getData());
+                        }else {
+                            LoginIn.tokenOut(data.getCode(),mContext);
+                            mView.onFile(data.getMsg());
+                        }
+                    }
+
+                    @Override
+                    public void onError(Call call, Response response, Exception e) {
+                        super.onError(call, response, e);
+                        mView.onFile("信息获取失败");
+                    }
+                });
+    }
+}

+ 116 - 0
app/src/main/java/com/silence/tech/ui/my/activity/MineTechFragment.java

@@ -0,0 +1,116 @@
+package com.silence.tech.ui.my.activity;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
+import com.silence.commonframe.R;
+import com.silence.commonframe.activity.CoustomerActivity;
+import com.silence.commonframe.activity.HistoryActivity;
+import com.silence.commonframe.activity.QuesstionActivity;
+import com.silence.commonframe.activity.SetupActivity;
+import com.silence.commonframe.activity.SitedetailActivity;
+import com.silence.commonframe.utils.Data;
+
+import java.io.File;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+
+public class MineTechFragment extends Fragment {
+    protected Activity mActivity;
+    @BindView(R.id.name)
+    TextView name;
+    @BindView(R.id.image_head)
+    de.hdodenhof.circleimageview.CircleImageView image_head;
+    @BindView(R.id.tel)
+    TextView tel;//btn_menu
+    @BindView(R.id.btn_menu)
+    ImageView imageViewset;//btn_menu
+
+    Unbinder butterKnife;
+
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.fragment_mine_tech, container, false);
+        RelativeLayout relativeLayout = (RelativeLayout) view.findViewById(R.id.rl);
+        relativeLayout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(getContext(), SitedetailActivity.class);
+                startActivity(intent);
+            }
+        });
+        RelativeLayout relativeLayoutcustomer = (RelativeLayout) view.findViewById(R.id.customer);//customer  ll_tuisong
+        relativeLayoutcustomer.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(getContext(), CoustomerActivity.class);
+                startActivity(intent);
+            }
+        });
+        RelativeLayout relativeLayoutcustomer3 = (RelativeLayout) view.findViewById(R.id.rl_fire);//customer  ll_tuisong  rl_history   rl_qusstion
+        relativeLayoutcustomer3.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(getContext(), HistoryActivity.class);
+                startActivity(intent);
+            }
+        });
+        RelativeLayout relativeLayoutcustomer4 = (RelativeLayout) view.findViewById(R.id.rl_qusstion);//customer  ll_tuisong  rl_history   rl_qusstion
+        relativeLayoutcustomer4.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(getContext(), QuesstionActivity.class);
+                startActivity(intent);
+            }
+        });
+        butterKnife=ButterKnife.bind(this, view);
+        name.setText(Data.getName());
+        tel.setText(Data.getPhoto());
+        Glide.with(this).load(Data.getUrlPicture()).apply(new RequestOptions().error(R.mipmap.people3)).into(image_head);
+        imageViewset.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(getContext(),SetupActivity.class);
+                startActivity(intent);
+            }
+        });
+        return view;
+    }
+
+    private void getPicture(){
+        mActivity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                Uri uri = Uri.fromFile(new File(Data.getUrlPicture()));
+                image_head.setImageURI(uri);
+            }
+        });
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        butterKnife.unbind();
+    }
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        this.mActivity = (Activity) context;
+    }
+}

+ 22 - 0
app/src/main/res/drawable/tab_btn_files.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+   <!-- <item android:drawable="@mipmap/home_detail_btn_p" android:state_selected="true"/>
+    <item android:drawable="@mipmap/home_detail_btn_p" android:state_focused="true"/>
+    <item android:drawable="@mipmap/home_detail_btn_n"/>-->
+
+    <item android:state_selected="true">
+        <layer-list>
+            <item android:width="25dp" android:height="25dp" android:drawable="@mipmap/first"/>
+        </layer-list>
+    </item>
+    <item android:state_focused="true">
+        <layer-list>
+            <item android:width="25dp" android:height="25dp" android:drawable="@mipmap/first"/>
+        </layer-list>
+    </item>
+    <item><!-- 默认状态 -->
+        <layer-list>
+            <item android:width="25dp" android:height="25dp" android:drawable="@mipmap/first1"/>
+        </layer-list>
+    </item>
+</selector>

+ 22 - 0
app/src/main/res/drawable/tab_btn_moni.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+   <!-- <item android:drawable="@mipmap/home_detail_btn_p" android:state_selected="true"/>
+    <item android:drawable="@mipmap/home_detail_btn_p" android:state_focused="true"/>
+    <item android:drawable="@mipmap/home_detail_btn_n"/>-->
+
+    <item android:state_selected="true">
+        <layer-list>
+            <item android:width="25dp" android:height="25dp" android:drawable="@mipmap/first"/>
+        </layer-list>
+    </item>
+    <item android:state_focused="true">
+        <layer-list>
+            <item android:width="25dp" android:height="25dp" android:drawable="@mipmap/first"/>
+        </layer-list>
+    </item>
+    <item><!-- 默认状态 -->
+        <layer-list>
+            <item android:width="25dp" android:height="25dp" android:drawable="@mipmap/first1"/>
+        </layer-list>
+    </item>
+</selector>

+ 0 - 14
app/src/main/res/layout/activity_main.xml

@@ -13,11 +13,6 @@
         android:layout_height="0dp"
         android:layout_weight="1" />
 
-    <!-- <ImageView
-         android:layout_width="match_parent"
-         android:layout_height="1dp"
-         android:background="@android:color/darker_gray"
-         />-->
     <View
         android:layout_width="match_parent"
         android:layout_height="0.3dp"
@@ -32,15 +27,6 @@
 
         >
 
-        <!--    <Button
-                android:id="@+id/btn_tab_chat"
-                style="@style/Text.Tab_Button"
-                android:drawableTop="@drawable/tab_btn_detail"
-                android:tag="chat"
-                android:text="@string/text_tab_chat" />-->
-
-
-
         <Button
             android:id="@+id/btn_tab_chat"
             style="@style/Text.Tab_Button"

+ 61 - 0
app/src/main/res/layout/activity_main_company.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    tools:context="com.silence.tech.ui.MainCompanyActivity">
+
+    <FrameLayout
+        android:id="@+id/fragment_container"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0.3dp"
+        android:background="#444"
+        />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/footer_height"
+        android:background="#fff"
+        android:orientation="horizontal"
+        >
+
+        <Button
+            android:id="@+id/btn_tab_moni"
+            style="@style/Text.Tab_Button"
+            android:drawableTop="@drawable/tab_btn_moni"
+            android:tag="moni"
+            android:text="@string/text_tab_moni"
+            />
+
+        <Button
+            android:id="@+id/btn_tab_files"
+            style="@style/Text.Tab_Button1"
+            android:drawableTop="@drawable/tab_btn_files"
+            android:tag="files"
+            android:text="@string/text_tab_files"/>
+
+        <Button
+            android:id="@+id/btn_tab_contact"
+            style="@style/Text.Tab_Button2"
+            android:drawableTop="@drawable/tab_btn_account"
+            android:tag="contact"
+            android:text="@string/text_tab_contact" />
+
+        <Button
+            android:id="@+id/btn_tab_mine"
+            style="@style/Text.Tab_Button3"
+            android:drawableTop="@drawable/tab_btn_mine"
+            android:tag="mine"
+            android:text="@string/text_tab_mine"
+            />
+
+    </LinearLayout>
+
+</LinearLayout>

+ 58 - 0
app/src/main/res/layout/activity_moni_trouble.xml

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    tools:context="com.silence.tech.ui.moni.activity.MoniTroubleActivity">
+
+    <include layout="@layout/navi_head"/>
+
+    <com.scwang.smartrefresh.layout.SmartRefreshLayout
+        android:id="@+id/srl_refresh"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:id="@+id/ll_no_message"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center"
+                android:orientation="vertical"
+                android:visibility="gone">
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:src="@drawable/nothing"/>
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/margin_side"
+                    android:text="@string/no_message"
+                    android:textSize="14sp"
+                    android:textColor="@color/myblack"/>
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"/>
+            </LinearLayout>
+
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/rv_trouble_list"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"/>
+
+        </LinearLayout>
+
+
+
+    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
+
+
+
+</LinearLayout>

+ 29 - 0
app/src/main/res/layout/fragment_device_tech.xml

@@ -0,0 +1,29 @@
+<?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">
+
+    <com.scwang.smartrefresh.layout.SmartRefreshLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
+
+</LinearLayout>

+ 29 - 0
app/src/main/res/layout/fragment_files.xml

@@ -0,0 +1,29 @@
+<?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">
+
+    <com.scwang.smartrefresh.layout.SmartRefreshLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
+
+</LinearLayout>

+ 253 - 0
app/src/main/res/layout/fragment_mine_tech.xml

@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="175dp"
+            android:background="@drawable/user_background"
+            >
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentBottom="true"
+                android:layout_marginLeft="30dp"
+                android:layout_marginBottom="45dp">
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2.0"
+                    android:gravity="center">
+                    <de.hdodenhof.circleimageview.CircleImageView
+                        xmlns:app="http://schemas.android.com/apk/res-auto"
+                        android:layout_width="60dp"
+                        android:layout_height="60dp"
+                        android:id="@+id/image_head"
+                        android:src="@mipmap/people3"
+                        app:civ_border_width="1dp"
+                        app:civ_border_color="#FFF"
+                        />
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:orientation="vertical">
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="25dp"
+                            android:id="@+id/name"
+                            android:textColor="#fff"
+                            android:textSize="17sp"
+                            android:gravity="center_vertical"
+                            android:text="小李" />
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="25dp"
+                            android:textColor="#fff"
+                            android:id="@+id/tel"
+                            android:textSize="17sp"
+                            android:gravity="center_vertical"
+                            android:text="15878784949" />
+
+                    </LinearLayout>
+                </LinearLayout>
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"></LinearLayout>
+        </RelativeLayout>
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="63dp"
+            android:background="#00000000">
+            <ImageView
+                android:id="@+id/btn_menu"
+                android:layout_width="40dp"
+                android:layout_height="32dp"
+                android:padding="5dp"
+                android:layout_alignParentRight="true"
+                android:layout_alignParentBottom="true"
+                android:layout_marginRight="10dp"
+                android:layout_marginBottom="6dp"
+                android:src="@mipmap/setup" />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:layout_alignParentBottom="true"
+                android:layout_marginBottom="6dp"
+                android:textColor="#fff"
+                android:textSize="19sp"
+                android:text="我的" />
+        </RelativeLayout>
+    </RelativeLayout>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:id="@+id/rl">
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:gravity="center_vertical"
+                android:layout_alignParentStart="true"
+                android:layout_alignParentLeft="true"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp">
+                <ImageView
+                    android:layout_width="16dp"
+                    android:layout_height="16dp"
+                    android:background="@mipmap/placemansge" />
+                <TextView
+                    android:id="@+id/tv_place"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginLeft="10dp"
+                    android:textColor="@color/myblack"
+                    android:textSize="16sp"
+                    android:text="场所管理" />
+            </LinearLayout>
+            <ImageView
+                android:layout_width="14dp"
+                android:layout_height="14dp"
+                android:layout_alignParentEnd="true"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginEnd="10dp"
+                android:layout_marginRight="10dp"
+                android:background="@mipmap/right" />
+        </RelativeLayout>
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="#cccccc"></View>
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:id="@+id/rl_fire">
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:gravity="center_vertical"
+                android:layout_alignParentStart="true"
+                android:layout_alignParentLeft="true"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp">
+                <ImageView
+                    android:layout_width="16dp"
+                    android:layout_height="16dp"
+                    android:background="@mipmap/fire" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginLeft="10dp"
+                    android:textColor="@color/myblack"
+                    android:textSize="16sp"
+                    android:text="火警通知" />
+            </LinearLayout>
+            <ImageView
+                android:layout_width="14dp"
+                android:layout_height="14dp"
+                android:layout_alignParentEnd="true"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginEnd="10dp"
+                android:layout_marginRight="10dp"
+                android:background="@mipmap/right" />
+        </RelativeLayout>
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="#cccccc"></View>
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:id="@+id/rl_qusstion">
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:gravity="center_vertical"
+                android:layout_alignParentStart="true"
+                android:layout_alignParentLeft="true"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp">
+                <ImageView
+                    android:layout_width="16dp"
+                    android:layout_height="16dp"
+                    android:background="@mipmap/question1" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginLeft="10dp"
+                    android:textColor="@color/myblack"
+                    android:textSize="16sp"
+                    android:text="常见问题" />
+            </LinearLayout>
+            <ImageView
+                android:layout_width="14dp"
+                android:layout_height="14dp"
+                android:layout_alignParentEnd="true"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginEnd="10dp"
+                android:layout_marginRight="10dp"
+                android:background="@mipmap/right" />
+        </RelativeLayout>
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="#cccccc"></View>
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:id="@+id/customer">
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:gravity="center_vertical"
+                android:layout_alignParentStart="true"
+                android:layout_alignParentLeft="true"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp">
+                <ImageView
+                    android:layout_width="16dp"
+                    android:layout_height="16dp"
+                    android:background="@mipmap/callphoto" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginLeft="10dp"
+                    android:textColor="@color/myblack"
+                    android:textSize="16sp"
+                    android:text="客服电话" />
+            </LinearLayout>
+            <ImageView
+                android:layout_width="14dp"
+                android:layout_height="14dp"
+                android:layout_alignParentEnd="true"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginEnd="10dp"
+                android:layout_marginRight="10dp"
+                android:background="@mipmap/right" />
+        </RelativeLayout>
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="#cccccc"></View>
+    </LinearLayout>
+</LinearLayout>

+ 158 - 0
app/src/main/res/layout/fragment_moni.xml

@@ -0,0 +1,158 @@
+<?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"
+    android:orientation="vertical">
+
+    <include layout="@layout/navi_head"/>
+
+    <com.scwang.smartrefresh.layout.SmartRefreshLayout
+        android:id="@+id/srl_refresh"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:id="@+id/ll_no_message"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center"
+                android:orientation="vertical"
+                android:visibility="gone">
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:src="@drawable/nothing"/>
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/margin_side"
+                    android:text="@string/no_message"
+                    android:textSize="14sp"
+                    android:textColor="@color/myblack"/>
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"/>
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/ll_top"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/margin_side"
+                android:orientation="horizontal">
+
+                <LinearLayout
+                    android:id="@+id/ll_fire_alarm"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:gravity="center">
+
+                    <ImageView
+                        android:id="@+id/iv_fire_alarm"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content" />
+
+                    <TextView
+                        android:id="@+id/tv_fire_alarm"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="@color/myblack"
+                        android:textSize="16sp"
+                        android:text="0"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_fault"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:gravity="center">
+
+                    <ImageView
+                        android:id="@+id/iv_fault"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content" />
+
+                    <TextView
+                        android:id="@+id/tv_fault"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="@color/myblack"
+                        android:textSize="16sp"
+                        android:text="0"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_abnormal"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:gravity="center">
+
+                    <ImageView
+                        android:id="@+id/iv_abnormal"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content" />
+
+                    <TextView
+                        android:id="@+id/tv_abnormal"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="@color/myblack"
+                        android:textSize="16sp"
+                        android:text="0"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_hidtrouble"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:gravity="center">
+
+                    <ImageView
+                        android:id="@+id/iv_hidtrouble"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content" />
+
+                    <TextView
+                        android:id="@+id/tv_hidtrouble"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="@color/myblack"
+                        android:textSize="16sp"
+                        android:text="0"/>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="5dp"
+                android:background="@color/mygray"/>
+
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/rv_moni_msg"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"/>
+
+        </LinearLayout>
+
+    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
+
+</LinearLayout>

+ 0 - 3
app/src/main/res/layout/item_recylerview.xml

@@ -72,9 +72,6 @@
                 android:text="设备状态:"
                 android:textSize="15sp" />
 
-
-
-
                 <TextView
                     android:id="@+id/fire"
                     android:layout_width="wrap_content"

+ 4 - 1
app/src/main/res/values/strings.xml

@@ -5,7 +5,8 @@
     <string name="text_tab_contact">设备</string>
     <string name="text_tab_find">消息</string>
     <string name="text_tab_mine">我的</string>
-
+    <string name="text_tab_moni">监控</string>
+    <string name="text_tab_files">档案</string>
 
     <!--<string name="app_name">MyZxing</string>-->
     <string name="confirm">确认</string>
@@ -109,6 +110,8 @@
     <string name="state_normal">正常</string>
     <string name="state_fault">故障</string>
     <string name="state_fire">火警</string>
+    <string name="state_abnormal">异常</string>
+    <string name="state_hidtrouble">隐患</string>
 
     <!-- 摄像头设置 -->
     <string name="setup">设置</string>