发送NDEF /触摸光束时得到通知

时间:2018-09-27 11:33:12

标签: 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());
    }
    ...
}

1 个答案:

答案 0 :(得分:1)

您可以注册OnNdefPushCompleteCallback

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

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

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