Как добавить поддержку NFC в моём приложении - PullRequest
1 голос
/ 10 октября 2011

Я создал простое приложение, в котором у меня есть изображение.Теперь я хочу сделать следующее:

  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);
}

}

1 Ответ

2 голосов
/ 10 октября 2011

Во-первых, вам нужно включить это в файл манифеста, чтобы включить поддержку NFC:

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

Затем вы можете взглянуть на NFCDemo , официальное демонстрационное приложение NFC от Google,для справки.

...