Android NFC技术实战指南:从原理到应用开发

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文章为Android学习者提供了一份关于NFC近距离无线通讯技术的详细笔记。文章介绍了NFC的基本原理,包括其操作模式和工作方式,并探讨了在Android系统中实现NFC功能的框架和API。通过实例代码,展示了如何在Android应用中开发NFC功能,涵盖从权限申请到事件处理的完整开发流程,并提出了一些开发过程中的注意事项。 Android学习笔记之NFC近距离无线通讯技术(Dean)(转载)

1. NFC基本原理介绍

1.1 NFC技术概述

NFC(Near Field Communication,近场通信)是一种短距离的高频无线电技术,允许设备在几厘米的距离内进行通信。这种技术为移动设备的交互式连接提供了一种快速、安全且简便的方法。

1.2 NFC工作原理

NFC技术基于无线电频率识别(RFID)的感应耦合原理,当两个NFC设备靠近时,它们通过电感耦合进行非接触式点对点数据传输。NFC系统通常由NFC控制器和NFC标签组成,控制器可以发送或接收信息,并对标签进行读写操作。

1.3 NFC应用领域

NFC技术广泛应用于支付、门禁、数据共享等多个领域。例如,通过NFC可以实现手机快速支付、智能卡的模拟以及轻松地交换联系信息或媒体文件。随着NFC技术的成熟和普及,它已成为移动设备不可或缺的功能之一。

NFC的这些特点使其成为当前移动和物联网领域的一项热门技术。在深入学习NFC技术在Android平台的应用之前,了解其基本原理是至关重要的,这将为后续章节中对NFC功能的探讨打下坚实的基础。

2. NFC在Android系统中的框架和API

2.1 NFC模块与Android系统架构

2.1.1 NFC模块在Android中的位置

NFC(Near Field Communication)是一种短距离的高频无线电技术,允许设备在几厘米内进行通信。在Android系统中,NFC是作为硬件抽象层(HAL)的一部分实现的,这意味着它被设计为模块化的组件,可以在不同的设备上以统一的方式进行访问。NFC模块位于Android系统架构的底层,通过硬件抽象层(HAL)与设备的NFC硬件进行交互。这种分层设计允许Android应用通过高级API来利用NFC功能,无需直接与底层硬件进行交互。

NFC模块不仅仅与硬件设备直接相关,它还涉及到操作系统级别的组件和服务。例如,NFC服务在Android中是一个系统级服务,它负责处理所有与NFC相关的功能。这包括扫描NFC标签、处理NFC数据传输、以及在设备之间共享数据等。用户界面层的组件,比如Android Beam,为用户提供了一个交互的入口,允许用户通过简单地接触两台设备来共享数据。

NFC模块在Android系统中的重要性不仅在于它支持了NFC硬件的使用,更重要的是,它提供了一系列的API供应用开发者调用,使得应用能够实现各种NFC相关的功能。

2.1.2 Android对NFC支持的API层次结构

Android对NFC的支持体现在多个层次的API中。每个层次的API为开发者提供了不同的抽象级别,以实现从底层硬件控制到高级应用交互的全部功能。

  • NfcAdapter类: 这是Android框架层提供的最核心的NFC API。它提供了与NFC控制器交互的基本方法,允许应用查询NFC支持情况、开启或关闭NFC功能、监听NFC卡片或标签的接近等。开发人员通过创建NfcAdapter的实例来管理NFC硬件并响应NFC事件。

  • NdefMessage和NdefRecord类: NFC数据交换格式(NDEF)是NFC设备间交换数据的标准格式。NdefMessage代表一个NDEF消息,它可以包含多个NdefRecord。每个NdefRecord包含了一段具体的数据。这些API为NDEF消息的构造、解析和交换提供了支持,是实现NFC数据读写功能的核心。

  • PendingIntent和IntentFilter: 这些API用于配置NFC系统如何将NFC事件分发到应用。通过设置IntentFilter,当NFC标签靠近时,Android系统可以启动相应的应用并传递NFC事件。PendingIntent则允许应用为NFC事件预设一个特定的Intent,当NFC事件发生时,系统将执行这个Intent。

  • NfcF、NfcV、IsoDep等: 这些是NFC API中的附加类,它们提供了对特定NFC技术的支持,比如NFC-F、NFC-V和ISO 14443。这些API使得应用能够利用特定的NFC协议进行通信,适用于开发针对特定NFC技术优化的应用。

