Java 类android.nfc.tech.NfcA 实例源码
项目:iBeaconReader
文件:MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pendingIntent = PendingIntent.getActivity(
this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter mifare = new IntentFilter((NfcAdapter.ACTION_TECH_DISCOVERED));
filters = new IntentFilter[] { mifare };
techs = new String[][] { new String[] {NfcA.class.getName() } };
if(adapter==null)
{
adapter = NfcAdapter.getDefaultAdapter(this);
}
imageView = (ImageView) findViewById(R.id.imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Animation rotation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotation);
imageView.startAnimation(rotation);
}
});
}
项目:amiibo
文件:AmiiboCommands.java
private void setProt(NfcA tag, boolean prot, int authlim) {
byte[] response = new byte[0];
try {
response = tag.transceive(new byte[]{
(byte) Constants.COMMAND_READ, // COMMAND_READ
(byte) 0x84 // page address
});
if ((response != null)) { // read always returns 4 pages
byte[] write = new byte[]{
(byte) 0xA2, // COMMAND_WRITE
(byte) 38, // page address
(byte) ((response[0] & 0x078) | (prot ? 0x080 : 0x000) | (authlim & 0x007)),
response[1], response[2], response[3] // keep old value for bytes 1-3, you could also simply set them to 0 as they are currently RFU and must always be written as 0 (response[1], response[2], response[3] will contain 0 too as they contain the read RFU value)
};
response = tag.transceive(write);
}
} catch (IOException e) {
e.printStackTrace();
}
}
项目:amiibo
文件:AmiiboCommands.java
private void setAuth0(NfcA tag, int auth0) {
byte[] response = new byte[0];
try {
response = tag.transceive(new byte[]{
(byte) Constants.COMMAND_READ, // COMMAND_READ
(byte) 0x83 // page address
});
if ((response != null) && (response.length >= 16)) { // read always returns 4 pages
byte[] write = new byte[]{
(byte) 0xA2, // COMMAND_WRITE
(byte) 37, // page address
response[0], // keep old value for byte 0
response[1], // keep old value for byte 1
response[2], // keep old value for byte 2
(byte) (auth0 & 0x0ff)
};
response = tag.transceive(write);
}
} catch (IOException e) {
e.printStackTrace();
}
}
项目:amiibo
文件:AmiiboIO.java
public static boolean authenticateAmiibo(NfcA tag, byte[] uid) {
byte[] password = AmiiboMethods.keygen(uid);
byte[] auth = new byte[]{
(byte) 0x1B,
password[0],
password[1],
password[2],
password[3]
};
byte[] response = new byte[0];
try {
response = tag.transceive(auth);
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
项目:amiibo
文件:MainActivity.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
protected void onNewIntent(Intent paramIntent) {
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(paramIntent.getAction())) {
Tag tag = paramIntent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
byte[] uid = paramIntent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
NfcA ntag215 = NfcA.get(tag);
if (_stack_controller != null) {
PopableFragment popable = _stack_controller.head();
if (popable != null) {
if (popable instanceof ScanFragment) {
((ScanFragment) popable).tryReadingAmiibo(ntag215, uid);
} else if (popable instanceof ScanToWriteFragment) {
((ScanToWriteFragment) popable).tryWriteAmiibo(ntag215, uid);
}
}
}
} else {
setIntent(paramIntent);
}
}
项目:Check-Paypass-Random-Number
文件:MainActivity.java
public static void setupForegroundDispatch(final Activity activity, NfcAdapter adapter) {
final Intent intent = new Intent(activity.getApplicationContext(), activity.getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
final PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, intent, 0);
//IntentFilter = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
IntentFilter[] filters = new IntentFilter[1];
String[][] techList = new String[][]{new String[] { NfcA.class.getName()}, new String[] {NfcB.class.getName()}};
// Notice that this is the same filter as in our manifest.
filters[0] = new IntentFilter();
filters[0].addAction(NfcAdapter.ACTION_TAG_DISCOVERED);
filters[0].addCategory(Intent.CATEGORY_DEFAULT);
/*
try {
filters[0].addDataType(MIME_TEXT_PLAIN);
} catch (MalformedMimeTypeException e) {
throw new RuntimeException("Check your mime type.");
}
*/
adapter.enableForegroundDispatch(activity, pendingIntent, filters, techList);
}
项目:BitcoinCardTerminal
文件:MainActivity.java
private void ListenForNFCIntent(){
mAdapter = NfcAdapter.getDefaultAdapter(this);
mPendingIntent = PendingIntent.getActivity(
this,
0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
0);
IntentFilter filter = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
filter.addDataScheme("vnd.android.nfc");
techListsArray = new String[][] { new String[] { NfcA.class.getName() } };
Intent launchIntent = getIntent();
if(launchIntent != null && launchIntent.getAction().equals(NfcAdapter.ACTION_TECH_DISCOVERED))
{
onNewIntent(launchIntent);
}
}
项目:Studentenportal
文件:NfcLogin.java
public void onCreate(Bundle savedInstanceState) {
// setup NFC
// http://stackoverflow.com/questions/5685946/nfc-broadcastreceiver-problem
// http://stackoverflow.com/questions/5685770/nfc-intent-get-info-from-the-tag
// NOTE on devices without NFC, this method call returns NULL
mNfcAdapter = NfcAdapter.getDefaultAdapter(mActivity);
mNfcPendingIntent = PendingIntent.getActivity(mActivity, 0, new Intent(mActivity, mActivity.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter tech = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
try {
tech.addDataType("*/*");
} catch (MalformedMimeTypeException e) {
throw new RuntimeException("fail", e);
}
mNfcFilters = new IntentFilter[] { tech };
// Mifare Classic are also NfcA, but in contrary to NfcA, MifareClassic support is optional
// http://developer.android.com/reference/android/nfc/tech/MifareClassic.html
mNfcTechLists = new String[][] { new String[] { NfcA.class.getName() } };
}
项目:CryptoNFC
文件:MainActivity.java
private void setForegroundListener() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean handleFormatable = preferences.getBoolean("format_ndef_formatable_tags", false);
pi = PendingIntent.getActivity(this, 0, new Intent(this,getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
intentFiltersArray = null;
if(handleFormatable)
techList = new String[][]{ new String[]{ NfcA.class.getName(),Ndef.class.getName()},
new String[]{ NfcB.class.getName(),Ndef.class.getName()},
new String[]{ NfcF.class.getName(),Ndef.class.getName()},
new String[]{ NfcV.class.getName(),Ndef.class.getName()},
new String[]{ NfcA.class.getName(),NdefFormatable.class.getName()},
new String[]{ NfcB.class.getName(),NdefFormatable.class.getName()},
new String[]{ NfcF.class.getName(),NdefFormatable.class.getName()},
new String[]{ NfcV.class.getName(),NdefFormatable.class.getName()}};
else
techList = new String[][]{ new String[]{ NfcA.class.getName(),Ndef.class.getName()},
new String[]{ NfcB.class.getName(),Ndef.class.getName()},
new String[]{ NfcF.class.getName(),Ndef.class.getName()},
new String[]{ NfcV.class.getName(),Ndef.class.getName()}};
}
项目:cloneuid
文件:MifareListenerUID.java
@Override
public void onTagDiscovered(Tag tag) {
remoteTag = NfcA.get(tag);
try {
String str = readUID();
LocalBroadcastManager.getInstance(mContext).sendBroadcast(new Intent("tag-detected"));
} catch (Exception e) {
LocalBroadcastManager.getInstance(mContext).sendBroadcast(new Intent("error"));
}
}
项目:MyKentKart
文件:KentKartInformationActivity.java
@Override
public void onResume() {
super.onResume();
if (nfcAdapter != null) {
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(getApplicationContext(), KentKartInformationActivity.class).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter intentFilter = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
nfcAdapter.enableForegroundDispatch(this, pendingIntent, new IntentFilter[]{intentFilter}, new String[][]{new String[]{NfcA.class.getName()}});
}
}
项目:amiibo
文件:AmiiboCommands.java
private void setLock(NfcA tag, boolean lock_128_129,
boolean lock_112_127,
boolean lock_96_111,
boolean lock_80_95,
boolean lock_64_79,
boolean lock_48_63,
boolean lock_32_47,
boolean lock_16_31) {
byte[] response = new byte[0];
try {
response = tag.transceive(new byte[]{
(byte) Constants.COMMAND_READ, // COMMAND_READ
(byte) 0x82 // page address
});
byte lock = (byte) ((lock_128_129 ? 1 << 7 : 0)
+ (lock_112_127 ? 1 << 6 : 0)
+ (lock_96_111 ? 1 << 5 : 0)
+ (lock_80_95 ? 1 << 4 : 0)
+ (lock_64_79 ? 1 << 3 : 0)
+ (lock_48_63 ? 1 << 2 : 0)
+ (lock_32_47 ? 1 << 1 : 0)
+ (lock_16_31 ? 1 : 0));
if ((response != null)) { // read always returns 4 pages
byte[] write = new byte[]{
(byte) 0xA2, // COMMAND_WRITE
(byte) 38, // page address
lock,
response[1], response[2], response[3] // keep old value for bytes 1-3, you could also simply set them to 0 as they are currently RFU and must always be written as 0 (response[1], response[2], response[3] will contain 0 too as they contain the read RFU value)
};
response = tag.transceive(write);
}
} catch (IOException e) {
e.printStackTrace();
}
}
项目:RejsekortReader
文件:DumpRaw.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dump_raw);
// Show the Up button in the action bar.
setupActionBar();
mAdapter = NfcAdapter.getDefaultAdapter(this);
mPendingIntent = PendingIntent.getActivity(
this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
// Setup an intent filter for all MIME based dispatches
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
try {
ndef.addDataType("*/*");
} catch (MalformedMimeTypeException e) {
throw new RuntimeException("fail", e);
}
IntentFilter td = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
mFilters = new IntentFilter[] { ndef, td };
// Setup a tech list for all NfcF tags
mTechLists = new String[][] {
new String[] {
/*NfcV.class.getName(),
NfcF.class.getName(),*/
NfcA.class.getName(),
//NfcB.class.getName()
}
};
txtRaw = (TextView) findViewById(R.id.txtRaw);
}
项目:MyKentKart
文件:KentKartInformationActivity.java
@Override
public void onResume() {
super.onResume();
if (nfcAdapter != null) {
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(getApplicationContext(), KentKartInformationActivity.class).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter intentFilter = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
nfcAdapter.enableForegroundDispatch(this, pendingIntent, new IntentFilter[]{intentFilter}, new String[][]{new String[]{NfcA.class.getName()}});
}
}
项目:CampusCardReader
文件:MainActivity.java
private void setUpNfcStuff(){
// intercept all NFC related Intents and redirect them to this activity while this activity is activated and on the front
// this is called the "foreground dispatch"
mAdapter = NfcAdapter.getDefaultAdapter(this);
mPendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),0);
IntentFilter nfcTech = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
mFilters = new IntentFilter[]{nfcTech};
mTechLists = new String[][] {
new String[] { IsoDep.class.getName() },
{NfcA.class.getName()}
};
}
项目:maxs
文件:NfcAHandler.java
@Override
public Element handle(Tag tag) {
NfcA nfca = NfcA.get(tag);
List<AbstractElement> elements = new LinkedList<AbstractElement>();
elements.add(TextElement.keyValueFrom("sak", "SAK/SEL_RES", Short.toString(nfca.getSak())));
elements.add(TextElement.keyValueFrom("atqa", "ATQA/SENS_RES",
SharedStringUtil.byteToHexString(nfca.getAtqa())));
Element element = new Element("nfca_tech", "NFC-A (ISO 14443-3A) Technology Information");
element.addChildElements(elements);
return element;
}
项目:smartrac-sdk-java-android-nfc
文件:NfcNtag.java
public NfcNtag(Tag tag) {
nfca = NfcA.get(tag);
maxTransceiveLength = nfca.getMaxTransceiveLength();
}
项目:kitcard-reader
文件:MifareUtils.java
/**
* Repairs the broken tag on HTC devices running Android 5.x
* <p/>
* "It seems, the reason of this bug in TechExtras of NfcA is null. However, TechList contains MifareClassic." -bildin
* For more information please refer to https://github.com/ikarus23/MifareClassicTool/issues/52#issuecomment-103797115
* <p/>
* Code source: https://github.com/ikarus23/MifareClassicTool/issues/52#issuecomment-104277445
*
* @param oTag The broken tag
* @return The fixed tag
*/
public static Tag repairTag(Tag oTag) {
if (oTag == null)
return null;
String[] sTechList = oTag.getTechList();
Parcel oParcel, nParcel;
oParcel = Parcel.obtain();
oTag.writeToParcel(oParcel, 0);
oParcel.setDataPosition(0);
int len = oParcel.readInt();
byte[] id = null;
if (len >= 0) {
id = new byte[len];
oParcel.readByteArray(id);
}
int[] oTechList = new int[oParcel.readInt()];
oParcel.readIntArray(oTechList);
Bundle[] oTechExtras = oParcel.createTypedArray(Bundle.CREATOR);
int serviceHandle = oParcel.readInt();
int isMock = oParcel.readInt();
IBinder tagService;
if (isMock == 0) {
tagService = oParcel.readStrongBinder();
} else {
tagService = null;
}
oParcel.recycle();
int nfca_idx = -1;
int mc_idx = -1;
for (int idx = 0; idx < sTechList.length; idx++) {
if (sTechList[idx].equals(NfcA.class.getName())) {
nfca_idx = idx;
} else if (sTechList[idx].equals(MifareClassic.class.getName())) {
mc_idx = idx;
}
}
if (nfca_idx >= 0 && mc_idx >= 0 && oTechExtras[mc_idx] == null) {
oTechExtras[mc_idx] = oTechExtras[nfca_idx];
} else {
return oTag;
}
nParcel = Parcel.obtain();
nParcel.writeInt(id.length);
nParcel.writeByteArray(id);
nParcel.writeInt(oTechList.length);
nParcel.writeIntArray(oTechList);
nParcel.writeTypedArray(oTechExtras, 0);
nParcel.writeInt(serviceHandle);
nParcel.writeInt(isMock);
if (isMock == 0) {
nParcel.writeStrongBinder(tagService);
}
nParcel.setDataPosition(0);
Tag nTag = Tag.CREATOR.createFromParcel(nParcel);
nParcel.recycle();
return nTag;
}