有人真的可以在现实世界的应用程序中交换NDEF消息吗?

时间:2015-04-20 10:24:10

标签: android nfc nfc-p2p android-beam

我实施了一款基于Android Beaming在两台设备之间提供互动的应用。

在我目前的实现中,发射功能无法使用。当两个设备彼此接触并且其中一个设备准备好发射时,屏幕显示"触摸光束" (或类似的东西,我将设备设置为意大利语)出现(在两者上,这很奇怪)。当我点击"触摸光束" 99.9%的时间,Android要求我将设备移近,但它们实际上是相互接触的(手机的背面相互接触)。

这两款产品是Nexus 9(Android 5,最新版)和LG G2(Android 4.4版)。从LG G2到Nexus的通信不那么烦人,让我们说它有一个“失败”。率约为80%。

这是我用于在Activity中进行发送的裸代码:

...
nfcAdapter.setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback() {
        @Override
        public NdefMessage createNdefMessage(NfcEvent event) {
            if(DEBUG) Log.d(TAG, "push message callback - message created");
            return createApprovalRequestNDEFmsg();
        }
    }, this);


nfcAdapter.setOnNdefPushCompleteCallback(new NfcAdapter.OnNdefPushCompleteCallback() {
        @Override
        public void onNdefPushComplete(NfcEvent event) {
            if(DEBUG) Log.d(TAG, "push complete");
            waitForClientMessage();
        }
...


protected void waitForClientMessage() {
    Log.d(TAG, "Waiting for the reply message from the client.");
    nfcAdapter.setNdefPushMessageCallback(null, this);
    nfcAdapter.enableForegroundDispatch(this, nfcPendingIntent, readTagFilters, null);
}
    }, this);

NDEF消息大小约为100字节。在waitForClientMessage方法中,活动(在Nexus上运行)设置PendingIntent,用于从客户端(在LG G2上运行)接收NFC推送消息。

在发射成功的0.1%情况下,操作系统会创建接收电话上的正确活动。正如我所说,返回消息(来自LG G2 - > Nexus)通常更容易接收。

您对此Android Beaming的体验如何?您是否必须实现一些特殊功能才能在两个设备之间进行模糊的交互?

可能我需要添加更多信息,但我不知道哪一个,因为一切都在概念上很简单,API非常有限。

0 个答案:

没有答案