安卓控制新大陆云平台(一)
前言
由于要参加比赛,因此必须学会用安卓来控制新大陆云平台,后期还会用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,不然都不知道问题出现在哪里
安卓控制新大陆云平台(一)相关推荐
- Android——新大陆云平台篇
新大陆云平台篇 简介 代码分析 全部代码 简介 主要功能:温湿度传感器,灯,风扇与网关ZIGBBE自组网,然后网关将数据上传至云平台,上位机程序(android)通过云平台实时获取数据 1:获取温湿度 ...
- Android——新大陆云平台配置(2)
云平台登陆代码详解 开启应用 登陆云平台 开启应用 效果如图所示: 首先位Switch控件建造一些自定义view,在drawable文件夹下建立六个文件,分别位:open_track,open_thu ...
- Android网络请求-新大陆物联网云平台请求通信工程-使用Post登录新大陆云平台获取Token-物联网竞赛-物联网数据通信
目录 一.概述 二.代码与实现 三.总结归纳 一.概述 本文将通过Android Studio原生安卓环境,通过Post网络请求与新大陆物联网云平台官网进行通信,实现获取用户Token. Need:A ...
- 新大陆云平台使用笔记
云平台API使用 1.登陆 1.1 登陆调用api 1.2返回JSON值2.查询单个项目 2.1 api 2.2查询单个项目返回JSON值 3.模糊查询项目 3.1 模糊查询项目api 3.2 模糊查 ...
- mfp 服务器控制中心,云平台管理中心
产品特点: ● 快速配置简单易用 云管理服务器可自动配置并发现网络云节点,无需复杂配置即可快速完成云平台搭建.支持Web访问,使用者通过浏览器即可轻松完成全平台的管理. ● 云显示管理 云管理服务器可 ...
- 新大陆云平台app制作(史上最简单)
笔记目录 一.App Inventor介绍 二.访问原理 三.逻辑设计 1.页面设计 2.登录 3.数据解析 4.传感器数据获取 因为比赛原因,需要做一款app来读取新大陆物联网平台的数据,官方给的资 ...
- 新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令并执行-Android网关开发-通信-数据上传云平台-JAVA原理讲解-免费云平台使用-竞赛2022国赛真题
目录 一.任务要求 二.开发环境 三.网关上线 四.数据上传与命令下发 五.JSON命令解析思路 六.总结 一.任务要求 我们将要实现的效果是:Android开发平板与Lora板进行有线串口通信,解析 ...
- 搭建云平台(一) 云平台基础服务部署
最近因课程要求,自己动手搭了一个OpenStack云平台,我将整个过程分了六篇博客.我使用了两个CentOS的虚拟机,一个作为计算节点,一个作为控制节点,整体过程比较繁杂,有心人可以细心看一看 1.修 ...
- 无线开关量收发模块、模拟量无线收发模块、无线液位采集传输控制系统、无线压力传感器、云平台远程监控、本地监控、无线西门子plc在污水处理方案中的应用
无线开关量收发模块.模拟量无线收发模块.无线液位采集传输控制系统.无线压力传感器.云平台远程监控.本地监控.无线西门子plc在污水处理方案中的应用 项目背景 污水处理是指为使污水达到排入某 ...
最新文章
- ControllerDescriptor的认识
- 利用yum下载软件包的三种方法
- 部标JT1078协议RTP包解析
- Android 事件分发机制
- Java面试面向对象三大特征,Java面试经典基础问答三
- 转:Windows Phone 7 设计简介
- C之memset、memcpy、strcpy、strncpy区别
- 上海区块链会议演讲ppt_所以您想参加会议演讲吗? 这是我的建议。
- sqlmap的二次开发
- Hbase读写数据的原理解析
- 《大数据》2022年第1期目次摘要
- 赢得 Docker 挑战最佳实践
- 【OpenCV入门教程之六】 创建Trackbar 图像对比度、亮度值调整(转)
- HeadFirstJava——6_Java API
- QSIP驱动W25Q256调试记录
- leaflet地图原理_Leaflet地图框架使用手册
- RTI_DDS自定义插件开发 9 API NDDS_Transport_Unshare_RecvResource_Fcn_rrEA
- 高中计算机试讲教案模板,15分钟试讲教案模板.doc
- Halcon 算子 Orientation_region
- 【每日新闻】雷军:5G+AIoT是下一代的超级互联网