gpt4 book ai didi

android - Intent 过滤器 android.nfc.action.NDEF_DISCOVERED 不工作

转载 作者:行者123 更新时间:2023-11-29 23:41:48 25 4
gpt4 key购买 nike

我正在构建一个通过 NFC 发送数据的应用程序。我让它工作但改变了命名空间,一些构建选项来制作发布 APK,更新 Android Studio 和其他东西,但没有改变代码,它不再工作了。

这是我的 list :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.devdr.touch"
android:versionCode="1"
android:versionName="0.1" >
[...]
<activity
android:name="com.devdr.touch.ui.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.devdr.touch.ui.NFCDisplayActivity"
android:label="NFC Data Display">
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/com.devdr.touch" />
</intent-filter>
</activity>

这是我的 NDEF 消息:

// Record to launch Play Store if app is not installed
NdefRecord appRecord = NdefRecord.createApplicationRecord(this.getPackageName());

// Record with actual data we care about
NdefRecord relayRecord = NdefRecord.createMime(
"application/" + this.getPackageName() ,
byteArray);

// Complete NDEF message with both records
NdefMessage mNdefMessage = new NdefMessage(new NdefRecord[]{relayRecord
, appRecord
});

this.getPackageName() 处的断点给出:“com.devdr.touch”

现在接收数据的手机启动手机参数或我的应用程序但在 MainActivity 如果 AAR 不存在,或者我的应用程序但在 MainActivity 如果 AAR 存在。

有什么调试建议吗?

编辑 1

添加我的 list 的一部分和 this.getPackageName() 的值。当我开始签署我的 APK 以发布时,它或多或少开始出现错误。

编辑2

好的,现在我知道问题出在哪里了,但不知道如何解决:变量 byteArray 由一个对象组成。该对象包含 2 个字符串和 1 个图像。现在我要发送更大的图像,但似乎处理不当。使用 50ko 图像需要 40 秒!知道为什么这么慢吗?

最佳答案

显然,如果您在 NDEF 消息完全写入 NFC 标签之前中断写入传输(例如,通过将标签撕开超出范围),NFC 标签将不会处于一致状态,Android 设备稍后也不会完全检测到任何 NDEF 消息(或者它甚至可能检测到包含无效内容的 NDEF 消息!)

令我惊讶的是,您的 NFC 标签可以容纳 50 KiB 的数据。但是既然你这样做了,那么 40 秒对于那么多的数据来说听起来是合理的。 NFC 支持 106 kbps(甚至 212 kbps 和 424 kbps)的传输速度,这大约是。每秒 13 KiB。然而,这只是总数据速率。您不能指望以这种速度传输您的实际网络数据。事实上,根据标签的不同,您将获得明显较低的净数据速率。例如,对于类型 2 标签,底层 WRITE 命令将一次仅写入 4 个字节,命令开销为 2 个字节 + 帧 + 响应往返时间 + 命令-响应序列之间的延迟。即使对于类型 4 标签(其中有效负载开销比通常要小得多),您的净数据速率通常约为总数据速率的 1/10(至少这是我在 Android 上阅读电子护照的经验)。

关于android - Intent 过滤器 android.nfc.action.NDEF_DISCOVERED 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51776848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com