安卓HCE服务
我有一个HCE服务,该服务向NFC阅读器发送数据,但我想知道是否可以指定服务的启动设置.我想指定只有在应用程序运行时才能调用我的服务. 如果关闭应用程序,则不应调用服务.这是可能的还是打算始终可以称呼该服务的? 解决方案 当前您只能指定是否应考虑使用锁定屏幕仿真的HCE服务,或者仅当用户通过锁定屏幕时(请参见在这里.不可能(直接)指定仅在您的活动时使用HCE服务时使用HCE服务.应用在前景中. 使用服务作为HCE事件的目标(而不是其他NFC事件的活动)背后的整个想法是,HCE函数可以随时访问,并且不需要活动是在前景. 您可以做些什么来限制HCE服务的可用性是在应用程序共享的首选项中设置标志(请参阅此问题/a>关于为什么共享偏好是首选方法),该方法指示服务是否允许执行某些操作.然后,您可以在HCE服务中查询该标志,并决定在HCE上可以使用哪些功能. 另外,您可以禁用整个服务组件(请参阅此问题/答案),并且仅在您的同时启用服务.活动在前景: public vo
0 2024-02-18
编程技术问答社区
将信息从另一个上下文传递给HostApduService
之前没有回答,所以我将尝试以不同的方式表达这个问题.将某些数据传递给Android Service的各种方法是什么? 这是问题 - 我有一个HostApduService,该HostApduService由操作系统在每个NFC卡事务上启动.它需要权限android.permission.BIND_NFC_SERVICE,即系统权限,因此我的应用程序无法绑定到它.我不想将数据放在静止状态,所以任何写在磁盘上的东西都是不做的.我想到了一些可能的解决方案,但它们要么混乱或不安全: 将数据放入我们应用程序的共享流程中.这提出了一个问题. 向Service广播信息. HostApduService运行在卡交易期间,因此我无法可靠地时间在广播开始之前到达服务. 将我想传递到某个地方的static字段中的信息.这很混乱,可能会引起并发问题,但我目前正在使用. 还有其他想法吗?预先感谢. 解决方案 我认为这个问题归结为另一个问题: 您将如何存储(持久)数据在界限中?
0 2024-02-18
编程技术问答社区
我们能否在低于Android Kit-Kat 4.4.x的手机上下载使用HCE的支付应用程序?
我从官方的Android网站 https://developer.android.com/关于/versions/kitkat.html 说" android 4.4通过主机卡仿真(HCE)引入了新的平台支持,用于付款,... "我们不能在低于Android Kit-Kat 4.4.x的设备中使用HCE. ,但我想问我们是否可以下载使用/包含HCE及其相关类的Android应用程序,其版本低于 Android Kit-kat 4.4. x ? 我的项目清单文件具有android:minSdkVersion="14"和android:targetSdkVersion="21",但是我项目清单使用的HCE SDK具有android:minSdkVersion="19"和android:targetSdkVersion="21".那么我的项目实际上是否设置为14或19? 解决方案 i 可以下载使用HCE功能的应用程序吗? 是的,如果您的应用程序指定android:mi
0 2024-02-16
编程技术问答社区
带有封闭式读卡器应用的NFC卡模拟
我在两个Android设备上有两个应用程序,类似于NFC的样本的CardMemulation和CardReader. 我想从一个Android设备上运行的主机卡仿真应用程序发送数据到在第二个Android设备上运行的读取器应用程序.当两个应用都在前景中打开时,这起作用. 但是,如果我关闭了读者应用程序,我将无法再向它发送数据.取而代之的是,当两个手机将两部手机固定在一起时,它们会激活光束传输.但是,我想让读取器手机在两个手机结合在一起时自动启动读取器应用. 所以问题是: 我可以从HCE应用程序发送数据,以便读者在设备彼此接近时会收到TECH_DISCOVERED的意图吗? (我们不希望额外的接受束模式.) 如果不可能,HostApduService可以发送数据,以便读者接收NDEF_DISCOVERED意图? 解决方案 不幸的是,这是不可能的.由于Android NFC堆栈的其他NFC设备(点对点模式和NFC标签)的进行轮询的方式,因此无法通过基于主
2 2024-02-15
编程技术问答社区
我怎样才能从HostApduService向一个活动发送消息?
我想轻松地将字符串传递给活动.需要像回调之类的东西,因为当必须通过字符串时,活动必须做某事. public class MyHostApduService extends HostApduService { @Override public byte[] processCommandApdu(byte[] apdu, Bundle extras) { if (selectAidApdu(apdu)) { Log.i("HCEDEMO", "Application selected"); return getWelcomeMessage(); } else { if (exchangeDataApdu(apdu)) { Log.i("HCEDEMO", "Data exchanged");
0 2024-02-12
编程技术问答社区
NFC主机卡仿真(HCE)
实际上,我正在尝试使用我的Android智能手机(4.4)模拟NFC卡,并将此信息发送给我的NFC Reader Witch已连接到我的Java应用程序.目的是捕获独特的ID,但我的NFC阅读器不支持点对点. 所以在 https://developer.android.com/指南/主题/连接/nfc/hce.html 不起作用. 感谢您的帮助 解决方案 点对点模式和Android HCE是两种不同的事情.为了使用Android HCE访问设备,您的读者只需要支持非接触式智能卡(即ISO 14443-4 + ISO 7816-4).如果您的读者使用Java SmartCardio API连接到Java应用程序. 关于唯一标识符:使用Android HCE,ISO 14443协议的反碰撞序列期间使用的序列号(例如UID,pupi)是随机的( 通常是每个协议的新值激活).因此,在Android HCE上获得唯一标识符的唯一方法是在您的HCE应用程序中定义此类标识符,
2 2024-02-12
编程技术问答社区
基于主机的卡片仿真是如何处理AID(应用ID)的?
我要根据Android 4.4(Kitkat)的基于主机的仿真(HCE)编写付款申请文章基于主机的卡片仿真.在清单文件中注册"付款"和"其他"类别的应用程序ID之后,其他援助在哪里使用?或者它用于我们的书面HCE服务来识别,然后在我们的书面HCE服务中执行任何定义的操作? 解决方案 或它用于我们的书面HCE服务来识别,然后执行我们书面HCE服务中定义的一切? 是这种情况.您可以在清单文件中注册援助.如果读者选择您的帮助,则NFCService,然后知道要启动哪种HCE服务并将APDU转移到. 然后,所有其他交流都将被路由到您的HCE服务,直到读者选择其他援助,或者读者停止提供RF字段.
0 2024-02-12
编程技术问答社区
2012年Nexus 7上的主机卡仿真
我正在尝试测试Kitkat中的新主机卡仿真功能,但是目前我拥有NFC的唯一Kitkat设备是2012年Nexus 7.它确实通过Google Wallet支持卡片仿真,我可以将数据发送并接收到它使用的两个主卡辅助工具. 但是,当我尝试实现自己的HostApduService以使用自己的自定义援助处理通信时,Android不会为我的服务提供任何APDU.然后,我尝试致电CardEmulation.isDefaultServiceForAid查看我的服务是否应该处理我的自定义辅助工具.当我在代码中加入CardEmulation类时,应用程序崩溃了. 看logcat,有一个条目说"此设备不支持卡片仿真". 2012年Nexus 7不支持这一点的原因是有原因的吗?它具有所有必要的硬件,并在使用Google Wallet时会效仿卡. Nexus 7(2012)上Google Wallet的 解决方案 使用嵌入式"安全元素"(本质上是智能卡芯片)完成的.但是,不幸的是,该Nexus
0 2024-02-12
编程技术问答社区
Android Kitkat 4.4的Java卡小程序和基于主机的卡片仿真
我想创建基于Android Kitkat 4.4的NFC支付应用程序,该应用程序现在支持NFC卡仿真模式,既不涉及安全元素又涉及安全元素. 我想让我的应用程序涉及一个安全的元素.所以,我有一个问题. Android Kitkat可以让我的应用程序访问安装到安全元素中的Java卡小程序? 解决方案 否,虽然Android HCE文档列出了使用基于安全元素的卡仿真的可能性,但在当前设备中使用安全元素的使用存在一些问题: Nexus设备具有专有的API,仅用于访问嵌入式安全元素(似乎无法访问UICC/SIM卡的安全元素API).但是,较新的Nexus设备似乎不再包括嵌入式SE.此外,只有Google(以及可能出售这些设备的移动网络运营商)才能使用权限访问SE API. (否则,您需要ROOT权限将您的应用程序证书添加到允许的应用列表中.) Nexus设备似乎根本无法启用UICC进行仿真.因此,即使您注册了户外卡仿真申请,也无法在此类设备上使用UICC. 许多其他
0 2024-02-12
编程技术问答社区
让主机卡仿真技术为支付工作服务
我一直在使用Stackoverflow已有多年了,甚至在询问它们之前,请始终找到我的问题的答案,但是今天我被困了. 当我碰巧有一个工作的POS终端(EMV芯片和引脚类型)时,我想研究主机卡仿真. 终端与最新版本的Tapp一起使用,所以我知道终端是好的,而我的N7实际上可以付款(或者至少终端做一系列好的声音发声和蓝光,而平板电脑启动Tapp的注册屏幕). 因此,我已经阅读了手册,并写了一堆线,目的是看到我的HostApduService上有东西. 它可以部分地工作,因为我可以在平板电脑的Tap&Pay设置中找到我的虚拟"卡". 但是"付款"部分不起作用:POS终端只有两个高音的爆炸,而在平板电脑上没有任何东西.我的HostApduService不称为. 我尝试了各种不同的辅助工具:真实的和愚蠢的辅助工具,短而长,但没有任何作用. 使用TAPP时,LogCat说: 11-17 14:51:47.690: D/BrcmNfcJni(3183): Routin
0 2024-02-12
编程技术问答社区
KitKat: 如何将APDUs路由至SIM卡
我想路由APDU,从NFC阅读器到SIM卡.根据 hce文档我认为我认为有可能只需使用根据路由输入(我做到的)创建一个OutshostapDuservice. 可悲的是,SIM卡似乎没有任何APDU.当SIM卡通过6A82返回的SIM卡返回(未找到文件)直接连接到我的工作站时. 在logcat中,我找到了两个有趣的信息: 每次我拍摄一个应该路由到SIM的选择命令时,我都会得到这些条目: 01-14 10:44:18.501: D/BrcmNfcJni(1009): RoutingManager::stackCallback: event=0x17 01-14 10:44:18.501: D/BrcmNfcJni(1009): RoutingManager::stackCallback: NFA_CE_DATA_EVT; h=0x302; data len=12 01-14 10:44:18.501: D/HostEmulationManager(1009): no
0 2024-02-12
编程技术问答社区
支持HCE的设备列表?
随着越来越多的设备具有Kitkat,我正在尝试编译一个支持HCE的设备列表. 有人有清单吗?随时添加评论以促进此列表. 以下是我到目前为止所拥有的: 注意: 并非所有Kitkat设备都支持HCE. 要检测HCE支持,请使用此代码段: boolean isHceSupported = getPackageManager().hasSystemFeature("android.hardware.nfc.hce"); 有些人报告说,Kitkat HCE手机在NFC设置中具有" Tap&Pay".我不知道使用" TAP&PAY"作为HCE检测方法是否有效,因为" Tap&Pay"可能意味着使用内部SE点击和付款.它不必是HCE. 带有Broadcom NFC控制器的电话将支持HCE. 带有NXP NFC控制器的电话可能/可能不支持HCE. 或使用这个Android App 检测HCE &NFC控制器类型. 支持HCE: Spr
2 2024-02-12
编程技术问答社区
基于主机的卡片仿真,具有固定的卡片ID
Android 4.4引入了基于主机的仿真(HCE).如您所知,所有NFC卡都带有固定的卡ID(NfcAdapter.EXTRA_ID). 我的办公室门访问通常检测到授权的NFC卡ID.将手机刷新到Kitkat之后,我尝试使用访问读者扫描手机.但是,每当屏幕关闭并再次打开时,我都会得到不同的卡ID. 我确实尝试保留电话屏幕,并将模拟卡ID注册到门访问系统中.它设法授予打开门的通道.但这在屏幕关闭并再次打开后将无法使用. 自Kitkat引入HCE模式以来,我一直在尝试使用手机效仿我的门访问卡. 有任何使电话模拟卡ID修复的想法? 解决方案 这是(至少与官方API一起): 在交换的第一部分中,HCE设备将呈现其UID; HCE设备应假定具有随机的UID.这意味着,在每次点击中,呈现给读者的UID将是随机生成的UID.因此,NFC读取器不应依赖HCE设备的UID作为身份验证或识别形式. (/topics/connectivity/nfc/hce.ht
0 2024-02-12
编程技术问答社区
Android : 如何改变NFC协议的优先级?
我有自己的Android应用程序(应用程序A),该应用程序读取和写入NFC标签和ISO-14443 A型标签.它在许多Android设备上都很好. 我想将ISO-14443标签的角色赋予我的nexus5,因此我在Nexus5上实现了自己的HCE(主机卡仿真)应用程序(APP B).当我在外部NFC读取器上触摸Nexus5(使用ISO 14443)时,它可以很好地工作. 但是,当我在nexus7(运行应用程序A)上触摸nexus5(app b)时,p2p(android beam)数据交换序列开始. 即使在我关闭两个设备上的Android Beam功能之后,也没有任何改变. Nexus7不显示"触摸到光束"屏幕,但P2P检测声音播放. logcat表明Nexus7尝试建立LLCP连接. 我希望该nexus7专注于检测Nexus5的ISO-14443 HCE,而不是Android Beam. 如何更改NFC检测优先级以优先于Android Beam?
0 2024-02-11
编程技术问答社区
三星Galaxy S4与CyanogenMod'的智能卡模拟(NFC)兼容吗?
我有三星Galaxy S4和SCM SDI010读卡器.我的目标是让S4效仿一张智能卡,然后可以由读取器阅读. 我尝试应用描述的PKI小程序示例在这里(安装Cyanogenmod 10.2,在S4上启动Se-emulator并在我的Linux PC上启动SE-PKI-CLIENT).但是连接机构在读者方面的" scard_w_unresponsive_card"或" scard_w_unpowered_card"异常. 有人知道S4上的NFC芯片是否得到了CyanogeMod的支持? 我需要在上述教程中未直接描述的S4上明确激活卡片吗? 最好的问候 解决方案 否,当前仅与NXP芯片组一起使用的软件卡仿真的Cyanogenmod贴片(修改仅影响LIBNFC-NXP).带有Broadcom芯片组的设备尚未(尚未支持?). 其他解决方案 不太可能在Cyanogen上找到一些软件与Broadcom芯片一起使用.早在2012年10月,当该文章发布时,很少有与NX
0 2024-02-11
编程技术问答社区
NFC-帮助在RC522和Android HCE之间交换数据
我将解释我的项目: 我的RC522和我的Arduino Uno上的一扇门. 我目前可以用Mifare Classic打开门. ,但是现在我想用我的Android智能手机打开它,这就是为什么我开发一个HCE Applet以使用选定的援助接受良好的APDU,然后我的手机将传输数据以打开门. 但是问题是: 我不知道如何使用rc522向我的arduino发送apdu命令. 目前,对于我的mifare卡,我使用 https://github.com/miguelbalboa/miguelbalboa/rfid/rfid/rfid/a >库. 我的测试代码: byte selectApdu[] = { 0x00, /* CLA */ 0xA4, /* INS */ 0x04, /* P1 */ 0x00, /* P2 */ 0x05, /* Length of AID */ 0xF2, 0x22, 0x22, 0x22,
4 2024-02-10
编程技术问答社区
不能用HCE在安卓手机和带NFC模块的Arduino之间交换数据
请,我需要任何帮助来解决我的问题. 我无法使用HCE在Android(4.4.2)电话和Arduino之间正常交换数据. 我以Android样本为例,并稍微更改以返回IMEI号码. public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) { if (Arrays.equals(SELECT_APDU, commandApdu)) { String data = ((TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); return ConcatArrays(data.getBytes(), SELECT_OK_SW); } else { return UNKNOWN_CMD_SW; } } 在Arduino侧,我的代码是:
2 2024-02-09
编程技术问答社区
HCE支持ISO/IEC 14443-3类型B?
Android的开发人员指南指出"对NFC-B的支持是可选的". 我找不到有关B HCE类型的更多信息. 因此,可以在Android设备上启用B型支持吗? 解决方案 从应用程序开发人员的角度来看,您应该(*)不在乎使用哪种基础协议.对于ISO/IEC 14443 A和类型B. ,应用程序层协议(ISO/IEC 7816-4)相同 查看现场的设备,某些设备使用A类型进行HCE,有些设备似乎使用类型B.因此,基本上是确定是否使用A类或B类型的设备制造商. Android API没有为应用程序开发人员提供影响的方法. *)我很清楚,这意味着读者方面需要注意处理这两个协议,并且当您尝试与传统基础架构集成时,这可能是有问题的.
4 2024-02-07
编程技术问答社区
用HCE模拟公交卡
我想向用户显示公共交通卡(ISODEP,nfcb)的ID,我成功地使用以下现在,我正在尝试使用以下我在以下代码中完成了一个名为MyHosApduService.java的新类: public class MyHostApduService extends HostApduService { @Override public byte[] processCommandApdu(byte[] apdu, Bundle extras) { ... } @Override public void onDeactivated(int reason) { ... } } 用以下代码在AndroidManifest.xml上声明该服务:
4 2024-02-07
编程技术问答社区