据我所知,到目前为止,NFC手机将充当NFC阅读器,从NFC标签读取数据.现在我的问题是,我们可以改变它吗?我们是否可以将Android NFC手机视为NFC阅读器从中获取数据的标签?
谢谢你的协助.
之前我使用过ACR 122,它与Android <4.1手机完美配合.我用它来交换P2P SNEP消息......但是由于手机有4.1,当你把手机放在它上面时,读卡器会开始发出哔哔声并闪烁.有没有其他人发现这种不兼容性?有解决方案吗
我刚刚开始使用Android NFC编码,我已成功读取和编写NIFF数据到mifare经典标签.问题是当app从ndef记录中读取有效负载时,它总是在文本的开头包含字符'*en'.我认为这是语言特征,但如何获得没有该字符的真实短信?
这是截图从标签读取的应用程序,实际文本是"Hello World"
这是要阅读的代码
@Override
public void onNewIntent(Intent intent) {
Log.i("Foreground dispatch", "Discovered tag with intent: " + intent);
// mText.setText("Discovered tag NDEF " + ++mCount + " with intent: " + intent);
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMsgs != null) {
NdefMessage[] msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
NdefMessage msg = msgs[0];
try {
mText.setText(new String(msg.getRecords()[0].getPayload(), "UTF-8"));
} catch (Exception e) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试与我的Galaxy S III和具有PN532 NFC芯片的微控制器进行通信.
由于这是一个微控制器,我没有默认的LLCP库,所以我必须自己理解Android协议.
任何人都可以为我澄清一下,当我第一次将手机放到设备上时,从第一步开始会有什么数据包?假设我正确解析,我看到:
DSAP: 3F
PTYPE: 0
SSAP: 0
Run Code Online (Sandbox Code Playgroud)
并且
DSAP: 1E
PTYPE: C
SSAP: 0
Run Code Online (Sandbox Code Playgroud)
这是沿着正确的方向吗?Android尝试做什么?我原本期望在信息包之前进行连接尝试?
非常感谢任何澄清.
我很可能正在开展一个项目,现有的Desfire卡(用于访问付费服务)将被支持NFC的移动设备取代.任何人都可以向我指出任何资源,以帮助我了解a)将Desfire卡的数据复制到移动设备上所涉及的内容,以便它可以代替卡,以及b)让应用程序提供NFC数据以便呈现给读者好像是卡片.所有相关的密钥和访问权限都将由发卡机构提供(如果项目继续进行),但我很想提前了解该流程.
我还需要了解Android NFC API如何支持Desfire,因为据我所知它只能正确支持Classic.http://developer.android.com/reference/android/nfc/tech/package-summary.html
我创建了一个应用程序来检查NFC标签的有效负载,当它与应用程序匹配时切换蓝牙.
不幸的是,应用程序似乎进入了一个无限循环,它要求用户允许操作蓝牙,忽略选择并再次启动(再次询问相同的问题/活动). onActivityResult似乎没有被召唤.
我的控制台日志调用的输出是:
Payload: 'quicktags-togglebluetooth'
Bluetooth should now be on
Run Code Online (Sandbox Code Playgroud)
如果我继续在权限活动上点击"是",那么蓝牙将无限制地切换,控制台日志(logcat)如下所示:
Payload: quicktags-togglebluetooth
Bluetooth should now be on
Bluetooth should now be off
Bluetooth should now be on
Bluetooth should now be off
Bluetooth should now be on
Bluetooth should now be off
Run Code Online (Sandbox Code Playgroud)
等等.
AndroidManifest列出了正确的权限,请参阅以下内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.getquicktags.qt"
android:versionCode="1"
android:versionName="1.0" android:installLocation="auto">
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" > …Run Code Online (Sandbox Code Playgroud) 我正在尝试在两部Android手机之间实现P2P通信(其中一部将最终由独立设备取代).我已经看到Android 4支持由NFC论坛发布的SNEP,应该可以在非Android设备上使用.
我已经关注了用于NFC P2P的Google教程(http://developer.android.com/guide/topics/nfc/nfc.html#p2p),我可以从一部手机向另一部手机发送一些信息,但我有一些问题:
谢谢您的帮助 !!!
您可以在Android 文档中找到它:
为了使NDEF正常运行,其他NFC设备必须支持NFC论坛的SNEP(简单Ndef交换协议)或Android的"com.android.npp"(Ndef推送协议).这在Gingerbread级别的Android NFC设备上是可选的,但SNEP在Ice-Cream-Sandwich及其他设备上是强制性的.
您如何检查设备是否能够与其他设备通信NFC P2P?因为我们试图测试各种样本的NFC P2P代码没有成功!(NFC标签工作正常).
目前正在发生的是这两种设备都会产生熟悉的NFC嗡嗡声,但似乎没有数据交换.
FYI设备是索尼Xperia Sole/Sola和LG Optimus 4X HD,相应地更新了Android版本4.0.4和4.0.3.
另请注意:开发是针对Gingerbread版本,Android API版本10.
ISO 14443-3和ISO 7816-4 APDU之间有什么区别?我问这个是因为有些卡片使用前者与读者沟通,后者则是.我对此感到困惑,希望对此有一个很好的理解.例如,我认为Mifare Classic使用ISO 14443-3.但令我困惑的是,当我编写应用程序与Mifare classic进行通信时,我正在向它发送APDU.