Android对NFC的支持通过以上API的不同层次,构建了一个强大的框架,使得开发者能够创建各种利用NFC技术的应用,从简单的标签读取到复杂的设备间的通信和支付应用。

2.2 NFC核心API的功能与应用

2.2.1 NFCAdapter类的使用

NFCAdapter类是Android NFC API中最重要的类之一,它提供了与NFC硬件交互的基础方法。通过NFCAdapter,开发者可以检查设备的NFC能力、启动和停止NFC扫描、以及处理NFC标签的发现。

NFCAdapter的获取与检查

要使用NFCAdapter,首先需要获取它的实例。这可以通过调用 NfcAdapter.getDefaultAdapter() 实现。一旦获取到NFCAdapter实例,可以进一步检查设备是否支持NFC功能,以及NFC是否已经启用。以下是获取NFCAdapter实例并检查NFC状态的代码示例:

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(context);
if (nfcAdapter == null) {
    // 设备不支持NFC
} else if (!nfcAdapter.isEnabled()) {
    // NFC未启用,可以提示用户进入设置开启NFC
}
启动与停止NFC扫描

在某些情况下,开发者可能需要手动控制NFC扫描。NfcAdapter提供了 enableForegroundDispatch() disableForegroundDispatch() 方法,允许应用在前台运行时接收NFC事件。这对于需要快速响应NFC标签的应用非常有用,因为这种方式会优先处理这些事件。

// 在应用启动时调用以监听NFC事件
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
        new Intent(context, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter[] intentFiltersArray = new IntentFilter[] { };
nfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, null);

// 在应用关闭或不再需要监听时调用停止监听
nfcAdapter.disableForegroundDispatch(this);
处理NFC标签

当NFC标签靠近设备时,NFCAdapter会触发一个NFC事件。应用需要重写 onNewIntent() 方法来处理这个事件。在这个方法中,可以通过Intent的 getParcelableExtra(NFCAdapter.EXTRA_TAG) 获取到NfcTag对象。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    // 使用tag对象处理NFC标签
}

通过以上几个步骤,开发者可以使用NFCAdapter类来构建丰富的NFC功能应用。需要注意的是,为了使用NFC功能,应用需要在AndroidManifest.xml文件中声明NFC权限,并在运行时请求用户授权。

2.2.2 NdefMessage和NdefRecord的解析

NDEF(NFC Data Exchange Format)是NFC技术中用于交换数据的一种标准化格式。在Android平台上,NdefMessage和NdefRecord类用于构建和解析NDEF消息。NdefMessage对象代表一条完整的NDEF消息,而NdefRecord对象则代表消息中的单条记录。NDEF消息可以包含多个记录,每条记录可以包含不同类型的数据。

创建NdefMessage

要创建一个NdefMessage,可以将一个NdefRecord数组传递给NdefMessage的构造函数。每条NdefRecord代表了NDEF消息中的一种数据类型,例如文本、URL或其他自定义数据。

NdefRecord textRecord = NdefRecord.createMime("text/plain", "Hello NFC!".getBytes());
NdefRecord uriRecord = NdefRecord.createUri("http://www.android.com/");
NdefRecord[] records = { textRecord, uriRecord };
NdefMessage message = new NdefMessage(records);
发送NdefMessage

将NDEF消息发送到其他NFC设备或者NFC标签通常需要借助NFCAdapter。以下示例展示了如何发送一个NDEF消息到一个NFC标签:

