Android设备读写NFC标签

android使用NFC取卡片(一) 话不多说,这次主要展现的是通过nfc取非接触ic卡的卡号。主要分成3个步骤:(1)配置权限,能用nfc(2)调用NFC的主要流程(3)代码实例。 阅读详情

2016就这样静悄悄的过去了,最近也是颓废的不行,都没怎么充实自己了,每天练练车,打打游戏和麻将,书都基本没翻个几页,家里完全没有状态。2017,加油吧,为了事业和家庭,Fighting!

关于接触到NFC这东西,是我2年前导师项目中认识到的,当时自己也是刚学Android,由于项目需要,所以自己当时承担了这方面的工作,由此也开启了我Android生涯。想当初我也是翻遍了网上的所有资料,基本上没有一个是完完全全写好的,能直接拿来用的,当时能读出一个标签的id也是乐的不行,所以我当时在想,要是我弄好了,就分享下经验,顺便共享下代码。但是为什么现在才写呢,因为当时做完后也没有继续做这个了,导致这个事情也是一拖再拖,直到最近导师又需要这个,又拿出来把代码改了改,才想起以前说要记录的这事。

NFC(Near Field Communication)近场通信,属于RFID中的一种,它是一种无源、低频、近距离的通信方式。通过扫描方提供的电能,利用电磁感应原理来驱动标签与扫描方进行通信。是一种快速,且安全的通信方式。现在广泛运用于公交卡、地铁票、门禁卡、校园卡等场景。现在应用比较广泛的是MifareClassic 1K卡,属于NfcA型标签,NFC标签共有4种类型的标签,具体类型和用途不一,这里就不说了。而当时我项目中用到的就是NfcA型卡,对NfcA卡进行数据读取和写入。至于NFC标签内部数据存放格式,读写的过程以及标签扇区(sector)和块(block)的概念,也就不说了,相信你可以通过其他途径可以获取到,这里我就只介绍NFC读写的代码了。

完成后整个功能界面如下,由于主要是测试的玩,所以界面什么的就不用太在意了,功能实现就好了。

                  

整个应用分为3大功能模块:读取标签内存,将内存数据转为Ascii码,写入数据。

        后面的是sector和block是写入数据时,自己要将数据写入的扇区和块,data是要写入的数据。

首先你得拥有NFC标签,相信这个不难,校园卡,地铁票,公交卡什么的,都可以的。其次你得有读写的设备,作为Android开发者,相信你也不会专门买个读写的设备,不然就和Android联系不上了,我们要做的是开发一个简易版的NFC标签读写软件,所以你得有一个NFC读写的手机或Pad。好了,准备好了之后就可以测试玩一玩了。你也可以先从应用市场上下载NFC的应用,来测试你的设备是否支持NFC功能或者你的标签有没有问题。

1).新建Android项目,在res文件夹下新建一个xml的文件夹,里面放的是Android支持的NFC类型的配置数据。nfc_tech_filter.xml如下:

 

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
    <!-- 可以处理所有Android支持的NFC类型 -->
 <tech-list>
     <tech>android.nfc.tech.IsoDep</tech>  
        <tech>android.nfc.tech.NfcA</tech>  
        <tech>android.nfc.tech.NfcB</tech>  
        <tech>android.nfc.tech.NfcF</tech>  
        <tech>android.nfc.tech.NfcV</tech>  
        <tech>android.nfc.tech.Ndef</tech>  
        <tech>android.nfc.tech.NdefFormatable</tech>  
        <tech>android.nfc.tech.MifareUltralight</tech> 
     <tech>android.nfc.tech.MifareClassic</tech>
 </tech-list>
</resources> 

2)在AndroidManifest中进行权限声明:

 

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.nfc_test3"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />

    <uses-permission android:name="android.permission.NFC" />

    <uses-feature
        android:name="android.hardware.nfc"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/nfc"
        android:label="@string/app_name" >
        <activity
            android:name="com.example.nfc_read_write.NfcRW"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.nfc.action.TAG_DISCOVERED" >
                </action>

                <category android:name="android.intent.category.DEFAULT" >
                </category>
            </intent-filter>
            <intent-filter>
                <action android:name="android.nfc.action.TECH_DISCOVERED" />
            </intent-filter>

            <meta-data
                android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/nfc_tech_filter" />
        </activity>
    </application>

</manifest>

