android - 发送 NDEF 时收到通知/触摸到光束被按下

标签 android nfc ndef nfc-p2p android-beam

我正在使用 setNdefPushMessageCallback 通过 Android Beam (TM) 从一台 Android 设备向另一台设备发送 NDEF 消息(文本/纯文本)。在 onResume 中,我正在检查 ACTION_NDEF_DISCOVERED,因此以这种方式通知正在检测/接收消息的 Android 手机。

但是我如何才能在另一部手机(发送消息的手机)中收到通知?我认为应该有一种方法可以检测我们何时触摸屏幕以发送消息,但我没有在 NfcAdapter 上看到为此目的调用的任何常量。

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    mAdapter.setNdefPushMessageCallback(this, this);
}

@Override
public NdefMessage createNdefMessage(NfcEvent nfcEvent) {
    ...
    NdefRecord ndefRecord = NdefRecord.createMime("text/plain", message.getBytes());
    NdefMessage ndefMessage = new NdefMessage(ndefRecord);
    return ndefMessage;

}

@Override
protected void onResume(){
    super.onResume();

    Intent intent = getIntent();
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
        Parcelable[] rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        NdefMessage message = (NdefMessage) rawMessages[0]; 
        status = new String(message.getRecords()[0].getPayload());
    }
    ...
}

最佳答案

你可以注册一个OnNdefPushCompleteCallback:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    mAdapter.setOnNdefPushCompleteCallback(this, this);
    mAdapter.setNdefPushMessageCallback(this, this);
}

@Override
public void onNdefPushComplete(NfcEvent event) {
    ...
}

当消息成功推送到 Beam 上时,将调用此回调。

关于android - 发送 NDEF 时收到通知/触摸到光束被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52536021/

相关文章:

android - 如何获取 Intent 过滤器 MimeType

java - Android使用TargetApi实现接口(interface)

android - 为什么总是 TECH_DISCOVERED 或 TAG_DISCOVERED 而不是 NDEF_DISCOVERED?

java - 在Android中写入NFC标签

java - 无法解析符号 Intent - 是否导入 Intent

android - 读取NFC手机数据,使用NFC Reader

Android NFC transceive() 使用 NFCF 技术(Sony Felica)

java - 使用抽象类作为 RecyclerView Adapter 的基础?

android - 在没有 CameraInfo 的情况下实现 OrientationEventListener 来解决相机问题?

java - 天气休息服务