局域网 二维码fe分享图片 (带密码验证)

2024-06-07 20:18

本文主要是介绍局域网 二维码fe分享图片 (带密码验证),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎转载,也请保留这段申明 ,原文地址:https://mp.csdn.net/mdeditor/81051646

最近接到一个需求,需要实现一个局域网的图片二维码分享功能;具体怎么样呢,先看下面的效果图:

git 图,真的是 av 画质 !!!!
image
image

文章代码:https://github.com/LillteZheng/LanServer

由于是局域网,请使用真机,如果有两个手机更好了,连接同个局域网就可以看到;如果是只有一个手机,那就电脑上看把, html 的布局有点丑,因为主要是 适配手机,我也不擅长这一块,见怪不怪吧。

一、需求分析

  • 要实现局域网,一般就是搭建个 ServerSocket,设备连接时输出网址即可

  • 二维码分享,没啥好说,zxing .

    咦,好像就没了啊,关键是局域网这个服务器了, 搭建 Android 的局域网,自己写的话,估计调试都调到很久,github 搜了一下,主要有三个,AndServer ,国人写的,思路比较适合我们,但有时会遇到连接超时的问题,不知道是不是我网络的问题;还有 NanoHttpd 和 AndroidAsync,NanoHttpd 适合java,且调试不好调试,最后选择了 AndroidAsync,接入简单,而且接口也比较好用。(以上只是个人观点),但 AndroidAsync 关于服务器方面的资料还是比较少的,所以得看源码了,不过这里也做了一些封装,到时可以参考一下。

二、代码配置:

局域网,首先需要有网络,所以这里直接检查网络好了,需要检测 WiFi 是否能检测到,这里的 WiFi 的 IP 获取也比较简单,当检测到 WiFi 连接了,直接拿就是了:

 //wifi是否连接if (CusUtil.isWifiConnected()){//获取 ipDEVICE_IP = CusUtil.getWifiIpaddr();StringBuilder sb = new StringBuilder();sb.append("请在同个wifi下,扫描该二维码,或者浏览器中输入: \n").append("http://"+DEVICE_IP+":"+SERVER_PORT).append("\n或者输入:\n").append("http://"+DEVICE_IP+":"+SERVER_PORT+"/password");textView.setText(sb.toString());}else{textView.setText("您还未连接 wifi ");}

如果 WiFi 获取了,则开始配置数据,主要是 ip 和port,当然还有添加拦截器,图片和密码还是需要拦截的。

private void startLanServer(){mCheckRequestHandle = CheckRequestHandle.create(this,DEVICE_IP,SERVER_PORT);//配置数据,builder 模式LanServerBean bean = LanServerBean.lanBuilder().setPort(SERVER_PORT).setIpAddr(DEVICE_IP)//配置默认 html 字符串.setDefaultHtml(CusUtil.getDefaultString(DEVICE_IP,SERVER_PORT))//添加拦截,当检测 image,输出图片.registerHandler("image", ImageRequestHandle.create(this))//添加拦截,当检测 password,弹出密码验证框.registerHandler("password",mCheckRequestHandle).builder();if (mServiceBinder != null) {mServiceBinder.startLanServer(bean);}}

如果自己有新的需求,也可以继续添加拦截器,拦截器也比较简单,AndroidAsync 的 api 还是比较人性化的:

public class ImageRequestHandle implements HttpServerRequestCallback {private static final String TAG = "ImageRequestHandle";private Context mContext;private ImageRequestHandle(Context context){mContext = context;}public static ImageRequestHandle create(Context context){return new ImageRequestHandle(context);}@Overridepublic void onRequest(AsyncHttpServerRequest request, AsyncHttpServerResponse response) {try {InputStream is = mContext.getAssets().open("beauty.jpg");//输入图片response.sendStream(is,is.available());} catch (Exception e) {e.printStackTrace();}}
}

html 的获取都是在 assets 中,而一些动态的,比如 ip 和 端口,则是通过 代码重新添加,关于 html 的基础,就不解释啦,自己去撸吧:

/*** 输出验证密码的html* @return*/public static  String getCheckPasswordHtml(String ipaddr,int port,String password){StringBuilder sb = new StringBuilder();sb.append(CusUtil.getAssetsString("checkpass.html")).append("\n").append("<button class=\"button\" onclick=\"checkPassword(").append(password+",'"+"http://"+ipaddr+":"+port+"')\">确定</button>").append("\n").append(" </div>").append("\n").append(" </div>").append("\n").append(" </body>").append("\n").append(" </html>").append("\n");return sb.toString();}

三、扩展:

继续局域网分享图片已经懂了,那么像局域网传输文件,信息共享等等,都是可以搞的。比如比较火的 WiFi 传书,就是这个原理。多去折腾吧。

这篇关于局域网 二维码fe分享图片 (带密码验证)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040189

相关文章

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变