**

通过手机的NFC功能是否能够读取RFID标签

**

可以读取部分标签

RFID标签有多种类型:依据频率的不同可分为低频(LF)、高频(HF)、超高频(UHF)、微波(MW)电子标签。

1、高频卡典型工作频率为:13.56MHz ,是现在国内应用最成熟广泛的卡片,卡片的种类也非常多。

2、低频卡频率一般在135K赫兹以下,比较典型的125赫兹的ID卡应用非常广泛。这种卡片只有一个固化序列号可以被设备读出

3、超高频和微波标签其典型工作频率为:433MHz,900MHz,2.45GHz,5.8GHz,读卡距离最大可达10m以上。 此类标签典型应用包括:物流和供应管理、生产制造和装配、航空行李处理、邮件、快运包裹处理、文档追踪、门禁控制、电子门票、道路自动收费等等。此类标签技术是现在物联网不可缺少的部分。

其中,像校园卡这种高频13.56MHz的校园卡可以被手机的NFC功能读取。(但不只是13.56MHz,实测还有其他频段也有可以的)

接下来我们来剖析如何利用安卓的NFC功能和高频卡片交互吧!

最好不要尝试乱写自己的校园卡!!!读一下就算了!

安卓代码

实验环境

Android Studio开发工具
项目文件夹

代码

首先在 AndroidManifest.xml 文件中申请我们需要的权限

<!--NFC基本权限--><uses-permission android:name="android.permission.NFC" /><uses-featureandroid:name="android.hardware.nfc"android:required="true" /><!--震动权限--><uses-permission android:name="android.permission.VIBRATE" />

设计一下主界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/bt_write_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="onClick"android:text="写入NDEF格式数据" />......省略......</LinearLayout>


读取界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="请将手机贴近NFC标签"android:textColor="@android:color/darker_gray"android:textSize="20sp" /><TextViewandroid:id="@+id/rv_read"android:layout_width="match_parent"android:layout_height="wrap_content" /></RelativeLayout>

写入界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditTextandroid:id="@+id/et_data"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:onClick="onClick"android:id="@+id/bt_write_text"android:text="写入"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>

BaseNFCActivity.java

package com.ljb.nfcreadandwritedemo;import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;import utils.NFCHelper;/*** Created by ljb on 2018/8/1.*/
public class BaseNFCActivity extends AppCompatActivity {protected NFCHelper nfcHelper;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);nfcHelper = new NFCHelper(this);}@Overrideprotected void onResume() {super.onResume();//判断设备是否支持NFC功能if (nfcHelper.isSupportNFC()) {//判断设备是否开启NFC功能if (nfcHelper.isEnableNFC()) {//注册FNC监听器nfcHelper.registerNFC(this);} else {nfcHelper.showFNCSetting(this);}} else {showToast("当前设备不支持NFC功能");}}@Overrideprotected void onPause() {super.onPause();nfcHelper.unRegisterNFC(this);}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);log("Action: " + intent.getAction());}public void start(Class clazz) {startActivity(new Intent(this, clazz));}public void showToast(String content) {if (TextUtils.isEmpty(content))return;Toast.makeText(this, content, Toast.LENGTH_SHORT).show();}public void log(String content) {Log.e(getClass().getSimpleName(), content);}
}

ReadMUActivity

package com.ljb.nfcreadandwritedemo.read;import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.TextView;import com.ljb.nfcreadandwritedemo.BaseNFCActivity;
import com.ljb.nfcreadandwritedemo.R;/*** Created by ljb on 2018/8/3.*/
public class ReadMUActivity extends BaseNFCActivity {private TextView tvRead;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_read);tvRead = findViewById(R.id.rv_read);}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);String ret = nfcHelper.readNFC_MU(intent);if (ret != null) {nfcHelper.vibrate(this);tvRead.setText("内容为: " + ret);}}
}

根据上面的代码我们就可以简单的读取校园卡的卡号。

代码太多就不再一一粘贴。

完整源码请在微信公众号“修电脑的杂货店”后台回复“代码”获取!!!

对这篇内容对你有帮助,或者对本公众号内容有兴趣的同学可以加入官方QQ群详细交流探讨,互相学习共同进步,源码和具体操作流程,也会放到群里,如果有不懂得细节,群里也会有人回答。快加入我们的大家庭QQ群号:559369389 欢迎新成员的到来!

