Summary of codes and ideas used in smart agriculture

1. Summary ideas:

这次做的智能农业的项目代码难度倒不是很难,但是关于智能农业这个项目中运用了好多编程思想,这是此次想要总结的;
1.首先创建好开始界面,输入服务器的IP地址跳转到操作界面;
2.在操做界面请求服务器端的数据并在获取数据期间加载不可取消进度条,使okHttpClienth或者AsyncHttpClient请求数据完成后显示数据;
    像这样:

3.点击操作界中各个数据选项,跳转到具体设施操作界面,加载界面时获取服务器中各个设施状态,判断设施状态显示界面中按钮状态,这样哪怕退出界面后,在进入界面按钮也会更新状态。
(举例:比如风扇关闭时,显示的就是打开风扇这个图片按钮)如下:

4。点击按钮,发送json数据给服务器控制设备的开关。这里按钮状态需要与打开关闭设备状态一起改变,所以需要设置标识位来改变按钮状态。

2. Use of global variables and public classes

在智能农业中,其代码难度只能说是一般般,但是代码的的重复使用确实很多,所以使用公共类和全局变量可以有效的减少工作量。
首先使用全局变量,有效的减少了每个界面之间的传值,全局变量只要一处改变,其他地方调用时就会收到改变的值比如开始输入的IP地址就是使用全局变量,而访问服务器处则直接调用全局变量:

Define global static variables on input:

 public static String string;

 private void modify() {
        final EditText editText = new EditText(this);
        android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);
        builder.setTitle("欢迎您,请先设置服务器IP");
        builder.setView(editText);
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                string=editText.getText().toString();
                Intent intent = new Intent(StartActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
        builder.show();
    }

Call the global static variable StartActivity.string directly:

 private static String getaddress(String url) {
              return HTTP+ StartActivity.string+HTTP2+url;
    }
其次项目中需要多次进行请求数据,所以我们将请求数据写在一个公共类中,在使用时直接调用
public class OkHttp {
    private static final String HTTP="http://";
    private static final String HTTP2= ":8890/type/jason/action/";
    private static  OkHttpClient okHttpClient=new OkHttpClient();
    public static final MediaType Json=MediaType.parse("application/json;charset=UTF-8");

    public static void get(String url, Callback callback){
        // 创建一个request对象
        Request request = new Request.Builder().url(getaddress(url)).build();
        Call call= okHttpClient.newCall(request);
        call.enqueue(callback);
    }

    public static void post(String url,String json,int number, Callback callback){
        try {
            JSONObject jsonObject=new JSONObject();
            jsonObject.put(json,number);
            RequestBody requestBody=RequestBody.create(Json,jsonObject.toString());
            Request request = new Request.Builder().url(getaddress(url)).post(requestBody).build();
            okHttpClient.newCall(request).enqueue(callback);
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }

    private static String getaddress(String url) {
        Log.e("000000000",  HTTP+ StartActivity.string+HTTP2+url);
        return HTTP+ StartActivity.string+HTTP2+url;
    }
}

About web server requests

1.AsyncHttpClient的使用方法:
可以看这篇简单的博客
[关于AsyncHttpClient的使用方法](https://blog.csdn.net/nmwwbreed/article/details/79886320)
2.okHttpClienth的使用方法和与上一个的区别将会抽空写在下一个博客中。

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324819237&siteId=291194637