android - 如何使用NFC传输图像

标签 android nfc

我创建了一个简单的应用程序,其中有一张图片。现在我要做的是。

  1. 首先,我想为我的应用程序添加 NFC 支持。

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

如果有人知道,请帮助我解决这个问题,如果可能的话,请举个例子。我已经阅读了 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);
    }
}

最佳答案

首先,您需要将此包含在您的 list 文件中以启用 NFC 支持:

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

然后你可能会看看NFCDemo ,来自 Google 的官方 NFC 演示应用,供引用。

关于android - 如何使用NFC传输图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7709756/

上一篇:安卓开发细节

下一篇:安卓显示方向

相关文章:

android - 在Android中制作带有图像的RadioGroup单选按钮......如何?

android - 无需特定应用即可读取 NFC 标签?

android - NFC 手机能否充当 RFID 标签,可以在 4 英寸以上的距离读取?

android - HCE 服务和 BIND_NFC_SERVICE 权限

c# - 在Unity3D中读取NFC标签

java - android - 以编程方式捕获整个屏幕

java - Android 串口从 Arduino float println() 读取

android - libgdx gradle - 忘记制作 android 项目

android - 具有 RSA/ECC 功能的 NFC 卡/标签

android - 如何将图像重置到原始位置