有没有人能够将nexus进入卡仿真模式?
最新的Android版本似乎还不支持这个.
我经常被问及标准,NFC是基于.我在下面的文字中总结了我的知识.我希望它可以成为这些问题的答案.请随意通过发表评论和回复来纠正它 - 我会将其包含在我的文本中.
由于NFC基于RFID,因此通常将其视为RFID扩展,其形式或子集.这是正确的,因为NFC中采用了RFID的许多现有标准.物理层的NFC基础标准是NFCIP-1(ISO 18092或ECMA 340) - 它标准化了两个NFC设备之间的通信.NFCIP-1中使用的RF层直接继承自较旧的ISO标准ISO 14443(接近非接触式卡),更具体地说是该标准中定义的A型协议,以及日本JIS 6319-4(Sony FeliCa所基于的,也是由NFC Forum Type 3 Tag标准使用).其结果是NFC设备(读取器/写入器模式)与ISO 14443智能卡兼容.
NFCIP-1新定义了活动模式.在这种模式中,两个通信NFC设备必须具有用于生成RF场的自己的电源(即,两个移动设备或移动设备和NFC读取器),并且两者都可以是通信的发起者.
第二个主要标准是NFCIP-2(ISO 21481或ECMA 352),它定义了在13.56Mhz相同频率下工作的不同非接触技术之间的选择机制.它旨在由支持ISO 18092,ISO 14443通信的移动设备使用,但它们也兼容其他非接触式标准,如ISO 15693.
此外,NFC论坛还发布了其他几个标准,如NDEF(数据格式)RTD(用于各种目的的记录类型),以及NFC切换的建议,特别是NFC用于蓝牙配对的建议.Wi-Fi联盟将NFC作为配置家庭网络的四种方式之一.
NFC论坛还定义了在对等通信中在NFCIP-1之上使用的LLCP协议.在LLCP顶部的对等通信中使用的另一种协议是SNEP(简单NDEF交换协议),它允许交换类似于标签操作规范的NDEF消息.
NFC设备还可以在卡仿真模式下工作,这使他们可以假装它们是被动非接触式智能卡.这可能是最重要的模式,因为它允许移动电话充当非接触式支付卡.NFC控制器与卡仿真模式中使用的安全元件(用于存储安全应用和敏感数据的元件)互连有几个标准 - SWP(尚未标准 - 参见ETSI TS 102 613 V.9.1.0)和NFC- WI(ECMA-373).
我不是100%肯定上面的文字正确性,所以我的问题是 - 它是否正确?你有什么要补充的吗?
BR STeN
添加了NFC家伙的评论
Windows Phone 8 NFC是否支持基于Mifare Ultralight/Classic的标签?我使用此代码访问诺基亚Lumia 920上的NFC设备(代码示例取自NDEF标签阅读器 - NFC NDEF标签阅读器)
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
ProximityDevice device = ProximityDevice.GetDefault();
device.DeviceArrived += DeviceArrived;
device.DeviceDeparted += DeviceDeparted;
device.SubscribeForMessage("NDEF", MessageReceived);
}
private void DeviceArrived(ProximityDevice sender)
{
// this event occurs when I am tapping any of my tags (tried 5 different Mifare Ultralight/Classic)
}
private void DeviceDeparted(ProximityDevice sender)
{
// this event occurs when I am moving away any tag
}
private void MessageReceived(ProximityDevice sender, ProximityMessage …Run Code Online (Sandbox Code Playgroud) 从Android 5.0.0开始,您可以长时间点击WiFi连接并将该连接写入标签("写入NFC标签").您可以在此处找到该操作的源:WriteWifiConfigToNfcDialog.java.采用WiFi连接并创建NDEF有效负载的相关线路似乎在这里:
String wpsNfcConfigurationToken = mWifiManager.getWpsNfcConfigurationToken(mAccessPoint.networkId);
mWifiManager是一个实例WifiManager,但getWpsNfcConfigurationToken不是API的一部分.通过跟踪此方法,我们可以在此处找到它的提交:添加对NFC WSC令牌创建的调用,遗憾的是没有帮助.这是我的调查已经用完的地方.编辑:我发现了以下调用堆栈:
WifiServiceImpl.java 电话 mWifiStateMachine.syncGetWpsNfcConfigurationToken(netId);
WifiStateMachine.java 电话 mWifiNative.getNfcWpsConfigurationToken(netId);
WifiNative.java 终于有了方法
public String getNfcWpsConfigurationToken(int netId) {
return doStringCommand("WPS_NFC_CONFIG_TOKEN WPS " + netId);
}
然后调用
String result = doStringCommandNative(mInterfacePrefix + command);
在哪里doStringCommandNative进行系统调用(无法在任何地方找到此代码).
现在调查结束的地方.
希望有人能介入,并告诉我,创建一个方法NdefRecord是类型的application/vnd.wfa.wsc给定的SSID,密码,加密/身份验证类型.
我当然检查了application/vnd.wfa.wsc由Android创建的实际记录的字节,但手动重新创建这个字节的过程似乎可能非常不可靠,而且非常繁琐.
我正在尝试通过NFC打开即时应用程序.
我的AndroidManifest.xml中有类似下面的内容
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:scheme="http" />
<data android:host="example-refresh.herokuapp.com" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
从链接转到https://example-refresh.herokuapp.com(显然是示例链接)时,单击即时应用正确加载.当从nfc标签打开该链接时,浏览器就会加载.我已经尝试过让nfc打开一个AAR(https://developer.android.com/guide/topics/connectivity/nfc/nfc.html#aar)这会导致当应用程序没有打开游戏商店链接时安装时,安装和应用程序正确打开nfc.如果我在nfc上有其他东西,所以它显示了消歧的选项,那么我可以为浏览器选项选择即时应用程序,但我希望它默认为即时应用程序.
是否有一些我缺少一个nfc标签来加载即时应用程序?我也试过使用分支,但没有运气.
Tag myTag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Log.i("tag ID", myTag.getId().toString());
Run Code Online (Sandbox Code Playgroud)
这给了我一个像"[B @ 40521c40"这样的ID,但这个ID会改变每次读取.
任何帮助将不胜感激.
谢谢.
我前几天在朋友设备上尝试过Ultralight C,但它无法正常工作.我提出这些问题是因为我知道Mifare Classic标签不适用于Blackberry,我试图找到适用于大多数设备的标签.
我还没有尝试过Ultralight标签.
任何人在此问题上的任何信息都会有所帮助.
我是Android NFC API的新手.
目前,我有一个NFC标签,我正在制作一个Android应用程序来从中读取数据.当我的手机足够接近NFC标签时,我的简单应用就会启动.但我不知道如何读取NFC标签内的数据.该标签使用IsoDep技术.
我目前的代码:
@Override
protected void onResume (){
super.onResume();
Intent intent = getIntent();
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
IsoDep isoDep = IsoDep.get(tag);
// How to read data from IsoDep instance?
Run Code Online (Sandbox Code Playgroud)
我在互联网上搜索,我注意到人们正在发送命令以IsoDep获取NFC标签的响应,我想从响应中,我们可以解析标签中的数据,我看到人们这样做:
//What is the 'command' ? How to define the command?
//e.g.:
byte command = (byte) 0x6A
isoDep.transceive(command)
Run Code Online (Sandbox Code Playgroud)
但是,这个命令只是一个byte新手,很难理解发生了什么.我不知道如何定义读取数据的命令?有人可以向我解释一下吗?或者是否有我可以了解该命令的文件?
一般来说,我需要一些关于如何定义命令以及如何从响应中解析数据的指导,我想读取存储在Tag中的数据并在UI元素中以String格式显示数据(例如TextView).
*和***
我对这些配置没有问题(例如AnroidManifest.xml),请不要指导我如何配置:)
我想在Ubuntu 14中使用我的ACR122U非接触式智能卡读卡器.所以我安装了我需要的包和驱动程序.
最后,当我想使用阅读器时,我收到以下错误:
rc@rc-System-Product-Name:~/Desktop/itsme$ sudo nfc-list
[sudo] password for rc:
nfc-list uses libnfc 1.7.0
error libnfc.driver.acr122_usb Unable to claim USB interface (Device or resource busy)
nfc-list: ERROR: Unable to open NFC device: acr122_usb:001:020
rc@rc-System-Product-Name:~/Desktop/itsme$
rc@rc-System-Product-Name:~/Desktop/itsme$ sudo mfoc -O output.txt
error libnfc.driver.acr122_usb Unable to claim USB interface (Device or resource busy)
No NFC device found.
rc@rc-System-Product-Name:~/Desktop/itsme$
Run Code Online (Sandbox Code Playgroud)
我的读者似乎正在使用内核工具.我搜索了很多.有很多人已经有同样的问题,但我找不到他们的答案.
有没有人知道如何解决这个问题?(通过回收设备,例如)
嗨,我正在研究用于NFC支付的Android应用程序.
Android设置中有一个选项可以使用打开的应用程序而不是默认应用程序.例如,当我将默认应用程序设置为Android Pay并且在付款之前打开我的应用程序时 - 我想使用我的应用程序进行付款而不是默认应用程序.见图像波纹管.
我测试了它,但遗憾的是我用Android Pay而不是我在前台运行的应用程序付款.
我没有在文档中找到任何单词,如果我必须添加一些东西来清单,注册一些东西等.?
我service跟intent filter和meta data我的清单,并当应用程序被设置为默认的付款,这是正常工作:
<service
android:name="com.example.MyWalletHceService"
android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
</intent-filter>
<meta-data
android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice"/>
</service>
Run Code Online (Sandbox Code Playgroud)
添加apduservice xml内容:
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
android:apduServiceBanner="@drawable/ic_logo_nfc_system"
android:description="@string/nfc_service_title"
android:requireDeviceUnlock="false">
<aid-group
android:category="payment"
android:description="@string/nfc_aid_desc">
<!-- Following is a PPSE AID. You must always include this AID in order for payments to
work-->
<aid-filter android:name="@string/aid_number"/>
<!-- Following AID list is specific to the application requirements.
If your application supports the type of card that these AID …Run Code Online (Sandbox Code Playgroud)