前言:

  说明两个地方

  1.点击按钮启动SmartConfig的地方

    

  2.最终跳转的地方

    

说明

  这节说明一下,如何把本人源码里面的SmartConfig程序移植到自己的工程

  我要把所有的全部拿出来讲,让大家可以方便的把每一个功能移植到自己的工程.

新建一个项目

  主页面只放一个按钮和一个文本框

  按钮是负责跳转到配网绑定页面,文本框显示配网绑定完成以后获取的Wi-Fi的MAC信息

    

新建一个新页面,配网绑定用的

名字随意

换个布局

里面放一个EditText  用来显示咱连接的路由器名称

一个EditText 用来输入密码

一个按钮用来启动SmartConfig

打开教程的APP源码

注意:不支持中文目录,把源码拷贝到英文目录下,然后用软件打开

自己新建的工程选择导入模块

选择源码里面的esptouch

添加依赖

implementation project(':esptouch')

拷贝源码里面的 ActivityBindDevices 到咱的新工程

 

这种错误是因为SDK版本不一致可能报错,自己可以重新敲

  我是用的28,大家如果用29,就会报错,29的包开始用 Androidx.XXXXX

修改布局的名字,根据控件的ID修改下

在AndroidManifest里面加上Activity

<activity
android:name=".ActivityBindDevices"
android:label="@string/app_name">
</activity>

在AndroidManifest里面加上权限

我把咱后期用到的全部加上了

    <uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.VIBRATE" />
<!--读手机内容的权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

加上动态权限申请

    String[] PermissionString={//需要提醒用户申请的权限
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.REQUEST_INSTALL_PACKAGES,
};

https://www.cnblogs.com/yangfengwu/p/11909387.html    参考这节加上

主页面加上按钮点击跳转事件

主页面加上显示跳转过来传递的MAC数据

测试

  一,下载单片机程序

  "测试APP使用SmartConfig绑定Wi-Fi 设备通过MQTT控制设备"

    

  二,调整波动开关位置,STM32和Wi-Fi通信

    

  

  三,短接STM32的PB2和Wi-Fi模块的RST引脚(为了做项目稳定可靠,请使用单片机硬件复位Wi-Fi)

    

  四.长按PB5大约4S,等待指示灯快闪,松开PB5,Wi-Fi模块进入配网状态

    

  五.输入路由器密码,点击APP的"搜索设备"按钮,开始搜索设备

    

  六.配网以后自动跳转到主页面,显示配网获取的Wi-Fi的MAC地址

    

结语

反正APP的SmartConfig也就是这样使用,后期自己想优化程序和页面自己搞吧.

  

    

