下面列出了怎么用android.nfc.NfcAdapter.ReaderCallback的API类实例代码及写法,或者点击链接到github查看源代码。
public void enableReaderMode(Activity activity, ReaderCallback callback, int flags,
Bundle extras) {
boolean isResumed;
Binder token;
synchronized (NfcActivityManager.this) {
NfcActivityState state = getActivityState(activity);
state.readerCallback = callback;
state.readerModeFlags = flags;
state.readerModeExtras = extras;
token = state.token;
isResumed = state.resumed;
}
if (isResumed) {
setReaderMode(token, flags, extras);
}
}
@Override
public void onTagDiscovered(Tag tag) throws RemoteException {
NfcAdapter.ReaderCallback callback;
synchronized (NfcActivityManager.this) {
NfcActivityState state = findResumedActivityState();
if (state == null) return;
callback = state.readerCallback;
}
// Make callback without lock
if (callback != null) {
callback.onTagDiscovered(tag);
}
}
@SuppressLint("NewApi")
private void setReaderMode(boolean enable, int delay) {
if (nfcAdapter == null || !hasHCE())
return;
if (!enable) {
nfcAdapter.disableReaderMode(activity);
return;
}
Bundle opts = new Bundle();
opts.putInt(NfcAdapter.EXTRA_READER_PRESENCE_CHECK_DELAY, 5000);
int flags = NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK;
flags |= NfcAdapter.FLAG_READER_NFC_A;
// For the 'READ BINARY' problem of Braodcom's NFC stack.
// Only works on Android 4.4+
nfcAdapter.enableReaderMode(activity, new ReaderCallback() {
@Override
public void onTagDiscovered(Tag tag) {
Intent i = new Intent().putExtra(EXTRA_TAG, tag);
tagListener.onNewTagIntent(i);
}
}, flags, opts);
}