using SC.XR.Unity.Module_Device;
using System;
using UnityEngine;

public class DeviceSN : Singleton<DeviceSN>
{
    private string serial;

    /// <summary>
    /// 获取设备ID的后十位数字,在Unity中时为预设的设备ID
    /// </summary>
    /// <returns></returns>
    public long SendSerial()
    {
        AndroidJavaObject jo = new AndroidJavaObject("android.os.Build");
        serial = jo.GetStatic<string>("SERIAL");

        return SubStringDefault(serial);
    }

    public string SendSerialBy16()
    {
        //Debug.Log(Convert.ToString(DeviceSN.GetInstance().SendSerial(), 16));
        //return Convert.ToString(DeviceSN.GetInstance().SendSerial(), 16);

#if UNITY_EDITOR
        return "ABD1234561";
#elif UNITY_ANDROID
        return Convert.ToString(DeviceSN.Instance.SendSerial(), 16);
#endif
    }

    /// <summary>
    /// 获取从后往前数length位的string
    /// </summary>
    /// <param name="str">需要获取的源字符串</param>
    /// <param name="index">从第多少位开始往前数</param>
    /// <param name="length">往前数多少位</param>
    /// <returns></returns>
    public string SubStringByEnd(string str, int index, int length)
    {
        return str.Substring((index - length) < 0 ? 0 : (index - length), length);
    }

    /// <summary>
    /// 获取从最后一位开始往前数10位的数字
    /// </summary>
    /// <param name="str">输入源字符串</param>
    /// <returns></returns>
    public long SubStringDefault(string str)
    {
        bool r = long.TryParse(SubStringByEnd(str, str.Length, 10), out long result);
        if (!r)
        {
            Debug.LogError($"获取TagID失败 : {result}");
        }
        return result;
    }

    public string GetSn()
    {
#if UNITY_EDITOR
        return "ABD1234561";
#elif UNITY_ANDROID
        AndroidJavaObject jo = new AndroidJavaObject("android.os.Build");
        serial = jo.GetStatic<string>("SERIAL");
        return serial;
#endif
        return Module_Device.getInstance.Current.SN;

    }
}