Android安卓写入WIFI热点自动连接NDEF标签

本示例使用的发卡器:Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/网址/海报-淘宝网 (taobao.com) 

 

package com.usbreadertest;

import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.reader.ourmifare;

public class NdefwifiActivity extends AppCompatActivity {
    private TextView tv;
    private EditText ctrwifiname;
    private Spinner ctrauth;
    private Spinner ctrkeyalgorithm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ndef_wifi);

        androidx.appcompat.widget.Toolbar toolbar=findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        tv = findViewById(R.id.sample_text);
        tv.setText("操作结果");

        ctrauth=findViewById(R.id.spin_Selauthtype);
        ctrauth.setSelection(7);

        ctrkeyalgorithm=findViewById(R.id.spin_Selkeytype);
        ctrkeyalgorithm.setSelection(4);

        ctrwifiname=findViewById(R.id.Edittextname);
        ctrwifiname.requestFocus();
    }

    @Override
    public void onBackPressed(){
        super.onBackPressed();
        finish();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId()==android.R.id.home){
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    public void retmain(View view)
    {
        finish();
    }

    public void writewifitag(View view)    {
        String wifinamestr=ctrwifiname.getText().toString().trim();
        if (wifinamestr.length()<1){
            tv.setText("请输入网络名称!");
            ctrwifiname.requestFocus();
            return;
        }
        byte[] wifinamebyte=wifinamestr.getBytes();
        int wifinamelen=wifinamebyte.length;

        int authtype=(int)(ctrauth.getSelectedItemId());
        int keytype=(int)(ctrkeyalgorithm.getSelectedItemId());

        EditText ctrwifikey=findViewById(R.id.Edittextkey);
        String wifikeystr=ctrwifikey.getText().toString().trim();
        byte[] wifikeybyte=wifikeystr.getBytes();
        int keylen=wifikeybyte.length;

        ourmifare.tagbufclear();  //清空数据缓冲
        byte status=ourmifare.tagbufaddwifi(wifinamebyte,wifinamelen,authtype,keytype,wifikeybyte,keylen);  //将要写的NDEF信息加入到写缓冲
        if (status==0){
            int tagtype=NdefTextActivity.CheckCardType();    //检测发卡器上的标签类型
            if(tagtype==-1){
                tv.setText("发卡器感应区未发现有效的NDEF标签!");
                return;
            }
            byte[] mypiccserial=new byte[8];
            status=NdefTextActivity.WriteTag(tagtype,mypiccserial);      //将已生成的NDEF缓冲数据写入不同的标签
            String dispinfo=NdefTextActivity.dispwritetag(status ,mypiccserial,tagtype);
            tv.setText(dispinfo);
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="3dp"
    tools:context=".NdefwifiActivity">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:background="?attr/colorPrimary"
        app:navigationIcon="@drawable/baseline_arrow_back_ios_24"
        app:titleTextColor="@color/white"
        tools:ignore="MissingConstraints"
        tools:layout_editor_absoluteY="0dp">

        <TextView
            android:id="@+id/TextViewlabelDispleft"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="返回"
            android:textColor="@color/white"
            android:textSize="16sp"
            android:gravity="center"
            android:onClick="retmain" />

        <TextView
            android:id="@+id/TextViewlabelDisp"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="NDEF_WIFI  "
            android:textColor="@color/white"
            android:textSize="16sp"
            android:gravity="center_horizontal|right|center"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/TextViewlabelDispleft"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.appcompat.widget.Toolbar>

    <TextView
        android:id="@+id/sample_text"
        android:layout_width="fill_parent"
        android:layout_height="150dp"
        android:padding="3dp"
        android:text="操作结果"
        android:textSize="12sp"
        android:background="@drawable/shape4border"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        />

    <ScrollView
        android:id="@+id/scrollViewIC"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_marginBottom="5dp"

        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/toolbar"
        app:layout_constraintBottom_toTopOf="@+id/sample_text"
        android:scrollbars="horizontal"
        >

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="3dp"       >

            <TextView
                android:id="@+id/textlablename"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="网络名称:"
                android:textSize="16sp"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <EditText
                android:id="@+id/Edittextname"
                android:layout_width="330dp"
                android:layout_height="wrap_content"
                android:textSize="16sp"
                android:gravity="left"
                android:text=""
                app:layout_constraintBottom_toBottomOf="@+id/textlablename"
                app:layout_constraintLeft_toRightOf="@+id/textlablename"
                app:layout_constraintTop_toTopOf="@+id/textlablename" />

            <TextView
                android:id="@+id/textlableauthtype"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="认证方式:"
                android:textSize="16sp"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textlablename" />

            <Spinner
                android:id="@+id/spin_Selauthtype"
                android:layout_width="330dp"
                android:layout_height="wrap_content"
                android:entries="@array/wifiauthtype"
                android:theme="@style/my_spinner_style"
                app:layout_constraintBottom_toBottomOf="@+id/textlableauthtype"
                app:layout_constraintLeft_toRightOf="@+id/textlableauthtype"
                app:layout_constraintTop_toTopOf="@+id/textlableauthtype" />

            <TextView
                android:id="@+id/textlablekeytype"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="加密算法:"
                android:textSize="16sp"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textlableauthtype" />

            <Spinner
                android:id="@+id/spin_Selkeytype"
                android:layout_width="330dp"
                android:layout_height="wrap_content"
                android:entries="@array/wifikeytype"
                android:theme="@style/my_spinner_style"
                app:layout_constraintBottom_toBottomOf="@+id/textlablekeytype"
                app:layout_constraintLeft_toRightOf="@+id/textlablekeytype"
                app:layout_constraintTop_toTopOf="@+id/textlablekeytype" />

            <TextView
                android:id="@+id/textlableahostkey"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="连接密码:"
                android:textSize="16sp"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textlablekeytype" />

            <EditText
                android:id="@+id/Edittextkey"
                android:layout_width="330dp"
                android:layout_height="wrap_content"
                android:textSize="16sp"
                android:gravity="left"
                android:text=""
                android:inputType="textPassword"
                app:layout_constraintBottom_toBottomOf="@+id/textlableahostkey"
                app:layout_constraintLeft_toRightOf="@+id/textlableahostkey"
                app:layout_constraintTop_toTopOf="@+id/textlableahostkey" />

            <Button
                android:id="@+id/butt_Writewifitag"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="10dp"
                android:onClick="writewifitag"
                android:text="将以上WIFI连接信息写入标签"
                android:textSize="14sp"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textlableahostkey" />

        </androidx.constraintlayout.widget.ConstraintLayout>

    </ScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/560619.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习系统的设计

1.混淆矩阵 混淆矩阵作用就是看一看在测试集样本集中&#xff1a; 真实值是 正例 的样本中&#xff0c;被分类为 正例 的样本数量有多少&#xff0c;这部分样本叫做真正例&#xff08;TP&#xff0c;True Positive&#xff09;&#xff0c;预测为真&#xff0c;实际为真真实值…

刷题DAY57 | LeetCode 647-回文子串 516-最长回文子序列

647 回文子串&#xff08;medium&#xff09; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c…

【结构型模式】适配器模式

一、适配器模式概述 适配器模式的定义-意图&#xff1a;将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。(对象结构模式->对象适配器/类结构模式->类适配器) 适配器模式包含三个角色&#xff1a;目标(Target)角色、适配者(Adapt…

【漏洞复现】云时空社会化商业ERP fileupload/gpy存在任意文件上传漏洞

漏洞描述 云时空社会化商业ERP fileupload/gpy存在任意文件上传漏洞 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行…

最邻近插值和线性插值

最邻近插值 在图像分割任务中&#xff1a;原图的缩放一般采用双线性插值&#xff0c;用于上采样或下采样&#xff1b;而标注图像的缩放有特定的规则&#xff0c;需使用最临近插值&#xff0c;不用于上采样或下采样。 自定义函数 这个是通过输入原始图像和一个缩放因子来对图像…

面试算法准备:树

这里写目录标题 1.树的基础1.1 首次理解1.2 深入理解1.2.1后序位置的特殊之处1.2.2 二叉树的思维指导 1.3 层序遍历1.4 二叉搜索树 BST 2.二叉树例题2.1 树的最大深度2.2 二叉树的直径2.3 二叉树的翻转2.4 填充每个节点的下一个右侧节点指针2.5 二叉树展开为链表 3 BST例题3.1 …

findImg找图工具

findImg 安装 npm install findImg -g 启动 findImg run 介绍 找出当前目录下的所有图片&#xff08;包括svg的symbol格式&#xff09;在浏览器中显示出来 源码 https://github.com/HuXin957/find-img 场景 例如前端项目中的img目录&#xff0c;大家都在往里面放图片&#xff…

9月BTE第8届广州国际生物技术大会暨展览会,全媒体聚焦下的高精尖行业盛会

政策春风助力&#xff0c;共迎大湾区生物医药行业50亿红利 今年3月“创新药”首次写入国务院政府工作报告之后&#xff0c;广州、珠海、北京多地政府纷纷同步出台了多项细化政策&#xff0c;广州最高支持额度高达50亿元&#xff0c;全链条为生物医药产业提供资金支持&#xff…

力扣:104. 二叉树的最大深度(Java,DFS,BFS)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a;1.深度优先搜索&#xff08;递归&#xff09;2.广度优先搜索&#xff08;队列&#xff09; 题目描述&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从…

排序 “壹” 之插入排序

目录 ​编辑 一、排序的概念 1、排序&#xff1a; 2、稳定性&#xff1a; 3、内部排序&#xff1a; 4、外部排序&#xff1a; 二、排序的运用 三、插入排序算法实现 3.1 基本思想 3.2 直接插入排序 3.2.1 排序过程&#xff1a; 3.2.2 代码示例&#xff1a; 3.2.3…

PMP每年考几次,费用如何?

今年的的考试分别分布在3月、6月、8月、11月&#xff0c;一般来说PMP的考试时间是3、6、9、12月&#xff0c;如果有特殊情况PMI也会及时进行调整&#xff0c;具体看他们官网的通知了。 PMP的考试费用全球是统一的&#xff0c;在国内考试报名费用是3900元&#xff0c;如果考试没…

JVM类加载基本流程及双亲委派模型

1.JVM内存区域划分 一个运行起来的Java进程就是一个JVM虚拟机&#xff0c;这就需要从操作系统中申请一片内存区域。JVM申请到内存之后&#xff0c;会把这个内存划分为几个区域&#xff0c;每个区域都有各自的作用。 一般会把内存划分为四个区域&#xff1a;方法区(也称 "…

在PostgreSQL中,如何创建一个触发器并在特定事件发生时执行自定义操作?

文章目录 解决方案示例代码1. 创建自定义函数2. 创建触发器 解释 在PostgreSQL中&#xff0c;触发器&#xff08;trigger&#xff09;是一种数据库对象&#xff0c;它能在特定的事件&#xff08;如INSERT、UPDATE或DELETE&#xff09;发生时自动执行一系列的操作。这些操作可以…

基于SSM,JSP超市进销存管理系统

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 权限划分&#xff1a;用户管理员 用户&#xff1a; 登录&#xff0c;注销&#xff0c;查看基本信息&#xff0c;修改基本信息 进货管理&#xff1a; 进货信息&#xff1a;可以新增进货&#xff0c;查询进货&#xff0…

GRAF: Generative Radiance Fields for 3D-Aware Image Synthesis

GRAF: Generative Radiance Fieldsfor 3D-Aware Image Synthesis&#xff08;基于产生辐射场的三维图像合成&#xff09; 思维导图&#xff1a;https://blog.csdn.net/weixin_53765004/article/details/137944206?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3…

突破速率界限:800G光模块的兴起

在以ChatGPT和NVIDIA DGX H200为代表的技术取得显著进步的时代&#xff0c;人工智能行业同样表现出明显地提升。除此之外&#xff0c;一项改变传统规则的创新出现了&#xff1a;800G光模块。这类优质的设备预示着数据传输和接收领域的变革性转变&#xff0c;成功引起了人们的兴…

【系统架构师】-案例考点(一)

1、软件架构设计 主要考点&#xff1a; 质量属性、软件架构风格、软件架构评估、MVC架构、面向服务的SOA架构、 DSSA、ABSD 1.1、质量属性 1、性能:指系统的响应能力&#xff0c;即要经过多长时间才能对某个事件做出响应&#xff0c;或者在某段时间内系统所能处理的事件的…

利用AQS(AbstractQueuedSynchronizer)实现一个线程同步器

目录 1. 前言 2. 什么是同步器 3. 同步器实现思路 Semaphore(信号量) 4. 代码实现 4.1. 创建互斥锁类 4.2 编写静态内部类&#xff0c;继承AQS 4.3 内部类实现AQS钩子函数 4.3 封装lock&#xff0c;unlock方法 4.4. 测试 5. 总结 本文章源码仓库&#xff1a;Conc…

FPGA - 基于自定义AXI FULL总线的PS和PL交互

前言 在FPGA - ZYNQ 基于Axi_Lite的PS和PL交互中&#xff0c;介绍了基于基于AXi_Lite的PL和PS交互&#xff0c;接下来构建基于基于Axi_Lite的PS和PL交互。 AXI_GP、AXI_HP和AXI_ACP接口 首先看一下ZYNQ SoC的系统框图&#xff0c;如下图所示。在图中&#xff0c;箭头方向代表…

Python 中整洁的并行输出

原文&#xff1a;https://bernsteinbear.com/blog/python-parallel-output/ 代码&#xff1a;https://gist.github.com/tekknolagi/4bee494a6e4483e4d849559ba53d067b Python 并行输出 使用进程和锁并行输出多个任务的状态。 注&#xff1a;以下代码在linux下可用&#xff0c…