智能农业大致思路和用到的知识点

原创 2018年04月15日 20:50:49

布局很简单,用viewpager和fragment实现页面的滑动和点击跳转,绑定按钮的id;

要获取到传感器上的值显示到app上,这里我们需要使用到网络,首先添加权限:

 <uses-permission android:name="android.permission.INTERNET"/>

添加依赖:

   compile 'com.loopj.android:android-async-http:1.4.9'
    compile 'com.google.code.gson:gson:2.8.2'
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'

如果使用AscncHttp,那么获取的速度会慢一点,Okhttp比它快。

新建类HttpUtil,公共需要用到的东西:

public class HttpUtil {
  private static final String basicUrl = "http://192.168.1.100:8890/type/jason/action/";
  private static AsyncHttpClient client = new AsyncHttpClient();
    public static void get (String url, RequestParams params, AsyncHttpResponseHandler responseHandler){
        client.get(url,params,responseHandler);
    }
    public static void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) {
        client.post(context,url,entity,contentType,responseHandler);
    }

其中地址是智能农业公共能用到的部分。

okhttp也是新建类:

public class Okhttp {
     private static OkHttpClient client = new OkHttpClient();
     public static void sendOkHttpRequest(String address,okhttp3.Callback callback){
      Request request = new Request.Builder().url(address).build();
      client.newCall(request).enqueue(callback);
    }
public static void postJsonByOkHttp(String url, JSONObject jsonObject,okhttp3.Callback callback){
        MediaType mediaType = MediaType.parse("application/json;Charset=UTF-8");
        RequestBody requestBody = RequestBody.create(mediaType,jsonObject.toString());
        Request request = new Request.Builder().url(url).post(requestBody).build();
        client.newCall(request).enqueue(callback);
    }
 }

获取传感器的值:

        RequestParams params = new RequestParams();
        params.put("username","admin");
        HttpUtil.get(basicUrl+"getSensor", params, new TextHttpResponseHandler() {
            @Override
           public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
               
       }         @Override
           public void onSuccess(int statusCode, Header[] headers, String responseString) {

                
                 Gson gson = new Gson();
                App app = gson.fromJson(responseString,App.class);
                 airHumidity = app.getAirHumidity();
                PM25 = app.getPM25();
                 airTemperature = app.getAirTemperature();
                 soilTemperature = app.getSoilTemperature();
               co2 = app.getCo2();
                 soilHumidity = app.getSoilHumidity();
                 light = app.getLight();
 
                 co2Tv.setText(co2+"");
                 lightTv.setText(light+"");
                soilTempTv.setText(soilTemperature+"");
                 soilWetnessTv.setText(soilHumidity+"");
                 airTempTv.setText(airTemperature+"");
                airWetnessTv.setText(airHumidity+"");
          }
       });

其他页面获取值以此类推。

okhttp加快速度:

        String relativeUrl = intent.getStringExtra("IP");
        String basicUrl2 = "http://"+relativeUrl+":8890/type/jason/action/getSensor?username=admin";
        Log.e(TAG, "getAppValues: "+basicUrl2 );
        Okhttp.sendOkHttpRequest(basicUrl2, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

                });
            }
              @Override
            public void onResponse(Call call, final Response response) throws IOException {

                flag++;
               String responseString = null;
                try {
                    responseString = response.body().string();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Gson gson = new Gson();
                App app = gson.fromJson(responseString,App.class);
                airHumidity = app.getAirHumidity();
                PM25 = app.getPM25();
                airTemperature = app.getAirTemperature();
                soilTemperature = app.getSoilTemperature();
                co2 = app.getCo2();
                soilHumidity = app.getSoilHumidity();
                light = app.getLight();
                 getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        co2Tv.setText(co2+"");
                        lightTv.setText(light+"");
                        soilTempTv.setText(soilTemperature+"");
                        soilWetnessTv.setText(soilHumidity+"");
                        airTempTv.setText(airTemperature+"");
                        airWetnessTv.setText(airHumidity+"");
                  }
                });
  

