Android NFC基础知识汇总

本文详细介绍了如何在Android应用中实现NFC功能,包括使用NdefFormatable、MifareUltralight和MifareClassic技术,配置AndroidManifest.xml中的权限,并在Activity中初始化和检测NFC标签类型。此外,还提到了对于Android工程师的学习资源推荐。
摘要由CSDN通过智能技术生成

android.nfc.tech.Ndef

android.nfc.tech.NdefFormatable

android.nfc.tech.MifareUltralight

android.nfc.tech.MifareClassic

在res下新建xml,然后新建一个xxx.xml的文件将上方内容copy即可。然后在AndroidManifest.xml中,添加NFC权限:

后将要做NFC功能的界面的launchMode设置为singleTop类型,然后添加meta-data内容,如下:

<meta-data

android:name=“android.nfc.action.TECH_DISCOVERED”

android:resource=“@xml/nfc_tech_filter”/>

然后在activity中oncreate和onresume中初始化NFC。

private void initNfc() {

defaultAdapter = NfcAdapter.getDefaultAdapter(this);

if (null == defaultAdapter) {

Toast.makeText(this, “当前设备不支持NFC功能”, Toast.LENGTH_SHORT).show();

return;

}

try {

if (!defaultAdapter.isEnabled()) {

Toast.makeText(this, “请打开NFC功能”, Toast.LENGTH_SHORT).show();

return;

}

} catch (Exception e) {

return;

}

mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()), 0);

}

然后重写onNewInstance方法中通过

判断当前具备NFC功能的标签属于那种格式协议的。ndef格式举例:

if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {

Log.e(“===========”, "processIntent:2 ");

Tag tag = intent.getParcelableExtra(defaultAdapter.EXTRA_TAG);

if (tag == null)

return;

String[] techList = tag.getTechList();

byte[] id = tag.getId();

tagIdStr = “ID:” + Utils.bytesToHexString(id) + “\n”;

tagIdStr += “type:” + tag.describeContents() + “\n”;

boolean is15693 = false;

for (String tecj : techList) {

tagIdStr += tecj + “\n”;

if (tecj.equals(“android.nfc.tech.NfcV”)) {

is15693 = true;

}

}

}

public class Utils {

public static String bytesToHexString(byte[] src){

StringBuilder stringBuilder = new StringBuilder(“”);

if (src == null || src.length <= 0) {

return null;

}

for (int i = 0; i < src.length; i++) {

int v = src[i] & 0xFF;

String hv = Integer.toHexString(v);

if (hv.length() < 2) {

stringBuilder.append(0);

}

stringBuilder.append(hv);

}

return stringBuilder.toString();

}

public static byte[] stringToBytes(String hexString) {

if (hexString == null || hexString.equals(“”)) {

return null;

}

hexString = hexString.toUpperCase();

int length = hexString.length() / 2;

char[] hexChars = hexString.toCharArray();

byte[] d = new byte[length];

for (int i = 0; i < length; i++) {

int pos = i * 2;

d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));

}

return d;

}

public static byte uniteBytes(byte src0, byte src1) {

byte _b0 = Byte.decode(“0x” + new String(new byte[] {src0})).byteValue();

_b0 = (byte) (_b0 << 4);

byte _b1 = Byte.decode(“0x” + new String(new byte[] { src1 })).byteValue();

byte ret = (byte) (_b0 ^ _b1);

return ret;

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

【延伸Android必备知识点】

【Android部分高级架构视频学习资源】

**Android精讲视频学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!

**任何市场都是优胜略汰适者生存,只要你技术过硬,到哪里都不存在饱和不饱和的问题,所以重要的还是提升自己。懂得多是自己的加分项 而不是必须项。门槛高了只能证明这个市场在不断成熟化!**另外一千个读者就有一千个哈姆雷特,所以以上只是自己的关键,不喜勿喷!

如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。欢迎关注会持续更新和分享的。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

里都不存在饱和不饱和的问题,所以重要的还是提升自己。懂得多是自己的加分项 而不是必须项。门槛高了只能证明这个市场在不断成熟化!**另外一千个读者就有一千个哈姆雷特,所以以上只是自己的关键,不喜勿喷!

如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。欢迎关注会持续更新和分享的。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值