安卓手机APP读写高频RFID标签(校园卡)NDEF格式数据设计相关推荐

  1. 易安卓手机APP教程

    易安卓简介: E4A-[易安卓]是一款于 2013 年 06 月 01 日正式发布的.定位于为企业.站长.开发者.网络公司.各种手持设备等等基于安卓系统下的 APP 开发的全中文安卓编程语言,本语言的 ...

  2. 树莓派与安卓手机app的WIFI通信(局域网通信)

    参考:树莓派与安卓手机app的WIFI通信(局域网通信) 作者:图触靓 发布时间: 2020-07-29 10:18:12 网址:https://blog.csdn.net/bhbhhyg/artic ...

  3. HBuilder将项目生成安卓手机app

    HBuilder生成安卓手机app 首先我们需要安装HBuilder:该软件是中国国产的软件,纯中文的操作,不管会不会编程的小伙伴都可以卸载安装,操作简单. 下载地址:http://www.dclou ...

  4. 安卓识别exfat_如何使安卓手机能够读写移动硬盘?

    实现安卓手机能够读写移动硬盘,要从硬件和软件两个方面来实现. 硬件方面,首先手机要支持OTG,需要移动硬盘USB接口转OTG接头,连接手机. 其次手机不能给移动硬盘供电,需要有独立供电接口的,连接移动 ...

  5. 安卓app开发工具_四川智慧社区安卓手机app开发多少钱

    四川智慧社区安卓手机app开发多少钱 注册登录应用公园后,有两种APP制作模式: 1.主题模式: 应用公园平台提供了上百个配置好的APP模板,可以直接使用,把图片文字替换就可以直接使用.如下图所示: ...

  6. Jmeter:使用代理录制安卓手机APP性能测试脚本

    如何做安卓手机APP的性能测试?手机APP不像web或者接口那样可以用loadrunner或者Jmeter压测.手机APP的性能应该从两方面去考虑,首先APP本身,其次就是APP后端的接口.APP自身 ...

  7. android 发布动态功能,Gate.io发布安卓手机APP 2.6.5 beta版本,新增动态短视频功能...

    Gate.io发布安卓手机APP 2.6.5beta版本,APP内"发动态"增加短视频功能,最长视频2分钟.同时为实盘增加操作历史分页,优化动态显示,修复bug等.我们将持续为用户 ...

  8. 使用Burpsuite抓取IOS,Android(安卓)手机app数据

    前言 Burp Suite是用于Web应用安全测试.攻击Web应用程序的集成平台,它将各种安全工具无缝地融合在一起,以支持整个测试过程中,从最初的映射和应用程序的攻击面分析,到发现和利用安全漏洞. 之 ...

  9. 【项目工程】利用安卓手机NFC功能和KPC物联网仿真平台的智能花盆设计

    ​项目准备: KPC物联网仿真平台 局域网搭建 具有NFC功能的安卓手机 安卓开发环境Android Studio 项目流程图: 项目开发环节: 第一步,安卓APP开发 登录界面: 首先APP会检测手 ...

最新文章

  1. python pip换源方法
  2. 搜索引擎惩罚的五种最大原因
  3. 关于外包团队的质量管理
  4. 2013年4月计算机一级试题 答案,9月计算机一级考试试题含答案
  5. jenkins学习笔记2-在centos中安装jenkins master测试环境
  6. 建个数据中心就想发展IDC?没那么简单!
  7. 01-ArcGIS从下载到卸载那些事儿
  8. 房产中介管理系统搭建
  9. 基于java springboot医院挂号微信小程序源码(毕设)
  10. 重新定义流媒体服务器
  11. 哪个录音软件最好用?推荐几款录音软件给你
  12. DockerHub上最受欢迎的151个官方镜像,相传掌握第17个可以主宰宇宙!
  13. 新富人群的快速壮大,急需金融在线直播提供更高效和广泛的服务
  14. windows清理_Windows清理C盘的常用方法
  15. Mac 开发者设置强迫症
  16. 2023北京理工大学考研介绍
  17. 精研物理 格物致知(二)
  18. 编程世界的脚手架(Scaffolding)是啥意思
  19. 有些人比婊子更无情!
  20. WIN10右键文件夹资源管理器会卡死

热门文章

  1. 怎么查看网站的域名 如何查询网站的IP地址
  2. soul被下架,社交圈的一股清流也变了味?
  3. 5月14日国内主流平台数字藏品发售日报
  4. java数组逆序_Java 数组的排序、逆序
  5. GOP I帧和IDR帧
  6. 啤酒与尿布?挖掘商品之间的关联性分析(1):机器学习之Apriori算法
  7. 在openSUSE编译OpenFOAM
  8. 每日一题 | 数学神童的红眼睛与蓝眼睛问题
  9. 鸿蒙系统 基于安卓,鸿蒙系统(鸿蒙OS),不同于安卓,是面向未来的更广泛的系统...
  10. docker 安装redis详细说明