前言

由于要参加比赛,因此必须学会用安卓来控制新大陆云平台,后期还会用C#控制,最后更新STM32部分代码

新大陆云平台官网:http://www.nlecloud.com/

本章主要先介绍如何写一个安卓登录云平台的程序.

使用C#封装了部分API 部分API接口
部分封装的安卓SDK会在后续给出


一、云平台介绍

首先,我们从云平台的官网来看,如下图所示

先查看部分接口,可以知道我们要先登录获取AccessToken才能进行后续的操作


我们用post请求之后,可以获得对应的AccessToken


二、安卓开发介绍

这里,我假设大家掌握的基础是基本的布局和控件使用

首先,我们先去官网下载新大陆云平台的Sdk

接着,在Android studio中import Module

接下来,对新导入的模块build

成功后如下图所示

如果导入nlecloud-sdk的包不存在,尝试以下操作
在build.gradle(Module.app)中加入如下语句


布局文件,大致如下

由于代码比较简单,这里我就不贴出布局文件的代码了

接下来就是使用安卓来登录云平台,在这里,大家如果理解网页上如何使用post请求登录云平台的话,那么这里就会变得非常简单。
首先,先看部分函数代码

我们在nlecloud-sdk中找到如下类,NewWorkBusiness,可以知道该类的包含了一个signIn登录函数,那么我们就需要使用这个类来登录新平台,该类,调用了apiService的signIn函数,我们接着往下看apiService类


看着很复杂,实际上,我们一点一点的理解,首先该类是一个api服务类,有点像第一张图的那样,该方法返回的是一个responseEntity,而ResponseEntity :标识整个http相应:状态码、头部信息、响应体内容(spring)。基本意思就是这样,大致理解就是一个请求网页的响应,分析结束


代码如下

 public class MainActivity extends AppCompatActivity {private EditText username;   //账户private EditText password;  //密码private Button login;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//登录login = (Button) findViewById(R.id.login);username = (EditText)findViewById(R.id.username);password = (EditText)findViewById(R.id.password);login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {signIn();}});}private void signIn(){String platformAddress = "http://api.nlecloud.com:80/";final String _username = username.getText().toString();// "17674738454";final String _password = password.getText().toString();//"123456";if (_username.equals("") || _password.equals("")){Toast.makeText(this,"用户名或密码不为空",Toast.LENGTH_SHORT).show();return ;}final NetWorkBusiness netWorkBusiness = new NetWorkBusiness("",platformAddress);netWorkBusiness.signIn(new SignIn(_username, _password), new Callback<BaseResponseEntity<User>>() {@Overridepublic void onResponse(@NonNull Call<BaseResponseEntity<User>> call, @NonNull Response<BaseResponseEntity<User>> response) {BaseResponseEntity<User> baseResponseEntity = response.body();  //获得响应体if (baseResponseEntity != null) {if (baseResponseEntity.getStatus() == 0) {//需要传输秘钥String accessToken = baseResponseEntity.getResultObj().getAccessToken();        //json数据返回Intent intent = new Intent(MainActivity.this, MenuActivity.class);Bundle bundle = new Bundle();bundle.putString("accessToken", accessToken);intent.putExtras(bundle);startActivity(intent);finish();} else {Toast.makeText(MainActivity.this, baseResponseEntity.getMsg(), Toast.LENGTH_SHORT).show();  //返回为空...}}}@Overridepublic void onFailure(Call<BaseResponseEntity<User>> call, Throwable t) {Toast.makeText(MainActivity.this,"登录失败 " + t.getMessage(),Toast.LENGTH_SHORT).show();}});}
}

几个问题

1 由于该应用是一个联网应用,必须请求网络权限,添加如下语句

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

2 一开始不知道怎么回事,一直登陆失败,尝试在onFailure中显示错误信息t.getMessage(),结果得到的反馈是

java.net.UnknownServiceException: CLEARTEXT communication ** not
permitted by network security polic

百度了一下,得到的问题是Android P http网络请求的问题

Google表示,为保证用户数据和设备的安全,针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo 则不受影响。

解决方法如下:

在 res 下新增一个 xml 目录,然后创建一个名为:network_security_config.xml 文件(名字自定) ,内容如下,大概意思就是允许开启http请求

<?xml version="1.0" encoding="utf-8"?>
<network-security-config><base-config cleartextTrafficPermitted="true" />
</network-security-config>

然后在APP的AndroidManifest.xml文件下的application标签增加以下属性

<application
...android:networkSecurityConfig="@xml/network_security_config"
.../>

总结

遇到问题要学会使用debug,不然都不知道问题出现在哪里

