From 487102118041896810e4657a37eaab43a8998bc5 Mon Sep 17 00:00:00 2001
From: haijiang <181069201@qq.com>
Date: Tue, 10 Jul 2018 10:51:09 +0800
Subject: [PATCH] 提交

---
 app/libs/armeabi/libindoor.so                                       |    0 
 app/libs/x86/libBaiduMapSDK_map_v5_1_0.so                           |    0 
 app/libs/armeabi-v7a/libindoor.so                                   |    0 
 app/src/main/java/com/moral/screen/activity/ChartActivity.java      |  267 ++++++++
 app/src/main/res/mipmap-xxxhdpi/icon_yuan.png                       |    0 
 app/src/main/java/com/moral/screen/httputils/HttpUtils.java         |  461 -------------
 app/src/main/java/com/moral/screen/activity/DeviceDataActivity.java |  160 +++++
 app/src/main/java/com/moral/screen/model/DeviceDataBean.java        |   89 ++
 app/src/main/res/mipmap-xxxhdpi/icon_white_jiantou.png              |    0 
 app/src/main/res/layout/ac_login_layout.xml                         |    2 
 app/src/main/java/com/moral/screen/MainApp.java                     |   11 
 app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_1_0.so                  |    0 
 app/build.gradle                                                    |   15 
 app/libs/armeabi/liblocSDK7b.so                                     |    0 
 app/src/main/java/com/moral/screen/model/SensorData.java            |   17 
 app/libs/BaiduLBS_Android.jar                                       |    0 
 app/libs/x86_64/libBaiduMapSDK_map_v5_1_0.so                        |    0 
 app/src/main/res/mipmap-xxxhdpi/pro_kuang.png                       |    0 
 app/libs/arm64-v8a/liblocSDK7b.so                                   |    0 
 app/src/main/java/com/moral/screen/model/DeviceBean.java            |  143 ++++
 app/src/main/res/mipmap-xxxhdpi/bg_chart.png                        |    0 
 app/src/main/res/mipmap-xxxhdpi/icon_close.png                      |    0 
 app/libs/x86_64/libindoor.so                                        |    0 
 app/libs/x86_64/liblocSDK7b.so                                      |    0 
 app/src/main/res/layout/pop_layout.xml                              |   40 +
 app/libs/x86/libBaiduMapSDK_base_v5_1_0.so                          |    0 
 app/src/main/res/layout/ac_charts_layout.xml                        |   53 +
 app/libs/armeabi/libBaiduMapSDK_map_v5_1_0.so                       |    0 
 app/src/main/java/com/moral/screen/common/API.java                  |    7 
 app/src/main/res/mipmap-xxxhdpi/icon_level1.png                     |    0 
 app/src/main/res/layout/top_bar_layout.xml                          |    9 
 app/src/main/res/drawable/my_progress_background.xml                |   18 
 app/src/main/res/mipmap-xxxhdpi/bg_map.png                          |    0 
 app/src/main/res/layout/ac_map_layout.xml                           |   49 +
 app/src/main/res/values/colors.xml                                  |    2 
 app/src/main/res/layout/list_item_data.xml                          |   46 +
 app/src/main/res/mipmap-xxxhdpi/bg_data.png                         |    0 
 app/src/main/res/mipmap-xxxhdpi/icon_offline.png                    |    0 
 app/src/main/res/layout/ac_device_data_layout.xml                   |   51 +
 app/libs/x86_64/libBaiduMapSDK_base_v5_1_0.so                       |    0 
 app/src/main/res/mipmap-xxxhdpi/icon_xia.png                        |    0 
 app/libs/armeabi-v7a/liblocSDK7b.so                                 |    0 
 app/libs/x86/liblocSDK7b.so                                         |    0 
 app/src/main/res/mipmap-xxxhdpi/icon_level3.png                     |    0 
 app/src/main/res/mipmap-xxxhdpi/bg_pop.png                          |    0 
 app/src/main/AndroidManifest.xml                                    |   35 +
 app/src/main/java/com/moral/screen/activity/MapActivity.java        |  257 ++++++++
 app/libs/arm64-v8a/libindoor.so                                     |    0 
 app/libs/arm64-v8a/libBaiduMapSDK_base_v5_1_0.so                    |    0 
 app/libs/arm64-v8a/libBaiduMapSDK_map_v5_1_0.so                     |    0 
 app/src/main/java/com/moral/screen/utils/SharedPreferencesUtil.java |   45 +
 app/src/main/res/mipmap-xxxhdpi/icon_normal.png                     |    0 
 app/src/main/java/com/moral/screen/adapter/DeviceDataAdapter.java   |   40 +
 app/src/main/res/mipmap-xxxhdpi/icon_level2.png                     |    0 
 app/libs/armeabi/libBaiduMapSDK_base_v5_1_0.so                      |    0 
 app/libs/x86/libindoor.so                                           |    0 
 app/src/main/java/com/moral/screen/activity/LoginActivity.java      |   79 ++
 app/libs/armeabi-v7a/libBaiduMapSDK_map_v5_1_0.so                   |    0 
 58 files changed, 1,439 insertions(+), 457 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index a6cf203..e6261ea 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -11,6 +11,20 @@
         multiDexEnabled true
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
+    signingConfigs {
+        // your debug keystore
+        debug {
+            keyAlias 'moral'
+            keyPassword 'moral123456'
+            storeFile file("C:\\Users\\Administrator\\Desktop\\key\\key.jks")
+            storePassword 'moral123456'
+        }
+    }
+    sourceSets {
+        main {
+            jniLibs.srcDir 'libs'
+        }
+    }
     buildTypes {
         release {
             minifyEnabled false
@@ -36,4 +50,5 @@
     compile('com.github.niorgai:StatusBarCompat:2.1.4', {
         exclude group: 'com.android.support'
     })
+    compile 'com.github.lecho:hellocharts-library:1.5.8@aar'
 }
diff --git a/app/libs/BaiduLBS_Android.jar b/app/libs/BaiduLBS_Android.jar
new file mode 100644
index 0000000..2985ae3
--- /dev/null
+++ b/app/libs/BaiduLBS_Android.jar
Binary files differ
diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_base_v5_1_0.so b/app/libs/arm64-v8a/libBaiduMapSDK_base_v5_1_0.so
new file mode 100644
index 0000000..4d7ea83
--- /dev/null
+++ b/app/libs/arm64-v8a/libBaiduMapSDK_base_v5_1_0.so
Binary files differ
diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_map_v5_1_0.so b/app/libs/arm64-v8a/libBaiduMapSDK_map_v5_1_0.so
new file mode 100644
index 0000000..0bdae20
--- /dev/null
+++ b/app/libs/arm64-v8a/libBaiduMapSDK_map_v5_1_0.so
Binary files differ
diff --git a/app/libs/arm64-v8a/libindoor.so b/app/libs/arm64-v8a/libindoor.so
new file mode 100644
index 0000000..f8e8ca8
--- /dev/null
+++ b/app/libs/arm64-v8a/libindoor.so
Binary files differ
diff --git a/app/libs/arm64-v8a/liblocSDK7b.so b/app/libs/arm64-v8a/liblocSDK7b.so
new file mode 100644
index 0000000..6bab09a
--- /dev/null
+++ b/app/libs/arm64-v8a/liblocSDK7b.so
Binary files differ
diff --git a/app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_1_0.so b/app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_1_0.so
new file mode 100644
index 0000000..6366af7
--- /dev/null
+++ b/app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_1_0.so
Binary files differ
diff --git a/app/libs/armeabi-v7a/libBaiduMapSDK_map_v5_1_0.so b/app/libs/armeabi-v7a/libBaiduMapSDK_map_v5_1_0.so
new file mode 100644
index 0000000..312c582
--- /dev/null
+++ b/app/libs/armeabi-v7a/libBaiduMapSDK_map_v5_1_0.so
Binary files differ
diff --git a/app/libs/armeabi-v7a/libindoor.so b/app/libs/armeabi-v7a/libindoor.so
new file mode 100644
index 0000000..177ad25
--- /dev/null
+++ b/app/libs/armeabi-v7a/libindoor.so
Binary files differ
diff --git a/app/libs/armeabi-v7a/liblocSDK7b.so b/app/libs/armeabi-v7a/liblocSDK7b.so
new file mode 100644
index 0000000..dd040ea
--- /dev/null
+++ b/app/libs/armeabi-v7a/liblocSDK7b.so
Binary files differ
diff --git a/app/libs/armeabi/libBaiduMapSDK_base_v5_1_0.so b/app/libs/armeabi/libBaiduMapSDK_base_v5_1_0.so
new file mode 100644
index 0000000..1496543
--- /dev/null
+++ b/app/libs/armeabi/libBaiduMapSDK_base_v5_1_0.so
Binary files differ
diff --git a/app/libs/armeabi/libBaiduMapSDK_map_v5_1_0.so b/app/libs/armeabi/libBaiduMapSDK_map_v5_1_0.so
new file mode 100644
index 0000000..83b3b84
--- /dev/null
+++ b/app/libs/armeabi/libBaiduMapSDK_map_v5_1_0.so
Binary files differ
diff --git a/app/libs/armeabi/libindoor.so b/app/libs/armeabi/libindoor.so
new file mode 100644
index 0000000..cd2a548
--- /dev/null
+++ b/app/libs/armeabi/libindoor.so
Binary files differ
diff --git a/app/libs/armeabi/liblocSDK7b.so b/app/libs/armeabi/liblocSDK7b.so
new file mode 100644
index 0000000..1a9a34a
--- /dev/null
+++ b/app/libs/armeabi/liblocSDK7b.so
Binary files differ
diff --git a/app/libs/x86/libBaiduMapSDK_base_v5_1_0.so b/app/libs/x86/libBaiduMapSDK_base_v5_1_0.so
new file mode 100644
index 0000000..a27743f
--- /dev/null
+++ b/app/libs/x86/libBaiduMapSDK_base_v5_1_0.so
Binary files differ
diff --git a/app/libs/x86/libBaiduMapSDK_map_v5_1_0.so b/app/libs/x86/libBaiduMapSDK_map_v5_1_0.so
new file mode 100644
index 0000000..234fa36
--- /dev/null
+++ b/app/libs/x86/libBaiduMapSDK_map_v5_1_0.so
Binary files differ
diff --git a/app/libs/x86/libindoor.so b/app/libs/x86/libindoor.so
new file mode 100644
index 0000000..14a6348
--- /dev/null
+++ b/app/libs/x86/libindoor.so
Binary files differ
diff --git a/app/libs/x86/liblocSDK7b.so b/app/libs/x86/liblocSDK7b.so
new file mode 100644
index 0000000..f25b6e9
--- /dev/null
+++ b/app/libs/x86/liblocSDK7b.so
Binary files differ
diff --git a/app/libs/x86_64/libBaiduMapSDK_base_v5_1_0.so b/app/libs/x86_64/libBaiduMapSDK_base_v5_1_0.so
new file mode 100644
index 0000000..f47dee5
--- /dev/null
+++ b/app/libs/x86_64/libBaiduMapSDK_base_v5_1_0.so
Binary files differ
diff --git a/app/libs/x86_64/libBaiduMapSDK_map_v5_1_0.so b/app/libs/x86_64/libBaiduMapSDK_map_v5_1_0.so
new file mode 100644
index 0000000..da894c8
--- /dev/null
+++ b/app/libs/x86_64/libBaiduMapSDK_map_v5_1_0.so
Binary files differ
diff --git a/app/libs/x86_64/libindoor.so b/app/libs/x86_64/libindoor.so
new file mode 100644
index 0000000..6c0e05e
--- /dev/null
+++ b/app/libs/x86_64/libindoor.so
Binary files differ
diff --git a/app/libs/x86_64/liblocSDK7b.so b/app/libs/x86_64/liblocSDK7b.so
new file mode 100644
index 0000000..4fda0cd
--- /dev/null
+++ b/app/libs/x86_64/liblocSDK7b.so
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f7ac9c1..161fdcc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,7 +2,24 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     package="com.moral.screen">
+
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    //������������������������������������������������������������
     <uses-permission android:name="android.permission.INTERNET"/>
+    //���������������������������������������������������������������
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    //���������������������������������������
+    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
+    //���������������������������������������������������������������
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    //������������������������������������������������������
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    //������sd������������������������������������������������������������������
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    //������������������
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    //���������������������������������������
+    <uses-permission android:name="android.permission.CAMERA" />
     <application
         android:name=".MainApp"
         android:allowBackup="true"
@@ -10,14 +27,26 @@
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
-        tools:replace="android:icon"
-        android:theme="@style/AppTheme">
-        <activity android:name=".activity.LoginActivity">
+        android:theme="@style/AppTheme"
+        tools:replace="android:icon">
+        <activity android:name=".activity.LoginActivity" android:screenOrientation="portrait">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity android:name=".activity.MapActivity" android:screenOrientation="portrait"/>
+        <activity android:name=".activity.DeviceDataActivity" android:screenOrientation="portrait"/>
+        <activity android:name=".activity.ChartActivity" android:screenOrientation="portrait"/>
+
+        <meta-data
+            android:name="com.baidu.lbsapi.API_KEY"
+            android:value="Pel4i0XKOQFmw3kO2awBV7uFI1Cb5BMm" />
+        <service
+            android:name="com.baidu.location.f"
+            android:enabled="true"
+            android:process=":remote" >
+        </service>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/moral/screen/MainApp.java b/app/src/main/java/com/moral/screen/MainApp.java
index a887062..ddaa02e 100644
--- a/app/src/main/java/com/moral/screen/MainApp.java
+++ b/app/src/main/java/com/moral/screen/MainApp.java
@@ -3,10 +3,13 @@
 import android.app.Application;
 import android.content.Context;
 import android.support.multidex.MultiDex;
+
+import com.baidu.mapapi.SDKInitializer;
 import com.lzy.okgo.OkGo;
 import com.lzy.okgo.cookie.store.PersistentCookieStore;
 import com.moral.andbrickslib.utils.ScreenUtils;
 import com.moral.andbrickslib.utils.log.XLog;
+import com.moral.screen.utils.SharedPreferencesUtil;
 
 
 /**
@@ -15,8 +18,9 @@
 
 public class MainApp extends Application {
     public static MainApp theApp;
+    public SharedPreferencesUtil mSharedPreferencesUtil;
     //������id
-    public int userId = 0;
+    public int orgId = 0;
     public int width;
     @Override
     public void onCreate() {
@@ -24,8 +28,13 @@
         this.theApp = this;
         XLog.init("haijiang");
         width = ScreenUtils.getScreenWidth(this);
+        if(mSharedPreferencesUtil==null){
+            mSharedPreferencesUtil = new SharedPreferencesUtil(this);
+        }
+        orgId = mSharedPreferencesUtil.getOrgId();
         OkGo.init(this);
         OkGo.getInstance().setCookieStore(new PersistentCookieStore());
+        SDKInitializer.initialize(getApplicationContext());
     }
 
     @Override
diff --git a/app/src/main/java/com/moral/screen/activity/ChartActivity.java b/app/src/main/java/com/moral/screen/activity/ChartActivity.java
new file mode 100644
index 0000000..10ffb36
--- /dev/null
+++ b/app/src/main/java/com/moral/screen/activity/ChartActivity.java
@@ -0,0 +1,267 @@
+package com.moral.screen.activity;
+
+import android.app.AlertDialog;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Bundle;
+import android.support.annotation.IdRes;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+
+import com.lzy.okgo.cache.CacheMode;
+import com.moral.andbrickslib.utils.FastJsonTools;
+import com.moral.andbrickslib.utils.NumberUtils;
+import com.moral.andbrickslib.utils.TimeUtil;
+import com.moral.screen.R;
+import com.moral.screen.base.BaseActivity;
+import com.moral.screen.common.API;
+import com.moral.screen.httputils.HttpCallBack;
+import com.moral.screen.model.SensorData;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import lecho.lib.hellocharts.formatter.AxisValueFormatter;
+import lecho.lib.hellocharts.formatter.LineChartValueFormatter;
+import lecho.lib.hellocharts.formatter.SimpleAxisValueFormatter;
+import lecho.lib.hellocharts.formatter.SimpleLineChartValueFormatter;
+import lecho.lib.hellocharts.gesture.ContainerScrollType;
+import lecho.lib.hellocharts.gesture.ZoomType;
+import lecho.lib.hellocharts.model.Axis;
+import lecho.lib.hellocharts.model.AxisValue;
+import lecho.lib.hellocharts.model.Line;
+import lecho.lib.hellocharts.model.LineChartData;
+import lecho.lib.hellocharts.model.PointValue;
+import lecho.lib.hellocharts.model.ValueShape;
+import lecho.lib.hellocharts.model.Viewport;
+import lecho.lib.hellocharts.view.LineChartView;
+
+/**
+ * Created by haijiang on 2017/7/13.
+ */
+
+public class ChartActivity extends BaseActivity {
+    private LineChartView chartView;
+    Line line;
+    LineChartData data;
+    Axis axisX;
+    Axis axisY;
+    private List<PointValue> mPointValues = new ArrayList<>();
+    private List<AxisValue> mAxisXValues = new ArrayList<>();
+
+    private TextView tv_sub;
+    private String sensorKey, mac, name, unit;
+    private float maxValue;
+
+    private Timer timer;
+
+    /**
+     * ���������
+     */
+    private boolean isFinish = false;
+    private void showChangeLineChart() {
+        timer = new Timer();
+        timer.schedule(new TimerTask() {
+            @Override
+            public void run() {
+                if(!isFinish){
+                    getData(1,false);
+                }
+            }
+        },0,5*1000);
+    }
+    @Override
+    protected void getBundleExtras(Bundle extras) {
+        sensorKey = getIntent().getStringExtra("sensorKey");
+        mac = getIntent().getStringExtra("mac");
+        name = getIntent().getStringExtra("name");
+        unit = getIntent().getStringExtra("unit");
+        maxValue = getIntent().getFloatExtra("maxValue", 0);
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.ac_charts_layout;
+    }
+
+    @Override
+    protected void initViews() {
+        initTopBar();
+        tv_title.setText("������������");
+        tv_sub = findView(R.id.tv_sub);
+        tv_sub.setText(name + "���������������");
+        chartView = findView(R.id.chart);
+        initLineChart();
+    }
+
+    @Override
+    protected void initListener() {
+
+    }
+
+    @Override
+    protected void initData() {
+        getData(8,true);
+        showChangeLineChart();
+    }
+
+    @Override
+    protected void processClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_left:
+                finish();
+                break;
+        }
+
+    }
+
+    @Override
+    protected void onErrorPageClick() {
+
+    }
+
+    private void initLineChart() {
+        line = new Line(mPointValues).setColor(Color.parseColor("#ffffff"));  //���������������
+        List<Line> lines = new ArrayList<>();
+        line.setShape(ValueShape.CIRCLE);//������������������������������������  ��������������� ������������ ���ValueShape.SQUARE  ValueShape.CIRCLE  ValueShape.DIAMOND���
+        line.setPointColor(Color.parseColor("#ffffff"));
+        line.setCubic(false);//���������������������������������������������
+        line.setFilled(false);//���������������������������
+        line.setHasLabels(true);//���������������������������������������
+//      line.setHasLabelsOnlyForSelected(true);//������������������������������������������������line.setHasLabels(true);������������
+        line.setHasLines(true);//������������������������������false ������������������������������
+        line.setHasPoints(true);//������������������ ���������false ������������������������������������������������������������������������
+        LineChartValueFormatter chartValueFormatter = new SimpleLineChartValueFormatter(1);
+        line.setFormatter(chartValueFormatter);//���������������
+        lines.add(line);
+        data = new LineChartData();
+        data.setLines(lines);
+        data.setValueLabelBackgroundColor(Color.TRANSPARENT);//������������������������������������������
+        data.setValueLabelBackgroundEnabled(false);
+        data.setValueLabelsTextColor(Color.GRAY);
+
+        //���������
+        axisX = new Axis(); //X���
+        axisX.setHasTiltedLabels(true);  //X���������������������������������������������true���������������
+        axisX.setName("������������");  //������������
+        axisX.setTextSize(8);//������������������
+        axisX.setTextColor(getResources().getColor(R.color.blue_txt));
+//        axisX.setMaxLabelChars(7); //������������X���������������������������������������X���������������������7<=x<=mAxisXValues.length
+        axisX.setValues(mAxisXValues);  //������X������������������
+        axisX.setHasLines(true); //x ������������
+        axisX.setLineColor(getResources().getColor(R.color.blue_txt));
+        axisX.setHasSeparationLine(true);
+        data.setAxisXBottom(axisX); //x ������������
+        //data.setAxisXTop(axisX);  //x ������������
+
+        // Y���������������������������������������Y���������(���������������������������Y������������������������������)
+        axisY = Axis.generateAxisFromRange((float) 0.0, maxValue == 0 ? 100 : maxValue, maxValue == 0 ? 10 : maxValue / 16);  //Y���
+//        axisY = new Axis();
+        axisY.setAutoGenerated(false);
+        AxisValueFormatter yvalue = new SimpleAxisValueFormatter(1);
+        axisY.setFormatter(yvalue);
+        axisY.setHasLines(true);
+        axisY.setHasSeparationLine(true);
+        axisY.setName("���������" + unit);//y���������
+        axisY.setTextSize(10);//������������������
+        axisY.setTextColor(getResources().getColor(R.color.blue_txt));
+        axisY.setLineColor(getResources().getColor(R.color.blue_txt));
+        data.setAxisYLeft(axisY);  //Y������������������
+
+        //������������������������������������������������������
+        chartView.setInteractive(true);
+        chartView.setZoomType(ZoomType.HORIZONTAL);
+        chartView.setMaxZoom((float) 2);//������������������
+        chartView.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
+        chartView.setLineChartData(data);
+        chartView.setVisibility(View.VISIBLE);
+        /**���������������7���10���������������������������������������
+         * ���������������������X������������������������������http://forum.xda-developers.com/tools/programming/library-hellocharts-charting-library-t2904456/page2���;
+         */
+        final Viewport v = new Viewport(chartView.getMaximumViewport());
+        v.bottom = (float) 0.0;
+        v.top = maxValue;
+        chartView.setMaximumViewport(v);
+        chartView.setCurrentViewport(v);
+    }
+
+    private int index = 0;
+
+    private void reshowChart(final SensorData sensorData) {
+        chartView.post(new Runnable() {
+            @Override
+            public void run() {
+                mPointValues.add(new PointValue(index, sensorData.getValue()));
+                mAxisXValues.add(new AxisValue(index).setLabel(index + ""));
+                if(mPointValues.size()>8){
+                    mPointValues.remove(0);
+                }
+                if(mAxisXValues.size()>8){
+                    mAxisXValues.remove(0);
+                }
+                axisX.setValues(mAxisXValues);
+                data.setAxisXBottom(axisX);
+                line.setValues(mPointValues);
+                List<Line> lines = new ArrayList<Line>();
+                lines.add(line);
+                data.setLines(lines);
+                chartView.setLineChartData(data);
+                index++;
+                final Viewport v = new Viewport(chartView.getMaximumViewport());
+                v.bottom = (float) 0.0;
+                v.top = maxValue;
+                chartView.setMaximumViewport(v);
+                chartView.setCurrentViewport(v);
+            }
+        });
+    }
+
+    private ArrayList<SensorData> dataList = new ArrayList<>();
+
+    private void getData(int size,boolean show) {
+        HashMap<String, String> params = new HashMap<>();
+        params.put("sensorKey", sensorKey);
+        params.put("mac", mac);
+        params.put("size", size + "");
+        mHttpUtils.doGet(API.SENSOR, params, CacheMode.DEFAULT, show, new HttpCallBack() {
+            @Override
+            public void onSuccess(String res, String msg) {
+                if (progressDialog.isShowing()) {
+                    progressDialog.dismiss();
+                }
+                ArrayList<SensorData> temp = (ArrayList<SensorData>) FastJsonTools.getArrayJson(res, SensorData.class);
+                if (temp != null) {
+                    dataList.clear();
+                    dataList.addAll(temp);
+                }
+                for (SensorData data:dataList){
+                    reshowChart(data);
+                }
+            }
+
+            @Override
+            public void showLoadingDialog() {
+                progressDialog.show();
+            }
+
+            @Override
+            public void onFail(int errno, String s) {
+                if (progressDialog.isShowing()) {
+                    progressDialog.dismiss();
+                }
+            }
+        });
+    }
+}
diff --git a/app/src/main/java/com/moral/screen/activity/DeviceDataActivity.java b/app/src/main/java/com/moral/screen/activity/DeviceDataActivity.java
new file mode 100644
index 0000000..62cd718
--- /dev/null
+++ b/app/src/main/java/com/moral/screen/activity/DeviceDataActivity.java
@@ -0,0 +1,160 @@
+package com.moral.screen.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
+
+import com.baidu.mapapi.map.MapStatus;
+import com.baidu.mapapi.map.MapStatusUpdateFactory;
+import com.baidu.mapapi.model.LatLng;
+import com.lzy.okgo.cache.CacheMode;
+import com.moral.andbrickslib.baseadapter.recyclerview.MultiItemTypeAdapter;
+import com.moral.andbrickslib.utils.FastJsonTools;
+import com.moral.screen.MainApp;
+import com.moral.screen.R;
+import com.moral.screen.adapter.DeviceDataAdapter;
+import com.moral.screen.base.BaseActivity;
+import com.moral.screen.common.API;
+import com.moral.screen.httputils.HttpCallBack;
+import com.moral.screen.model.DeviceBean;
+import com.moral.screen.model.DeviceDataBean;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * Created by hjzhang on 2018/7/4.
+ */
+
+public class DeviceDataActivity extends BaseActivity {
+    private TextView tv_left;
+    private RecyclerView rv_data;
+    private DeviceDataAdapter adapter;
+    private ArrayList<DeviceDataBean> dataList = new ArrayList<>();
+    private int  deviceVersionId,deviceId;
+    private String mac;
+    private Timer timer;
+    /**
+     * ���������
+     */
+    private boolean isFinish = false;
+    private void getDataForTime() {
+        timer = new Timer();
+        timer.schedule(new TimerTask() {
+            @Override
+            public void run() {
+                if(!isFinish){
+                    getData(false);
+                }
+            }
+        },0,10*1000);
+    }
+    @Override
+    protected void getBundleExtras(Bundle extras) {
+        deviceVersionId = getIntent().getIntExtra("deviceVersionId",0);
+        deviceId = getIntent().getIntExtra("deviceId",0);
+        mac = getIntent().getStringExtra("mac");
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.ac_device_data_layout;
+    }
+
+    @Override
+    protected void initViews() {
+        tv_left = findView(R.id.tv_left);
+        rv_data = findView(R.id.rv_data);
+        adapter = new DeviceDataAdapter(rv_data,R.layout.list_item_data,dataList);
+        rv_data.setLayoutManager(new LinearLayoutManager(rv_data.getContext()));
+        rv_data.setAdapter(adapter);
+        adapter.setOnItemClickListener(new MultiItemTypeAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(View view, RecyclerView.ViewHolder holder, int position) {
+                DeviceDataBean data = dataList.get(position);
+                Intent intent = new Intent(DeviceDataActivity.this,ChartActivity.class);
+                intent.putExtra("sensorKey",data.getSensor_key());
+                intent.putExtra("name",data.getDescription());
+                intent.putExtra("mac",mac);
+                intent.putExtra("maxValue",data.getUpper());
+                intent.putExtra("unit",data.getUnit());
+                startActivity(intent);
+            }
+
+            @Override
+            public boolean onItemLongClick(View view, RecyclerView.ViewHolder holder, int position) {
+                return false;
+            }
+        });
+    }
+
+    @Override
+    protected void initListener() {
+        tv_left.setOnClickListener(this);
+    }
+
+    @Override
+    protected void initData() {
+        getData(true);
+        getDataForTime();
+    }
+
+    @Override
+    protected void processClick(View view) {
+        switch (view.getId()){
+            case R.id.tv_left:
+                finish();
+                break;
+        }
+
+    }
+
+    @Override
+    protected void onErrorPageClick() {
+
+    }
+
+    private void getData(boolean show) {
+        HashMap<String, String> params = new HashMap<>();
+        params.put("deviceVersionId", deviceVersionId+"");
+        params.put("deviceId", deviceId+"");
+        params.put("mac", mac);
+        mHttpUtils.doGet(API.SENSORS, params, CacheMode.DEFAULT, show, new HttpCallBack() {
+            @Override
+            public void onSuccess(String res, String msg) {
+                if (progressDialog.isShowing()) {
+                    progressDialog.dismiss();
+                }
+                ArrayList<DeviceDataBean> temp = (ArrayList<DeviceDataBean>) FastJsonTools.getArrayJson(res,DeviceDataBean.class);
+                if(temp!=null){
+                    dataList.clear();
+                    dataList.addAll(temp);
+                }
+                adapter.notifyDataSetChanged();
+            }
+
+            @Override
+            public void showLoadingDialog() {
+                progressDialog.setTitleText("������������������...");
+                progressDialog.show();
+            }
+
+            @Override
+            public void onFail(int errno, String s) {
+                mToatUtils.showSingletonToast(s);
+                if (progressDialog.isShowing()) {
+                    progressDialog.dismiss();
+                }
+            }
+        });
+
+    }
+}
diff --git a/app/src/main/java/com/moral/screen/activity/LoginActivity.java b/app/src/main/java/com/moral/screen/activity/LoginActivity.java
index 744600e..25c25e0 100644
--- a/app/src/main/java/com/moral/screen/activity/LoginActivity.java
+++ b/app/src/main/java/com/moral/screen/activity/LoginActivity.java
@@ -1,10 +1,24 @@
 package com.moral.screen.activity;
 