ESA2GJK1DH1K基础篇: 移植源码中SmartConfig程序到自己的项目的更多相关文章

  1. ESA2GJK1DH1K基础篇: 移植官方MQTT包,让TCP实现MQTT功能(以GPRS模块为例)

    前言 这节代码将在这一节的基础上实现 拷贝第一节测试里面的MQTT文件夹到当前工程 当前工程建个MQTT的文件夹,用于存放那个MQTT文件夹里面的内容 添加文件到里面 注意:::: 实际源码拷贝位置 ...

  2. ESA2GJK1DH1K基础篇: Android实现MQTT封装源码使用说明

    说明 这一节说明一下基础篇APP源码里面MyMqttCilent.java这个文件的使用 新建工程 安装MQTT的jar包 implementation 'org.eclipse.paho:org.e ...

  3. Android系统篇之—-编写系统服务并且将其编译到系统源码中【转】

    本文转载自:http://www.wjdiankong.cn/android%E7%B3%BB%E7%BB%9F%E7%AF%87%E4%B9%8B-%E7%BC%96%E5%86%99%E7%B3% ...

  4. Jquery源码中的Javascript基础知识(三)

    这篇主要说一下在源码中jquery对象是怎样设计实现的,下面是相关代码的简化版本: (function( window, undefined ) { // code 定义变量 jQuery = fun ...

  5. Jquery源码中的Javascript基础知识(一)

    jquery源码中涉及了大量原生js中的知识和概念,文章是我在学习两者的过程中进行的整理和总结,有不对的地方欢迎大家指正. 本文使用的jq版本为2.0.3,附上压缩和未压缩版本地址: http://a ...

  6. Java中常用的七个阻塞队列第二篇DelayQueue源码介绍

    Java中常用的七个阻塞队列第二篇DelayQueue源码介绍 通过前面两篇文章,我们对队列有了了解及已经认识了常用阻塞队列中的三个了.本篇我们继续介绍剩下的几个队列. 本文主要内容:通过源码学习De ...

  7. Android 网络框架之Retrofit2使用详解及从源码中解析原理

    就目前来说Retrofit2使用的已相当的广泛,那么我们先来了解下两个问题: 1 . 什么是Retrofit? Retrofit是针对于Android/Java的.基于okHttp的.一种轻量级且安全 ...

  8. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.0,完善基础功能(源码)

    (前段时间封闭式开发完了一个项目,最近才有时间继续更新GG的后续版本,对那些关注GG的朋友来说,真的是很抱歉.)GG的前面几个版本开发了一些比较高级的功能,像视频聊天.远程桌面.文件传送.远程磁盘等, ...

  9. 访何红辉:谈谈Android源码中的设计模式

    最近Android 6.0版本的源代码开放下载,刚好分析Android源码的技术书籍<Android源码设计模式解析与实战>上市,我们邀请到它的作者何红辉,来谈谈Android源码中的设计 ...

随机推荐

  1. SWIG 3 中文手册——5. SWIG 基础知识

    目录 5 SWIG 基础知识 5.1 运行 SWIG 5.1.1 输入格式 5.1.2 SWIG 输出 5.1.3 注释 5.1.4 C 预处理器 5.1.5 SWIG 指令 5.1.6 解析限制 5 ...

  2. HTTP之URL的快捷方式

    URL快捷方式 ==================摘自<HTTP权威指南>======================= WEB客户端可以理解并使用几种URL快捷方式.相对URL是在某职 ...

  3. Android系统HAL开发实例

    1.前言 Android系统使用HAL这种设计模式,使得上层服务与底层硬件之间的耦合度降低,在文件: AOSP/hardware/libhardware/include/hardware/hardwa ...

  4. AtomicInteger例子

    AtomicInteger可以保证原子性,可见性,有序性 public class AtomicIntegerTest { private static AtomicInteger value = n ...

  5. aspx页面,后端通过Attributes.Add给textbox添加事件时,传参失效问题。

    测试一:------------------------------------------------------------------------------------------------ ...

  6. ES6环境搭配(一)

    一.Node(NodeJS.Node.js)的安装:1.下载官网下载地址:https://nodejs.org/en/ 2.安装a.Linux先将安装包解压,然后进行环境变量的配置即可b.window ...

  7. 阻止鼠标右键和F5刷新

    //禁止刷新的事件发生 document.onkeydown = function(){ if(event.keyCode==116){ event.keyCode = 0; event.cancel ...

  8. iOS应用开发应遵循的10条设计原则

    转自:http://mobile.51cto.com/design-309719.htm 1.操控便捷 iOS应用的控制设计应该具有圆润的轮廓和程式化的梯度,操作便捷. 2.结构清晰.导航方便 充分利 ...

  9. 实验吧——因缺思汀的绕过(sql with rollup)

    题目地址:http://ctf5.shiyanbar.com/web/pcat/index.php 通读源码,得知出flag的条件 1.需要post提交uname以及pwd,否则直接die了 if ( ...

  10. windows下搭建vue+webpack的开发环境

    1. 安装git其右键git bash here定位比cmd的命令行要准确,接下来的命令都是利用git bash here.2. 安装node.js一般利用vue创建项目是要搭配webpack项目构建 ...