安卓控制新大陆云平台(一)相关推荐

  1. Android——新大陆云平台篇

    新大陆云平台篇 简介 代码分析 全部代码 简介 主要功能:温湿度传感器,灯,风扇与网关ZIGBBE自组网,然后网关将数据上传至云平台,上位机程序(android)通过云平台实时获取数据 1:获取温湿度 ...

  2. Android——新大陆云平台配置(2)

    云平台登陆代码详解 开启应用 登陆云平台 开启应用 效果如图所示: 首先位Switch控件建造一些自定义view,在drawable文件夹下建立六个文件,分别位:open_track,open_thu ...

  3. Android网络请求-新大陆物联网云平台请求通信工程-使用Post登录新大陆云平台获取Token-物联网竞赛-物联网数据通信

    目录 一.概述 二.代码与实现 三.总结归纳 一.概述 本文将通过Android Studio原生安卓环境,通过Post网络请求与新大陆物联网云平台官网进行通信,实现获取用户Token. Need:A ...

  4. 新大陆云平台使用笔记

    云平台API使用 1.登陆 1.1 登陆调用api 1.2返回JSON值2.查询单个项目 2.1 api 2.2查询单个项目返回JSON值 3.模糊查询项目 3.1 模糊查询项目api 3.2 模糊查 ...

  5. mfp 服务器控制中心,云平台管理中心

    产品特点: ● 快速配置简单易用 云管理服务器可自动配置并发现网络云节点,无需复杂配置即可快速完成云平台搭建.支持Web访问,使用者通过浏览器即可轻松完成全平台的管理. ● 云显示管理 云管理服务器可 ...

  6. 新大陆云平台app制作(史上最简单)

    笔记目录 一.App Inventor介绍 二.访问原理 三.逻辑设计 1.页面设计 2.登录 3.数据解析 4.传感器数据获取 因为比赛原因,需要做一款app来读取新大陆物联网平台的数据,官方给的资 ...

  7. 新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令并执行-Android网关开发-通信-数据上传云平台-JAVA原理讲解-免费云平台使用-竞赛2022国赛真题

    目录 一.任务要求 二.开发环境 三.网关上线 四.数据上传与命令下发 五.JSON命令解析思路 六.总结 一.任务要求 我们将要实现的效果是:Android开发平板与Lora板进行有线串口通信,解析 ...

  8. 搭建云平台(一) 云平台基础服务部署

    最近因课程要求,自己动手搭了一个OpenStack云平台,我将整个过程分了六篇博客.我使用了两个CentOS的虚拟机,一个作为计算节点,一个作为控制节点,整体过程比较繁杂,有心人可以细心看一看 1.修 ...

  9. 无线开关量收发模块、模拟量无线收发模块、无线液位采集传输控制系统、无线压力传感器、云平台远程监控、本地监控、无线西门子plc在污水处理方案中的应用

    ​​​​​ 无线开关量收发模块.模拟量无线收发模块.无线液位采集传输控制系统.无线压力传感器.云平台远程监控.本地监控.无线西门子plc在污水处理方案中的应用 项目背景 污水处理是指为使污水达到排入某 ...

最新文章

  1. ControllerDescriptor的认识
  2. 利用yum下载软件包的三种方法
  3. 部标JT1078协议RTP包解析
  4. Android 事件分发机制
  5. Java面试面向对象三大特征,Java面试经典基础问答三
  6. 转:Windows Phone 7 设计简介
  7. C之memset、memcpy、strcpy、strncpy区别
  8. 上海区块链会议演讲ppt_所以您想参加会议演讲吗? 这是我的建议。
  9. sqlmap的二次开发
  10. Hbase读写数据的原理解析
  11. 《大数据》2022年第1期目次摘要
  12. 赢得 Docker 挑战最佳实践
  13. 【OpenCV入门教程之六】 创建Trackbar 图像对比度、亮度值调整(转)
  14. HeadFirstJava——6_Java API
  15. QSIP驱动W25Q256调试记录
  16. leaflet地图原理_Leaflet地图框架使用手册
  17. RTI_DDS自定义插件开发 9 API NDDS_Transport_Unshare_RecvResource_Fcn_rrEA
  18. 高中计算机试讲教案模板,15分钟试讲教案模板.doc
  19. Halcon 算子 Orientation_region
  20. 【每日新闻】雷军:5G+AIoT是下一代的超级互联网

热门文章

  1. 推荐几款免费web应用防火墙(云waf)
  2. Greenplum简介
  3. linux ipsec内核,XFRM -- IPsec协议的内核实现框架
  4. 第二周嵌入式课程总结
  5. aliez歌词_求核爆神曲《aLIEz》的歌词~
  6. Win7下安装SVN服务端
  7. Vue2.0源码解析 - 知其然知其所以然之keep-alive
  8. 《硅谷产品》读书笔记
  9. 快速了解fcpx剪辑全流程,新手小白快速上手Final cut
  10. 操作系统——生产者消费者模型以及信号量