native-android-csharp/DemoAndroid/MainActivity.cs
2024-06-19 19:20:50 +02:00

50 lines
1.6 KiB
C#

using Android.Content;
using Android.Graphics;
using QRCoder; // QRCoder-ImageSharp else it crashes
namespace DemoAndroid;
[Activity(Label = "@string/app_name", MainLauncher = false)]
public class MainActivity : Activity
{
private string _text = "";
private ImageView? _ivQr;
protected override void OnCreate(Bundle? savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
var etInput = FindViewById<EditText>(Resource.Id.etInput) ?? throw new Exception("EditText #etInput not found");
_ivQr = FindViewById<ImageView>(Resource.Id.ivQR) ?? throw new Exception("ImageView #ivQR not found");
etInput.TextChanged += (sender, args) =>
{
_text = args.Text?.ToString() ?? string.Empty;
if (!string.IsNullOrEmpty(_text))
{
CreateQr();
}
};
var btnWol = FindViewById<Button>(Resource.Id.btnWolPage) ?? throw new Exception("Button #btnWol not found");
btnWol.Click += (_, _) =>
{
StartActivity(new Intent(this, typeof(WakeOnLanActivity)));
};
}
private void CreateQr()
{
using var qrGenerator = new QRCodeGenerator();
using var qrCodeData = qrGenerator.CreateQrCode(_text, QRCodeGenerator.ECCLevel.Q);
using var qrCode = new PngByteQRCode(qrCodeData);
var qrCodeImage = qrCode.GetGraphic(20);
var javaBitmap = BitmapFactory.DecodeByteArray(qrCodeImage, 0, qrCodeImage.Length);
_ivQr?.SetImageBitmap(javaBitmap);
}
}