前言:

  说明两个地方

  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. 【记录】【idea】【mysql】Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.解决问题

    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property ...

  2. HTML+css基础 标签的起名 style标签 选择器的使用规则

    标签的起名: 1. 官方提供的标签名 2. 类名: 用class属性起的名字 3. Id名: 用id属性起的名字 唯一的 我们把这种起名叫选择器 class选择器 id选择器  标签选择器 style ...

  3. Vue.js 源码分析(十) 基础篇 ref属性详解

    ref 被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的 $refs 对象上.如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素:如果用在子组件上,引用就指向组件实例,例如: ...

  4. springboot+RabbitMQ 问题 RabbitListener 动态队列名称:Attribute value must be constant

    因为多机环境fanout广播模式,每台机器需要使用自己的队列接受消息 所以尝试使用以下的方案 private static final String QUEUE_NAME="foo.&quo ...

  5. 实用 PXE 配置:不断更新中...

    default menu.c32 #--------------------------------todo----------------------# 不过,实用http,nfs.cdrom等方式 ...

  6. Spring Boot 静态页面跳转

    本篇博客仅为自己提个醒:如何跳转页面而不麻烦控制器. 当我们创建 Spring Boot 项目时(勾选了 Thymeleaf 和 Web),目录结构会是如下:        其中图二是我创建了一个 h ...

  7. Linux 笔记 - 第二十四章 配置 Tomcat

    一.前言 Tomcat 是 Apache 软件基金会(Apache Software Foundation)Jakarta 项目中的核心项目,由 Apache.Sun 和其他一些公司及个人共同开发.使 ...

  8. winfrom数据导出

    /// <summary> /// 数据导出 /// </summary> /// <param name="dataGridView">< ...

  9. 【翻译】Dockerfile参考

    Dockerfile参考 来自docker官方网址:https://docs.docker.com/engine/reference/builder/ docker能够从Dockerfile中读取指令 ...

  10. Form之action提交不刷新不跳转

    <div class="file-box"> <form action="/File/fileUpLoad" id="form1&q ...