diff options
| author | Scott Main <smain@google.com> | 2011-10-14 17:30:30 -0700 |
|---|---|---|
| committer | Scott Main <smain@google.com> | 2011-10-17 10:37:07 -0700 |
| commit | e842e956c203b322bd39c05ed5660c917b9ae443 (patch) | |
| tree | aa677d6b816a2b5f34d8730de24f239f6a4d4fa6 | |
| parent | 2f33e1eae0671cc1aa3d367f8d900b532f6ca80f (diff) | |
| download | android_development-e842e956c203b322bd39c05ed5660c917b9ae443.tar.gz android_development-e842e956c203b322bd39c05ed5660c917b9ae443.tar.bz2 android_development-e842e956c203b322bd39c05ed5660c917b9ae443.zip | |
update andriod beam demo.
add action item to go to Android Beam settings,
add help info, and add callback for on-push-complete
Change-Id: I2e0e8b9d6e66c507d62012e809ee0c01e1298f20
| -rw-r--r-- | samples/AndroidBeamDemo/Android.mk | 2 | ||||
| -rw-r--r-- | samples/AndroidBeamDemo/res/drawable-hdpi/ic_menu_preferences.png | bin | 0 -> 1851 bytes | |||
| -rw-r--r-- | samples/AndroidBeamDemo/res/drawable-mdpi/ic_menu_preferences.png | bin | 0 -> 1142 bytes | |||
| -rw-r--r-- | samples/AndroidBeamDemo/res/drawable-xhdpi/ic_menu_preferences.png | bin | 0 -> 2507 bytes | |||
| -rw-r--r-- | samples/AndroidBeamDemo/res/layout/main.xml | 3 | ||||
| -rw-r--r-- | samples/AndroidBeamDemo/res/menu/options.xml | 7 | ||||
| -rw-r--r-- | samples/AndroidBeamDemo/res/values/strings.xml | 5 | ||||
| -rw-r--r-- | samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java | 85 |
8 files changed, 89 insertions, 13 deletions
diff --git a/samples/AndroidBeamDemo/Android.mk b/samples/AndroidBeamDemo/Android.mk index 7b36dd999..f125f0f6c 100644 --- a/samples/AndroidBeamDemo/Android.mk +++ b/samples/AndroidBeamDemo/Android.mk @@ -10,6 +10,4 @@ LOCAL_PACKAGE_NAME := AndroidBeamDemo LOCAL_SDK_VERSION := current -LOCAL_PROGUARD_FLAG_FILES := proguard.flags - include $(BUILD_PACKAGE) diff --git a/samples/AndroidBeamDemo/res/drawable-hdpi/ic_menu_preferences.png b/samples/AndroidBeamDemo/res/drawable-hdpi/ic_menu_preferences.png Binary files differnew file mode 100644 index 000000000..5321f8285 --- /dev/null +++ b/samples/AndroidBeamDemo/res/drawable-hdpi/ic_menu_preferences.png diff --git a/samples/AndroidBeamDemo/res/drawable-mdpi/ic_menu_preferences.png b/samples/AndroidBeamDemo/res/drawable-mdpi/ic_menu_preferences.png Binary files differnew file mode 100644 index 000000000..ccc50e66e --- /dev/null +++ b/samples/AndroidBeamDemo/res/drawable-mdpi/ic_menu_preferences.png diff --git a/samples/AndroidBeamDemo/res/drawable-xhdpi/ic_menu_preferences.png b/samples/AndroidBeamDemo/res/drawable-xhdpi/ic_menu_preferences.png Binary files differnew file mode 100644 index 000000000..02cfbad0b --- /dev/null +++ b/samples/AndroidBeamDemo/res/drawable-xhdpi/ic_menu_preferences.png diff --git a/samples/AndroidBeamDemo/res/layout/main.xml b/samples/AndroidBeamDemo/res/layout/main.xml index dce616998..eacb68e9f 100644 --- a/samples/AndroidBeamDemo/res/layout/main.xml +++ b/samples/AndroidBeamDemo/res/layout/main.xml @@ -21,4 +21,7 @@ android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:text="@string/info" + android:padding="10dp" + android:textSize="18sp" /> diff --git a/samples/AndroidBeamDemo/res/menu/options.xml b/samples/AndroidBeamDemo/res/menu/options.xml new file mode 100644 index 000000000..8012d8e62 --- /dev/null +++ b/samples/AndroidBeamDemo/res/menu/options.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:id="@+id/menu_settings" + android:icon="@drawable/ic_menu_preferences" + android:showAsAction="ifRoom" + android:title="@string/menu_settings" /> +</menu>
\ No newline at end of file diff --git a/samples/AndroidBeamDemo/res/values/strings.xml b/samples/AndroidBeamDemo/res/values/strings.xml index ff4492fe5..68ed73f19 100644 --- a/samples/AndroidBeamDemo/res/values/strings.xml +++ b/samples/AndroidBeamDemo/res/values/strings.xml @@ -1,4 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Beam</string> + <string name="info">Ensure that Android Beam is enabled by turning it on in + the system Settings (select the setting icon above), then place this device up + against another Android device that supports Android Beam to send a + message.</string> + <string name="menu_settings">Android Beam settings</string> </resources> diff --git a/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java b/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java index 17ec3256f..0cc5f899f 100644 --- a/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java +++ b/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java @@ -22,38 +22,57 @@ import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; import android.nfc.NfcAdapter.CreateNdefMessageCallback; +import android.nfc.NfcAdapter.OnNdefPushCompleteCallback; import android.nfc.NfcEvent; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.os.Parcelable; +import android.provider.Settings; +import android.text.format.Time; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; + import java.nio.charset.Charset; -public class Beam extends Activity implements CreateNdefMessageCallback { +public class Beam extends Activity implements CreateNdefMessageCallback, + OnNdefPushCompleteCallback { NfcAdapter mNfcAdapter; - TextView textView; + TextView mInfoText; + private static final int MESSAGE_SENT = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); - TextView textView = (TextView) findViewById(R.id.textView); + + mInfoText = (TextView) findViewById(R.id.textView); // Check for available NFC Adapter mNfcAdapter = NfcAdapter.getDefaultAdapter(this); if (mNfcAdapter == null) { - Toast.makeText(this, "NFC is not available", Toast.LENGTH_LONG).show(); - finish(); - return; + mInfoText = (TextView) findViewById(R.id.textView); + mInfoText.setText("NFC is not available on this device."); } - // Register callback + // Register callback to set NDEF message mNfcAdapter.setNdefPushMessageCallback(this, this); + // Register callback to listen for message-sent success + mNfcAdapter.setOnNdefPushCompleteCallback(this, this); } + + /** + * Implementation for the CreateNdefMessageCallback interface + */ @Override public NdefMessage createNdefMessage(NfcEvent event) { - String text = ("Beam me up, Android!\n\n" + - "Beam Time: " + System.currentTimeMillis()); + Time time = new Time(); + time.setToNow(); + String text = ("Beam me up!\n\n" + + "Beam Time: " + time.format("%H:%M:%S")); NdefMessage msg = new NdefMessage( new NdefRecord[] { createMimeRecord( "application/com.example.android.beam", text.getBytes()) @@ -70,6 +89,28 @@ public class Beam extends Activity implements CreateNdefMessageCallback { return msg; } + /** + * Implementation for the OnNdefPushCompleteCallback interface + */ + @Override + public void onNdefPushComplete(NfcEvent arg0) { + // A handler is needed to send messages to the activity when this + // callback occurs, because it happens from a binder thread + mHandler.obtainMessage(MESSAGE_SENT).sendToTarget(); + } + + /** This handler receives a message from onNdefPushComplete */ + private final Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MESSAGE_SENT: + Toast.makeText(getApplicationContext(), "Message sent!", Toast.LENGTH_LONG).show(); + break; + } + } + }; + @Override public void onResume() { super.onResume(); @@ -89,13 +130,12 @@ public class Beam extends Activity implements CreateNdefMessageCallback { * Parses the NDEF Message from the intent and prints to the TextView */ void processIntent(Intent intent) { - textView = (TextView) findViewById(R.id.textView); Parcelable[] rawMsgs = intent.getParcelableArrayExtra( NfcAdapter.EXTRA_NDEF_MESSAGES); // only one message sent during the beam NdefMessage msg = (NdefMessage) rawMsgs[0]; // record 0 contains the MIME type, record 1 is the AAR, if present - textView.setText(new String(msg.getRecords()[0].getPayload())); + mInfoText.setText(new String(msg.getRecords()[0].getPayload())); } /** @@ -109,4 +149,27 @@ public class Beam extends Activity implements CreateNdefMessageCallback { NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload); return mimeRecord; } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // If NFC is not available, we won't be needing this menu + if (mNfcAdapter == null) { + return super.onCreateOptionsMenu(menu); + } + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.options, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_settings: + Intent intent = new Intent(Settings.ACTION_NFCSHARING_SETTINGS); + startActivity(intent); + return true; + default: + return super.onOptionsItemSelected(item); + } + } } |
