智能农业解析

原创 2018年04月15日 15:13:05

一、智能农业总结

做好每个界面的布局,实现页面之间的切换
网络请求,获取信息,并进行解析,获取实时信息,放到页面所属得位置上去
获取各个开关的状态,并且获取沙盘的数据,可以进行控制(操作界面中各个选项,跳转到具体设施操作界面,加载界面时获取服务器中各个设施状态,判断设施状态显示界面中按钮状态)
点击按钮控制,开关图片需要变化,需要用标识位来显示,转到其他页面,也不需要重新更新数据,依然可以获取

这里写图片描述

注意点:服务器IP需要设置一下,设置输入正确的,点击按钮,可以跳转到下一页面(IP在服务器上)

//弹出来的对话框
 AlertDialog.Builder builder = new AlertDialog.Builder(this);
        final EditText ipEt = new EditText(this);
        builder.setTitle("欢迎您,请先设置服务器IP");
        builder.setView(ipEt);
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                URL = ipEt.getText().toString();
                Intent intent=new Intent(StartActivity.this,IntelligentActivity.class);
                startActivity(intent);
            }
        });
        builder.show();
//静态变量
 private static final String BASE_URL = "http://"+ StartActivity.URL+":8890/type/jason/action/";

二、公共类与全局变量的使用

该项目需要网络请求很多次,为减轻代码量,可以写一个公共类,在里面写方法,然后进行调用。

使用OkHttp,需要先导依赖包

 compile 'com.squareup.okhttp3:okhttp:3.4.1'

然后创建一个类(类名自定义)

public class OkHttp {
//定义静态url路径
    private static final String BASE_URL = "http://"+ StartActivity.URL+":8890/type/jason/action/";
    private static OkHttpClient client = new OkHttpClient();
    public static final MediaType mediaType = MediaType.parse("application/json;charset=UTF-8");

    public static void sendOkHttpRequest(String url, okhttp3.Callback callback) {
        Request request = new Request.Builder().url(getAbsoluteUrl(url)).build();
        client.newCall(request).enqueue(callback);
    }
//post方法,获取JSON格式的数据
    public static void postJSONByOkhttp(String url, String json,int number, Callback callback) {
        try {
            JSONObject jsonObject=new JSONObject();
            jsonObject.put(json,number);
            RequestBody requestBody = RequestBody.create(mediaType, jsonObject.toString());
            Request request = new Request.Builder().url(getAbsoluteUrl(url)).post(requestBody).build();
            client.newCall(request).enqueue(callback);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    //变换的URL
    private static String getAbsoluteUrl(String relativeUrl) {
        return BASE_URL + relativeUrl;
    }
}

效果图展示:

这里写图片描述


public class CO2Activity extends AppCompatActivity implements View.OnClickListener {

    private ImageButton image1Btn;
    private ImageButton image2Btn;
    //定义点击的次数
    private int anInt1;
    private int anInt2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_co2);
        bindID();
        anInt1 = 0;
        anInt2 = 0;

        //封装获取开关状态的方法
        getStatusByOkhttp();
    }
//获取开关状态
    private void getStatusByOkhttp() {
        OkHttp.sendOkHttpRequest("getContorllerStatus", new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Toast.makeText(CO2Activity.this, "访问失败", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
            //解析数据
                String s = response.body().string();
                try {
                    JSONObject object = new JSONObject(s);
                    String WaterPump = object.getString("WaterPump");
                    String Blower = object.getString("Blower");
                    String Roadlamp = object.getString("Roadlamp");
                    String Buzzer = object.getString("Buzzer");
                    anInt1 = Integer.parseInt(Blower);
                    anInt2 = Integer.parseInt(Buzzer);
                    //创建一个子线程来判断标识位
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            panduan();
                        }
                    });
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });

    }

    private void bindID() {
        image1Btn = findViewById(R.id.activity_co2_image1);
        image2Btn = findViewById(R.id.activity_co2_image2);
        image1Btn.setOnClickListener(this);
        image2Btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.activity_co2_image1:
                anInt1++;
                panduan();
                open("Blower", anInt1 % 2);
                break;
            case R.id.activity_co2_image2:
                anInt2++;
                panduan();
                open("Buzzer", anInt2 % 2);
                break;
        }

    }
//根据点击的次数,来判断使用开的图片还是关的图片
    public void panduan() {
        if (anInt1 % 2 == 0) {
            image1Btn.setBackgroundResource(R.mipmap.dakaifengshan);
        } else {
            image1Btn.setBackgroundResource(R.mipmap.dakaifengshan2);
        }
        if (anInt2 % 2 == 0) {
            image2Btn.setBackgroundResource(R.mipmap.dakaibaojing);
        } else {
            image2Btn.setBackgroundResource(R.mipmap.dakaibaojing2);
        }
    }
//对开关进行控制:可以开、可以关
    public void open(String string, int a) {
        OkHttp.postJSONByOkhttp("control",string,a, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

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

            }
        });
    }
}

三、小知识点

将图片变成圆形
1、在build.gradle中导入包compile 'com.makeramen:roundedimageview:2.2.1'
2、然后在布局文件中写入以下代码<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/agriculture_image"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="10dp"
android:src="@mipmap/co2"
app:riv_oval="true" //必写,设置为圆/>

  1. 图片的滑动(viewpager +fragment)
  2. 具体使用请看我之前的博客(https://blog.csdn.net/xc8899/article/details/79460142);

智能农业控制系统

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

Android应用源码之智能农业

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

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

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

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

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

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

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

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

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

物联网在农业中的应用ppt

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

智能农业项目的感悟

智能农业项目的感悟: 写智能农业项目需要智能农业App素材,接口,项目需求说明书。 准备工作: 1,把项目的xml页面做好。 2,在build.gradle中把依赖库加入android-asy...
  • lgwdbbws
  • lgwdbbws
  • 2018-04-15 21:28:05
  • 37

智能农业app(打开风扇)

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

【AI-CPS OS】让人工智能成为为现代农业的智能“农业大脑”

让人工智能成为为现代农业的智能大脑,即“农业大脑”。 “农业大脑”平台是基于农业生产、生活和生态的全产业链传感矩阵的人工智能决策体系,将为农资、种养殖、加工制造、农产品零售和农业金融、保...
  • np4rHI455vg29y2
  • np4rHI455vg29y2
  • 2017-11-01 00:00:00
  • 301
收藏助手
不良信息举报
您举报文章:智能农业解析
举报原因:
原因补充:

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