导航
当前位置:首页>>app
在线生成app,封装app

app封装一个简单nfc工具类操作介绍

2024-11-19 围观 : 0次

NFC(Near Field Communication)是一种无线通信技术,它允许设备之间近距离交换数据。在移动设备领域,NFC被广泛应用于支付、身份验证、门禁控制等场景。本文将介绍如何封装一个简单的NFC工具类,用于实现NFC功能的快速开发。

首先,我们需要了解NFC的工作原理。NFC使用近场感应器(Near Field Induction Sensor)来收发射频信号,它支持三种工作模式卡模拟器(Card Emulation)、点对点(Peer-to-Peer)和读写器(Reader/Writer)。在Android平台上,我们一般使用读写器模式进行NFC通信。

接下来,让我们来创建一个NFC工具类。

“`java

public class NfcUtils {

private NfcAdapter mAdapter;

private PendingIntent mPendingIntent;

private IntentFilter[] mIntentFilters;

private String[][] mTechLists;

private Context mContext;

public NfcUtils(Context context) {

mContext = context;

mAdapter = NfcAdapter.getDefaultAdapter(mContext);

mPendingIntent = PendingIntent.getActivity(mContext, 0,

new Intent(mContext, mContext.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);

mIntentFilters = new IntentFilter[]{ndef};

mTechLists = new String[][]{

new String[]{Ndef.class.getName()},

new String[]{NdefFormatable.class.getName()}

};

}

public void enableForegroundDispatch(Activity activity) {

mAdapter.enableForegroundDispatch(activity, mPendingIntent, mIntentFilters, mTechLists);

}

public void disableForegroundDispatch(Activity activity) {

mAdapter.disableForegroundDispatch(activity);

}

public void processIntent(Intent intent) {

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

Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);

if (rawMsgs != null) {

NdefMessage[] msgs = new NdefMessage[rawMsgs.length];

for (int i = 0; i

msgs[i] = (NdefMessage) rawMsgs[i];

}

// 处理NDEF消息

handleNdefMessages(msgs);

}

}

}

private void handleNdefMessages(NdefMessage[] msgs) {

for (NdefMessage msg : msgs) {

NdefRecord[] records = msg.getRecords();

for (NdefRecord record : records) {

// 处理NDEF记录

handleNdefRecord(record);

}

}

}

private void handleNdefRecord(NdefRecord record) {

byte[] payload = record.getPayload();

String textEncoding = ((payload[0] & 0x80) == 0) ? “UTF-8” : “UTF-16”;

int langCodeLen = payload[0] & 0x3F;

try {

String text = new String(payload, langCodeLen + 1, payload.length – langCodeLen – 1, textEncoding);

// 处理NDEF记录内容

handleText(text);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

private void handleText(String text) {

// 处理文本内容

Log.i(“NfcUtils”, “Text: ” + text);

}

}

“`

上述NfcUtils类封装了NFC相关的操作方法,包括启用前台调度(enableForegroundDispatch)、禁用前台调度(disableForegroundDispatch)、处理NFC意图(processIntent)等。

在使用NfcUtils时,需要在Activity的生命周期方法中进行调用。

“`java

public class MainActivity extends AppCompatActivity {

private NfcUtils mNfcUtils;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mNfcUtils = new NfcUtils(this);

// 其他初始化操作…

handleNfcIntent(getIntent());

}

@Override

protected void onResume() {

super.onResume();

mNfcUtils.enableForegroundDispatch(this);

}

@Override

protected void onPause() {

super.onPause();

mNfcUtils.disableForegroundDispatch(this);

}

@Override

protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

handleNfcIntent(intent);

}

private void handleNfcIntent(Intent intent) {

mNfcUtils.processIntent(intent);

}

}

“`

在MainActivity中,我们需要初始化NfcUtils,并在合适的生命周期方法中启用前台调度。同时,我们还需要重写onNewIntent方法,以处理新的NFC意图。

以上就是一个简单的NFC工具类的封装过程。通过该工具类,我们可以方便地开发NFC相关的功能,并且可以根据实际需求进行扩展。

请注意,由于NFC功能的特殊性,使用NFC时还需要相关权限配置和设备的支持,请参考Android官方文档进行配置和测试。

相关文章
  • app开发的投资估算

    青海app的开发 青海app的开发需要掌握一定的技术,包括前端开发、后端开发、数据库设计等方面的知识。本文将从以下几个方面介绍青海app的开发原理和详细过程。一、需求分析在开发青海app之前,首先需要进行需求分析,明确开发的目标和功能。例如,青海ap...

    2024-01-23
  • 安卓备用机推荐测评,适合做备用机的安卓机

    经常见手机达人说备用机,一部双卡手机不行吗?非得整部备用机? 1、因此我觉得可以直接选择购买一台双卡手机会更好。当然每个人的实际情况不同,所以在选择备用手机和双卡手机之间会做出不同的选择。因此并不是每一个人都会向我个人觉得直接使用双卡手机会更好。2、一部备用机只需要是单卡的手机,可以上网的手机,这手...

    2024-01-04
  • 网站app在线

    网站App在线是一个现代互联网应用和服务的交互方式,通过将实现网站功能的代码在服务器端运行并将结果返回到用户设备上,使用户能够随时随地访问和使用网站。现在,越来越多的网站已经采用了这种在线模式,因为它不仅可以让用户更轻松地使用网站的功能,而且还降低了企业开发和维护成本。本文将为您详细介绍网站App在...

    2023-12-05
  • app接口开发专用分页类

    分页是在应用程序中常见的功能,如视频、新闻、评论等类型的应用。当应用程序需要在一次性展示大量数据时,需要将这些数据分成多个页面来展示,这就需要使用分页功能。在移动应用程序开发中,分页类是非常重要的工具类。本文将介绍一种专用于移动应用程序中开发的分页类。1、分页原理在开发中,需要从数据库或服务器获取数...

    2023-11-17
  • 常用的软件应用开发工具有哪些?

    常用的软件开发工具有哪些?目前软件开发工程师使用频率较高的应用开发工具有哪些?不同的编程语言有不同的手机app开发软件,有些是标配,有些则是可选的,下面,变色龙云小编就给大家介绍一下常见的应用开发平台。 一、ios开发 Xcode:https:/...

    2024-01-14