Fixed NfcAdapter init and getTechnology().
- GetTechnology() used a binary search, but the array was linked to another array (extras) which was not sorted. So made it linear. - The tag technologies were instantiated with a null NfcAdapter. Change-Id: Iae15169a89155c3a5c9f81824f809d6010ebac01
This commit is contained in:
@@ -71,7 +71,6 @@ public class Tag implements Parcelable {
|
||||
}
|
||||
mId = id;
|
||||
mTechList = Arrays.copyOf(techList, techList.length);
|
||||
Arrays.sort(mTechList);
|
||||
// Ensure mTechExtras is as long as mTechList
|
||||
mTechExtras = Arrays.copyOf(techListExtras, techList.length);
|
||||
mServiceHandle = serviceHandle;
|
||||
@@ -122,13 +121,19 @@ public class Tag implements Parcelable {
|
||||
* Returns the technology, or null if not present
|
||||
*/
|
||||
public TagTechnology getTechnology(int tech) {
|
||||
int pos = Arrays.binarySearch(mTechList, tech);
|
||||
int pos = -1;
|
||||
for (int idx = 0; idx < mTechList.length; idx++) {
|
||||
if (mTechList[idx] == tech) {
|
||||
pos = idx;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (pos < 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Bundle extras = mTechExtras[pos];
|
||||
NfcAdapter adapter = null;
|
||||
NfcAdapter adapter = NfcAdapter.getDefaultAdapter();
|
||||
try {
|
||||
switch (tech) {
|
||||
case TagTechnology.NFC_A: {
|
||||
@@ -230,4 +235,4 @@ public class Tag implements Parcelable {
|
||||
return new Tag[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,11 @@ import android.util.Log;
|
||||
|
||||
mAdapter = adapter;
|
||||
mService = mAdapter.getService();
|
||||
mTagService = mService.getNfcTagInterface();
|
||||
try {
|
||||
mTagService = mService.getNfcTagInterface();
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
}
|
||||
mTag = tag;
|
||||
mSelectedTechnology = tech;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user