NdefMessage ndefMessage = new NdefMessage(records); // 创建NDEF消息
Tag tag; // 假设tag对象已经获取
Ndef ndef = Ndef.get(tag); // 获取Ndef实例
ndef.connect();
ndef.writeNdefMessage(ndefMessage); // 写入NDEF消息
ndef.close();
读取NdefMessage

当设备检测到NFC标签时,可以通过读取Intent中的NDEF消息来获取其内容。以下是如何从一个NFC Intent中读取NDEF消息的示例:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
        Parcelable[] rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        if (rawMessages != null && rawMessages.length > 0) {
            NdefMessage ndefMessage = (NdefMessage) rawMessages[0];
            NdefRecord[] records = ndefMessage.getRecords();
            // 解析每个NdefRecord
            for (NdefRecord ndefRecord : records) {
                // 根据NdefRecord类型进行解析
            }
        }
    }
}

通过NdefRecord的不同构造方法,可以创建不同类型的数据记录,例如纯文本、URL、MIME类型数据等。每种类型的NdefRecord都有其特定的数据构造方式,开发者需要根据实际情况选择合适的数据类型和构造方法。

理解NdefMessage和NdefRecord的创建、发送和解析,对开发NFC应用至关重要。这不仅涉及到数据传输和处理,也关系到用户体验的连贯性和流畅性。通过这些API,开发者可以在应用中实现从读取NFC标签到与其他NFC设备交换数据的全部功能。

在下一节中,我们将深入探讨NFC应用开发流程,包括应用的生命周期管理、NFC适配器状态监听与处理等关键步骤,为构建一个功能完整的NFC应用打下坚实的基础。

3. NFC应用开发流程

3.1 NFC应用的生命周期管理

3.1.1 NFC应用的前台派发机制

NFC应用的前台派发机制是Android系统中一种特殊的事件分发机制,它使得应用程序能够在前台主动监控NFC事件,而不需要用户显式地从应用列表中选择。前台派发机制对于那些需要快速响应NFC事件的应用来说是至关重要的,例如支付应用、门禁控制系统等。

为了实现前台派发机制,应用需要执行以下几个步骤:

  1. 检查NFC硬件是否可用。
  2. 确保应用具有处理NFC的权限。
  3. 启动前台派发系统。

具体的代码实现逻辑如下:

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter != null && nfcAdapter.isEnabled()) {
    PendingIntent pendingIntent = PendingIntent.getActivity(
        this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

    IntentFilter filter = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
    // 添加其他需要的IntentFilter,例如ACTION_TAG_DISCOVERED等
    IntentFilter[] intentFiltersArray = new IntentFilter[] { filter };

    // 启动前台派发系统
    nfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, null);
}

在这段代码中, enableForegroundDispatch 方法用于启动前台派发机制。 pendingIntent 参数是一个待处理的Intent,当NFC事件发生时,Android系统会启动这个Intent。 intentFiltersArray 是监听特定NFC事件的IntentFilter数组。当设备检测到匹配的NFC事件时, pendingIntent 会被派发。

3.1.2 NFC适配器状态监听与处理

在使用NFC适配器的过程中,应用需要持续监听适配器的状态变化,例如设备检测到NFC标签、NFC标签离开等事件。这不仅有助于管理应用的NFC相关资源,还能提升用户体验。

实现NFC适配器状态监听,需要在应用中注册 NfcAdapter.OnNfcAdapterStateChangeListener 。以下是如何设置状态监听器的示例代码:

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter != null) {
    nfcAdapter.setOnNfcAdapterStateChangeListener(
        new NfcAdapter.OnNfcAdapterStateChangeListener() {
            @Override
            public void onNfcAdapterEnabled(NfcAdapter adapter) {
                // NFC适配器启用时调用
            }

            @Override
            public void onNfcAdapterDisabled(NfcAdapter adapter) {
                // NFC适配器禁用时调用
            }
        }
    );
}

