Update the Tags app to the holo theme and fix some bugs.
Jeff Hamilton [Wed, 27 Jul 2011 22:14:01 +0000 (17:14 -0500)]
Change-Id: I217cf3f5b2e228df50ff1bed050448bf72140a3b

AndroidManifest.xml
res/layout/tag_viewer.xml
src/com/android/apps/tag/TagViewer.java

index 9b4115f..dac0d4f 100644 (file)
@@ -33,7 +33,7 @@
         android:label="@string/app_name"
     >
         <activity android:name="TagViewer"
-            android:theme="@android:style/Theme.NoTitleBar"
+            android:label="@string/title_scanned_tag"
             android:launchMode="singleTop"
             android:priority="-10"
         >
index 7a7f917..0370b53 100644 (file)
 
     android:orientation="vertical"
 >
-    <!-- Title -->
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="65dip"
-
-        android:orientation="horizontal"
-        android:background="@drawable/title_bar_medium"
-    >
-
-        <ImageView android:id="@+id/icon"
-            android:layout_width="32dip"
-            android:layout_height="32dip"
-            android:layout_centerVertical="true"
-            android:layout_marginRight="4dip"
-
-            android:src="@drawable/ic_launcher_nfc"
-        />
-
-        <TextView android:id="@+id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerVertical="true"
-            android:layout_marginLeft="8dip"
-
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:textStyle="bold"
-            android:shadowColor="#BB000000"
-            android:shadowRadius="2.75"
-            
-            android:text="@string/title_scanned_tag"
-        />
-    </LinearLayout>
-
     <!-- Content -->
 
     <ScrollView
@@ -73,7 +38,7 @@
     </ScrollView>
 
     <!-- Bottom button area -->
-
+<!--
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -91,5 +56,5 @@
         />
 
     </LinearLayout>
-
+-->
 </LinearLayout>
\ No newline at end of file
index 14e58f8..b4e9474 100644 (file)
@@ -22,7 +22,6 @@ import com.android.apps.tag.record.ParsedNdefRecord;
 
 import android.app.Activity;
 import android.content.Intent;
-import android.net.Uri;
 import android.nfc.NdefMessage;
 import android.nfc.NdefRecord;
 import android.nfc.NfcAdapter;
@@ -32,8 +31,8 @@ import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
-import android.widget.Button;
 import android.widget.LinearLayout;
+import android.widget.TextView;
 
 import java.util.List;
 
@@ -52,7 +51,6 @@ public class TagViewer extends Activity implements OnClickListener {
         setContentView(R.layout.tag_viewer);
 
         mTagContent = (LinearLayout) findViewById(R.id.list);
-        findViewById(R.id.button_done).setOnClickListener(this);
 
         resolveIntent(getIntent());
     }
@@ -62,25 +60,13 @@ public class TagViewer extends Activity implements OnClickListener {
         String action = intent.getAction();
         if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
                 || NfcAdapter.ACTION_TECH_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.
             Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
-            NdefMessage[] msgs;
+            NdefMessage msg = null;
             if (rawMsgs != null && rawMsgs.length > 0) {
-                // 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 };
+                msg = (NdefMessage) rawMsgs[0];
             }
+
+            buildTagViews(msg);
         } else {
             Log.e(TAG, "Unknown intent " + intent);
             finish();
@@ -89,28 +75,35 @@ public class TagViewer extends Activity implements OnClickListener {
     }
 
     void buildTagViews(NdefMessage msg) {
-        if (msg == null) {
-            return;
-        }
-
         LayoutInflater inflater = LayoutInflater.from(this);
         LinearLayout content = mTagContent;
 
         // Clear out any old views in the content area, for example if you scan two tags in a row.
         content.removeAllViews();
 
-        // Parse the first message in the list
-        //TODO figure out what to do when/if we support multiple messages per tag
-        ParsedNdefMessage parsedMsg = NdefMessageParser.parse(msg);
-
         // Build views for all of the sub records
-        List<ParsedNdefRecord> records = parsedMsg.getRecords();
-        final int size = records.size();
-
-        for (int i = 0; i < size; i++) {
-            ParsedNdefRecord record = records.get(i);
-            content.addView(record.getView(this, inflater, content, i));
-            inflater.inflate(R.layout.tag_divider, content, true);
+        if (msg == null) {
+            TextView empty = (TextView) inflater.inflate(R.layout.tag_text, content, false);
+            empty.setText(R.string.tag_empty);
+            content.addView(empty);
+        } else {
+            // Parse the first message in the list
+            //TODO figure out what to do when/if we support multiple messages per tag
+            ParsedNdefMessage parsedMsg = NdefMessageParser.parse(msg);
+
+            List<ParsedNdefRecord> records = parsedMsg.getRecords();
+            final int size = records.size();
+            if (size == 0) {
+                TextView empty = (TextView) inflater.inflate(R.layout.tag_text, content, false);
+                empty.setText(R.string.tag_empty);
+                content.addView(empty);
+            } else {
+                for (int i = 0; i < size; i++) {
+                    ParsedNdefRecord record = records.get(i);
+                    content.addView(record.getView(this, inflater, content, i));
+                    inflater.inflate(R.layout.tag_divider, content, true);
+                }
+            }
         }
     }