3)布局界面代码如下activity_nfc_main:

 

 

<ScrollView 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"
    android:background="#748694"
   >
    <LinearLayout 
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content" 
        android:orientation="vertical" 
        android:background="#A9A9A9">
    <TextView
        android:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="请将标签靠近设备背面......" 
        android:textSize="15sp"
        android:gravity="center"
        android:textColor="#0000ff"/>
   <View 
       android:layout_width="match_parent"
        android:layout_height="0.2dp"
        android:background="#000000"
       />
   <TextView
        android:id=
iOS NFC开发(标签与写标签) #一.说明 1-苹果手机从iPhone6开始装有NFC硬件,但并未对第三方应用开放。因此iPhone6及iPhone6s不能识别NFC标签,但是可以使用系统NFC功能如:刷地铁。 2-苹果从iOS11系统开始开放NFC取功能,同时要求iPhone7及以上机型。不满足要求则无法NFC标签 3-苹果在iOS13系统开放了标签写入功能,想要向标签内写入数据,需要升级系统到iOS13,同样只能写入D... 阅读详情

相关推荐

Android中的NFC操作

NFC的全称是“Near Field Communication”,意思是近场通信、与邻近的区域通信。

m0_57150356的博客 8081

Android 使用手机NFCNFC标签数据

Android 使用手机NFCNFC标签数据

Android手机nfc基础及ndef标准标签消息读写

官方API: https://developer.android.google.cn/guide/topics/connectivity/nfc/nfc 基础概念,什么是nfc? Near Field Communication (NFC)是一组短程无线技术,通常需要4cm或更少的距离来启动连接。NFC允许您在一个NFC标签和一个android设备之间,或在两个android设备之间共享少量有效数...

jakezhang1990的专栏 2082

Android实现NFC读写

一、NFC是什么? 近距离无线通讯技术,这个技术由非接触式射频识别(RFID)演变而来,由飞利浦半导体(现恩智浦半导体公司)、诺基亚和索尼共同研制开发,其基础是RFID及互连技术。近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行于20厘米距离内。其传输速度有106 Kbit/秒、212 Kbit/秒或者424 Kbit/秒三种。目前近场通信已通过成为ISO/IEC IS 18092国际标准、ECMA-340标准与ETSI TS 10

gofind 9062

Android 实现 NFC 取卡片信息

NFC(近距离无线通信 ) 是一组近距离无线技术,通常只有在距离不超过 4 厘米时才能启动连接.借助 NFC,您可以在 NFC 标签Android 设备之间或者两台 Android 设备之间共享小型负载。这里是简单的利用NFC取卡片数据的操作,具体的数据处理只是简单的处理了北京公交卡的数据,具体项目业务上需要取什么卡数据需要项目中具体去处理。卡模拟模式:支持 NFC 设备本身充当 NFC 卡。因为朋友需要个NFC卡片数据的功能,所以最近看了一下Android 系统下NFC 取卡片信息的操作。

金戈鐡馬 1万+

Android设备使用NFC技术进行标签读写

方法中,我们首先创建一个NdefMessage对象,该对象包含一个NdefRecord,其中包含我们要写入标签数据。在Android设备上,我们可以利用NFC技术与NFC标签进行交互,实现读写标签的功能。方法中,我们首先检查接收到的NDEF消息是否为空,然后遍历每个消息,获取其中的记录,并处理每个记录的数据。接着,我们检查NFC是否启用,如果没有启用,我们可以向用户显示一个消息,提示他们在系统设置中启用NFC功能。方法启用前台调度系统,以便在设备检测到NFC标签时,将标签数据传递给我们的应用程序。

ZrilKwargs的博客 367

NFC技术在Android上的实战应用:NFC READER读写程序

NFC(Near Field Communication)即近场通信技术,它是一种短距离的高频无线电技术,允许设备在几厘米内进行非接触式点对点数据传输。NFC技术的推出为移动设备用户提供了全新的交互方式,通过近场通信实现快速、安全且易于操作的数据交换。NFC(Near Field Communication)标签是一种用于短距离通信的无线射频识别技术,它允许设备之间通过非接触式的读写操作交换数据NFC标签由一个微型天线和一个芯片组成,芯片中存储了数据,并通过天线与设备进行无线信号交换。

weixin_35950531的博客 1328

实现Android平台上的NFC点对点通信实战指南

