android nfc开发 简书,Android-NFC基础
弄懂一个东西,必须知根知底,需知其然,知其所以然。
字面理解
NFC全称:Near Field Communication(近距离无线通讯技术)。因此它的使用条件仅限于近场感应,终端与标签感应距离超出限制将会导致无法使用。
应用场所
现在的公交卡信息读取、充值,SmartTag等都是对NFC的应用。目前在Android开发都是用手机去感应NFCTag,显示NFCTag承载的信息或者写入新的内容,当然有的只是获取NFCTag中的ID。
前提条件硬件支持:Android手机硬件支持(一般NFC开关在设置里面)
权限申请:
android:required="true"/>
开始Android手机感应后,系统会发出标签调度系统,一般有三种Intent对象,由高到低为:
ACTION_NDEF_DISCOVERED(启动包含NDEF负载和已知类型的标签的Action类)
ACTION_TECH_DISCOVERED(已知类型的标签的Action类,没有包含NDEF)
ACTION_TAB_DISCOVERED
截图1
过程处理
在APP配置文件中对应的Activity筛选对应的Aciton。比如笔者的应用
截图2
其中非常关键的一个文件:android:resource="@xml/nfc_tech_filter"。这里面配置了NFCTagActivity响应的Tech-List。此配置错误的话Activity将不做任何响应。
截图3:/res/xml/nfc_tech_fiter.xml
再不知道的自己的NFCTag标签类型情况下,开发者可以用这个全类型,弊端是你的APP会响应其他NFCTag,怎么避免这个问题呢?我们可以在开发中测试出自己的NFCTag具体是什么标签类型,先把全类型标签应用到你的APP中,然后Intent获取,打印自己的TechList,最后修改自己的xml,只响应自己的标签类型。代码如下:Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
String[ ] techList=tag.getTechList();
for(String tech:techList) {
Log.d("Tech",tech);
}
NFCTagActivity部分代码;
截图4
问题总结
1.为什么选择用ACTION_TECH_DISCOVERED?应用更广泛,感应的NFC功能齐全,足以适应当前市场上的NFCTag,且NDEF只能用于NDEF文本格式标签。反编译支付宝,微信能发现用的都是ACTION_TECH_DISCOVERED。
2.如何做到只能让自己应用感应识别自己的标签?因为很多应用用的都是全类型标签文配置,在Android手机感应NFCTag后,Android系统会弹出选择框让用户选择哪个应用来响应此标签,所以在后台运行时我们无法做到这点,只有应用运行在前台时,我们才能做到只让本应用感应,代码如下:
截图5
3.如何在代码中提示用户,手机不支持NFC功能或者NFC未打开?
截图5
android nfc开发 简书,Android-NFC基础相关推荐
- android自动登录简书,Android开发之简单登录界面
用户界面基础 Android系统的四大组件分别是活动(Activity).服务(Service).广播接收器(Broadcast Receiver).内容提供器(Content Provider). ...
- android 读写文件 简书,Android 中的文件操作
Android 文件操作 概述 Android 中的文件操作主要涉及到两个部分,一个是内部存储的读写,一个是外部存储的读写两者的主要区别如下表: 内部存储 外部存储 始终可用 它并非始终可用,因为用户 ...
- android物联网开发简书,Arduino物联网开发实例教程
## blinker解决方案 blinker是一套跨硬件.跨平台的物联网解决方案,提供APP端.设备端.服务器端支持,使用公有云服务进行数据传输.可用于智能家居.数据监测等领域,可以帮助用户更好更快地 ...
- android四大组件 简书,android四大组件
android有四大组件,分别是Activity, Service(服务),Content Provider(内容提供者),BoadcastReceiver广播接收器. Activity 一个Acti ...
- android波浪动画简书,Android贝塞尔曲线————波浪效果(大波浪)
Hello大家好,很高兴又一次与大家见面,今天是农历丁酉鸡年(大年初四),现在跟大家拜年有点晚,算是拜晚年,祝大家晚年幸福. 这么快大伙都到了晚年了,Android贝塞尔曲线我也准备以一个大波浪来结束 ...
- android 截屏 简书,Android 内置应用截屏方法
Android 中,内置应用如何更好的截屏 在开发系统应用的时候,有时候需要用到截屏,因为 View.getDrawingCache() 截不到状态栏,所以这个方案不理想 这有一个更好的方案,就是用 ...
- android自动登录简书,Android 自动登录——持久化Cookie
背景 在使用鸿洋大神的玩Android网站开放的api开发android app时,使用Retrofit请求登录api,需要保存Cookie以备其他需要登陆后才能操作的api使用. 自定义拦截器实现持 ...
- android运行过程简书,Android系统的启动流程
Android系统有哪些进程 在Linux系统启动时,会读取init.rc,里面配置了一些需要启动的进程.注意:SystemServer进程不在init.rc里,因为SystemServer进程是由z ...
- android 辅助服务 简书,Android AccessibilityService使用
测试demo主要使用了Android 的无障碍辅助服务(AccessibilityService),主要注意是 1. 开启服务,绑定目标app的监听(demo中根据包命绑定了体积计算的app),需要在 ...
最新文章
- activiti入门2流程引擎API和服务基础设施
- 对某机构为“转移内部矛盾”而嫁祸于我们的事件之真相大起底
- mysql授权远程访问
- linux下mysql主从不同步
- linux备份根目录与还原脚本,Shell脚本备份和还原MBR(主引导记录)
- java权限管理与用户角色权限设计
- 国内先进的光电转换器件设计和单光子检测成像技术 1DTof 3DTof 激光测距传感器
- 程序员坐牢了,会被安排去写代码吗?
- Web前端开发(一)--html基本结构,基本标签
- php 表情,php emoji表情处理
- 《进击的虫师》爬取豆瓣电影海报Top250(2020年10月23日更新)
- 阿布扎比有一个“智慧港口”
- 华为首部鸿蒙,华为首部鸿蒙手机P50来了!顶级拍照再升级,麒麟芯片或绝唱
- ROSGazebo自定义多旋翼无人机仿真——环境搭建和模型建立
- mysql计算三角形斜边_MySQL 5.7新特性之Generated Column(函数索引)
- django orm原理_django 动态创建一个模型的多个table name, 并通过 Django ORM 操作
- 项目设计Andriod部分-做一个学习类App-1
- 求生之路服务器未响应,求生之路2玩起来速度快,但是过几秒后,就卡住显示未响应,这是为什么...
- windows +linux(ubuntu) 2020.7 双系统最新安装心得
- NOIP 2011 聪明的质检员
热门文章
- 哪些期货公司开户手续费更低?
- 一分钟拍手游戏规则_我如何分析一百万篇中型文章,以了解获得多少拍手好故事...
- 上海科技大学和南方科技大学计算机,你相信吗?这几所大学,20年后不比北大清华差...
- 使用IDEA从零开始新建一个springboot项目
- 基于数字神经系统的绩效考核
- django+haystack+ElasticsearchSearch
- 服务器部署系统启动失败,安装程序配置服务器失败Microsoft SQL Server Desktop Engine...
- 解忧杂货店(博客系统)的项目测试——黑盒测试
- 数据恢复顾问(DRA)
- 绝地求生服务器在线人数,《绝地求生:大逃杀》同时在线人数突破165万 官方就服务器问题向玩家致歉...