17949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton/* 27949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * Copyright (C) 2010 The Android Open Source Project 37949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * 47949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * Licensed under the Apache License, Version 2.0 (the "License"); 57949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * you may not use this file except in compliance with the License. 67949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * You may obtain a copy of the License at 77949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * 87949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * http://www.apache.org/licenses/LICENSE-2.0 97949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * 107949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * Unless required by applicable law or agreed to in writing, software 117949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * distributed under the License is distributed on an "AS IS" BASIS, 127949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * See the License for the specific language governing permissions and 147949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * limitations under the License. 157949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton */ 167949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton 177949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonpackage com.android.apps.tag.message; 187949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton 19081de56bfdd18f47025ef7af85b45592db244233Nick Kralevichimport com.android.apps.tag.record.ImageRecord; 2046793e91497af04df8c3cf0536b33ed1d5db0da2Nick Kralevichimport com.android.apps.tag.record.MimeRecord; 217949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport com.android.apps.tag.record.ParsedNdefRecord; 227949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport com.android.apps.tag.record.SmartPoster; 237949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport com.android.apps.tag.record.TextRecord; 2407b51eedea198c6aca4f378120d5edfdfb2e4cf5Jason parksimport com.android.apps.tag.record.UnknownRecord; 257949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport com.android.apps.tag.record.UriRecord; 2640d9a0cd0a37d184ee737b2d7138a39e4292ce3eJason parksimport com.android.apps.tag.record.VCardRecord; 27c44565157238598ce702102db678c5d048be131cNick Kralevich 28c44565157238598ce702102db678c5d048be131cNick Kralevichimport android.nfc.NdefMessage; 29c44565157238598ce702102db678c5d048be131cNick Kralevichimport android.nfc.NdefRecord; 307949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton 317949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport java.util.ArrayList; 327949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonimport java.util.List; 337949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton 347949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton/** 357949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton * Utility class for creating {@link ParsedNdefMessage}s. 367949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton */ 377949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamiltonpublic class NdefMessageParser { 387949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton 397949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton // Utility class 407949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton private NdefMessageParser() { } 417949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton 427949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton /** Parse an NdefMessage */ 437949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton public static ParsedNdefMessage parse(NdefMessage message) { 44a6855221fb6e5c6c19d31283a18ced44cccdf442Jason parks return new ParsedNdefMessage(getRecords(message)); 457949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton } 467949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton 477949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton public static List<ParsedNdefRecord> getRecords(NdefMessage message) { 485e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich return getRecords(message.getRecords()); 495e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich } 505e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich 515e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich public static List<ParsedNdefRecord> getRecords(NdefRecord[] records) { 527949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton List<ParsedNdefRecord> elements = new ArrayList<ParsedNdefRecord>(); 535e3610757da1efad5b85ed7042713427010eafc1Nick Kralevich for (NdefRecord record : records) { 54116871653662979554a7326991ba4fd599ac44ffNick Pelly if (SmartPoster.isPoster(record)) { 55116871653662979554a7326991ba4fd599ac44ffNick Pelly elements.add(SmartPoster.parse(record)); 56116871653662979554a7326991ba4fd599ac44ffNick Pelly } else if (UriRecord.isUri(record)) { 577949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton elements.add(UriRecord.parse(record)); 587949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton } else if (TextRecord.isText(record)) { 597949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton elements.add(TextRecord.parse(record)); 60081de56bfdd18f47025ef7af85b45592db244233Nick Kralevich } else if (ImageRecord.isImage(record)) { 61081de56bfdd18f47025ef7af85b45592db244233Nick Kralevich elements.add(ImageRecord.parse(record)); 6240d9a0cd0a37d184ee737b2d7138a39e4292ce3eJason parks } else if (VCardRecord.isVCard(record)) { 6340d9a0cd0a37d184ee737b2d7138a39e4292ce3eJason parks elements.add(VCardRecord.parse(record)); 6446793e91497af04df8c3cf0536b33ed1d5db0da2Nick Kralevich } else if (MimeRecord.isMime(record)) { 6546793e91497af04df8c3cf0536b33ed1d5db0da2Nick Kralevich elements.add(MimeRecord.parse(record)); 6607b51eedea198c6aca4f378120d5edfdfb2e4cf5Jason parks } else { 6707b51eedea198c6aca4f378120d5edfdfb2e4cf5Jason parks elements.add(new UnknownRecord()); 687949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton } 697949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton } 707949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton return elements; 717949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton } 727949534630e1b14cf73a6ad3c0606ec5be2c480cJeff Hamilton} 73