android - 使用 zxing 生成热点或 wifi 二维码
问题描述
我如何为我的热点生成一个二维码(我有一个文件,它使用随机 ssid、密码创建热点)现在我想使用 zxing 为它创建一个二维码。身份验证 = wap/wap2。我还遇到了这个站点的一个 api,但它是用于 html 文件的 <img src="https://qrcode.tec-it.com/API/QRCode?data=WIFI%3aT%3aWPA%3bS%3assid%3bP%3apaasword%3b%3b&backcolor=%23ffffff" />
,如果可以从 java 文件中获取 ssid 和密码到这个 html 文件,那很好,很容易请分享一个 html 代码。或者我们可以使用 zxing 请帮助我修改此代码以创建 Authentication= wap/wap2 的二维码。请帮助我真的需要你的宝贵答案
package javaapplication27;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import java.nio.file.FileSystems;
import java.nio.file.Path;
public class NewClass1{
private static final String qcip = "C:\\Users\\lenovo\\Desktop\\kamal\\qrcode.png";
private static void generateQRCode(String text, int width, int height, String filePath)
throws Exception {
QRCodeWriter qcwobj = new QRCodeWriter();
BitMatrix bmobj = qcwobj.encode(text, BarcodeFormat.QR_CODE, width, height);
Path pobj = FileSystems.getDefault().getPath(filePath);
MatrixToImageWriter.writeToPath(bmobj, "PNG", pobj);
}
public static void main(String[] args) {
try {
generateQRCode("My Name Is Kamalpreet singh",1250, 1250, qcip);
} catch (Exception e) {
System.out.println("Could not generate QR Code" + e);
}
}
解决方案
如 ZXing 的Github页面所述,为了创建 WI-FI 二维码,以便其他设备可以读取该代码并自动连接到 WI-FI,您需要使用以下结构对字符串进行编码,WIFI:T:WPA;S:mynetwork;P:mypass;;
其中:
- T:WPA是在这种情况下设置为 WPA 的身份验证类型;
- S:mynetwork是网络 SSID,在这种情况下设置为 mynetwork;
- P:mypass是网络密码,在这种情况下设置为 mypass;
例如,假设您要为具有以下特征的网络生成 QR 码:
- SSID:我的家庭网络
- 身份验证类型:WPA
- 密码:ThisIsMyTopSecretPassword
为此,您可以使用以下代码:
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
public static void main( String[] args ) throws WriterException, IOException {
QRCodeWriter writer = new QRCodeWriter();
BitMatrix bitMatrix = writer.encode("WIFI:T:WPA;S:My Home Network;P:ThisIsMyTopSecretPassword;;", BarcodeFormat.QR_CODE, 1920, 1080);
Path path = FileSystems.getDefault().getPath("C:/Users/user/Desktop/image.png");
MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
}
这将为前面提到的网络生成宽度为 1920 像素、高度为 1080 像素的二维码,并将该二维码作为 PNG 格式的图像存储在用户“用户”的桌面中。
虽然来晚了,但希望对以后的读者有帮助。
推荐阅读
- php - php 不断返回黑钻问号
- python - 如何在 Django 中使用 mysql 数据库数据到 FusionCharts
- javascript - 具有对象数组的深度展平嵌套数组
- android - 在用户触摸时关闭 FAB 子菜单
- sql-server - 如果我们需要 DAG 连接到 sql 服务器,要在气流环境的 docker 映像中添加什么?连接的代码是什么?
- python - 在 Colaboratory 中从 Google Drive 加载数据时遇到问题
- apache-flink - Apache flink - 早期触发窗口实现问题 - 收到重复的元素
- javascript - 每次呈现页面或视图时,Javascript 将数据保存到会话存储
- c# - 从数组脚本引用游戏对象时如何修复空引用?
- linux - win 10 上 Debian 子系统中的 VLC Pulse 音频错误