using System;
using UnityEngine;
namespace Kill.UI.Pages
{
///
/// 原生二维码扫描 - 调用系统相机扫码
///
public class NativeQRScanner : MonoBehaviour
{
// 扫码结果回调
public event Action OnQRCodeScanned;
///
/// 开始扫码
///
public void StartScan()
{
#if UNITY_EDITOR
// 编辑器模拟
Debug.Log("[NativeQRScanner] 编辑器模式,模拟扫码");
// 可以弹窗输入测试
#elif UNITY_ANDROID
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
using (AndroidJavaObject currentActivity = unityPlayer.GetStatic("currentActivity"))
using (AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", "com.google.zxing.client.android.SCAN"))
{
intent.Call("putExtra", "SCAN_MODE", "QR_CODE_MODE");
currentActivity.Call("startActivityForResult", intent, 0);
}
#elif UNITY_IOS
// iOS 需要写原生插件
_StartScanIOS();
#endif
}
#if UNITY_IOS
[System.Runtime.InteropServices.DllImport("__Internal")]
private static extern void _StartScanIOS();
#endif
///
/// 接收扫码结果(从原生回调)
///
public void OnScanResult(string result)
{
Debug.Log($"[NativeQRScanner] 扫码结果: {result}");
OnQRCodeScanned?.Invoke(result);
}
}
}