Files

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;
}
}
}
}