+import android.content.Intent;
+import android.content.SearchRecentSuggestionsProvider;
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
 
+import com.lzy.okgo.cache.CacheMode;
+import com.moral.screen.MainApp;
 import com.moral.screen.R;
 import com.moral.screen.base.BaseActivity;
+import com.moral.screen.common.API;
+import com.moral.screen.httputils.HttpCallBack;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.HashMap;
 
 /**
  * ������������
@@ -12,6 +26,9 @@
  */
 
 public class LoginActivity extends BaseActivity {
+    private Button bt_sure;
+    private EditText et_phone, et_pwd;
+
     @Override
     protected void getBundleExtras(Bundle extras) {
 
@@ -24,11 +41,16 @@
 
     @Override
     protected void initViews() {
+        bt_sure = findView(R.id.bt_sure);
+        et_phone = findView(R.id.et_phone);
+        et_pwd = findView(R.id.et_pwd);
+        et_phone.setText("admin");
+        et_pwd.setText("123456");
     }
 
     @Override
     protected void initListener() {
-
+        bt_sure.setOnClickListener(this);
     }
 
     @Override
@@ -38,6 +60,21 @@
 
     @Override
     protected void processClick(View view) {
+        switch (view.getId()) {
+            case R.id.bt_sure:
+                String phone = et_phone.getText().toString();
+                if (TextUtils.isEmpty(phone)) {
+                    mToatUtils.showSingletonToast("���������������������");
+                    return;
+                }
+                String password = et_pwd.getText().toString();
+                if (TextUtils.isEmpty(password)) {
+                    mToatUtils.showSingletonToast("���������������");
+                    return;
+                }
+                login(phone, password);
+                break;
+        }
 
     }
 
@@ -45,4 +82,44 @@
     protected void onErrorPageClick() {
 
     }
+
+    private void login(String phone, String password) {
+        HashMap<String, String> params = new HashMap<>();
+        params.put("account", phone);
+        params.put("password", password);
+        mHttpUtils.doGet(API.LOGIN, params, CacheMode.DEFAULT, true, new HttpCallBack() {
+            @Override
+            public void onSuccess(String res, String msg) {
+                if (progressDialog.isShowing()) {
+                    progressDialog.dismiss();
+                }
+                try {
+                    JSONObject json = new JSONObject(res);
+                    int organizationId = json.optInt("organizationId");
+                    MainApp.theApp.orgId = organizationId;
+                    MainApp.theApp.mSharedPreferencesUtil.saveOrgId(organizationId);
+                    Intent intent = new Intent(LoginActivity.this, MapActivity.class);
+                    startActivity(intent);
+                    finish();
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void showLoadingDialog() {
+                progressDialog.setTitleText("������������...");
+                progressDialog.show();
+            }
+
+            @Override
+            public void onFail(int errno, String s) {
+                mToatUtils.showSingletonToast(s);
+                if (progressDialog.isShowing()) {
+                    progressDialog.dismiss();
+                }
+            }
+        });
+
+    }
 }
diff --git a/app/src/main/java/com/moral/screen/activity/MapActivity.java b/app/src/main/java/com/moral/screen/activity/MapActivity.java
new file mode 100644
index 0000000..9b48d09
--- /dev/null
+++ b/app/src/main/java/com/moral/screen/activity/MapActivity.java
@@ -0,0 +1,257 @@
+package com.moral.screen.activity;
+
+import android.content.Intent;
+import android.graphics.Point;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.baidu.mapapi.map.BaiduMap;
+import com.baidu.mapapi.map.BitmapDescriptor;
+import com.baidu.mapapi.map.BitmapDescriptorFactory;
+import com.baidu.mapapi.map.InfoWindow;
+import com.baidu.mapapi.map.MapStatus;
+import com.baidu.mapapi.map.MapStatusUpdateFactory;
+import com.baidu.mapapi.map.MapView;
+import com.baidu.mapapi.map.Marker;
+import com.baidu.mapapi.map.MarkerOptions;
+import com.baidu.mapapi.model.LatLng;
+import com.lzy.okgo.cache.CacheMode;
+import com.moral.andbrickslib.utils.FastJsonTools;
+import com.moral.screen.MainApp;
+import com.moral.screen.common.API;
+import com.moral.screen.httputils.HttpCallBack;
+import com.moral.screen.model.DeviceBean;
+import com.moral.screen.R;
+import com.moral.screen.base.BaseActivity;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+/**
+ * Created by hjzhang on 2018/7/2.
+ */
+
+public class MapActivity extends BaseActivity {
+    private TextView tv_left;
+    private MapView bmapView;
+    private BaiduMap mBaiduMap;
+    BitmapDescriptor bdNormal = BitmapDescriptorFactory
+            .fromResource(R.mipmap.icon_normal);
+    BitmapDescriptor bdA = BitmapDescriptorFactory
+            .fromResource(R.mipmap.icon_level1);
+    BitmapDescriptor bdB = BitmapDescriptorFactory
+            .fromResource(R.mipmap.icon_level2);
+    BitmapDescriptor bdC = BitmapDescriptorFactory
+            .fromResource(R.mipmap.icon_level3);
+    BitmapDescriptor bdOffline = BitmapDescriptorFactory
+            .fromResource(R.mipmap.icon_offline);
+    private ArrayList<Marker> mkList = new ArrayList<>();
+    private ArrayList<DeviceBean> deviceList = new ArrayList<>();
+    private View popView;
+    private TextView tv_name,tv_address;
+    private ImageView iv_close;
+    private LinearLayout ll_pop;
+    private DeviceBean curDeviceBean;
+    @Override
+    protected void getBundleExtras(Bundle extras) {
+
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.ac_map_layout;
+    }
+
+    @Override
+    protected void initViews() {
+        tv_left = findView(R.id.tv_left);
+        bmapView = findView(R.id.bmapView);
+        popView = LayoutInflater.from(this).inflate(R.layout.pop_layout,null);
+        tv_name = popView.findViewById(R.id.tv_name);
+        tv_address = popView.findViewById(R.id.tv_address);
+        iv_close = popView.findViewById(R.id.iv_close);
+        ll_pop = popView.findViewById(R.id.ll_pop);
+        initMap();
+    }
+
+    @Override
+    protected void initListener() {
+        tv_left.setOnClickListener(this);
+        iv_close.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                mBaiduMap.hideInfoWindow();
+            }
+        });
+        ll_pop.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if("4".equals(curDeviceBean.getState())){
+                    mToatUtils.showSingletonToast("������������������������...");
+                    return;
+                }
+                Intent intent = new Intent(MapActivity.this,DeviceDataActivity.class);
+                intent.putExtra("deviceVersionId",curDeviceBean.getDeviceVersionId());
+                intent.putExtra("mac",curDeviceBean.getMac());
+                intent.putExtra("deviceId",curDeviceBean.getId());
+                startActivity(intent);
+            }
+        });
+    }
+
+    @Override
+    protected void initData() {
+        getData();
+    }
+
+    @Override
+    protected void processClick(View view) {
+        switch (view.getId()){
+            case R.id.tv_left:
+                finish();
+                break;
+        }
+
+    }
+
+    @Override
+    protected void onErrorPageClick() {
+
+    }
+
+    private void initMap(){
+        mBaiduMap = bmapView.getMap();
+        // ������������������
+        mBaiduMap.setMyLocationEnabled(true);
+
+        mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
+            public boolean onMarkerClick(final Marker marker) {
+                if (marker != null) {
+                    curDeviceBean = deviceList.get(marker.getZIndex());
+                    tv_address.setText("���������"+curDeviceBean.getAddress());
+                    tv_name.setText(curDeviceBean.getName());
+                    final LatLng ll = marker.getPosition();
+                    InfoWindow mInfoWindow;
+                    Point p = mBaiduMap.getProjection().toScreenLocation(ll);
+                    p.y -= 47;
+                    LatLng llInfo = mBaiduMap.getProjection().fromScreenLocation(p);
+                    //������������InfoWindow������������������
+                    mInfoWindow = new InfoWindow(popView,llInfo,0);
+                    mBaiduMap.showInfoWindow(mInfoWindow);
+                }
+                return true;
+            }
+        });
+    }
+
+    /**
+     * ������������
+     */
+    private void showMapData(){
+        mBaiduMap.clear();
+        MarkerOptions mo = null;
+        Marker mMarker = null;
+        LatLng ll = null;
+        for (int i = 0; i < deviceList.size(); i++) {
+            DeviceBean bean = deviceList.get(i);
+            double lat = bean.getLatitude();
+            double lon = bean.getLongitude();
+            ll = new LatLng(lat, lon);
+//            0 ������
+//            1 ������������
+//            2 ������������
+//            3 ������������
+//            4 ������
+            if ("0".equals(bean.getState())) {
+                mo = new MarkerOptions().position(ll).icon(bdNormal)
+                        .zIndex(i);
+            } else if ("1".equals(bean.getState())) {
+                mo = new MarkerOptions().position(ll).icon(bdA)
+                        .zIndex(i);
+            } else if ("2".equals(bean.getState())) {
+                mo = new MarkerOptions().position(ll).icon(bdB)
+                        .zIndex(i);
+            }else if ("3".equals(bean.getState())) {
+                mo = new MarkerOptions().position(ll).icon(bdC)
+                        .zIndex(i);
+            }else if ("4".equals(bean.getState())) {
+                mo = new MarkerOptions().position(ll).icon(bdOffline)
+                        .zIndex(i);
+            }
+            // ������������
+            mo.animateType(MarkerOptions.MarkerAnimateType.drop);
+            mMarker = (Marker) (mBaiduMap.addOverlay(mo));
+            mkList.add(mMarker);
+        }
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        bmapView.onResume();
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        bmapView.onPause();
+    }
+
+    @Override
+    public void onDestroy() {
+        bdNormal.recycle();
+        bdOffline.recycle();
+        bdA.recycle();
+        bdB.recycle();
+        bdC.recycle();
+        super.onDestroy();
+        bmapView.onDestroy();
+    }
+
+    private void getData() {
+        HashMap<String, String> params = new HashMap<>();
+        params.put("organizationId", MainApp.theApp.orgId+"");
+        mHttpUtils.doGet(API.DEVICES, params, CacheMode.DEFAULT, true, new HttpCallBack() {
+            @Override
+            public void onSuccess(String res, String msg) {
+                if (progressDialog.isShowing()) {
+                    progressDialog.dismiss();
+                }
+                ArrayList<DeviceBean> temp = (ArrayList<DeviceBean>) FastJsonTools.getArrayJson(res,DeviceBean.class);
+                if(temp!=null){
+                    deviceList.clear();
+                    deviceList.addAll(temp);
+                }
+                if(deviceList.size()>0){
+                    DeviceBean bean = deviceList.get(0);
+                    LatLng ll = new LatLng(bean.getLatitude(),
+                            bean.getLongitude());
+                    MapStatus.Builder builder = new MapStatus.Builder();
+                    builder.target(ll).zoom(18.0f);
+                    mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
+                }
+                showMapData();
+            }
+
+            @Override
+            public void showLoadingDialog() {
+                progressDialog.setTitleText("������������������...");
+                progressDialog.show();
+            }
+
+            @Override
+            public void onFail(int errno, String s) {
+                mToatUtils.showSingletonToast(s);
+                if (progressDialog.isShowing()) {
+                    progressDialog.dismiss();
+                }
+            }
+        });
+
+    }
+}
diff --git a/app/src/main/java/com/moral/screen/adapter/DeviceDataAdapter.java b/app/src/main/java/com/moral/screen/adapter/DeviceDataAdapter.java
new file mode 100644
index 0000000..10a93c1
--- /dev/null
+++ b/app/src/main/java/com/moral/screen/adapter/DeviceDataAdapter.java
@@ -0,0 +1,40 @@
+package com.moral.screen.adapter;
+
+import android.annotation.TargetApi;
+import android.os.Build;
+import android.support.v7.widget.RecyclerView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.moral.andbrickslib.baseadapter.recyclerview.CommonAdapter;
+import com.moral.andbrickslib.baseadapter.recyclerview.base.ViewHolder;
+import com.moral.screen.R;
+import com.moral.screen.model.DeviceBean;
+import com.moral.screen.model.DeviceDataBean;
+
+import java.util.List;
+
+/**
+ * Created by hjzhang on 2018/7/4.
+ */
+
+public class DeviceDataAdapter extends CommonAdapter<DeviceDataBean> {
+    public DeviceDataAdapter(RecyclerView v, int layoutId, List<DeviceDataBean> datas) {
+        super(v, layoutId, datas);
+    }
+    @Override
+    protected void convert(ViewHolder holder, DeviceDataBean item, int position) {
+        TextView tv_name = holder.getView(R.id.tv_name);
+        TextView tv_unit = holder.getView(R.id.tv_unit);
+        ProgressBar progressBar = holder.getView(R.id.progressBar);
+        tv_name.setText(item.getDescription());
+        tv_unit.setText(item.getValue()+" ("+item.getUnit()+")");
+        float barIndex = 0;
+        try {
+            barIndex = (Math.abs(item.getValue()) /item.getUpper());
+        }catch (Exception e){
+        }finally {
+            progressBar.setProgress((int) (barIndex*100));
+        }
+    }
+}
diff --git a/app/src/main/java/com/moral/screen/common/API.java b/app/src/main/java/com/moral/screen/common/API.java
index 6672de4..51a40a2 100644
--- a/app/src/main/java/com/moral/screen/common/API.java
+++ b/app/src/main/java/com/moral/screen/common/API.java
@@ -5,7 +5,10 @@
  */
 
 public class API {
-    public static final String BASE_HTTP = "http://dcdev3.s1.natapp.cc/bronzecoll/";
-    public static final String URL_HTTP = BASE_HTTP+"api/";
+    public static final String BASE_HTTP = "http://192.168.1.101:8090/screen_api_v2";
+    public static final String LOGIN = BASE_HTTP+"/mobile/login";
+    public static final String DEVICES = BASE_HTTP+"/mobile/devices";
+    public static final String SENSORS = BASE_HTTP+"/mobile/sensors";
+    public static final String SENSOR = BASE_HTTP+"/mobile/sensor";
 
 }