在这段代码中, setOnNfcAdapterStateChangeListener 方法用于注册状态变化监听器。当NFC适配器启用或禁用时,会分别调用 onNfcAdapterEnabled onNfcAdapterDisabled 方法。在这些方法中,开发者可以根据状态变化执行特定的逻辑,比如更新用户界面,提示用户打开NFC功能等。

3.2 NFC应用开发的步骤详解

3.2.1 环境搭建与配置

在开始NFC应用的开发之前,需要确保Android开发环境已经搭建好,并且已经添加了相应的NFC权限到AndroidManifest.xml文件中。

AndroidManifest.xml中的权限配置如下所示:

<uses-permission android:name="android.permission.NFC"/>
<uses-feature android:name="android.hardware.nfc" android:required="true"/>
  • <uses-permission> 标签用于声明应用需要使用到的权限,这里声明了NFC权限。
  • <uses-feature> 标签用于声明应用需要使用的硬件特性,这里声明了必须要有NFC硬件。

此外,为了在开发过程中更好地调试NFC应用,推荐在Android Studio中开启NFC日志。这可以通过在运行配置中添加VM选项来实现,如下:

-Ddebug=NFC

开启NFC日志可以帮助开发者获取更多关于NFC交互的调试信息,这对于定位问题和优化应用非常有帮助。

3.2.2 NFC应用的界面布局和用户交互设计

NFC应用的用户界面设计应该简洁直观,以便用户能够快速理解和使用NFC功能。界面布局应该重点突出NFC操作的按钮或指示器,并且应该有清晰的提示和引导。

用户交互设计方面,需要考虑以下几个要素:

  1. 用户教育 :对于第一次使用NFC功能的用户,提供清晰的教程和提示是非常有必要的。
  2. 反馈机制 :在用户执行NFC操作时,应用应该给出明确的反馈,比如触摸NFC标签时的震动反馈或者声音提示。
  3. 操作流程简化 :在设计NFC操作流程时,应该尽量减少用户的操作步骤,使其尽可能简单。

在Android中,可以使用布局管理器(如LinearLayout、RelativeLayout、ConstraintLayout等)来构建简洁的界面,并使用Button、TextView等控件来与用户进行交云。在布局文件(activity_main.xml)中,可以定义以下布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btn_read_nfc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Read NFC Tag" />

    <!-- 其他界面元素 -->

</RelativeLayout>

在上述布局中,定义了一个按钮用于触发NFC标签的读取操作。该按钮具有一个ID(btn_read_nfc),在对应的Activity代码中,可以通过这个ID来找到并设置按钮的点击事件监听器。

Button readNfcButton = findViewById(R.id.btn_read_nfc);
readNfcButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 在这里实现读取NFC标签的逻辑
    }
});

在上面的Activity代码中,当按钮被点击时,会触发 onClick 回调方法,在该方法中可以编写NFC标签读取的具体逻辑。

请注意,上述代码仅为布局和交互设计的示例,实际应用中NFC读取操作的实现将会在第6章进行详细介绍。

以上章节内容已经围绕着NFC应用开发流程的生命周期管理和开发步骤进行了深入讲解,包括前台派发机制、适配器状态监听、环境搭建与配置以及界面布局和用户交互设计等方面,为读者提供了一个全面的NFC应用开发入门指导。

4. NFC权限获取与Intent Filter配置

4.1 NFC权限请求与管理

NFC技术的使用需要访问特定的系统权限,以确保应用能够正确地与NFC硬件进行交互。Android系统通过权限管理机制来控制应用对NFC硬件的访问。

4.1.1 NFC权限的声明与请求

为了使用NFC功能,开发者必须在其应用的 AndroidManifest.xml 文件中声明 NFC 权限:

<uses-permission android:name="android.permission.NFC" />

此外,从Android 6.0(API级别23)开始,需要在运行时请求权限。应用在需要使用NFC功能时,必须先检查并获取用户授权。这一过程可以使用 ActivityCompat 类的 requestPermissions 方法来实现。

