我使用adam摇杆源代码为我的NFCTest做了一些教程.我希望能够读取和写入NFC标签,并启动应用程序.
我想开始为Android开发NFC应用程序.我最近开始使用android,我发现它是一个非常有趣的开发平台.在我出去投资购买具有内置NFC阅读器和购买标签的Android设备之前,我想了解一个人如何为他们编写代码.
我找到了Open NFC Android模拟器,它似乎是我正在寻找的.我已下载:1.Open NFC for Android 2. Open NFC核心版
在为Open NFC创建了一个avd之后,我按照说明进行操作.
现在我面临的问题是,在模拟器中,当我进入无线设置然后启用NFC时,它表示存在错误.我已经尝试将IP设置为10.0.2.2以及我从ipconfig获得的IP但无济于事.没有我能看到的日志.此外,我尝试在运行防火墙时完全禁用防火墙,以免意外阻塞.
作为旁注,我想提一下,在启动模拟器之前,我已经启动了Connection Manager.
有没有人有使用Open NFC for Android的经验,如果有人可以指出我更好的指令集我会非常感激如果有人可以建议另一个模拟器我可以通过它尝试一些示例代码并更好地了解NFC .
adb logcat的输出是
W/KeyCharacterMap( 165): No keyboard for id 0
W/KeyCharacterMap( 165): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
D/NfcSettings( 165): onPreferenceChange: Setting NFC key: nfc_cc_ip
D/NfcSettings( 165): onPreferenceChange: Setting NFC value: 10.0.2.2
D/NfcSettings( 165): onPreferenceChange: Setting System NFC NFC_CC_IP: 10.0.2.2
D/NfcSettings( 165): onPreferenceChange: Setting NFC key: nfc_hal_mode_list
D/NfcSettings( 165): onPreferenceChange: Setting NFC value: 1
D/NfcSettings( 165): onPreferenceChange: Setting NFC mPreferenceNfcHalMode: SIMULATOR:1 …Run Code Online (Sandbox Code Playgroud) 概述:我们开发了一款应用程序,允许客户使用带有固定Nexus S的NFC卡进行登记.应用程序准备好读取卡片,当点击卡片时,应用程序会读取NFC卡的唯一ID.
问题:我们遇到的挑战是,在扫描50到100个标签后,Nexus S会锁定.该应用程序继续运行,Android也是如此,但是我们的应用程序或android中的本机应用程序都不会读取标签.好像扫描仪已被禁用.我使用运行Android 2.3.6的4种不同的Nexus S设备对其进行了测试.
调试:我能找到的唯一解决方案是: - 关闭nexus,然后重新打开电源 - 禁用NFC,然后通过设置 - >无线和网络设置 - > NFC重新启用它
如果其中任何一个完成,扫描仪再次工作,应用程序继续正常工作,直到它在70次扫描后再次锁定.
知道如何解决这个错误,或解决这个问题?
更新:看起来好像这不仅仅是我们的应用程序,测试Nexus S附带的"标签"本机应用程序也有这个问题.
我有一个Android手机(nexus s,sdk v15),它将使用tag-emulation将字符串发送到以nfc-reader/writer-mode运行的开发板.我知道android没有正式支持,所以我可以通过直接访问驱动程序(?)来原生.
有没有任何人做过这样做的例子或者这样做的应用程序(最好是开源?)
我在google上发现了一些东西,通常建议不要这样做,或者人们谈论它是如何可能的或者他们如何(非常普遍地)完成它,但我找不到任何代码或精确的建议.
我不想访问安全元素或做任何需要供应商/提供商批准的智能卡.我只是想转移字符串.我也知道这可以通过p2p通过android api方法来完成,但是这对板子来说效果不好,所以我试试这个方法.
我正在尝试在手机扫描NFC标签时启动特定活动.这就是我的清单的样子:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lgandroid.ddcnfc"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.NFC"/>
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="16" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.lgandroid.ddcnfc.BluePrintActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<data android:mimeType="application/com.lgandroid.ddcnfc"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity
android:name="com.lgandroid.ddcnfc.LoginActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.lgandroid.ddcnfc.MainActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name="com.lgandroid.ddcnfc.PointDiagnosisActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name="com.lgandroid.ddcnfc.PointControlActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name="com.lgandroid.ddcnfc.SystemDiagnosisActivity"
android:label="@string/app_name" >
</activity>
<activity android:name="com.lgandroid.ddcnfc.SettingsActivity" android:label="@string/app_name"></activity>
</application>
Run Code Online (Sandbox Code Playgroud)
每当我扫描我的标签时,我的主要活动就会启动,但我希望我的BluePrintActivity能够启动.我不确定为什么会这样.这是我写入标签的代码:
private boolean writeTag(Tag tag) {
NdefRecord appRecord …Run Code Online (Sandbox Code Playgroud) 没有任何运气使用谷歌,所以我想我会问.
有没有人有经验/知道如何从Windows Phone 8设备向Android设备发送简单的字符串即"hello"?
到目前为止我们已经能够做到android - > android和android - > windows phone 8但是我们还没有找到如何做到从windows phone 8到android.
有没有人在网上看过指南或知道怎么做这样的事情?
我想的第一步是找出如何使Windows Phone 8上的应用程序实现其附近的Android NFC设备..然后它将弄清楚如何使Android手机上的应用程序接收消息.
提前致谢!
*答案*
好吧所以这里有一些答案/提示
我最终发送NFC消息作为外部类型,因为发送应用程序/ my.mimetype不断给我一个"抱歉你的手机无法记录这种类型的文件"在Windows手机上,即使消息正在通过.
@Override
public NdefMessage createNdefMessage(NfcEvent event) {
NdefMessage ndefMessage = new NdefMessage((
new NdefRecord[] {createMimeRecord("packageName:externalType",docId.getBytes())}));
return ndefMessage;
}
public NdefRecord createMimeRecord(String mimeType, byte[] payload) {
byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII"));
NdefRecord mimeRecord = new NdefRecord(NdefRecord.TNF_EXTERNAL_TYPE, mimeBytes, new byte[0], payload);
return mimeRecord;
}
Run Code Online (Sandbox Code Playgroud)
在android中你要做的就是按照SDK示例中的android示例(android-16/17-AndroidBeamDemo)进行解释,这里的解释非常彻底 - http://www.tappednfc.com/wp-content/uploads/TAPPED -NFCDeveloperGuide-Part1.pdf
但不是使用应用程序mimetype使用上面的外部类型,并在您的清单中放置以下而不是在intent过滤器中的mimetype:
<data
android:host="ext"
android:pathPrefix="/cco.drugformulary:externalType"
android:scheme="vnd.android.nfc" />
Run Code Online (Sandbox Code Playgroud)
关于从Windows手机阅读和发送消息,您可以使用接受的答案人员所做的事情,它应该可以工作但是对于类型放置cco.drugformulary:externalType从上面(当然你的项目名称).
如果您遇到任何问题,请随时问我
我目前正在为我的大学课程开发一个项目,我希望能够编辑Android的HCE功能的功能,以便在模拟卡片时设置我自己的UID.
现在,我已经下载了AOSP源代码,并构建了一个没有编辑代码的自定义映像,并将其安装到我的Nexus 7中(这包括下载并包含供应商特定的硬件驱动程序),我仍然坚持下一部分.
我实际上找不到管理Android的NFC功能的设备代码,我不确定如何去寻找a)寻找它,以及b)我应该如何编辑这段代码.
基于内核的Android中的NFC代码是什么?如果是这样,在我再次运行"make"并希望它构建之前,我将如何编辑?还是在其他地方?我注意到我下载和提取的Vendor文件夹中的文件是.ncd格式,我认为这是不可编辑的.
我能得到的任何帮助将不胜感激.
我需要在PWA中实现NFC(近场通信)(渐进式网络应用)
我测试的每个浏览器(Chrome MacOSX,Safari MacOSX,Safari iOS,Chrome for android)都不包含navigator.nfc导航器中的对象,似乎无法使用此API:https://w3c.github.io/web-nfc/#conformance.
是否可以在PWA中以任何方式使用NFC?或者我是否必须为此功能开发本机应用程序?
NFC:S型光束和Android光束有什么区别?有人可以解释Wifi-Direct /蓝牙被激活和传输数据的确切流程吗?