如何在我的应用中添加NFC支持

时间:2011-10-10 07:36:01

标签: android nfc

我创建了一个简单的应用程序,我有一个图像。现在我想做的是。

  1. 首先,我想在我的应用中添加NFC支持。

  2. 一旦我在我的应用中添加了nfc支持,接下来我想要的是如何将我的应用程序中存在的图像传输到另一台支持NFC的设备。

  3. 如果有人知道请帮助我解决这个问题,如果可能的话,举个例子。我已经浏览了developer.android.com中为NFC提供的文档,但在这种情况下,它只使用NFC将文本从一个设备传输到另一个设备,但在我的情况下,我想传输图像而不是文本。

    文字传输代码

    public class NFCTestApp extends Activity 
    

    {

       private NfcAdapter mAdapter;
       private TextView mText;
       private NdefMessage mMessage;
    
    public static NdefRecord newTextRecord(byte[] text, Locale locale, boolean enco   deInUtf8) 
    {
       byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII"));
    
       Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16");
       byte[] textBytes = text;
    
       int utfBit = encodeInUtf8 ? 0 : (1 << 7);
       char status = (char) (utfBit + langBytes.length);
    
       byte[] data = new byte[1 + langBytes.length + textBytes.length]; 
       data[0] = (byte) status;
       System.arraycopy(langBytes, 0, data, 1, langBytes.length);
       System.arraycopy(textBytes, 0, data, 1 + langBytes.length, textBytes.length);
    
       return new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data);
    }
    
    public void onCreate(Bundle savedInstanceState) 
    {
       super.onCreate(savedInstanceState);
       mAdapter = NfcAdapter.getDefaultAdapter(this);
    
       setContentView(R.layout.main);
    
    
       Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
       ByteArrayOutputStream baos = new ByteArrayOutputStream();
       bm.compress(Bitmap.Compress.JPEG, 100, baos);
       byte[] b = baos.toByteArray();
    
      // Create an NDEF message 
       mMessage = new NdefMessage(
            new NdefRecord[] { newTextRecord(b, Locale.ENGLISH, true)});  
    }
    
    @Override
    public void onResume() 
    {
       super.onResume();
       if (mAdapter != null) mAdapter.enableForegroundNdefPush(this, mMessage);
    }
    
    @Override
    public void onPause() 
    {
       super.onPause();
       if (mAdapter != null) mAdapter.disableForegroundNdefPush(this);
    }
    

    }

1 个答案:

答案 0 :(得分:2)

首先,您需要将其包含在清单文件中以启用NFC支持:

<uses-permission android:name="android.permission.NFC" />
<uses-sdk android:minSdkVersion="9" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />

然后,您可以查看来自Google的官方NFC演示应用NFCDemo,以供参考。