近场通信(NFC)是一种短距离的高频无线电技术,允许设备在几厘米内进行通信。NFC技术的出现,为移动设备的交互方式带来了革命性的改变,不仅简化了用户的数据交换过程,还拓展了移动支付、身份验证等多种智能应用。它的工作原理基于电磁感应,通过近场耦合实现数据的无线传输,安全性和便捷性是其显著的优势。Android NFC API的核心功能主要通过以下类和接口来实现:NfcAdapter: 这是NFC功能的主要类,用于读写NFC标签和配对设备。它提供了关于NFC状态和设备配对状态的信息。

weixin_29363791的博客 1429

Android NFC近场通信02----读写卡的准备工作

Android NFC近场通信02----读写卡的准备工作      由于公司接了一个听上去感觉比较NB的项目,给某油田做派工系统 。并由小女子负责Android客户端的开发工作~~开发时的Android设备看上去是比较高大上哈,防爆的,其实很多次同事们都想开玩笑的说试试摔地上,都防爆嘛,那肯定摔不坏的哈~~开发过程中需要用到NFC技术,所以就在网上学习并整理了一下关于Android n

毛毛虫的小哈 3233

Android NFC 标签读写Demo与历史漏洞概述

NFC 作为 Android 手机一个重要的短距特性,为了深入探索 NFC 的安全风险,本文先来记录学习下 Android NFC 的一些基础知识、玩法、标签读写开发,并简述下业界对 NFC 特性发现的相关历史漏洞情况。

道阻且长,行则将至 5208

AndroidNFC读写

参考网址:https://blog.csdn.net/sky2016_w/article/details/79026596 https://www.jianshu.com/p/61f90708bb02 1、首先在manifests里面声明NFC和添加相应的权限; <uses-feature android:name="android.hardware.nfc" ...

aidou1314的博客 1457

外部NFC API项目常见问题解决方案

外部NFC API项目常见问题解决方案 项目基础介绍 外部NFC API项目是一个开源项目,旨在帮助开发者实现与外部NFC卡器的交互。该库支持在Android设备上管理外部NFC卡器,并与内部NFC同时使用。它提供了与ACS NFC卡器通过USB进行交互的功能,同时支持标签Android设备(主卡仿真)的并行使用。项目的主要编程语言是Java。 新手常见问题及解决方案 问题一:如何集成外部...

gitblog_00818的博客 1254

5 app 实现 NFC读写标签数据 NFC标签初始化 NFC标签前台调度系统

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> var NfcAdapter; var NdefRecord; ...

精灵码农 4383

Android 2.3.3 近场通信NFC介绍

NFC(近场通信) NFC是一套短距离的无线通信,通常距离是4厘米或更短。NFC工作频率是13.56M Hz,传输速率是106kbit/s 到848kbit/s. NFC总是在一个发起者和一个被动目标之间发生。发起者发出近场无线电波,这个近场可以给被动目标供电。这些被动的目标包括不需要电源的标签,卡,也可以是有电源的设备。 与其他无线通信技术比较, 例如蓝牙和WiFi, NFC提供更低带宽和距

专注Android开发 988

安卓通讯开发——NFC

接上安卓通讯开发——蓝牙 https://blog.csdn.net/nishigesb123/article/details/90401981 NFC(Near field communication) 概述 翻译过来即“近场通讯” https://developer.android.google.cn/guide/topics/connectivity/nfc Near Fiel...

旧日灯塔 2243

android nfc中Ndef格式的读写

原文地址 检测到标签后在Activity中的处理流程 1. 在onCreate()中获取NfcAdapter对象; NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); 2.在onNewIntent()中获取Tag对象或者NdefMessage信息; 获取Tag对象: Tag tag = intent.getParcel...

hdhhd的博客 2467

浅谈NFC

NFC,即Near Field Communication,近距离无线通讯技术,是一种短距离的(通常 NFC的技术优势: 与蓝牙相比:NFC操作简单,配对迅速 与RFID相比:NFC适用范围广泛、可可写,能直接集成在手机中 与红外线相比:数据传输较快、安全性高、能耗低 与二维码相比:识别迅速、信息类型多样 将来与移动支付相结合,势必简化支付的购买流

听说android还不错。。 956
上一篇: 太用力的人跑不远
下一篇: Error:Execution failed for task ‘:app:dexDebug’. 的原因和解决办法
android_cmos
博客等级 码龄11年 176粉丝 73原创
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值