简单谈谈NFC(转载自-tlex/pku_android)
NFC是Near Field Communication缩写,又称近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在十厘米内)交换数据。这个技术由免接触式射频识别(RFID)演变而来,并向下兼容RFID,最早由Sony和Philips各自开发成功,主要用于手机等手持设备中提供M2M(Machine to Machine)的通信。由于近场通讯具有天然的安全性,因此,NFC技术被认为在手机支付等领域具有很大的应用前景。由飞利浦公司和索尼公司共同开发的NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC 和智能控件工具间进行近距离无线通信。NFC 提供了一种简单、触控式的解决方案,可以让消费者简单直观地交换信息、访问内容与服务。
目前,NFC Forum在全球拥有数百个成员,包括:SONY、 Phlips、LG、摩托罗拉、NXP、NEC、三星、atoam、Intel、其中中国成员有OPPO、中国移动、华为、中兴、上海同耀和台湾正隆等公司。
而对于NFC手机来说,相比普通智能手机基本可以实现以下几个功能:
1、移动支付:例如在商场、超市、饭店等地方购物结账时,刷一下手机,结账走人
2、门禁通过:例如小区门禁,如果我们手机中存有相应的验证码,进门时刷一下,OK
3、数据传输:将两台支持NFC功能的手机,背对背贴好,通过Android Beam即可完成照片、音乐等数据的传输。
4、浏览信息:将手机靠近带有NFC功能的公共设施上,即可浏览交通、演出、天气等信息。
5、智能标签:可以通过标签来预设置相关的应用然后手机贴近标签后实现一些预设的功能,例如进入某些大学的图书馆,门口可能会有一个智能标签,带有NFC手机贴近后,就会自动切换到静音模式,或者在会议室门口,刷一下标签,即可开启录音机应用。
6、读取感应卡信息:例如银行卡电子现金余额及消费记录、公家卡余额及消费记录等等。
7、移动支付:例如在商场、超市、饭店等地方购物结账时,刷一下手机,结账走人
8、门禁通过:例如小区门禁,如果我们手机中存有相应的验证码,进门时刷一下,OK
9、数据传输:将两台支持NFC功能的手机,背对背贴好,通过Android Beam即可完成照片、音乐等数据的传输。
10、浏览信息:将手机靠近带有NFC功能的公共设施上,即可浏览交通、演出、天气等信息。
11、智能标签:可以通过标签来预设置相关的应用然后手机贴近标签后实现一些预设的功能,例如进入某些大学的图书馆,门口可能会有一个智能标签,带有NFC手机贴近后,就会自动切换到静音模式,或者在会议室门口,刷一下标签,即可开启录音机应用。
12、读取感应卡信息:例如银行卡电子现金余额及消费记录、公家卡余额及消费记录等等
--------------------------------------------------------------------蜜汁分割线--------------------------------------------------------------------------------
1.猫掌柜
这个软件有点意思,是将NFC手机变成一台标准的收款用POS机的app。可以用来收款。安全性嘛,IC卡的安全性还是可以的。关键点:可以刷信用卡。恩,其他的就不多说了。可以称之为信用卡神器了,目前还没在市面上看到同类型的产品。所以也蛮好玩的。
技术上蛮有意思的,没有任何其他的硬件,只要手机带有NFC模块即可刷卡。有兴趣的朋友可以去了解一下,这里就不多说了。
这里丢个演示视频,诸位可以看看。
http://v.youku.com/v_show/id_XMTI5OTkxMDEwNA==.html
2.中国移动和包
中国移动和包(NFC)业务是将您日常生活中使用的各种卡片应用(如银行卡、公交卡、校园/企业一卡通、会员卡等)装载在具有NFC功能的手机中,让您随时随地刷手机消费,实现手机变钱包的功能。在有银联闪付(Quick Pass)或和包(NFC)业务合作标识的现场商家进行消费时,您只需持NFC手机靠近对应业务受理终端轻轻一刷即可完成支付。
商超购物、公交/地铁、优惠折扣……中国移动和包(NFC)革新化设计,为您打造快捷、安全、时尚、品质的全新生活体验!
移动这个和包可以用NFC-SIM卡,即可以通过这个来实现手机NFC刷卡这个功能。当然,需要更换移动的NFC-SIM卡才能实现这个功能。
3.一卡通官方的e乐充公交卡
乐充公交卡是北京市政交通一卡通有限公司专为NFC手机设计的一款集话费、Q币充值,电影票优惠购买,公交卡的查询、充值和消费功能为一体的软件;当前支持全国各地支持全国各地公交卡方便快捷余额查询,支持北京公交卡的充值。
下载地址:http://www.elechong.com/download
4.翼支付
翼支付产品是中国电信的移动支付产品,您开通中国电信翼支付账户并储值后,即可在中国电信联盟商家和合作商户使用该账户通过网站、短信、语音等方式进行远程支付,办理翼支付卡(RFID-UIM卡)后还可通过手机刷POS机方式进行现场支付。
翼支付支持很多城市的NFC-SIM卡来刷公交卡,这个实用性很强,强烈推荐!
官网:https://www.bestpay.com.cn/index
5.支付宝
支付宝钱包8.0推出了令人耳目一新的NFC功能,通过开启支付宝钱包的NFC功能,您就可以将手机的NFC标签靠近公交卡、银行卡等带有芯片的IC卡上,可迅速读取卡内余额、卡的信息,还可以给卡进行充值,非常贴心实用。
官网:https://www.alipay.com/
6.招商银行手机银行NFC支付
一闪通是以手机为载体,用来替代一卡通、信用卡业务的进入IC卡。客户凭本人一卡通通过制定型号手机的手机银行客户端申请“一闪通”,申请成功后我行自动在手机的内置芯片中写入一张全新卡号的进入IC卡。客户可持写入“一闪通(借记卡)”直接使用对应一卡通的密码、账户资金、功能限额。
一闪通已经集成到“招商银行掌上银行”、“掌上生活”两个app里面。
目前,支持的手机有:
手机品牌 三星 华为 OPPO 魅族 金立
手机机型 三星Note4 荣耀6Plus N3 N1 Mini MX4 Pro E8
具体型号 N9100 PE-TL10 N5207 N5117 全部支持 GN9008
N9106W E100-TL10 N5209
7.云飞NFC
云飞NFC是一款基于NFC的,功能强大的应用程序,通过它可以进行场景的快速切换、应用启动、改变手机设置等操作,还可以读取电子标签,交通卡,银行卡等信息。
8.NFC闹钟
NFC闹钟,英文原名为NFC Alarm Clock,是一款基于NFC的闹钟应用;用户在设置闹钟是需要将关闭闹钟的信息写入到NFC标签中,起床时,用户必须用手机扫描该标签才能停止闹钟。
9.nfc标签,适用于于nfc android自带的读写功能
在Android NFC 应用中,Android手机通常是作为通信中的发起者,也就是作为各种NFC卡的读写器。Android对NFC的支持主要在 android.nfc 和android.nfc.tech 两个包中。
android.nfc 包中主要类如下:
NfcManager 可以用来管理Android设备中指出的所有NFCAdapter,但由于大部分Android设备只支持一个NFC Adapter,所以一般直接调用getDefaultAapater来获取手机中的Adapter。
NfcAdapter 相当于一个NFC适配器,类似于电脑装了网络适配器才能上网,手机装了NfcAdapter才能发起NFC通信。
NDEF: NFC Data Exchange Format,即NFC数据交换格式。
NdefMessage 和NdefRecord NDEF 为NFC forum 定义的数据格式。
Tag 代表一个被动式Tag对象,可以代表一个标签,卡片等。当Android设备检测到一个Tag时,会创建一个Tag对象,将其放在Intent对象,然后发送到相应的Activity。
android.nfc.tech 中则定义了可以对Tag进行的读写操作的类,这些类按照其使用的技术类型可以分成不同的类如:NfcA, NfcB, NfcF,以及MifareClassic 等。其中MifareClassic比较常见。
- <span style="font-size:16px;"><?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.xxx.park"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-permission android:name="android.permission.NFC" />
- <uses-sdk android:minSdkVersion="14" />
- <uses-feature android:name="android.hardware.nfc" android:required="true" />
- <application
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name" >
- <activity
- android:name="com.xxx.park.activity"
- android:label="@string/app_name"
- android:launchMode="singleTop" >
- <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.TECH_DISCOVERED" />
- </intent-filter>
- <meta-data
- android:name="android.nfc.action.TECH_DISCOVERED"
- android:resource="@xml/nfc_tech_filter" />
- </activity>
- </application>
- </manifest>
- </span>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.MifareClassic</tech> </tech-list> </resources>
- package com.softsea.cs_park;
- import android.app.Activity;
- import android.content.Intent;
- import android.nfc.NfcAdapter;
- import android.nfc.Tag;
- import android.nfc.tech.MifareClassic;
- import android.os.Bundle;
- import android.widget.TextView;
- public class activity extends Activity {
- NfcAdapter nfcAdapter;
- TextView promt;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- promt = (TextView) findViewById(R.id.promt);
- // 获取默认的NFC控制器
- nfcAdapter = NfcAdapter.getDefaultAdapter(this);
- if (nfcAdapter == null) {
- promt.setText("设备不支持NFC!");
- finish();
- return;
- }
- if (!nfcAdapter.isEnabled()) {
- promt.setText("请在系统设置中先启用NFC功能!");
- finish();
- return;
- }
- }
- @Override
- protected void onResume() {
- super.onResume();
- //得到是否检测到ACTION_TECH_DISCOVERED触发
- if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) {
- //处理该intent
- processIntent(getIntent());
- }
- }
- //字符序列转换为16进制字符串
- private String bytesToHexString(byte[] src) {
- StringBuilder stringBuilder = new StringBuilder("0x");
- if (src == null || src.length <= 0) {
- return null;
- }
- char[] buffer = new char[2];
- for (int i = 0; i < src.length; i++) {
- buffer[0] = Character.forDigit((src[i] >>> 4) & 0x0F, 16);
- buffer[1] = Character.forDigit(src[i] & 0x0F, 16);
- System.out.println(buffer);
- stringBuilder.append(buffer);
- }
- return stringBuilder.toString();
- }
- /**
- * Parses the NDEF Message from the intent and prints to the TextView
- */
- private void processIntent(Intent intent) {
- //取出封装在intent中的TAG
- Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
- for (String tech : tagFromIntent.getTechList()) {
- System.out.println(tech);
- }
- boolean auth = false;
- //读取TAG
- MifareClassic mfc = MifareClassic.get(tagFromIntent);
- try {
- String metaInfo = "";
- //Enable I/O operations to the tag from this TagTechnology object.
- mfc.connect();
- int type = mfc.getType();//获取TAG的类型
- int sectorCount = mfc.getSectorCount();//获取TAG中包含的扇区数
- String typeS = "";
- switch (type) {
- case MifareClassic.TYPE_CLASSIC:
- typeS = "TYPE_CLASSIC";
- break;
- case MifareClassic.TYPE_PLUS:
- typeS = "TYPE_PLUS";
- break;
- case MifareClassic.TYPE_PRO:
- typeS = "TYPE_PRO";
- break;
- case MifareClassic.TYPE_UNKNOWN:
- typeS = "TYPE_UNKNOWN";
- break;
- }
- metaInfo += "卡片类型:" + typeS + "\n共" + sectorCount + "个扇区\n共"
- + mfc.getBlockCount() + "个块\n存储空间: " + mfc.getSize() + "B\n";
- for (int j = 0; j < sectorCount; j++) {
- //Authenticate a sector with key A.
- auth = mfc.authenticateSectorWithKeyA(j,
- MifareClassic.KEY_DEFAULT);
- int bCount;
- int bIndex;
- if (auth) {
- metaInfo += "Sector " + j + ":验证成功\n";
- // 读取扇区中的块
- bCount = mfc.getBlockCountInSector(j);
- bIndex = mfc.sectorToBlock(j);
- for (int i = 0; i < bCount; i++) {
- byte[] data = mfc.readBlock(bIndex);
- metaInfo += "Block " + bIndex + " : "
- + bytesToHexString(data) + "\n";
- bIndex++;
- }
- } else {
- metaInfo += "Sector " + j + ":验证失败\n";
- }
- }
- promt.setText(metaInfo);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
参考联接:
http://developer.android.com/guide/topics/nfc/nfc.html
http://developer.android.com/reference/android/nfc/tech/MifareClassic.html
http://www.imobilebbs.com/wordpress/?p=2822
http://blog.csdn.net/pku_android/article/details/7430788
http://tieba.baidu.com/p/4163274922
简单谈谈NFC(转载自-tlex/pku_android)的更多相关文章
- 【转】简单谈谈python的反射机制
[转]简单谈谈python的反射机制 对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面 ...
- HTTP/2.0 简单总结(转载)
HTTP/2.0 简单总结(转载于https://linjunzhu.github.io/blog/2016/03/10/http2-zongjie/) 如何使用上 HTTP/2.0 需要浏览器的支持 ...
- 简单谈谈Python中的几种常见的数据类型
简单谈谈Python中的几种常见的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等 ...
- 简单谈谈contextlib的使用
简单谈谈contextlib的使用 写在前面 做这件事的原因: 在看书的时候,我发现了有大佬们用contextlib管理上下文,真的很牛皮,但是百度了以下,每个大佬都写了很多很全很深刻,讲道理五花八门 ...
- [转载]JSON WEB TOKEN,简单谈谈TOKEN的使用及在C#中的实现
https://www.cnblogs.com/chenwolong/p/Token.html
- 简单谈谈如何利用h5实现音频的播放
作者:白狼 出处:http://www.manks.top/article/h5_audio本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律 ...
- libevent的简单应用【转载】
本文转载自: http://blog.csdn.net/liuguanghui1988/article/details/7090531 Libevent的应用主要围绕几大事件:超时事件.信号事件.读/ ...
- 简单谈谈js中的MVC
MVC是什么? MVC是一种架构模式,它将应用抽象为3个部分:模型(数据).视图.控制器(分发器). 本文将用一个经典的例子todoList来展开(代码在最后). 一个事件发生的过程(通信单向流动): ...
- 自动化单元测试工具 EvoSuite 的简单使用 【转载】
转载:https://www.cnblogs.com/hughding/p/evosuite.html 一.EvoSuite简介 EvoSuite是由Sheffield等大学联合开发的一种开源工具,用 ...
随机推荐
- css3 同时加载两个动画
最近在做H5,遇到这样的需求(如题) 先上一部分代码: .cur .p1d1d4{ width: 3rem; margin: 2rem 5.3rem 0 0; -webkit-animat ...
- (转)CentOS下开机启动查看管理命令:chkconfig用法
CentOS下开机启动查看管理命令:chkconfig用法 CentOS下开机启动查看管理的命令是:chkconfig 1. 开机启动列表查看: chkconfig --list 说明 ...
- FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别
游戏人工智能AI中最常听见的就是这三个词拉: FSM 这个不用说拉,百度一大堆解释, 简单将就是将游戏AI行为分为一个一个的状态,状态与状态之间的过渡通过事件的触发来形成. 比如士兵的行为有“巡逻”, ...
- 关于li元素嵌套的事儿
今天阅读<锋利的jQuery>第二版2.6节案例研究部分的时候,遇到一个问题. <ul> <li class="a1"><a href=& ...
- Excel文件转plist文件出现的文件编码问题
今天在测试时遇到了需要将大量整理好的Excel数据转换为plist文件的情况.百度了一下教程,发现虽然别人也遇到过类似的情况,但是有些讲的还是不够细致.所以做如下整理. 百度到的内容中有使用Mes ...
- Windows 8.1开发环境初始化
Windows 8.1 en 64bit 以管理员权限运行CMD,命令:POWERCFG -H OFF,删除hiberfil.sys
- check用户协议
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- pycharm 2016.3 注册码
Choose Active Code 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYX ...
- 学习 opencv---(8)非线性滤波:中值滤波,双边滤波
正如我们上一篇文章中讲到的,线性滤波可以实现很多种不同的图像变换.然而非线性滤波,如中值滤波器和双边滤波器,有时可以达到更好的实现效果. 邻域算子的其他一些例子还有对 二值图像进行操作的形态学算子,用 ...
- BZOJ 1095: [ZJOI2007]Hide 捉迷藏
Description 一棵树,支持两个操作,修改一个点的颜色,问树上最远的两个白点距离. Sol 动态点分治. 动态点分治就是将每个重心连接起来,形成一个跟线段树类似的结构,当然它不是二叉的... ...