Update to the new APIs.
Jeff Hamilton [Thu, 28 Oct 2010 22:44:37 +0000 (17:44 -0500)]
Change-Id: I8aed612159d369dd9360ba3bc4aa7ee9c008c718

Android.mk
AndroidManifest.xml
canon/src/com/android/apps/tagcanon/TagCanon.java
src/com/android/apps/tag/TagService.java
src/com/android/apps/tag/TagViewer.java
src/com/android/apps/tag/provider/TagProvider.java

index dd1d1b1..7fa60a0 100644 (file)
@@ -10,7 +10,7 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_PACKAGE_NAME := Tag
 
-LOCAL_SDK_VERSION := current
+#LOCAL_SDK_VERSION := current
 
 include $(BUILD_PACKAGE)
 
index 9d109ed..2cbc300 100644 (file)
@@ -47,7 +47,7 @@
             android:launchMode="singleTop"
         >
             <intent-filter>
-                <action android:name="android.nfc.action.NDEF_TAG_DISCOVERED"/>
+                <action android:name="android.nfc.action.TAG_DISCOVERED"/>
                 <category android:name="android.intent.category.DEFAULT"/>
             </intent-filter>
 
index 508f81e..2367342 100644 (file)
@@ -159,8 +159,9 @@ public class TagCanon extends ListActivity {
     @Override
     public void onListItemClick(ListView l, View v, int position, long id) {
         TagDescription description = mAdapter.getItem(position);
-        Intent intent = new Intent(NfcAdapter.ACTION_NDEF_TAG_DISCOVERED);
+        Intent intent = new Intent(NfcAdapter.ACTION_TAG_DISCOVERED);
         intent.putExtra(NfcAdapter.EXTRA_TAG, description.tag);
+        intent.putExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, description.tag.getNdefMessages());
         startActivity(intent);
     }
 }
index 1a2c433..dee2f00 100644 (file)
@@ -26,13 +26,13 @@ import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.nfc.NdefMessage;
-import android.nfc.NdefTag;
+import android.os.Parcelable;
 import android.util.Log;
 
 public class TagService extends IntentService {
     private static final String TAG = "TagService";
 
-    private static final String EXTRA_SAVE_TAG = "tag";
+    private static final String EXTRA_SAVE_MSGS = "msgs";
     private static final String EXTRA_DELETE_URI = "delete";
     private static final String EXTRA_STAR_URI = "set_star";
     private static final String EXTRA_UNSTAR_URI = "remove_star";
@@ -47,10 +47,9 @@ public class TagService extends IntentService {
 
     @Override
     public void onHandleIntent(Intent intent) {
-        if (intent.hasExtra(EXTRA_SAVE_TAG)) {
-
-            NdefTag tag = (NdefTag) intent.getParcelableExtra(EXTRA_SAVE_TAG);
-            NdefMessage msg = tag.getNdefMessages()[0];
+        if (intent.hasExtra(EXTRA_SAVE_MSGS)) {
+            Parcelable[] msgs = intent.getParcelableArrayExtra(EXTRA_SAVE_MSGS);
+            NdefMessage msg = (NdefMessage) msgs[0];
 
             ContentValues values = NdefMessages.toValues(this, msg, false, System.currentTimeMillis());
             Uri uri = getContentResolver().insert(NdefMessages.CONTENT_URI, values);
@@ -92,9 +91,10 @@ public class TagService extends IntentService {
         }
     }
 
-    public static void saveTag(Context context, NdefTag tag, boolean starred, PendingIntent pending) {
+    public static void saveMessages(Context context, NdefMessage[] msgs, boolean starred,
+            PendingIntent pending) {
         Intent intent = new Intent(context, TagService.class);
-        intent.putExtra(TagService.EXTRA_SAVE_TAG, tag);
+        intent.putExtra(TagService.EXTRA_SAVE_MSGS, msgs);
         intent.putExtra(TagService.EXTRA_STARRED, starred);
         intent.putExtra(TagService.EXTRA_PENDING_INTENT, pending);
         context.startService(intent);
index 72aef85..882beeb 100644 (file)
@@ -23,9 +23,7 @@ import com.android.apps.tag.record.ParsedNdefRecord;
 
 import android.app.Activity;
 import android.app.PendingIntent;
-import android.content.ComponentName;
 import android.content.Intent;
-import android.content.ServiceConnection;
 import android.content.res.AssetFileDescriptor;
 import android.database.Cursor;
 import android.media.AudioManager;
@@ -33,11 +31,12 @@ import android.media.MediaPlayer;
 import android.net.Uri;
 import android.nfc.FormatException;
 import android.nfc.NdefMessage;
+import android.nfc.NdefRecord;
 import android.nfc.NdefTag;
 import android.nfc.NfcAdapter;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.os.IBinder;
+import android.os.Parcelable;
 import android.text.format.DateUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -134,17 +133,27 @@ public class TagViewer extends Activity implements OnClickListener {
     void resolveIntent(Intent intent) {
         // Parse the intent
         String action = intent.getAction();
-        if (NfcAdapter.ACTION_NDEF_TAG_DISCOVERED.equals(action)) {
+        if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) {
             // When a tag is discovered we send it to the service to be save. We
             // include a PendingIntent for the service to call back onto. This
             // will cause this activity to be restarted with onNewIntent(). At
             // that time we read it from the database and view it.
-
-            NdefTag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
-
-            PendingIntent pending = getPendingIntent();
-
-            TagService.saveTag(this, tag, false, pending);
+            Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
+            NdefMessage[] msgs;
+            if (rawMsgs != null) {
+                // stupid java, need to cast one-by-one
+                msgs = new NdefMessage[rawMsgs.length];
+                for (int i=0; i<rawMsgs.length; i++) {
+                    msgs[i] = (NdefMessage) rawMsgs[i];
+                }
+            } else {
+                // Unknown tag type
+                byte[] empty = new byte[] {};
+                NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, empty);
+                NdefMessage msg = new NdefMessage(new NdefRecord[] { record });
+                msgs = new NdefMessage[] { msg };
+            }
+            TagService.saveMessages(this, msgs, false, getPendingIntent());
 
             // Setup the views
             setTitle(R.string.title_scanned_tag);
index b8bdb9e..3b85825 100644 (file)
@@ -53,13 +53,8 @@ public class TagProvider extends SQLiteContentProvider implements TagProviderPip
     private static final int NDEF_MESSAGES = 1000;
     private static final int NDEF_MESSAGES_ID = 1001;
 
-    private static final int NDEF_RECORDS = 2000;
-    private static final int NDEF_RECORDS_ID = 2001;
     private static final int NDEF_MESSAGES_ID_MIME = 2002;
 
-    private static final int NDEF_TAGS = 3000;
-    private static final int NDEF_TAGS_ID = 3001;
-
     private static final UriMatcher MATCHER;