Android开发之基于OneNET平台的EDP传输协议的使用

Android开发之基于OneNET平台的EDP传输协议的使用

EDP协议是OneNET平台发布的通信协议。作为学生党,OneNET平台可以说是非常良心了,废话不多说,今天我来分享一下如何用Android通过EDP协议来查询数据流。
实现的方式是多线程。首先新创建一个类:Mythread。
然后在里面构建如下函数

`public String Getvalue1() { 
        String respon = "";
        try {
            //1创建一个URL对象,并传入目标网络地址,其中device_id是你i要查询的数据流的设备id,datastream_id是查询的数据流的名字。
            URL url = new URL("http://api.heclouds.com/devices/" +device_id + "/datastreams/"+datastream_id);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();      //2然后用openConnection方法
            conn.setConnectTimeout(15 * 1000);   //设置连接超时的时间
            conn.setRequestMethod("GET");      //3HTTP请求的方法是GET
            conn.setRequestProperty("api-key", ApiKey); //4消息头
            if (conn.getResponseCode() == 200) {  //返回码是200,网络正常
                InputStream is = conn.getInputStream();            //读取获得的输入流
                ByteArrayOutputStream os = new ByteArrayOutputStream();//字节数组输出流在内存中创建一个字节数组缓冲区,
                int len = 0;                                          //所有发送到输出流的数据保存在该字节数组缓冲区中。
                byte buffer[] = new byte[1024];
                while ((len = is.read(buffer)) != -1) {        // // 将内容读到buffer中,读到末尾为-1
                    os.write(buffer, 0, len);
                }
                is.close();//关闭
                os.close();
                JSONObject root = new JSONObject(os.toString());   //将缓冲区的内容转换为字符串,然后字符串构建JSON对象
                respon = root.getJSONObject("data").getString("current_value");
                Log.e("返回数据",""+root);
            }else {
                //返回码不是200,网络异常
            }
        }  catch (IOException | JSONException e) {
            e.printStackTrace();
        }
        return respon;
    });

这样Mythread就构建完成可以使用了。
然后是在MainActivity中的声明:

TextView tvtemp1;
Handler handler = new Handler();
Mythread myThread1 = new Mythread();

然后再构建一个Runnable函数用于启动我们刚刚构建的类。

 private Runnable task =new Runnable() {
        @Override
        public void run() {
            handler.postDelayed(this,5*50);
            tvtemp1=(TextView)findViewById(R.id.tv_temp1);
            String Temp1 = myThread1.Getvalue1();//将数据赋值给Temp1
            tvtemp1.setText(""+Temp1);//数据写入layout里面的tvtemp1
        }
    };

最后在onCreate里面添加

setContentView(R.layout.activity_main);
handler.post(task);

再去layout里面放一个对应的Textview。
这样就大功告成啦!
当然了,做任何小玩意儿都不要忘记申请权限,我们这次也要申请联网权限。
在AndroidManifest.xml中加入一句

 

希望各位初学者能成功运行程序,一起享受创造的乐趣!我也是刚刚开始学习的新手,有大佬路过欢迎指点!
下次我会分享一些EDP协议里别的命令,比如下发命令。

你可能感兴趣的:(OneNET,EDP,Android,传输协议)