1 判断NFC可用
public boolean checkNfcEnable(Context mContext) {
mAdapter = NfcAdapter.getDefaultAdapter(mContext);
if (mAdapter == null || !mAdapter.isEnabled()) {
return false;
}
return true;
}
开启NFC(NFcB标签)
private NfcAdapter mAdapter;
private PendingIntent mPendingIntent;
private NfcB mTag;
private IntentFilter tech = new IntentFilter(
NfcAdapter.ACTION_TECH_DISCOVERED);
private IntentFilter[] mFilters = new IntentFilter[] { tech, };
private String[][] mTechLists = new String[][] { new String[] { NfcB.class
.getName(), }, };
mAdapter = NfcAdapter.getDefaultAdapter(NFCReadActivity.this);
mPendingIntent = PendingIntent.getActivity(context, 0, new Intent(
context, context.getClass())
.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); // 不懂 ????
mAdapter.enableForegroundDispatch((Activity) context,
mPendingIntent, mFilters, mTechLists);
NFC触发
@Override
protected void onNewIntent(final Intent intent) {// 刷卡触发
// TODO Auto-generated method stub
super.onNewIntent(intent);
clear();
if (flag == 0) {
// 主线程同步调用
IDCardItem item = mNfcReadClient.readCardWithIntent(intent);
updateResult(item);
} else if (flag == 1) {
// 子线程同步调用
async = new ReadAsync();
async.execute(intent);
}
}
关闭NFC
public boolean disableDispatch() {
boolean flag = checkNfcEnable(context);
if (flag)
mAdapter.disableForegroundDispatch((Activity) context);
readFlag = false;
// clientSocket.close();
return flag;
}
2 入参不同 函数即不同
public void send(String data) {
sendFrame(mParser.frame(data)); // // 不懂
}
public void send(byte[] data) {
sendFrame(mParser.frame(data));
}
public byte[] frame(String data) {
return frame(data, OP_TEXT, -1);
}
public byte[] frame(byte[] data) {
return frame(data, OP_BINARY, -1);
}
3 多用接口
public interface OnClientCallback {
// 回调接口
// public void readResult(IDCardItem item);
public void preExcute(long time);
public void updateProgress(int progress);
public void onConnectChange(int code);
// public void readLog(String str);
}
把外边实现的接口传进来,在里面调用
// 回调接口实例
protected OnClientCallback clientCallback;
public void setClientCallback(OnClientCallback clientCallback) {
this.clientCallback = clientCallback;
}
if (clientCallback != null)
clientCallback.onConnectChange(1);
真正要实现的目的,结果是在外边
if (clientCallback != null)
clientCallback.onConnectChange(1);
if (msg.what == 400) {
print(msg.arg1 == 1 ? "服务器已连接" : "服务器已断开");
}