TagTechnology.java revision f003e26df96067b4b136f0859012cb7ec3ed930f
16be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton/* 26be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * Copyright (C) 2010 The Android Open Source Project 36be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * 46be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * Licensed under the Apache License, Version 2.0 (the "License"); 56be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * you may not use this file except in compliance with the License. 66be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * You may obtain a copy of the License at 76be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * 86be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * http://www.apache.org/licenses/LICENSE-2.0 96be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * 106be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * Unless required by applicable law or agreed to in writing, software 116be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * distributed under the License is distributed on an "AS IS" BASIS, 126be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * See the License for the specific language governing permissions and 146be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton * limitations under the License. 156be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 166be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 174e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamiltonpackage android.nfc.tech; 186be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 196be655c768a82716612c00fdd156254d8dc00f42Jeff Hamiltonimport android.nfc.Tag; 206be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 213fcedf77286a078ebd7ac8c082365bd80703dfdcNick Pellyimport java.io.Closeable; 226be655c768a82716612c00fdd156254d8dc00f42Jeff Hamiltonimport java.io.IOException; 236be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 243fcedf77286a078ebd7ac8c082365bd80703dfdcNick Pellypublic interface TagTechnology extends Closeable { 256be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 26ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * This technology is an instance of {@link NfcA}. 27ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>Support for this technology type is mandatory. 284e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamilton * @hide 296be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 306be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton public static final int NFC_A = 1; 316be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 326be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 33ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * This technology is an instance of {@link NfcB}. 34ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>Support for this technology type is mandatory. 354e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamilton * @hide 366be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 376be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton public static final int NFC_B = 2; 386be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 396be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 40ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * This technology is an instance of {@link IsoDep}. 41ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>Support for this technology type is mandatory. 424e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamilton * @hide 436be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 446be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton public static final int ISO_DEP = 3; 456be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 466be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 47ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * This technology is an instance of {@link NfcF}. 48ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>Support for this technology type is mandatory. 494e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamilton * @hide 506be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 51641dd62155fd2eeddd93b2036154b13c05b70ba2Jeff Hamilton public static final int NFC_F = 4; 526be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 536be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 54ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * This technology is an instance of {@link NfcV}. 55ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>Support for this technology type is mandatory. 564e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamilton * @hide 576be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 58641dd62155fd2eeddd93b2036154b13c05b70ba2Jeff Hamilton public static final int NFC_V = 5; 596be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 606be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 61ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * This technology is an instance of {@link Ndef}. 62ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>Support for this technology type is mandatory. 634e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamilton * @hide 646be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 65641dd62155fd2eeddd93b2036154b13c05b70ba2Jeff Hamilton public static final int NDEF = 6; 666be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 676be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 68ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * This technology is an instance of {@link NdefFormatable}. 69ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>Support for this technology type is mandatory. 704e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamilton * @hide 7139f91ed5290e8b27c795f8aec181a6dd4431d317Martijn Coenen */ 72641dd62155fd2eeddd93b2036154b13c05b70ba2Jeff Hamilton public static final int NDEF_FORMATABLE = 7; 7339f91ed5290e8b27c795f8aec181a6dd4431d317Martijn Coenen 7439f91ed5290e8b27c795f8aec181a6dd4431d317Martijn Coenen /** 75ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * This technology is an instance of {@link MifareClassic}. 76ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>Support for this technology type is optional. If a stack doesn't support this technology 77ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * type tags using it must still be discovered and present the lower level radio interface 78ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * technologies in use. 794e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamilton * @hide 806be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 81641dd62155fd2eeddd93b2036154b13c05b70ba2Jeff Hamilton public static final int MIFARE_CLASSIC = 8; 826be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 836be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 84ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * This technology is an instance of {@link MifareUltralight}. 85ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>Support for this technology type is optional. If a stack doesn't support this technology 86ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * type tags using it must still be discovered and present the lower level radio interface 87ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * technologies in use. 884e21e1d21a877cce4db5ec8c5786604cc10f2d7eJeff Hamilton * @hide 896be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 90641dd62155fd2eeddd93b2036154b13c05b70ba2Jeff Hamilton public static final int MIFARE_ULTRALIGHT = 9; 916be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 926be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 93ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * Get the {@link Tag} object this technology came from. 946be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 956be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton public Tag getTag(); 966be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 976be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 98ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * Opens a connection to the {@link Tag} enabling interactive commands. The command set 99ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * varies by the technology type. 100ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * 101ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>This method blocks until the connection has been established. 102ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * 103ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>A call to {@link #close} from another thread will cancel a blocked call and cause an 104ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * IOException to be thrown on the thread that is blocked. 105ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * 106ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * @see #reconnect() 107ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * @see #close() 108ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * @throws IOException if the target is lost, or connect canceled 1096be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 1106be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton public void connect() throws IOException; 1116be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton 1126be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton /** 113ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * Re-connect to the {@link Tag} associated with this connection. Reconnecting to a tag can be 114ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * used to reset the state of the tag itself. 115ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * 116ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>This method blocks until the connection is re-established. 117ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * 118ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p>A call to {@link #close} from another thread will cancel a blocked call and cause an 119ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * IOException to be thrown on the thread that is blocked. 120ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * 121ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * @see #connect() 122ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * @see #close() 1230d27f999f4b1ad51da11946800b40d2978fc6326Martijn Coenen * @throws IOException 124f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly * @hide 1250d27f999f4b1ad51da11946800b40d2978fc6326Martijn Coenen */ 1260d27f999f4b1ad51da11946800b40d2978fc6326Martijn Coenen public void reconnect() throws IOException; 1270d27f999f4b1ad51da11946800b40d2978fc6326Martijn Coenen 1280d27f999f4b1ad51da11946800b40d2978fc6326Martijn Coenen /** 129ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * Closes the connection to the {@link Tag}. This call is non-blocking and causes all blocking 130ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * operations such as {@link #connect} to be canceled and immediately throw 131ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * {@link java.io.IOException} on the thread that is blocked. 132ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * 133ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * <p> 134ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * Once this method is called, this object cannot be re-used and should be discarded. Further 135ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * calls to {@link #connect} will fail. 136ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * 137ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * @see #connect() 138ce3224cda51f946871daa1e11e3976e25c59e6faJeff Hamilton * @see #reconnect() 1396be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton */ 1403fcedf77286a078ebd7ac8c082365bd80703dfdcNick Pelly public void close() throws IOException; 141f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly 142f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly /** 143f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly * Helper to indicate if {@link #connect} has succeeded. 144f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly * <p> 145f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly * Does not cause RF activity, and does not block. 146f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly * @return true if {@link #connect} has completed successfully and the {@link Tag} is believed 147f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly * to be within range. Applications must still handle {@link java.io.IOException} 148f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly * while using methods that require a connection in case the connection is lost after this 149f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly * method returns. 150f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly */ 151f003e26df96067b4b136f0859012cb7ec3ed930fNick Pelly public boolean isConnected(); 1526be655c768a82716612c00fdd156254d8dc00f42Jeff Hamilton} 153