Android NFC开发日志TECH读
此代码简单实现了TECH标准NFC读操作
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext=this;//检查NFC权限NfcCheck();mPendingIntent=PendingIntent.getActivity(this,0,new Intent(this,getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),0);}private void enableForegroudDispatch(){if(mNfcAdapter!=null){mNfcAdapter.enableForegroundDispatch(this,mPendingIntent,null,null);}}private void disableForegroudDispatch(){if(mNfcAdapter!=null){mNfcAdapter.disableForegroundDispatch(this);}}@Overrideprotected void onResume() {super.onResume();enableForegroudDispatch();}@Overrideprotected void onPause() {super.onPause();disableForegroudDispatch();}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);resolveIntent(intent);}
上述代码是安卓生命周期重写的相关代码。
//检查NFC权限
private void NfcCheck(){mNfcAdapter=NfcAdapter.getDefaultAdapter(this);if(mNfcAdapter==null){Toast.makeText(mContext,"您的手机不支持NFC",Toast.LENGTH_LONG);finish();}else{if(!mNfcAdapter.isEnabled()){Intent setNfc = new Intent(Settings.ACTION_NFC_SETTINGS);startActivity(setNfc);return;}}}
//是否支持标签类型
private boolean supportedTechs(String[] techList) {boolean isSupport=false;for(String s:techList){if(s.equals("android.nfc.tech.MifareClassic")){isSupport=true;}else if(s.equals("android,nfc.tech.MifareUltralight")){isSupport=true;}else if(s.equals("android,nfc.tech.Ndef")){isSupport=true;}else if(s.equals("android,nfc.tech.IsoDep")){isSupport=true;}else if(s.equals("android,nfc.tech.NfcA")){isSupport=true;}else{isSupport=true;}}return isSupport;}
//对标签进行处理
public void resolveIntent(Intent intent){String action = intent.getAction();Tag tag=intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);Boolean isAuth=false;if(supportedTechs(tag.getTechList())){MifareClassic mfc=MifareClassic.get(tag);if(mfc!=null){try {mfc.connect();int nSecont =mfc.getSectorCount();for(int i=0;i<nSecont;i++){if(mfc.authenticateSectorWithKeyA(i,MifareClassic.KEY_DEFAULT)){isAuth=true;Log.e("扇区号",":"+i);}else{isAuth=false;Log.e("密码错误","密码错误");}if(isAuth){int nBlock=mfc.getBlockCountInSector(i);StringBuilder data1=new StringBuilder();for(int j=0;j<nBlock;j++){byte[] data=mfc.readBlock(j);data1.append(data);Log.i("SkySeraph","data"+j+"="+data);}payloadTV.setText(data1);}}} catch (IOException e) {e.printStackTrace();}}else{Log.e("SkySeraph","不是MifareClassic");}}}
以上代码运行时没有问题,但是加入到我其他的项目中就会出现NFC标签重复扫描问题,只要标签不离开手机,手机就会一直响(扫描),后面继续寻找问题。
Android NFC开发日志TECH读相关推荐
- android nfc ndef mifareclassic,Android NFC开发-实践篇
Android NFC开发-实践篇 https://blog..net/_GYG/article/details/72899417 在Android NFC开发-理论篇中,我们了解了在Android中 ...
- Android NFC开发-实践篇
Android NFC开发-实践篇 在Android NFC开发-理论篇中,我们了解了在Android中开发NFC的一些理论知识,这篇我们继续应用我们上一篇学到的知识,实现对NDEF格式标签和Mifa ...
- Android NFC开发-理论篇
Android NFC开发-理论篇 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/CSDN_GYG/article/details/72884849 ...
- Android NFC开发详细总结
Android NFC开发详细总结 Near Field Communication (NFC) 为一短距离无线通信技术,通常有效通讯距离为4厘米以内.NFC工作频率为13.65 兆赫兹,通信速率为1 ...
- Android NFC开发概述
NFC手机相比普通手机来说,有以下3个附加功能: 1.可以当成POS机来用,也就是"读取"模式 2.可以当成一张卡来刷,也就是NFC技术最核心的移动支付功能 3.可以像蓝牙 ...
- android NFC 开发学习笔记(1)
由于工作需求,最近在研究android nfc开发,借鉴了很对大神的文章在此记录自己的学习过程: 大家学习android开发建议首选android开发文档,该文档在你下载的sdk中,路径:/sdk/d ...
- Android NFC开发实战详解
Android NFC开发实战详解 Android开发实战详解NFC国内第一本AndroidNFC开发书籍带你开启AndroidNFC开发的神秘之旅大综合案例帮助读者快速进入实战角色:WiFi快速连接 ...
- 《Android NFC开发实战详解》——6.4节Android NFC P2P开发进阶
本节书摘来自异步社区<Android NFC开发实战详解>一书中的第6章,第6.4节Android NFC P2P开发进阶,作者 赵波,更多章节内容可以访问云栖社区"异步社区&q ...
- Android NFC开发实战详解PDF
最近找书做毕设,有的还要加会员注册什么的,下面是<Android NFC开发详解>和<第一行代码>,自取,不用谢,来波点赞呗 链接:https://pan.baidu.com/ ...
最新文章
- DCM、PLL、PMCD、MMCM的区别与联系?
- 裸辞,迎接2019年的春天
- Dart的HTTP请求和响应(1)
- mysql 参数化 c_MySQL(16):参数化、封装
- netbeans代码提示_NetBeans可用性提示
- MySQL高级知识(十三)——表锁
- Word转换pdf文件之好用的pdf虚拟打印机
- Vivado 查看HLS生成IP的资源和最高频率
- 英语应征计算机作文,高三英语作文 应征英语话剧社的邮件English Drama Club
- android模拟触控power键
- JAVA毕业设计计算机类专业考研交流学习平台计算机源码+lw文档+系统+调试部署+数据库
- Java-- Maps
- 词干抽取java实现_LinkedIn文本分析平台:主题挖掘的四大技术步骤
- 把java项目打包成安装包
- 前端开发小白,如何找一个师傅?
- 一项新的前瞻性研究发现,Masimo SpHb®无创连续血红蛋白监测有助于为接受大手术的患者提供有效血液管理
- 快速上手!java淘宝客(springboot)
- 小白linux bash 学习二 shell Script
- ktv无线服务器,KTV,酒店无线wifi上网无线AP服务器
- MATLAB 2008a 激活成功后还要激活(许可证过期)