gpt4 book ai didi

android - Android 和 Linux 之间的 NFC P2P 通信入门 (libnfc)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:26 24 4
gpt4 key购买 nike

最终,我需要在 Android 设备和具有使用 libfc 的 NFC 适配器的 Linux 主机之间实现加密协议(protocol)。

我以前从未在 Android 上使用过 NFC。目前我的想法是在被动变体的对等模式下使用 NFC,例如linux 主机上的智能卡读卡器扮演发起者的角色并提供 HF 场,而智能手机是目标。

据我所知,回调 createNdefMessage 可用于响应 NFC 请求并发回回复消息。但是,我不明白如何在我的Android程序中获取请求消息。

目前——作为玩具示例——我尝试实现以下目标:linux 主机通过 NFC 发送一个随机数,android 设备抽取一个随机数并回复总和。

我有

package edu.kit.iti.crypto.nfctest1;

import android.app.Activity;
import android.content.Intent;
import android.nfc.*;
import android.os.Bundle;
import android.provider.Settings;
import java.nio.ByteBuffer;

public class MainActivity extends Activity implements NfcAdapter.CreateNdefMessageCallback {

protected NfcAdapter nfcAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
nfcAdapter = NfcAdapter.getDefaultAdapter( getApplicationContext() );
nfcAdapter.setNdefPushMessageCallback( this, this );
}

protected void onResume() {
super.onResume();
if( !nfcAdapter.isEnabled() ) {
startActivity( new Intent( Settings.ACTION_NFC_SETTINGS) );
} else if( !nfcAdapter.isNdefPushEnabled() ) {
startActivity( new Intent( Settings.ACTION_NFCSHARING_SETTINGS) );
}
}

public NdefMessage createNdefMessage( NfcEvent event ) {
int randomNumber = 42;
// How to obtain the request message here?
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.putInt( randomNumber );
NdefRecord replyRecord = NdefRecord.createExternal( "edu.kit.iti.crypto.nfctest1", "app-randomness", buffer.array() );
return new NdefMessage( replyRecord );
}
}

我最基本的问题是底部方法中的注释:How do I get the request message?

最佳答案

根本没有请求消息。 Android Beam(这是在 Android 上使用 NFC 点对点模式的唯一方法)基于 SNEP(over LLCP)。调用方法 createNdefMessage() 来构建由您设备上的 SNEP 客户端提供的 NDEF 消息。将两个设备放在一起(并在点击 Beam UI 之后),Android 会尝试在另一台设备上找到 SNEP 服务器并将 NDEF 消息推送到其收件箱。

因此,在 Android Beam 中发挥作用的唯一“请求”是您的设备用于发送消息的 PUT 请求。该过程由 NFC 发现启动,并且没有从另一方收到特定请求。

关于android - Android 和 Linux 之间的 NFC P2P 通信入门 (libnfc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47597882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com