新建类便于每个按钮的状态的获取:

public class Status {

    public static int WaterPump = 0;
    public static int Blower = 0;
    public static int Roadlamp = 0;
    public static int Buzzer = 0;
 }
初始值设为0。

获取每个按钮当时的状态,如果是开着的则返回数字1,是关着的返回数字0,进行打开操作:

   final JSONObject[] jsonObject = {new JSONObject()};
        try {
            jsonObject[0].put("Blower", 1);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        Okhttp.postJsonByOkHttp(basicUrl + "control", jsonObject[0], new okhttp3.Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }
              @Override
            public void onResponse(Call call, Response response) throws IOException {
                String responseString = response.body().string();
                try {
                    JSONObject jsonObject1 = new JSONObject(responseString);
                    if (jsonObject1.getString("result").equals("ok")) {
                        Status.Blower = 1;
                        DeviceControl.result = 1;
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
           }
        });

关闭操作:

  final JSONObject[] jsonObject = {new JSONObject()};
        try {
            jsonObject[0].put("Blower", 0);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        Okhttp.postJsonByOkHttp(basicUrl + "control", jsonObject[0], new okhttp3.Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String responseString = response.body().string();
                try {
                    JSONObject jsonObject1 = new JSONObject(responseString);
                    if (jsonObject1.getString("result").equals("ok")) {
                        Status.Blower = 0;
                        DeviceControl.result = 0;
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        });

还有点击开始或者关闭之后更换图片:

    if (Status.Blower == 0) {
            openFanImg.setImageResource(R.mipmap.dakaifengshan);
            DeviceControl.result = 0;
        } else if (Status.Blower == 1) {
            openFanImg.setImageResource(R.mipmap.dakaifengshan2);
            DeviceControl.result = 1;
        }

其他按钮也是以此类推。

微信WEB开发知识点手册

-
  • 1970年01月01日 08:00

智能农业控制系统

  • 2016年01月18日 13:48
  • 2.8MB
  • 下载

Android应用源码之智能农业

  • 2016年09月08日 09:19
  • 4.64MB
  • 下载

基于zigbee、Wifi物联网智能农业解决方案

  • 2016年04月02日 22:32
  • 1.29MB
  • 下载

智能农业app(打开风扇)

初学者运用Http请求传参控制沙盘(风扇、警报、、)
  • jump_down
  • jump_down
  • 2017-03-20 22:16:11
  • 179

联想智能农业移动应用开发系统用户手册

1. 系统介绍 1.1 系统概述 联想智能农业移动应用开发系统是一套模拟智能农业场景的应用研发测试平台。可广泛运用于移动APP开发、嵌入式设备开发、软件测试、用户体验测试(需配选件)等。不...
  • qq_15950325
  • qq_15950325
  • 2016-10-24 22:26:51
  • 3420

基于ZigBee的智慧农业监测系统

我国是农业大国, 传统农业在国际市场上的优势主要依赖于丰富的自然资源和低廉的劳动力成本。随着物联网等高新技术的发展,我国传统农业正在加快向现代农业转型,而智慧农业将成为现代农业未来发展的趋势。所谓“智...
  • liqingkk
  • liqingkk
  • 2015-05-27 22:20:17
  • 2558

中国人工智能系列白皮书-智能农业

  • 2017年10月20日 12:29
  • 2.45MB
  • 下载

物联网在农业中的应用ppt

  • 2013年12月23日 13:47
  • 4.54MB
  • 下载

ZigBee在智慧农业中的应用

电子技术、传感器技术及网络技术的发展促进了农业信息化水平的提高,以信息网络为中心的智慧农业、精准农业等一系列新的农业生产模式已成为当前研究的热点。通过大量遍布于农田、温室大棚等目标区域的传感器,实时采...
  • liqingkk
  • liqingkk
  • 2015-05-19 23:10:00
  • 1753
收藏助手
不良信息举报
您举报文章:智能农业大致思路和用到的知识点
举报原因:
原因补充:

(最多只允许输入30个字)