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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user