Update NFC samples.

o Remove NFCDemo sample app. It's janky and is mostly parsing code
  that isn't needed anymore.
o Use new NDEF APIs for parsing and creating records
o Use nicer setNdefPushMessage() API
o Delete helper NDEF code that is not needed any more
o Use URL instead of Text for the foreground push demo
o Mark AndroidBeamDemo a test so it gets installed in data not system

Change-Id: I75eda84019c2075956688e26f2598f126d5659a2
This commit is contained in:
Nick Pelly
2012-01-09 10:48:28 -08:00
parent 3c40738530
commit a983c2a1a3
23 changed files with 10 additions and 1436 deletions

View File

@@ -25,9 +25,6 @@ import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.widget.TextView;
import java.nio.charset.Charset;
import java.util.Locale;
/**
* An example of how to use the NFC foreground NDEF push APIs.
*/
@@ -36,51 +33,23 @@ public class ForegroundNdefPush extends Activity {
private TextView mText;
private NdefMessage mMessage;
public static NdefRecord newTextRecord(String text, Locale locale, boolean encodeInUtf8) {
byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII"));
Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16");
byte[] textBytes = text.getBytes(utfEncoding);
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);
}
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
mAdapter = NfcAdapter.getDefaultAdapter(this);
// Create an NDEF message a URL
mMessage = new NdefMessage(NdefRecord.createUri("http://www.android.com"));
setContentView(R.layout.foreground_dispatch);
mText = (TextView) findViewById(R.id.text);
if (mAdapter != null) {
mText.setText("Tap another Android phone with NFC to push 'NDEF Push Sample'");
mAdapter.setNdefPushMessage(mMessage, this);
mText.setText("Tap another Android phone with NFC to push a URL");
} else {
mText.setText("This phone is not NFC enabled.");
}
// Create an NDEF message with some sample text
mMessage = new NdefMessage(
new NdefRecord[] { newTextRecord("NDEF Push Sample", 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);
}
}