// 检查权限是否已被授予
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.NFC)
        != PackageManager.PERMISSION_GRANTED) {
    // 权限未被授予,请求权限
    ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.NFC},
            REQUEST_NFC);
}

// 处理权限请求响应
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case REQUEST_NFC: {
            // 如果请求被取消,则结果数组为空
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // 权限被用户授予,可以使用NFC功能
            } else {
                // 权限被用户拒绝,提示用户
            }
            return;
        }
    }
}

4.1.2 权限请求的用户反馈处理

用户对权限请求的反馈对应用能否使用NFC功能至关重要。开发者应当在用户拒绝请求时提供反馈,说明应用为什么需要该权限,并且可以提供进入应用设置的选项,让用户手动开启权限。

// 在onRequestPermissionsResult方法中
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
    // 权限被用户拒绝
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.NFC)) {
        // 提供额外的解释,展示对话框
    } else {
        // 权限被拒绝,建议用户开启权限
        Toast.makeText(thisActivity, "NFC权限被拒绝,请在设置中开启。",
                Toast.LENGTH_LONG).show();
        Intent intent = new Intent();
        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        Uri uri = Uri.fromParts("package", getPackageName(), null);
        intent.setData(uri);
        startActivity(intent);
    }
}

4.2 Intent Filter在NFC中的作用

Intent Filter是Android应用组件中的一种机制,用于声明组件愿意接收哪些隐式Intent。对于NFC应用而言,Intent Filter可以帮助我们处理来自NFC系统的各种Intent,从而允许应用响应NFC事件。

4.2.1 Intent Filter的配置方法

AndroidManifest.xml 中,为一个Activity配置Intent Filter以响应NFC相关的Intent,通常需要包括以下几个Action:

<activity android:name=".NfcActivity">
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

这个配置表示 NfcActivity 愿意接收NDEF格式记录发现的Intent。对于需要处理多种NFC事件的场景,可以加入其他Action,如 android.nfc.action.TECH_DISCOVERED 等。

4.2.2 NFC事件的过滤与接收

NFC事件到达应用后,应用需要根据Intent的内容来决定如何响应。通常,这涉及到检查Intent的Action以及携带的数据类型。

@Override
protected void onResume() {
    super.onResume();
    // 注册NFC适配器以便接收Intent
    IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
    try {
        ndef.addDataType("*/*");
    } catch (IntentFilter.MalformedMimeTypeException e) {
        throw new RuntimeException("fail", e);
    }
    IntentFilter[] intentFiltersArray = new IntentFilter[]{ndef};
    nfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, null);
}

@Override
protected void onPause() {
    super.onPause();
    nfcAdapter.disableForegroundDispatch(this);
}

@Override
protected void onNewIntent(Intent intent) {
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
        Parcelable[] rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        if (rawMessages != null && rawMessages.length > 0) {
            NdefMessage ndefMessage = (NdefMessage) rawMessages[0];
            // 处理NDEF消息
        }
    }
}

以上代码展示了如何在Activity的生命周期中管理NFC的前台派发机制,以及如何处理NDEF_DISCOVERED事件。通过这种方式,应用可以对NFC事件进行筛选,并只响应感兴趣的事件。

在处理NFC事件时,需要根据实际情况对Intent中的数据进行解析,并根据应用的业务逻辑进行相应处理。这一过程通常涉及到NDEF消息的解析,将在后续章节中详细介绍。

通过本章节的介绍,我们已经了解了如何在Android应用中请求NFC权限以及如何通过Intent Filter配置接收NFC事件。这些是构建NFC应用的基础设施,对实现NFC功能至关重要。下一章,我们将深入探讨如何捕获NFC事件,并解析NDEF消息。

5. NFC事件处理与NDEF消息解析

NFC技术在Android应用开发中的重要性不言而喻,本章节将深入探讨如何处理NFC事件以及NDEF(NFC Data Exchange Format)消息的构造与解析。

