mirror of
https://github.com/inthehand/32feet.git
synced 2026-10-24 01:48:29 +08:00
65 lines
1.9 KiB
C#
65 lines
1.9 KiB
C#
// 32feet.NET - Personal Area Networking for .NET
|
|
//
|
|
// InTheHand.Nfc.NdefReader
|
|
//
|
|
// Copyright (c) 2020 In The Hand Ltd, All rights reserved.
|
|
// This source code is licensed under the MIT License
|
|
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using Android.App;
|
|
using Android.Content;
|
|
using Android.Nfc;
|
|
using Android.Nfc.Tech;
|
|
|
|
[assembly: UsesPermission("android.permission.NFC")]
|
|
[assembly: UsesFeature("android.hardware.nfc", Required = false)]
|
|
|
|
namespace InTheHand.Nfc
|
|
{
|
|
partial class NdefReader : Java.Lang.Object, NfcAdapter.IReaderCallback
|
|
{
|
|
static readonly NfcAdapter s_adapter = NfcAdapter.GetDefaultAdapter(Application.Context);
|
|
|
|
void NfcAdapter.IReaderCallback.OnTagDiscovered(Tag tag)
|
|
{
|
|
var techList = tag.GetTechList();
|
|
foreach(string tech in techList)
|
|
{
|
|
if(tech == "android.nfc.tech.Ndef")
|
|
{
|
|
var ndef = Ndef.Get(tag);
|
|
ndef.Connect();
|
|
var msg = ndef.NdefMessage;
|
|
ndef.Dispose();
|
|
|
|
// parse message
|
|
|
|
Reading?.Invoke(this, null);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private async Task PlatformScanAsync(NdefScanOptions options = null)
|
|
{
|
|
s_adapter.EnableReaderMode(Xamarin.Essentials.Platform.CurrentActivity, this, NfcReaderFlags.NfcA | NfcReaderFlags.NfcB | NfcReaderFlags.NfcF | NfcReaderFlags.NfcV, null);
|
|
}
|
|
|
|
private void Dispose(bool disposing)
|
|
{
|
|
if (!disposedValue)
|
|
{
|
|
if (disposing)
|
|
{
|
|
// TODO: dispose managed state (managed objects)
|
|
}
|
|
|
|
// TODO: free unmanaged resources (unmanaged objects) and override finalizer
|
|
// TODO: set large fields to null
|
|
disposedValue = true;
|
|
}
|
|
}
|
|
}
|
|
}
|