Android NFC 仅在单击按钮时读取标签

标签 android button nfc

我正在慢慢学习 Android。目前我在使用 NFC,我已经学习了一些教程并且我开始更好地理解它是如何工作的以及如何读写标签,我现在可以在我购买的标签上做什么。 大多数人希望他们的应用程序在靠近标签时立即启动,但出于学习目的,我只想在按下按钮时才开始发现,换句话说,我想控制发现。 我知道为了让应用程序立即启动,我们在 Manifest.xml 中实现了过滤器 ACTION_NDEF_DISCOVERED 我还读到只有当我们的应用程序不在前台时,使用 Intent 进行过滤才有效。如果我们的应用程序在前台运行,它不会收到通知,所以我们必须使用 NFC 前台调度。

我想不通的是如何操纵滤镜和前景,以便它们只对我点击按钮使用react。

我的另一个问题是:它是否适用于读取和写入按钮?

有人可以帮忙吗?如果你给我一些代码,请解释一下,我真的在学习和理解之后:-)

干杯。

最佳答案

看看这个名为 NDEF 工具的库 - link .

我前段时间用过它,在点击按钮时读取和写入 NFC 标签。查看库和我的代码并尝试一下。

public class NFCReadActivity extends NfcReaderActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_read_nfc);

        // Read the tag, without prompting how/who should read it
        setDetecting(true);
    }

    @Override
    protected void readNdefMessage(Message message)
    {
        if (message != null)
        {
            // Iterate through all records in message
            for (int k = 0; k < message.size(); k++)
            {
                Record record = message.get(k);

                // Get record type (record.getClass().getSimpleName())
                if (record instanceof TextRecord)
                {
                    // Get NFC message
                    String message = ((TextRecord) record).getText();

                    // Inform user
                    Crouton.makeText(this, message, Style.CONFIRM).show();
                }
            }
        }
    }

    // An empty NDEF message was read
    @Override
    protected void readEmptyNdefMessage()
    {
        Crouton.makeText(this, getString(R.string.NFC_empty_message), Style.ALERT).show();
    }

    // Something was read via NFC, but it was not an NDEF message
    @Override
    protected void readNonNdefMessage()
    {
        Crouton.makeText(this, getString(R.string.NFC_non_ndef_message), Style.ALERT).show();
    }

    // NFC feature was found and is currently enabled
    @Override
    protected void onNfcStateEnabled()
    {

    }

    // NFC feature was found but is currently disabled
    @Override
    protected void onNfcStateDisabled()
    {
        Crouton.makeText(this, getString(R.string.NFC_state_disabled), Style.ALERT).show();
        new GoToSettingsDialog(this).showNFCSettings();
    }

    // NFC setting changed since last check. For example, the user enabled NFC in the wireless settings
    @Override
    protected void onNfcStateChange(boolean enabled)
    {

    }

    // This device does not have NFC hardware
    @Override
    protected void onNfcFeatureNotFound()
    {
        Crouton.makeText(this, getString(R.string.NFC_not_found), Style.ALERT).show();
    }
}

关于Android NFC 仅在单击按钮时读取标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30346842/

相关文章:

php - HTML/PHP 中的“上一个”按钮

android - 通过 HCE 付款

android - 捕获 NFC 卡对 NFC 读卡器 ("LongPress"的连续按压)

java - 如何使用 Jsoup 从标签元素中检索字符串?

java - Android - RecyclerView 更改项目

html - 打开 float 层的按钮[帮助]

android - android中的图像按钮样式

java - 全屏时 BottomNavigationView 跳起来留下空白

android - 如何在发布的apk中使用minifyEnable?

Android Beam json 文件