左晓为主开发手持机充值管理机
zuoxiao
2023-11-22 1ffa3cb19f95855d44fbc9485f4eb3286b12e359
app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java
@@ -9,8 +9,16 @@
import android.content.Context;
import android.content.Intent;
import android.nfc.NfcAdapter;
import android.os.Handler;
import android.os.Message;
import com.dayu.recharge.utils.ToastUtil;
import com.dayu.recharge.card.UserCard;
import com.dayu.recharge.tools.NfcReadHelper;
import com.dayu.recharge.utils.TipUtil;
import com.tencent.bugly.crashreport.CrashReport;
import java.util.List;
import java.util.Map;
/**
 * Author:Created by Ricky on 2017/8/25.
@@ -22,8 +30,27 @@
 * 将NFC标签卡靠近手机后部(NFC标签卡可网上自行购买)
 */
public class BaseNfcActivity extends BaseActivity {
    /**
     * 该卡已写入用户信息
     */
    public final static int HAS_USER = 1;
    /**
     * 该卡未写入用户信息
     */
    public final static int NO_USER = 2;
    /**
     * 充值
     */
    public final static int RECHARGE = 3;
    public final static int ERROR = -1;
    protected NfcAdapter mNfcAdapter;
    private PendingIntent mPendingIntent;
    volatile UserCard userCard;
    Handler handler;
    /**
     * onCreat->onStart->onResume->onPause->onStop->onDestroy
@@ -71,13 +98,51 @@
     */
    protected Boolean ifNFCUse(Context context) {
        if (mNfcAdapter == null) {
            ToastUtil.show(context, "设备不支持NFC!");
            TipUtil.show(context, "设备不支持NFC!");
            return false;
        }
        if (mNfcAdapter != null && !mNfcAdapter.isEnabled()) {
            ToastUtil.show(context, "请在系统设置中先启用NFC功能!");
            TipUtil.show(context, "请在系统设置中先启用NFC功能!");
            return false;
        }
        return true;
    }
    /**
     * 读取全部数据
     */
    public void readAllData(Intent intent) {
        try {
            NfcReadHelper.getInstence(intent)
                    .getAllData(new NfcReadHelper.NFCCallListback() {
                        @Override
                        public void callBack(Map<String, List<byte[]>> data) {
                            Message message = new Message();
//                           获取1扇区数据
                            List<byte[]> oneSector = data.get("1");
                            if (oneSector != null && oneSector.size() > 0) {
                                userCard = UserCard.getBean(oneSector);
                                message.what = RECHARGE;
                            } else {
                                message.what = ERROR;
                            }
                            if (handler != null) {
                                handler.sendMessage(message);
                            }
                        }
                        @Override
                        public void error(int code) {
                            if (handler != null) {
                                Message message = new Message();
                                message.what = ERROR;
                                handler.sendMessage(message);
                            }
                        }
                    });
        } catch (Exception e) {
            e.printStackTrace();
            CrashReport.postCatchedException(e);
        }
    }
}