android硬件 NFC开发

来源:互联网 发布:淘宝助手数据包 编辑:程序博客网 时间:2024/05/11 06:07

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 ? "服务器已连接" : "服务器已断开");
            }


原创粉丝点击