5.1 NFC事件的捕获与处理

NFC事件的捕获与处理是NFC应用开发中的关键环节。开发者需要理解各种NFC事件,并采取相应的处理策略。

5.1.1 事件类型的识别

NFC事件类型主要包括以下几种: - ACTION_NDEF_DISCOVERED : 当NFC标签中包含NDEF消息时触发。 - ACTION_TAG_DISCOVERED : 当NFC标签未包含NDEF消息时触发。 - ACTION_TECH_DISCOVERED : 当需要识别标签支持的技术类型时触发。

通过实现 NfcAdapter.OnNdefPushCompleteCallback 接口,应用可以接收到NDEF消息推送完成的通知。

5.1.2 事件处理的最佳实践

在处理NFC事件时,应用需要实现 NfcAdapter.ReaderCallback 接口,并注册一个 NfcAdapter.ReaderModeFlags 。以下是一个处理事件的示例代码块:

// 注册ReaderModeFlags以处理NFC事件
int flags = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_SINGLE_TOP;
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
NfcAdapter adapter = NfcAdapter.getDefaultAdapter(context);
if (adapter != null) {
    adapter.enableReaderMode(this, callback, flags, null);
}

// 回调接口实现
private final NfcAdapter.ReaderCallback callback = new NfcAdapter.ReaderCallback() {
    @Override
    public void onTagDiscovered(Tag tag) {
        // 处理发现的NFC标签
        // 例如:获取标签的ID
        byte[] tagId = tag.getId();
        // 例如:获取标签支持的技术类型
        String[] techList = tag.getTechList();
        // 根据具体需求处理标签数据
    }
};

在上述代码中,我们通过 enableReaderMode 方法注册了一个NFC事件处理回调,并在回调中处理了一个标签发现的事件。

5.2 NDEF消息的构造与解析

NDEF消息是NFC通信中的标准格式,理解其构造与解析对于开发NFC应用至关重要。

5.2.1 NDEF消息格式的理解

NDEF消息包含了一个或多个NDEF记录。每个NDEF记录包含以下字段: - TNF(Type Name Format) - 类型(Type) - ID(Identifier) - 载荷长度(Payload Length) - 载荷(Payload)

5.2.2 NDEF消息的构造与解析示例

在Android中,可以通过 NdefMessage NdefRecord 类构造和解析NDEF消息。以下是一个构造NDEF消息并写入NFC标签的示例:

// 构造NDEF消息
NdefRecord[] records = new NdefRecord[] {
    createMimeRecord("application/com.example.android", "Hello World!".getBytes())
};
NdefMessage message = new NdefMessage(records);

// 将NDEF消息写入NFC标签
Ndef ndef = Ndef.get(tag);
if (ndef != null && ndef.isWritable()) {
    try {
        ndef.writeNdefMessage(message);
    } catch (IOException e) {
        // 处理错误
    }
}

// 创建MIME类型记录的辅助方法
private NdefRecord createMimeRecord(String mimeType, byte[] payload) {
    return new NdefRecord(NdefRecord.TNF_MIME_MEDIA, mimeType.getBytes(), new byte[0], payload);
}

在上述代码中,我们首先创建了一个包含文本消息的NDEF记录,然后构造了一个NDEF消息。之后,我们检查标签是否可写,并将消息写入标签。

在处理NFC事件和解析NDEF消息时,应用开发者需要密切关注用户交互的流程,确保应用对NFC标签的操作既高效又安全。通过本章内容,开发者应具备了深入理解和应用NFC事件处理以及NDEF消息构造和解析的能力。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文章为Android学习者提供了一份关于NFC近距离无线通讯技术的详细笔记。文章介绍了NFC的基本原理,包括其操作模式和工作方式,并探讨了在Android系统中实现NFC功能的框架和API。通过实例代码,展示了如何在Android应用中开发NFC功能,涵盖从权限申请到事件处理的完整开发流程,并提出了一些开发过程中的注意事项。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值