- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 NDEF 消息和记录
这里我已经使用这个完成了阅读 ID
public class MainActivity extends Activity {
// list of NFC technologies detected:
private final String[][] techList = new String[][] {
new String[] {
NfcA.class.getName(),
NfcB.class.getName(),
NfcF.class.getName(),
NfcV.class.getName(),
IsoDep.class.getName(),
MifareClassic.class.getName(),
MifareUltralight.class.getName(), Ndef.class.getName()
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_activity, menu);
return true;
}
@Override
protected void onResume() {
super.onResume();
// creating pending intent:
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
// creating intent receiver for NFC events:
IntentFilter filter = new IntentFilter();
filter.addAction(NfcAdapter.ACTION_TAG_DISCOVERED);
filter.addAction(NfcAdapter.ACTION_NDEF_DISCOVERED);
filter.addAction(NfcAdapter.ACTION_TECH_DISCOVERED);
// enabling foreground dispatch for getting intent from NFC event:
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.enableForegroundDispatch(this, pendingIntent, new IntentFilter[]{filter}, this.techList);
}
@Override
protected void onPause() {
super.onPause();
// disabling foreground dispatch:
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.disableForegroundDispatch(this);
}
@Override
protected void onNewIntent(Intent intent) {
if (intent.getAction().equals(NfcAdapter.ACTION_TAG_DISCOVERED) || intent.getAction().equals(NfcAdapter.ACTION_NDEF_DISCOVERED) || intent.getAction().equals(NfcAdapter.ACTION_TECH_DISCOVERED)) {
((TextView)findViewById(R.id.text)).setText(
"NFC Tag\n" +
ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)));
}
}
private String ByteArrayToHexString(byte [] inarray) {
int i, j, in;
String [] hex = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
String out= "";
for(j = 0 ; j < inarray.length ; ++j)
{
in = (int) inarray[j] & 0xff;
i = (in >> 4) & 0x0f;
out += hex[i];
i = in & 0x0f;
out += hex[i];
}
return out;
}
}
这里读取标签ID为Record[0]
以类似的方式,我想以相同的程序和相同的方式读取 NDEF 消息和记录......我们有很多方法
这里我试过了
if (intent.getAction().equals(NfcAdapter.ACTION_NDEF_DISCOVERED)) {
Ndef ndef = Ndef.get(tag);
if (ndef == null) {
// NDEF is not supported by this Tag.
return;
}
NdefMessage ndefMessage = ndef.getCachedNdefMessage();
NdefRecord[] records = ndefMessage.getRecords();
for (NdefRecord ndefRecord : records) {
//read each record
}
但我无法读取记录..任何人都可以建议我在我的代码中读取 NDEF 消息和记录....
更新
我已经在 list 中添加了这个..
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
*<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<data android:mimeType="text/plain" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>*
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data
android:name="android.nfc.action.TAG_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
但我仍然需要使用 NfcAdapter.EXTRA_NDEF_MESSAGES
谁能告诉我如何在我的代码中使用它而不影响或更改 NfcAdapter.EXTRA_ID
.
最佳答案
Intent
中的标签获取 NDEFMessage
请阅读官方文档,所有你需要的解释:http://developer.android.com/guide/topics/connectivity/nfc/nfc.html#obtain-info
在您的 Activity 中,onNewIntent 方法:
@Override
protected void onNewIntent(Intent intent) {
Log.d(TAG, "onNewIntent action=" + intent.getAction());
if (intent.getAction().equals(NfcAdapter.ACTION_TAG_DISCOVERED) || intent.getAction().equals(NfcAdapter.ACTION_NDEF_DISCOVERED) || intent.getAction().equals(NfcAdapter.ACTION_TECH_DISCOVERED)) {
((TextView)findViewById(R.id.text)).setText(
"NFC Tag\n" +
byteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)));
}
if (intent.getAction().equals(NfcAdapter.ACTION_NDEF_DISCOVERED)) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMsgs != null) {
for (int i = 0; i < rawMsgs.length; i++) {
NdefMessage ndefMessage = (NdefMessage) rawMsgs[i];
NdefRecord[] records = ndefMessage.getRecords();
for (NdefRecord ndefRecord : records) {
//read each record
}
}
}
}
}
/**
* convert byte array to a hexadecimal string
*
* @param bArray
* byte array to convert
* @return hexadecimal string
*/
public static String byteArrayToHexString(byte[] bArray) {
StringBuffer buffer = new StringBuffer();
for (byte b : bArray) {
buffer.append(byteToHexString(b));
buffer.append(" ");
}
return buffer.toString().toUpperCase(Locale.getDefault());
}
/**
* convert byte to a hexadecimal string
*
* @param b
* byte to convert
* @return hexadecimal string
*/
public static String byteToHexString(byte b) {
int tmp = b & 0xFF;
if (tmp <= 15) {
return "0".concat(Integer.toHexString(tmp));
} else {
return Integer.toHexString(tmp);
}
}
关于android - 如何读取NFC标签的NDEF Msg和Records?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34306020/
注意:这与Determine number of bits in integral type at compile time非常相似,但是这是一个非常简化的版本,所有内容都包含在一个 .cpp 中 编
var err1 = Error('message'); var err2 = new Error('message'); 有什么区别?在 chrome 控制台中查看它们,它们看起来相同。对象上的相同
我有一些 jquery/php 代码,它使用 ajax 调用另一个页面。 var pall_id = $(this).attr('id'); $.ajax({ t
我当时正在开发一个在 Linux 上运行了 20 多年的遗留代码。它有3个模块,由3个不同的人处理。我只能更改一个模块。 现在我的任务是在 Windows 中构建具有最少功能的相同代码。 对于进程间通
public JsonResult Authe(string Email, string Password, bool ? Active) { var x = (from n in db.Au
var err1 = Error('message'); var err2 = new Error('message'); 有什么区别?在 Chrome 控制台中查看它们,它们看起来相同。对象上的相同
!!msg.message && msg.message 和 msg?.message 之间的区别? 第一个是当 msg 未定义时 msg.message 将不会被执行。 第二个是什么意思? 最佳答案
我正在做一个项目,我的队友和我正在讨论哪种方法更好。 在我看来Html msg似乎更通用,所以我认为我们应该尽可能使用它,但我不能给他其他理由。 另外,我来自 React 和 Redux,对我来说看起
您好,问题如下: 假设我们有链接的进程 A 和 B。进程的 A 标志 trap_exit 设置为 true。让 B 进程向 A 发送一个 msg 然后退出: PidA ! 'msg', exit(re
有没有人知道任何 JavaScript 库可以打开现有的 *.msg Outlook 文件,例如创建为模板,并可以使用代码将数据放入主题、任何其他 {} 数据并将其作为新数据保存到磁盘。消息文件? 详
我是 google protobuf 的新手,我想知道以下方法之间有什么不同: 1) foo.mutable_bar()->set_somefield(...) 和 2) nestedmsg = fo
如果我这样调用它,我会看到一个很好的差异: self.assertEqual(a, b) 如果我这样调用它,我只会看到消息: self.assertEqual(a, b, msg) 有没有简单的方法来
我是 akka 的初学者。有人可以向我解释为什么 tell 方法定义如下: receiver.tell(msg, sender); 在我看来,有人向其他人发送消息,在 OOP 中它会这样: sende
目前我的代码有 CString DisplayMessage,我的代码全部使用它在客户端和服务器之间交换 DisplayMessage。现在随着软件走向国际化,我希望 DisplayMessage 具
当我使用 Handler.dispatchMessage(msg) 时,handleMessage(Message msg) 将在新线程上运行,但是当我使用 Handler.sendMessage(
今天我遇到了一个事实,即从子线程调用的 sys.exit() 不会终止主进程。我以前不知道这一点,这没关系,但我需要很长时间才能意识到这一点。如果 sys.exit(msg) 会将 msg 打印到 s
我复制了 rabbitmq go example 并稍作改动以进行测试。 Example URL .正常工作 代码结构: func main() { //dial rabbit serve
我正在阅读 Java 9 中引入的 System.Logger API。我无法理解为什么他们开发了如此奇怪 API: System.Logger { public default void log
msg.chat.id 之间有什么区别和 msg.from.id在 Telegeram 机器人中? 显然,两者都是相同的并且返回用户ID。 bot.sendMessage(msg.chat.id, '
我目前正在学习 elm,我只是偶然发现了 div 返回 Html (String -> Msg) 而不是 Html Msg 的问题。 我收到的错误信息 这个 div 调用产生: Html (Strin
我是一名优秀的程序员,十分优秀!