diff --git a/app/src/main/java/com/moral/screen/httputils/HttpUtils.java b/app/src/main/java/com/moral/screen/httputils/HttpUtils.java
index a8101e8..b608556 100644
--- a/app/src/main/java/com/moral/screen/httputils/HttpUtils.java
+++ b/app/src/main/java/com/moral/screen/httputils/HttpUtils.java
@@ -28,19 +28,21 @@
 
 public class HttpUtils {
     private Context mConetext;
+
     public HttpUtils(Context context) {
         this.mConetext = context;
     }
 
     /**
      * Get������
+     *
      * @param url
      * @param params
      * @param cacheMode
      * @param showLoadingDialog
      * @param httpCallBack
      */
-    public  void doGet(final String url, Map<String, String> params, CacheMode cacheMode, final boolean showLoadingDialog, final HttpCallBack httpCallBack) {
+    public void doGet(final String url, Map<String, String> params, CacheMode cacheMode, final boolean showLoadingDialog, final HttpCallBack httpCallBack) {
         OkGo.get(url)
                 .params(params)
                 .cacheKey(String.valueOf(url))
@@ -62,102 +64,13 @@
                         XLog.e("result:" + s);
                         try {
                             JSONObject jsonObject = new JSONObject(s);
-                            int errno = jsonObject.optInt("resultCode");
-                            String message = jsonObject.optString("msg");
-                            if(errno == 1){
-                                httpCallBack.onSuccess(jsonObject.optString("resObj"),message);
-                            }else if(errno == 1002||errno == 1003){
-                                String errorMsg = jsonObject.optString("errorMsg");
-                                httpCallBack.onFail(errno,errorMsg);
-                            }else{
-                                String errorMsg = jsonObject.optString("errorMsg");
-                                httpCallBack.onFail(errno,errorMsg);
-                            }
-                        } catch (JSONException e) {
-                            e.printStackTrace();
-                        }
-                    }
-
-                    @Override
-                    public void onError(Call call, Response response, Exception e) {
-                        super.onError(call, response, e);
-                        if (response != null) {
-                            int httpCode = response.code();
-                            switch (httpCode) {
-                                case 400:
-                                    XLog.e("���������������������");
-                                    T.show("���������������������");
-                                    break;
-                                case 401:
-                                    XLog.e("���������");
-                                    T.show("���������");
-                                    break;
-                                case 403:
-                                    XLog.e("���������������");
-                                    T.show("���������������");
-                                    break;
-                                case 404:
-                                    XLog.e("������������������������");
-                                    T.show("������������������������");
-                                    break;
-                                case 408:
-                                    XLog.e("������������");
-                                    T.show("������������");
-                                    break;
-                                case 500:
-                                    XLog.e("���������������");
-                                    T.show("���������������");
-                                    break;
-                                case 503:
-                                    XLog.e("������������������������������");
-                                    T.show("������������������������������");
-                                    break;
-                            }
-                        }
-                    }
-                });
-    }
-    /**
-     * Get������
-     * @param url
-     * @param params
-     * @param cacheMode
-     * @param showLoadingDialog
-     * @param httpCallBack
-     */
-    public void doGet(final String url, Map<String, String> params, CacheMode cacheMode, final boolean showLoadingDialog, final HttpListCallBack httpCallBack) {
-        OkGo.get(url)
-                .params(params)
-                .cacheKey(String.valueOf(url))
-                .tag(String.valueOf(url))
-                .cacheMode(cacheMode)
-                .execute(new StringCallback() {
-                    @Override
-                    public void onBefore(BaseRequest request) {
-                        super.onBefore(request);
-                        XLog.e("url:" + request.getUrl());
-                        XLog.e("method:" + request.getMethod());
-                        XLog.e("params:" + request.getParams().toString());
-                        if (showLoadingDialog)
-                            httpCallBack.showLoadingDialog();
-                    }
-
-                    @Override
-                    public void onSuccess(String s, Call call, Response response) {
-                        XLog.e("result:" + s);
-                        try {
-                            JSONObject jsonObject = new JSONObject(s);
-                            int errno = jsonObject.optInt("resultCode");
-                            String message = jsonObject.optString("msg");
-                            int totalPage = jsonObject.optInt("totalPage");
-                            if(errno == 1){
-                                httpCallBack.onSuccess(jsonObject.optString("resObj"),message,totalPage);
-                            }else if(errno == 1002||errno == 1003){
-                                String errorMsg = jsonObject.optString("errorMsg");
-                                httpCallBack.onFail(errno,errorMsg);
-                            }else{
-                                String errorMsg = jsonObject.optString("errorMsg");
-                                httpCallBack.onFail(errno,errorMsg);
+                            int errno = jsonObject.optInt("code");
+                            String message = jsonObject.optString("message");
+                            if (errno == 1) {
+                                httpCallBack.onSuccess(jsonObject.optString("data"), message);
+                            } else {
+                                String errorMsg = jsonObject.optString("message");
+                                httpCallBack.onFail(errno, errorMsg);
                             }
                         } catch (JSONException e) {
                             e.printStackTrace();
@@ -204,101 +117,7 @@
                 });
     }
 
-    /**
-     * POST������
-     * @param url
-     * @param params
-     * @param cacheMode
-     * @param showLoadingDialog
-     * @param httpCallBack
-     */
-    public void doPostList(final String url, Map<String, String> params, CacheMode cacheMode, final boolean showLoadingDialog, final HttpListCallBack httpCallBack) {
-        OkGo.post(url)
-                .params(params)
-                .cacheKey(String.valueOf(url))
-                .tag(String.valueOf(url))
-                .cacheMode(cacheMode)
-                .execute(new StringCallback() {
-                    @Override
-                    public void onBefore(BaseRequest request) {
-                        super.onBefore(request);
-                        XLog.e("url:" + request.getUrl());
-                        XLog.e("method:" + request.getMethod());
-                        XLog.e("params:" + request.getParams().toString());
-                        if (showLoadingDialog)
-                            httpCallBack.showLoadingDialog();
-                    }
-
-                    @Override
-                    public void onSuccess(String s, Call call, Response response) {
-                        XLog.e("result:" + s);
-                        try {
-                            JSONObject jsonObject = new JSONObject(s);
-                            int errno = jsonObject.optInt("resultCode");
-                            String message = jsonObject.optString("msg");
-                            int totalPage = jsonObject.optInt("totalPage");
-                            if(errno == 1){
-                                httpCallBack.onSuccess(jsonObject.optString("resObj"),message,totalPage);
-                            }else if(errno == 1002||errno == 1003){
-                                String errorMsg = jsonObject.optString("errorMsg");
-                                httpCallBack.onFail(errno,errorMsg);
-                            }else{
-                                String errorMsg = jsonObject.optString("errorMsg");
-                                httpCallBack.onFail(errno,errorMsg);
-                            }
-                        } catch (JSONException e) {
-                            e.printStackTrace();
-                        }
-                    }
-
-                    @Override
-                    public void onError(Call call, Response response, Exception e) {
-                        super.onError(call, response, e);
-                        if (response != null) {
-                            int httpCode = response.code();
-                            switch (httpCode) {
-                                case 400:
-                                    XLog.e("���������������������");
-                                    T.show("���������������������");
-                                    break;
-                                case 401:
-                                    XLog.e("���������");
-                                    T.show("���������");
-                                    break;
-                                case 403:
-                                    XLog.e("���������������");
-                                    T.show("���������������");
-                                    break;
-                                case 404:
-                                    XLog.e("������������������������");
-                                    T.show("������������������������");
-                                    break;
-                                case 408:
-                                    XLog.e("������������");
-                                    T.show("������������");
-                                    break;
-                                case 500:
-                                    XLog.e("���������������");
-                                    T.show("���������������");
-                                    break;
-                                case 503:
-                                    XLog.e("������������������������������");
-                                    T.show("������������������������������");
-                                    break;
-                            }
-                        }
-                    }
-                });
-    }
-    /**
-     * Post������
-     * @param url
-     * @param params
-     * @param cacheMode
-     * @param showLoadingDialog
-     * @param httpCallBack
-     */
-    public  void doPost(final String url, Map<String, String> params, CacheMode cacheMode, final boolean showLoadingDialog, final HttpCallBack httpCallBack) {
+    public void doPost(final String url, Map<String, String> params, CacheMode cacheMode, final boolean showLoadingDialog, final HttpCallBack httpCallBack) {
         OkGo.post(url)
                 .cacheKey(String.valueOf(url))
                 .tag(String.valueOf(url))
@@ -320,16 +139,13 @@
                         XLog.e("result:" + s);
                         try {
                             JSONObject jsonObject = new JSONObject(s);
-                            int errno = jsonObject.optInt("resultCode");
-                            String message = jsonObject.optString("msg");
-                            if(errno == 1){
-                                httpCallBack.onSuccess(jsonObject.optString("resObj"),message);
-                            }else if(errno == 1002||errno == 1003){
-                                String errorMsg = jsonObject.optString("errorMsg");
-                                httpCallBack.onFail(errno,errorMsg);
-                            }else{
-                                String errorMsg = jsonObject.optString("errorMsg");
-                                httpCallBack.onFail(errno,errorMsg);
+                            int errno = jsonObject.optInt("code");
+                            String message = jsonObject.optString("message");
+                            if (errno == 1) {
+                                httpCallBack.onSuccess(jsonObject.optString("data"), message);
+                            } else {
+                                String errorMsg = jsonObject.optString("message");
+                                httpCallBack.onFail(errno, errorMsg);
                             }
                         } catch (JSONException e) {
                             e.printStackTrace();
@@ -367,247 +183,6 @@
                                 break;
                         }
                     }
-
-
                 });
-    }
-
-    /**
-     * ������������
-     * @param url
-     * @param params
-     * @param uploadCallBack
-     * @param files
-     */
-    public  void uploadFiles(final String url, Map<String, String> params, final UploadCallBack uploadCallBack, List<File> files) {
-        OkGo.post(url)
-                .params(params)
-                .isMultipart(true)
-                .addFileParams("file", files)
-                .execute(new StringCallback() {
-                    @Override
-                    public void onBefore(BaseRequest request) {
-                        super.onBefore(request);
-                        PostRequest re = (PostRequest) request;
-                        XLog.e("url:" + re.getUrl());
-                        XLog.e("method:" + re.getMethod());
-                    }
-
-                    @Override
-                    public void onSuccess(String s, Call call, Response response) {
-                        XLog.e("result:" + s);
-                        try {
-                            JSONObject jsonObject = new JSONObject(s);
-                            int errno = jsonObject.optInt("resultCode");
-                            String message = jsonObject.optString("msg");
-                            if(errno == 1){
-                                uploadCallBack.onSuccess(jsonObject.optString("resObj"),message);
-                            }else{
-                                uploadCallBack.onFail(message);
-                            }
-                        } catch (JSONException e) {
-                            e.printStackTrace();
-                        }
-                    }
-
-                    @Override
-                    public void upProgress(long currentSize, long totalSize, float progress, long networkSpeed) {
-                        super.upProgress(currentSize, totalSize, progress, networkSpeed);
-                        uploadCallBack.onProgress(currentSize, totalSize, progress, networkSpeed);
-                    }
-
-                    @Override
-                    public void onError(Call call, Response response, Exception e) {
-                        super.onError(call, response, e);
-                        if (response == null)
-                            return;
-                        int httpCode = response.code();
-                        switch (httpCode) {
-                            case 400:
-                                T.show("���������������������");
-                                break;
-                            case 401:
-                                T.show("���������");
-                                break;
-                            case 403:
-                                T.show("���������������");
-                                break;
-                            case 404:
-                                T.show("������������������������");
-                                break;
-                            case 408:
-                                T.show("������������");
-                                break;
-                            case 500:
-                                T.show("���������������");
-                                break;
-                            case 503:
-                                T.show("������������������������������");
-                                break;
-                        }
-                    }
-
-                });
-
-    }
-    public  void uploadFiles(final String url, Map<String, String> params, final UploadCallBack uploadCallBack, List<File> files,List<File> files2) {
-        OkGo.post(url)
-                .params(params)
-                .isMultipart(true)
-                .addFileParams("door", files)
-                .addFileParams("images", files2)
-                .execute(new StringCallback() {
-                    @Override
-                    public void onBefore(BaseRequest request) {
-                        super.onBefore(request);
-                        PostRequest re = (PostRequest) request;
-                        XLog.e("url:" + re.getUrl());
-                        XLog.e("method:" + re.getMethod());
-                    }
-
-                    @Override
-                    public void onSuccess(String s, Call call, Response response) {
-                        XLog.e("result:" + s);
-                        try {
-                            JSONObject jsonObject = new JSONObject(s);
-                            int errno = jsonObject.optInt("resultCode");
-                            String message = jsonObject.optString("msg");
-                            if(errno == 1){
-                                uploadCallBack.onSuccess(jsonObject.optString("resObj"),message);
-                            }else{
-                                uploadCallBack.onFail(message);
-                            }
-                        } catch (JSONException e) {
-                            e.printStackTrace();
-                        }
-                    }
-
-                    @Override
-                    public void upProgress(long currentSize, long totalSize, float progress, long networkSpeed) {
-                        super.upProgress(currentSize, totalSize, progress, networkSpeed);
-                        uploadCallBack.onProgress(currentSize, totalSize, progress, networkSpeed);
-                    }
-
-                    @Override
-                    public void onError(Call call, Response response, Exception e) {
-                        super.onError(call, response, e);
-                        if (response == null)
-                            return;
-                        int httpCode = response.code();
-                        switch (httpCode) {
-                            case 400:
-                                T.show("���������������������");
-                                break;
-                            case 401:
-                                T.show("���������");
-                                break;
-                            case 403:
-                                T.show("���������������");
-                                break;
-                            case 404:
-                                T.show("������������������������");
-                                break;
-                            case 408:
-                                T.show("������������");
-                                break;
-                            case 500:
-                                T.show("���������������");
-                                break;
-                            case 503:
-                                T.show("������������������������������");
-                                break;
-                        }
-                    }
-
-                });
-
-    }
-    /**
-     * ������������
-     * @param url
-     * @param params
-     * @param uploadCallBack
-     * @param files
-     */
-    public  void uploadFiles(final String url, Map<String, String> params, final UploadCallBack uploadCallBack, Map<String, File> files) {
-        PostRequest postRequest = OkGo.post(url);
-        postRequest.isMultipart(true);
-        for (String key : files.keySet()) {
-            postRequest.params(key, files.get(key));
-        }
-        postRequest.params(params)
-                .execute(new StringCallback() {
-                    @Override
-                    public void onBefore(BaseRequest request) {
-                        super.onBefore(request);
-                        PostRequest re = (PostRequest) request;
-                        XLog.e("url:" + re.getUrl());
-                        XLog.e("method:" + re.getMethod());
-                    }
-
-                    @Override
-                    public void onSuccess(String s, Call call, Response response) {
-                        XLog.e("result:" + s);
-                        try {
-                            JSONObject jsonObject = new JSONObject(s);
-                            int errno = jsonObject.optInt("resultCode");
-                            String message = jsonObject.optString("msg");
-                            if(errno == 1){
-                                uploadCallBack.onSuccess(jsonObject.optString("resObj"),message);
-                            }else{
-                                uploadCallBack.onFail(message);
-                            }
-                        } catch (JSONException e) {
-                            e.printStackTrace();
-                        }
-                    }
-
-                    @Override
-                    public void upProgress(long currentSize, long totalSize, float progress, long networkSpeed) {
-                        super.upProgress(currentSize, totalSize, progress, networkSpeed);
-                        uploadCallBack.onProgress(currentSize, totalSize, progress, networkSpeed);
-                    }
-
-                    @Override
-                    public void onError(Call call, Response response, Exception e) {
-                        super.onError(call, response, e);
-                        if (response == null)
-                            return;
-                        int httpCode = response.code();
-                        switch (httpCode) {
-                            case 400:
-                                T.show("���������������������");
-                                break;
-                            case 401:
-                                T.show("���������");
-                                break;
-                            case 403:
-                                T.show("���������������");
-                                break;
-                            case 404:
-                                T.show("������������������������");
-                                break;
-                            case 408:
-                                T.show("������������");
-                                break;
-                            case 500:
-                                T.show("���������������");
-                                break;
-                            case 503:
-                                T.show("������������������������������");
-                                break;
-                        }
-                    }
-
-                });
-
-    }
-
-    public interface UploadCallBack {
-        void onSuccess(String res, String msg);
-
-        void onFail(String s);
-
-        void onProgress(long currentSize, long totalSize, float progress, long networkSpeed);
     }
 }
diff --git a/app/src/main/java/com/moral/screen/model/DeviceBean.java b/app/src/main/java/com/moral/screen/model/DeviceBean.java
new file mode 100644
index 0000000..8e2ce60
--- /dev/null
+++ b/app/src/main/java/com/moral/screen/model/DeviceBean.java
@@ -0,0 +1,143 @@
+package com.moral.screen.model;
+
+/**
+ * Created by hjzhang on 2018/7/4.
+ */
+
+public class DeviceBean {
+    private int id;
+    private String name;
+    private String address;
+    private double longitude;
+    private double latitude;
+    private String mac;
+    private int operateUserId;
+    private String state;
+    private long createTime;
+    private String installTime;
+    private int monitorPointId;
+    private int deviceVersionId;
+    private String isDelete;
+    private int professionId;
+    private String device_name;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public double getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(double longitude) {
+        this.longitude = longitude;
+    }
+
+    public double getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(double latitude) {
+        this.latitude = latitude;
+    }
+
+    public String getMac() {
+        return mac;
+    }
+
+    public void setMac(String mac) {
+        this.mac = mac;
+    }
+
+    public int getOperateUserId() {
+        return operateUserId;
+    }
+
+    public void setOperateUserId(int operateUserId) {
+        this.operateUserId = operateUserId;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(long createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getInstallTime() {
+        return installTime;
+    }
+
+    public void setInstallTime(String installTime) {
+        this.installTime = installTime;
+    }
+
+    public int getMonitorPointId() {
+        return monitorPointId;
+    }
+
+    public void setMonitorPointId(int monitorPointId) {
+        this.monitorPointId = monitorPointId;
+    }
+
+    public int getDeviceVersionId() {
+        return deviceVersionId;
+    }
+
+    public void setDeviceVersionId(int deviceVersionId) {
+        this.deviceVersionId = deviceVersionId;
+    }
+
+    public String getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(String isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public int getProfessionId() {
+        return professionId;
+    }
+
+    public void setProfessionId(int professionId) {
+        this.professionId = professionId;
+    }
+
+    public String getDevice_name() {
+        return device_name;
+    }
+
+    public void setDevice_name(String device_name) {
+        this.device_name = device_name;
+    }
+}
diff --git a/app/src/main/java/com/moral/screen/model/DeviceDataBean.java b/app/src/main/java/com/moral/screen/model/DeviceDataBean.java
new file mode 100644
index 0000000..749d046
--- /dev/null
+++ b/app/src/main/java/com/moral/screen/model/DeviceDataBean.java
@@ -0,0 +1,89 @@
+package com.moral.screen.model;
+
+/**
+ * Created by hjzhang on 2018/7/4.
+ */
+
+public class DeviceDataBean {
+    private String sensor_key;
+    private String unit;
+    private float upper;
+    private float lower;
+    private String name;
+    private String description;
+    private int id;
+    private String state;
+    private float value;
+
+    public String getSensor_key() {
+        return sensor_key;
+    }
+
+    public void setSensor_key(String sensor_key) {
+        this.sensor_key = sensor_key;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public float getUpper() {
+        return upper;
+    }
+
+    public void setUpper(float upper) {
+        this.upper = upper;
+    }
+
+    public float getLower() {
+        return lower;
+    }
+
+    public void setLower(float lower) {
+        this.lower = lower;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public float getValue() {
+        return value;
+    }
+
+    public void setValue(float value) {
+        this.value = value;
+    }
+}
diff --git a/app/src/main/java/com/moral/screen/model/SensorData.java b/app/src/main/java/com/moral/screen/model/SensorData.java
new file mode 100644
index 0000000..5fd194e
--- /dev/null
+++ b/app/src/main/java/com/moral/screen/model/SensorData.java
@@ -0,0 +1,17 @@
+package com.moral.screen.model;
+
+/**
+ * Created by hjzhang on 2018/7/10.
+ */
+
+public class SensorData {
+    private float value;
+
+    public float getValue() {
+        return value;
+    }
+
+    public void setValue(float value) {
+        this.value = value;
+    }
+}
diff --git a/app/src/main/java/com/moral/screen/utils/SharedPreferencesUtil.java b/app/src/main/java/com/moral/screen/utils/SharedPreferencesUtil.java
new file mode 100644
index 0000000..baecb37
--- /dev/null
+++ b/app/src/main/java/com/moral/screen/utils/SharedPreferencesUtil.java
@@ -0,0 +1,45 @@
+package com.moral.screen.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
+public class SharedPreferencesUtil {
+	private Context mContext;
+	public final static String SP_LOGIN_USER_KEY = "login_user";
+	public SharedPreferencesUtil(Context context) {
+		this.mContext = context;
+	}
+
+	public void saveOrgId(int orgId){
+		SharedPreferences preferences = mContext.getSharedPreferences(SP_LOGIN_USER_KEY, Context.MODE_PRIVATE);
+		Editor editor = preferences.edit();
+		editor.putInt("orgId",orgId);
+		editor.commit();
+	}
+
+	public int getOrgId(){
+		SharedPreferences sp = mContext.getSharedPreferences(SP_LOGIN_USER_KEY, Context.MODE_PRIVATE);
+		int orgId = sp.getInt("orgId",0);
+        return orgId;
+	}
+
+
+	/**
+	 * ���������������������������
+	 * @param flag
+	 */
+	public void saveFirstUse(int flag) {
+		SharedPreferences preferences = mContext.getSharedPreferences("firstInfo",
+				Context.MODE_PRIVATE);
+		Editor editor = preferences.edit();
+		editor.putInt("firstUse", flag);
+		editor.commit();
+	}
+	
+	public int getFirstUse() {
+		SharedPreferences preferences = mContext.getSharedPreferences("firstInfo",
+				Context.MODE_PRIVATE);
+		int firstUse = preferences.getInt("firstUse", 0);
+		return firstUse;
+	}
+}
diff --git a/app/src/main/res/drawable/my_progress_background.xml b/app/src/main/res/drawable/my_progress_background.xml
new file mode 100644
index 0000000..66a876a
--- /dev/null
+++ b/app/src/main/res/drawable/my_progress_background.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background">
+        <color android:color="#00ffffff"/>
+    </item>
+
+    <item android:id="@android:id/progress">
+        <clip
+            android:clipOrientation="horizontal"
+            android:gravity="left">
+            <shape>
+                <gradient
+                    android:startColor="#00a445"
+                    android:endColor="#00ffde"/>
+            </shape>
+        </clip>
+    </item>
+</layer-list>
diff --git a/app/src/main/res/layout/ac_charts_layout.xml b/app/src/main/res/layout/ac_charts_layout.xml
new file mode 100644
index 0000000..e87c359
--- /dev/null
+++ b/app/src/main/res/layout/ac_charts_layout.xml
@@ -0,0 +1,53 @@
+<?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:background="@mipmap/bg"
+    android:fitsSystemWindows="true"
+    android:orientation="vertical">
+    <include layout="@layout/top_bar_layout"/>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:layout_marginLeft="@dimen/x8"
+        android:layout_marginRight="@dimen/x8"
+        android:layout_marginTop="@dimen/x20"
+        android:padding="@dimen/x10"
+        android:background="@mipmap/bg_chart">
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+            <ImageView
+                android:layout_width="@dimen/x10"
+                android:layout_height="@dimen/x10"
+                android:src="@mipmap/icon_yuan"/>
+            <TextView
+                android:id="@+id/tv_sub"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/white"
+                android:textSize="16sp"
+                android:layout_gravity="center_horizontal"
+                android:text="PM2.5���������"
+                android:layout_marginRight="@dimen/x4"
+                android:layout_marginLeft="@dimen/x4"
+                />
+            <ImageView
+                android:layout_width="@dimen/x10"
+                android:layout_height="@dimen/x10"
+                android:src="@mipmap/icon_xia"/>
+        </LinearLayout>
+
+        <lecho.lib.hellocharts.view.LineChartView
+            android:id="@+id/chart"
+            android:layout_width="match_parent"
+            android:layout_marginTop="@dimen/x8"
+            android:layout_height="@dimen/y300">
+        </lecho.lib.hellocharts.view.LineChartView>
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/ac_device_data_layout.xml b/app/src/main/res/layout/ac_device_data_layout.xml
new file mode 100644
index 0000000..c0e7f9f
--- /dev/null
+++ b/app/src/main/res/layout/ac_device_data_layout.xml
@@ -0,0 +1,51 @@
+<?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:background="@mipmap/bg"
+    android:fitsSystemWindows="true"
+    android:orientation="vertical">
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/y38">
+        <TextView
+            android:id="@+id/tv_left"
+            android:layout_width="@dimen/x60"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:textColor="@color/white"
+            android:drawablePadding="@dimen/x4"
+            android:textSize="16sp"
+            android:text="������"
+            android:paddingLeft="@dimen/x16"
+            />
+        <TextView
+            android:id="@+id/tv_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:ellipsize="marquee"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:gravity="center"
+            android:textColor="@color/white"
+            android:marqueeRepeatLimit="marquee_forever"
+            android:singleLine="true"
+            android:text="������������"
+            android:textSize="17sp" />
+    </RelativeLayout>
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="@dimen/x6"
+        android:paddingLeft="@dimen/x2"
+        android:paddingRight="@dimen/x2"
+        android:paddingBottom="@dimen/x10"
+        android:paddingTop="@dimen/x2"
+        android:background="@mipmap/bg_data">
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/rv_data"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+    </RelativeLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/ac_login_layout.xml b/app/src/main/res/layout/ac_login_layout.xml
index 242e533..4bbc9ef 100644
--- a/app/src/main/res/layout/ac_login_layout.xml
+++ b/app/src/main/res/layout/ac_login_layout.xml
@@ -19,7 +19,6 @@
         android:layout_height="@dimen/x40"
         android:layout_marginLeft="@dimen/x36"
         android:layout_marginRight="@dimen/x36"
-        android:inputType="number"
         android:textSize="16sp"
         android:textColor="@color/white"
         android:textColorHint="@color/white"
@@ -59,5 +58,6 @@
         android:textColor="@color/blue_txt"
         android:text="������������"
         android:gravity="center"
+        android:visibility="invisible"
         android:layout_marginTop="@dimen/x60"/>
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/ac_map_layout.xml b/app/src/main/res/layout/ac_map_layout.xml
new file mode 100644
index 0000000..531c314
--- /dev/null
+++ b/app/src/main/res/layout/ac_map_layout.xml
@@ -0,0 +1,49 @@
+<?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:background="@mipmap/bg"
+    android:fitsSystemWindows="true"
+    android:orientation="vertical">
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/y38">
+        <TextView
+            android:id="@+id/tv_left"
+            android:layout_width="@dimen/x60"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:textColor="@color/white"
+            android:drawablePadding="@dimen/x4"
+            android:textSize="16sp"
+            android:text="������"
+            android:paddingLeft="@dimen/x16"
+            />
+        <TextView
+            android:id="@+id/tv_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:ellipsize="marquee"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:gravity="center"
+            android:textColor="@color/white"
+            android:marqueeRepeatLimit="marquee_forever"
+            android:singleLine="true"
+            android:text="������������"
+            android:textSize="17sp" />
+    </RelativeLayout>
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="@dimen/x6"
+        android:padding="@dimen/x2"
+        android:background="@mipmap/bg_map">
+        <com.baidu.mapapi.map.MapView
+            android:id="@+id/bmapView"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
+            android:clickable="true" />
+    </RelativeLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/list_item_data.xml b/app/src/main/res/layout/list_item_data.xml
new file mode 100644
index 0000000..240527d
--- /dev/null
+++ b/app/src/main/res/layout/list_item_data.xml
@@ -0,0 +1,46 @@
+<?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="wrap_content"
+    android:gravity="center_vertical"
+    android:orientation="horizontal"
+    android:paddingTop="@dimen/x14"
+    android:paddingLeft="@dimen/x4"
+    android:paddingRight="@dimen/x4">
+    <TextView
+        android:id="@+id/tv_name"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:gravity="right"
+        android:layout_weight="1.2"
+        android:textSize="13sp"
+        android:textColor="@color/white"
+        android:text="���������2.5"/>
+    <RelativeLayout
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="3"
+        android:background="@mipmap/pro_kuang"
+        android:layout_marginRight="@dimen/x6"
+        android:layout_marginLeft="@dimen/x6"
+        android:padding="@dimen/x2">
+        <ProgressBar
+            android:id="@+id/progressBar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            style="?android:attr/progressBarStyleHorizontal"
+            android:max="100"
+            android:progressDrawable="@drawable/my_progress_background"
+            />
+    </RelativeLayout>
+
+    <TextView
+        android:id="@+id/tv_unit"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:gravity="left"
+        android:layout_weight="2.2"
+        android:textColor="@color/white"
+        android:textSize="13sp"
+        android:text="6396���PCS/0.1L���"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/pop_layout.xml b/app/src/main/res/layout/pop_layout.xml
new file mode 100644
index 0000000..04f7962
--- /dev/null
+++ b/app/src/main/res/layout/pop_layout.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/ll_pop"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:background="@mipmap/bg_pop"
+    android:paddingLeft="@dimen/x8"
+    android:paddingTop="@dimen/x8"
+    android:paddingRight="@dimen/x8"
+    android:paddingBottom="@dimen/x16"
+    android:orientation="vertical">
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+        <TextView
+            android:id="@+id/tv_name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="XXXXXXXXXXXXXXXXXXXXXXX"
+            android:textSize="13sp"
+            android:textColor="@color/yellow_txt"
+            android:layout_weight="1"/>
+        <ImageView
+            android:id="@+id/iv_close"
+            android:layout_width="@dimen/x20"
+            android:layout_height="@dimen/x20"
+            android:padding="@dimen/x6"
+            android:src="@mipmap/icon_close" />
+    </LinearLayout>
+    <TextView
+        android:id="@+id/tv_address"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:text="XXXXXXXXXXXXXXXXXXXXXXX"
+        android:textSize="13sp"
+        android:layout_marginTop="@dimen/x4"
+        android:layout_weight="1"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/top_bar_layout.xml b/app/src/main/res/layout/top_bar_layout.xml
index 8fd3c0a..547407b 100644
--- a/app/src/main/res/layout/top_bar_layout.xml
+++ b/app/src/main/res/layout/top_bar_layout.xml
@@ -1,15 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/y38"
-    android:background="@color/white">
+    android:layout_height="@dimen/y38">
 
     <TextView
         android:id="@+id/tv_left"
         android:layout_width="@dimen/x60"
         android:layout_height="match_parent"
         android:gravity="center"
-        android:textColor="@color/black_txt"
+        android:textColor="@color/white"
         android:drawablePadding="@dimen/x4"
         android:textSize="16sp"
         android:text="������"
@@ -25,7 +24,7 @@
         android:focusable="true"
         android:focusableInTouchMode="true"
         android:gravity="center"
-        android:textColor="@color/black_txt"
+        android:textColor="@color/white"
         android:marqueeRepeatLimit="marquee_forever"
         android:singleLine="true"
         android:text="������"
@@ -48,6 +47,6 @@
         android:gravity="center"
         android:text=""
         android:visibility="gone"
-        android:textColor="@color/black_txt"
+        android:textColor="@color/white"
         android:layout_alignParentRight="true" />
 </RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_chart.png b/app/src/main/res/mipmap-xxxhdpi/bg_chart.png
new file mode 100644
index 0000000..4e4e856
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_chart.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_data.png b/app/src/main/res/mipmap-xxxhdpi/bg_data.png
new file mode 100644
index 0000000..37af029
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_data.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_map.png b/app/src/main/res/mipmap-xxxhdpi/bg_map.png
new file mode 100644
index 0000000..82c212b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_map.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_pop.png b/app/src/main/res/mipmap-xxxhdpi/bg_pop.png
new file mode 100644
index 0000000..27d2f46
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_pop.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_close.png b/app/src/main/res/mipmap-xxxhdpi/icon_close.png
new file mode 100644
index 0000000..56171c5
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/icon_close.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_level1.png b/app/src/main/res/mipmap-xxxhdpi/icon_level1.png
new file mode 100644
index 0000000..5487601
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/icon_level1.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_level2.png b/app/src/main/res/mipmap-xxxhdpi/icon_level2.png
new file mode 100644
index 0000000..1928a67
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/icon_level2.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_level3.png b/app/src/main/res/mipmap-xxxhdpi/icon_level3.png
new file mode 100644
index 0000000..7b6d691
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/icon_level3.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_normal.png b/app/src/main/res/mipmap-xxxhdpi/icon_normal.png
new file mode 100644
index 0000000..64a77b1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/icon_normal.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_offline.png b/app/src/main/res/mipmap-xxxhdpi/icon_offline.png
new file mode 100644
index 0000000..a71a2cb
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/icon_offline.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_white_jiantou.png b/app/src/main/res/mipmap-xxxhdpi/icon_white_jiantou.png
new file mode 100644
index 0000000..4c1962f
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/icon_white_jiantou.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_xia.png b/app/src/main/res/mipmap-xxxhdpi/icon_xia.png
new file mode 100644
index 0000000..d6ee6c8
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/icon_xia.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_yuan.png b/app/src/main/res/mipmap-xxxhdpi/icon_yuan.png
new file mode 100644
index 0000000..3223a5c
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/icon_yuan.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/pro_kuang.png b/app/src/main/res/mipmap-xxxhdpi/pro_kuang.png
new file mode 100644
index 0000000..46b2edf
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/pro_kuang.png
Binary files differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3c336cd..e89771f 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -10,7 +10,7 @@
     <color name="dark_black_txt">#040000</color>
     <color name="black_txt">#323333</color>
     <color name="green_txt">#92c755</color>
-    <color name="yellow_txt">#eb8600</color>
+    <color name="yellow_txt">#ff7800</color>
     <color name="ac_bg">#f0f0f0</color>
     <color name="trans_white">#CCffffff</color>
     <color name="trans">#00ffffff</color>

--
Gitblit v1.8.0