From 8e3719a37a6be0c9e244a0160b5f2f3331ca3122 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 30 十一月 2023 15:11:38 +0800 Subject: [PATCH] 支持虚拟卡读取 --- app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java | 95 ++++++++++++++++++++++++++++++++--------------- 1 files changed, 65 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java b/app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java index 5b1e40b..84768de 100644 --- a/app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java @@ -5,12 +5,29 @@ */ +import android.app.Activity; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.nfc.NdefMessage; import android.nfc.NfcAdapter; +import android.nfc.NfcEvent; +import android.nfc.Tag; +import android.nfc.cardemulation.CardEmulation; +import android.os.Bundle; +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.LoyaltyCardReader; +import com.dayu.recharge.tools.NFCUtil; +import com.dayu.recharge.tools.NfcReadHelper; +import com.dayu.recharge.utils.LogUtil; +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. @@ -21,21 +38,51 @@ * 鍦╫nNewIntent鏂规硶涓墽琛宨ntent浼犻�掕繃鏉ョ殑Tag鏁版嵁 * 灏哊FC鏍囩鍗¢潬杩戞墜鏈哄悗閮紙NFC鏍囩鍗″彲缃戜笂鑷璐拱锛� */ -public class BaseNfcActivity extends BaseActivity { - protected NfcAdapter mNfcAdapter; - private PendingIntent mPendingIntent; +public class BaseNfcActivity extends BaseActivity implements LoyaltyCardReader.AccountCallback { + + /** + * 璇ュ崱宸插啓鍏ョ敤鎴蜂俊鎭� + */ + 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; + + public LoyaltyCardReader mLoyaltyCardReader; + + NFCUtil nfcUtil; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + nfcUtil = NFCUtil.getInstance(); + nfcUtil.setAccountCallback(this); + } /** * onCreat->onStart->onResume->onPause->onStop->onDestroy * 鍚姩Activity锛岀晫闈㈠彲瑙佹椂. */ + + @Override protected void onStart() { super.onStart(); //姝ゅadapter闇�瑕侀噸鏂拌幏鍙栵紝鍚﹀垯鏃犳硶鑾峰彇message - mNfcAdapter = NfcAdapter.getDefaultAdapter(this); - //涓�鏃︽埅鑾種FC娑堟伅锛屽氨浼氶�氳繃PendingIntent璋冪敤绐楀彛 - mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()), 0); + nfcUtil.onStartNfcAdapter(this); } @@ -45,12 +92,7 @@ @Override public void onResume() { super.onResume(); - if (!ifNFCUse(this)) { - this.finish(); - } - //璁剧疆澶勭悊浼樹簬鎵�鏈夊叾浠朜FC鐨勫鐞� - if (mNfcAdapter != null) - mNfcAdapter.enableForegroundDispatch(this, mPendingIntent, null, null); + nfcUtil.onResumeNfcAdapter(this); } /** @@ -60,24 +102,17 @@ public void onPause() { super.onPause(); //鎭㈠榛樿鐘舵�� - if (mNfcAdapter != null) - mNfcAdapter.disableForegroundDispatch(this); + nfcUtil.onPauseNfcAdapter(this); } - /** - * 妫�娴嬪伐浣�,鍒ゆ柇璁惧鐨凬FC鏀寔鎯呭喌 - * - * @return - */ - protected Boolean ifNFCUse(Context context) { - if (mNfcAdapter == null) { - ToastUtil.show(context, "璁惧涓嶆敮鎸丯FC锛�"); - return false; - } - if (mNfcAdapter != null && !mNfcAdapter.isEnabled()) { - ToastUtil.show(context, "璇峰湪绯荤粺璁剧疆涓厛鍚敤NFC鍔熻兘锛�"); - return false; - } - return true; + + @Override + public void physicalCardDoing(Tag tag) { + + } + + @Override + public void virtualCardDoing(Tag tag) { + } } -- Gitblit v1.8.0