Android NFC基础知识汇总

android.nfc.tech.NfcA

android.nfc.tech.NfcB

android.nfc.tech.NfcF

android.nfc.tech.NfcV

android.nfc.tech.Ndef

android.nfc.tech.NdefFormatable

android.nfc.tech.MifareUltralight

android.nfc.tech.MifareClassic

在res下新建xml,然后新建一个xxx.xml的文件将上方内容copy即可。然后在AndroidManifest.xml中,添加NFC权限:

后将要做NFC功能的界面的launchMode设置为singleTop类型,然后添加meta-data内容,如下:

<meta-data

android:name=“android.nfc.action.TECH_DISCOVERED”

android:resource=“@xml/nfc_tech_filter”/>

然后在activity中oncreate和onresume中初始化NFC。

private void initNfc() {

defaultAdapter = NfcAdapter.getDefaultAdapter(this);

if (null == defaultAdapter) {

Toast.makeText(this, “当前设备不支持NFC功能”, Toast.LENGTH_SHORT).show();

return;

}

try {

if (!defaultAdapter.isEnabled()) {

Toast.makeText(this, “请打开NFC功能”, Toast.LENGTH_SHORT).show();

return;

}

} catch (Exception e) {

return;

}

mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()), 0);

}

然后重写onNewInstance方法中通过

判断当前具备NFC功能的标签属于那种格式协议的。ndef格式举例:

if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {

Log.e(“===========”, "processIntent:2 ");

Tag tag = intent.getParcelableExtra(defaultAdapter.EXTRA_TAG);

if (tag == null)

return;

String[] techList = tag.getTechList();

byte[] id = tag.getId();

tagIdStr = “ID:” + Utils.bytesToHexString(id) + “\n”;

tagIdStr += “type:” + tag.describeContents() + “\n”;

boolean is15693 = false;

for (String tecj : techList) {

tagIdStr += tecj + “\n”;

if (tecj.equals(“android.nfc.tech.NfcV”)) {

is15693 = true;

}

}

}

public class Utils {

public static String bytesToHexString(byte[] src){

StringBuilder stringBuilder = new StringBuilder(“”);

if (src == null || src.length <= 0) {

return null;

}

for (int i = 0; i < src.length; i++) {

int v = src[i] & 0xFF;

String hv = Integer.toHexString(v);

if (hv.length() < 2) {

stringBuilder.append(0);

}

stringBuilder.append(hv);

}

return stringBuilder.toString();

}

public static byte[] stringToBytes(String hexString) {

if (hexString == null || hexString.equals(“”)) {

return null;

}

hexString = hexString.toUpperCase();

int length = hexString.length() / 2;

char[] hexChars = hexString.toCharArray();

byte[] d = new byte[length];

for (int i = 0; i < length; i++) {

int pos = i * 2;

d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));

}

return d;

}

public static byte uniteBytes(byte src0, byte src1) {

byte _b0 = Byte.decode(“0x” + new String(new byte[] {src0})).byteValue();

_b0 = (byte) (_b0 << 4);

byte _b1 = Byte.decode(“0x” + new String(new byte[] { src1 })).byteValue();

byte ret = (byte) (_b0 ^ _b1);

return ret;

}

最后

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

同时我经过多年的收藏目前也算收集到了一套完整的学习资料以及高清详细的Android架构进阶学习导图及笔记分享给大家,希望对想成为架构师的朋友有一定的参考和帮助。

下面是部分资料截图,诚意满满:特别适合有开发经验的Android程序员们学习。

不论遇到什么困难,都不应该成为我们放弃的理由!

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

参考docs.qq.com/doc/DSkNLaERkbnFoS0ZF
roid架构进阶学习导图及笔记分享给大家,希望对想成为架构师的朋友有一定的参考和帮助。

下面是部分资料截图,诚意满满:特别适合有开发经验的Android程序员们学习。

[外链图片转存中…(img-xDuK8pmL-1724252683910)]

不论遇到什么困难,都不应该成为我们放弃的理由!

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

参考docs.qq.com/doc/DSkNLaERkbnFoS0ZF

### Linux 中用于定位文件所在目录命令Linux 系统中,`find` 命令是一个强大的工具,可以用来搜索特定条件下的文件目录。它可以根据名称、类型、大小、修改时间等多种属性来筛选目标文件目录[^1]。 #### 使用 `find` 查找文件所在的目录 以下是通过 `find` 命令查找指定文件并显示其路径的方法: ```bash find /path/to/search -name "filename" ``` - `/path/to/search`: 表示从哪个根目录开始搜索。如果是整个系统范围内的搜索,可以用 `/` 或者 `$HOME` 来限定用户的家目录。 - `-name "filename"`: 指定要查找的目标文件名。支持通配符匹配,例如 `"*.txt"` 可以找到所有的 `.txt` 文件[^1]。 为了忽略大小写差异,可改用 `-iname` 替代 `-name`: ```bash find /path/to/search -iname "FILENAME" ``` #### 进一步优化搜索结果 如果只想获取文件所在的目录而不关心具体文件本身,可以通过管道传递到 `dirname` 工具处理输出的结果: ```bash find /path/to/search -name "filename" | xargs dirname ``` 或者直接利用正则表达式提取父级路径部分: ```bash find /path/to/search -type f -name "filename" -printf '%h\n' ``` 这里 `%h` 是格式化字符串的一部分,表示打印出命中项所属的上层目录位置[^1]。 #### 防止误入不必要的子树结构 当某些特殊场景下存在不想深入探索的大规模嵌套层次时(比如挂载点),应该考虑加入 `-prune` 参数控制递归行为[^2]: ```bash find /path/to/search \( -path "/path/to/exclude*" -o -path "." \) -prune -o -name "filename" -print ``` 上述例子中的逻辑组合允许排除掉不希望涉及的具体分支之外其他地方继续正常检索操作[^2]。 --- ### 总结 综上所述,在 Linux 下寻找某个已知名字却不知道确切存储地点的情况之下,“find”无疑是最佳解决方案之一;同时配合恰当参数设置还能有效提升效率减少干扰信息量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值