MifareClassic Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Provides access to MIFARE Classic properties and I/O operations on a Tag
.
[Android.Runtime.Register("android/nfc/tech/MifareClassic", DoNotGenerateAcw=true)]
public sealed class MifareClassic : Android.Nfc.Tech.BasicTagTechnology, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("android/nfc/tech/MifareClassic", DoNotGenerateAcw=true)>]
type MifareClassic = class
inherit BasicTagTechnology
interface ITagTechnology
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Inheritance
- Attributes
- Implements
Remarks
Provides access to MIFARE Classic properties and I/O operations on a Tag
.
Acquire a MifareClassic
object using #get
.
MIFARE Classic is also known as MIFARE Standard.
MIFARE Classic tags are divided into sectors, and each sector is sub-divided into blocks. Block size is always 16 bytes (#BLOCK_SIZE
. Sector size varies. <ul> <li>MIFARE Classic Mini are 320 bytes (#SIZE_MINI
), with 5 sectors each of 4 blocks. <li>MIFARE Classic 1k are 1024 bytes (#SIZE_1K
), with 16 sectors each of 4 blocks. <li>MIFARE Classic 2k are 2048 bytes (#SIZE_2K
), with 32 sectors each of 4 blocks. <li>MIFARE Classic 4k are 4096 bytes (#SIZE_4K
). The first 32 sectors contain 4 blocks and the last 8 sectors contain 16 blocks. </ul>
MIFARE Classic tags require authentication on a per-sector basis before any other I/O operations on that sector can be performed. There are two keys per sector, and ACL bits determine what I/O operations are allowed on that sector after authenticating with a key. #authenticateSectorWithKeyA
and #authenticateSectorWithKeyB
.
Three well-known authentication keys are defined in this class: #KEY_DEFAULT
, #KEY_MIFARE_APPLICATION_DIRECTORY
, #KEY_NFC_FORUM
. <ul> <li>#KEY_DEFAULT
is the default factory key for MIFARE Classic. <li>#KEY_MIFARE_APPLICATION_DIRECTORY
is the well-known key for MIFARE Classic cards that have been formatted according to the MIFARE Application Directory (MAD) specification. <li>#KEY_NFC_FORUM
is the well-known key for MIFARE Classic cards that have been formatted according to the NXP specification for NDEF on MIFARE Classic.
Implementation of this class on a Android NFC device is optional. If it is not implemented, then MifareClassic
will never be enumerated in Tag#getTechList
. If it is enumerated, then all MifareClassic
I/O operations will be supported, and Ndef#MIFARE_CLASSIC
NDEF tags will also be supported. In either case, NfcA
will also be enumerated on the tag, because all MIFARE Classic tags are also NfcA
.
<p class="note"><strong>Note:</strong> Methods that perform I/O operations require the android.Manifest.permission#NFC
permission.
Java documentation for android.nfc.tech.MifareClassic
.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Fields
BlockSize |
Size of a MIFARE Classic block (in bytes) |
Size1k |
Obsolete.
Tag contains 16 sectors, each with 4 blocks. |
Size2k |
Obsolete.
Tag contains 32 sectors, each with 4 blocks. |
Size4k |
Obsolete.
Tag contains 40 sectors. |
SizeMini |
Obsolete.
Tag contains 5 sectors, each with 4 blocks. |
TypeClassic |
Obsolete.
A MIFARE Classic tag |
TypePlus |
Obsolete.
A MIFARE Plus tag |
TypePro |
Obsolete.
A MIFARE Pro tag |
TypeUnknown |
Obsolete.
A MIFARE Classic compatible card of unknown type |
Properties
BlockCount |
Return the total number of MIFARE Classic blocks. |
Class |
Returns the runtime class of this |
Handle |
The handle to the underlying Android instance. (Inherited from Object) |
IsConnected |
Helper to indicate if I/O operations should be possible. |
JniIdentityHashCode | (Inherited from Object) |
JniPeerMembers | |
KeyDefault |
The default factory key. |
KeyMifareApplicationDirectory |
The well-known key for tags formatted according to the MIFARE Application Directory (MAD) specification. |
KeyNfcForum |
The well-known key for tags formatted according to the NDEF on MIFARE Classic specification. |
MaxTransceiveLength |
Return the maximum number of bytes that can be sent with |
PeerReference | (Inherited from Object) |
SectorCount |
Return the number of MIFARE Classic sectors. |
Size |
Return the size of the tag in bytes |
Tag |
Get the Tag object backing this ITagTechnology object. |
ThresholdClass | (Inherited from BasicTagTechnology) |
ThresholdType | (Inherited from BasicTagTechnology) |
Timeout |
Get the current |
Type |
Return the type of this MIFARE Classic compatible tag. |
Methods
AuthenticateSectorWithKeyA(Int32, Byte[]) |
Authenticate a sector with key A. |
AuthenticateSectorWithKeyB(Int32, Byte[]) |
Authenticate a sector with key B. |
BlockToSector(Int32) |
Return the sector that contains a given block. |
Clone() |
Creates and returns a copy of this object. (Inherited from Object) |
Close() |
Disable I/O operations to the tag from this ITagTechnology object, and release resources. |
Connect() |
Enable I/O operations to the tag from this ITagTechnology object. |
Decrement(Int32, Int32) |
Decrement a value block, storing the result in the temporary block on the tag. |
DecrementAsync(Int32, Int32) | |
Dispose() | (Inherited from Object) |
Dispose(Boolean) | (Inherited from Object) |
Equals(Object) |
Indicates whether some other object is "equal to" this one. (Inherited from Object) |
Get(Tag) |
Get an instance of |
GetBlockCountInSector(Int32) |
Return the number of blocks in the given sector. |
GetHashCode() |
Returns a hash code value for the object. (Inherited from Object) |
Increment(Int32, Int32) |
Increment a value block, storing the result in the temporary block on the tag. |
IncrementAsync(Int32, Int32) | |
JavaFinalize() |
Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. (Inherited from Object) |
Notify() |
Wakes up a single thread that is waiting on this object's monitor. (Inherited from Object) |
NotifyAll() |
Wakes up all threads that are waiting on this object's monitor. (Inherited from Object) |
ReadBlock(Int32) |
Read 16-byte block. |
ReadBlockAsync(Int32) | |
Restore(Int32) |
Copy from a value block to the temporary block. |
RestoreAsync(Int32) | |
SectorToBlock(Int32) |
Return the first block of a given sector. |
SetHandle(IntPtr, JniHandleOwnership) |
Sets the Handle property. (Inherited from Object) |
ToArray<T>() | (Inherited from Object) |
ToString() |
Returns a string representation of the object. (Inherited from Object) |
Transceive(Byte[]) |
Send raw NfcA data to a tag and receive the response. |
TransceiveAsync(Byte[]) | |
Transfer(Int32) |
Copy from the temporary block to a value block. |
TransferAsync(Int32) | |
UnregisterFromRuntime() | (Inherited from Object) |
Wait() |
Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>. (Inherited from Object) |
Wait(Int64, Int32) |
Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed. (Inherited from Object) |
Wait(Int64) |
Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed. (Inherited from Object) |
WriteBlock(Int32, Byte[]) |
Write 16-byte block. |
WriteBlockAsync(Int32, Byte[]) |
Explicit Interface Implementations
IJavaPeerable.Disposed() | (Inherited from Object) |
IJavaPeerable.DisposeUnlessReferenced() | (Inherited from Object) |
IJavaPeerable.Finalized() | (Inherited from Object) |
IJavaPeerable.JniManagedPeerState | (Inherited from Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) | (Inherited from Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) | (Inherited from Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) | (Inherited from Object) |
Extension Methods
ConnectAsync(ITagTechnology) | |
JavaCast<TResult>(IJavaObject) |
Performs an Android runtime-checked type conversion. |
JavaCast<TResult>(IJavaObject) | |
GetJniTypeName(IJavaPeerable) |