/***
 * 
 *    Title: MXFramework
 *           主题: 获取设备信息
 *    Description: 
 *           功能:1.获取系统时间
 *                2.获取设备电量
 *                3.获取网络状态
 *                4.获取设备权限
 *    Date: 2020
 *    Version: v4.0版本
 *    Modify Recoder: 
 *      
 */

using System;
using UnityEngine;

namespace Mx.Util
{
    /// <summary>获取设备信息</summary>
    public class DeviceInfo
    {
        #region 获取系统时间

        public static string GetTime()
        {
            string times = null;

            DateTime now = DateTime.Now;

            times = (now.Hour > 12) ? now.ToString("hh:mm") + " AM" : now.ToString("hh:mm") + " PM";

            return times;
        }

        #endregion

        #region 获取网络状态

        /// <summary>获取网络状态</summary>
        public static EnumNetWorkState GetNetWorkState()
        {
            EnumNetWorkState enumNetworkStatus = EnumNetWorkState.None;

            //网络不可用状态
            if (Application.internetReachability == NetworkReachability.NotReachable)
            {
                enumNetworkStatus = EnumNetWorkState.No;
            }
            //当用户使用WiFi时    
            else if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
            {
                enumNetworkStatus = EnumNetWorkState.Wif;
            }
            //当用户使用移动网络时    
            else if (Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
            {
                enumNetworkStatus = EnumNetWorkState.Mobile;
            }

            return enumNetworkStatus;
        }

        /// <summary>获取网络是否开启</summary>
        public static bool GetNetWorkIsOpen()
        {
            EnumNetWorkState netWorkState = GetNetWorkState();
            return (netWorkState == EnumNetWorkState.Mobile || netWorkState == EnumNetWorkState.Wif);
        }

        #endregion

        #region 获取电量

        /// <summary>
        /// 获取电量
        /// </summary>
        /// <returns>The battery level.</returns>
        public static float GetBatteryLevel()
        {
            float floatBatteryLevel = (float.Parse(SystemInfo.batteryLevel.ToString())) * 100;
            return floatBatteryLevel;
        }

        #endregion

        #region 获取权限

        /// <summary>
        /// 获取是否拥有权限(麦克风/相机)
        /// </summary>
        /// <param name="userAuthorization">相机/麦克风</param>
        public static bool GetUserAuthorization(UserAuthorization userAuthorization)
        {
            return Application.HasUserAuthorization(userAuthorization);
        }

        #endregion
    }

    /// <summary>网络状态类型</summary>
    public enum EnumNetWorkState
    {
        /// <summary>未知错误</summary>
        None = -1,
        /// <summary>没有网络</summary>
        No,
        /// <summary>Wif网络</summary>
        Wif,
        /// <summary>移动网络</summary>
        Mobile,
    }

}