1

通过前台 NDEF 推送 API 级别 10 到 13,我可以在两个非 Android 设备之间进行模拟吗?

我有一台 Android 设备和一台支持 NFC 的黑莓设备。如何在 API 级别 10 中在这些设备之间进行仿真?

package com.app.app.nfctag;

import java.nio.charset.Charset;

import android.app.Activity;
import android.content.Intent;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.Parcelable;
import android.widget.Toast;

public class NFCDeveloper extends Activity{
     NfcAdapter mNfcAdapter;
     private NdefMessage pushMessage;

       // TextView textView;


     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
            if (mNfcAdapter == null) {
                Toast.makeText(this, "NFC is not available", Toast.LENGTH_LONG).show();
                finish();
                return;
            }

            String text = ("Beam me up, Android!\n\n" + "Beam Time: " + System
                    .currentTimeMillis());
            pushMessage = new NdefMessage(new NdefRecord[] { createMimeRecord(
                    "application/com.example.android.beam", text.getBytes())

            });



     }

     /*public NdefMessage createNdefMessage(N event) {
            String text = ("Beam me up, Android!\n\n" +
                    "Beam Time: " + System.currentTimeMillis());
            NdefMessage msg = new NdefMessage(
                    new NdefRecord[] { createMimeRecord(
                            "application/com.example.android.beam", text.getBytes())
             *//**
              * The Android Application Record (AAR) is commented out. When a device
              * receives a push with an AAR in it, the application specified in the AAR
              * is guaranteed to run. The AAR overrides the tag dispatch system.
              * You can add it back in to guarantee that this
              * activity starts when receiving a beamed message. For now, this code
              * uses the tag dispatch system.
              *//*
              //,NdefRecord.createApplicationRecord("com.example.android.beam")
            });
            return msg;
        }
     */



        public void onResume() {
            super.onResume();
            // Check to see that the Activity started due to an Android Beam
            if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
                processIntent(getIntent());
            }
            mNfcAdapter.enableForegroundNdefPush(this, pushMessage);
        }

        public void onNewIntent(Intent intent) {
            // onResume gets called after this to handle the intent
            setIntent(intent);
        }

        void processIntent(Intent intent) {
          //  textView = (TextView) findViewById(R.id.textView);
            Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
                    NfcAdapter.EXTRA_NDEF_MESSAGES);
            // only one message sent during the beam
            NdefMessage msg = (NdefMessage) rawMsgs[0];
            // record 0 contains the MIME type, record 1 is the AAR, if present
          //  textView.setText(new String(msg.getRecords()[0].getPayload()));
        }
        public NdefRecord createMimeRecord(String mimeType, byte[] payload) {
            byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII"));
            NdefRecord mimeRecord = new NdefRecord(
                    NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload);
            return mimeRecord;
        }

}
4

2 回答 2

0

NDEF 是大多数其他系统使用的最常见的 NFC 标准。

于 2012-07-24T15:21:04.640 回答
0

NDEF 推送适用于从 Android 设备到 Blackberry,就像到另一个 Android 设备一样。

更新:

你是对的。它只能从 API 14 开始工作。在此之前,Android 只使用 NPP 协议;SNEP(BB 支持)仅从 API 14 实现。

于 2012-07-24T14:47:35.870 回答