miduo_client/Assets/LuaFramework/Scripts/Manager/PhoneManager.cs

263 lines
7.9 KiB
C#
Raw Normal View History

2020-05-09 13:31:21 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LuaInterface;
using GameCore;
#if UNITY_IOS
using System.Runtime.InteropServices;
#endif
namespace GameLogic {
public class PhoneManager : UnitySingleton<PhoneManager>
{
AndroidJavaClass jc;
AndroidJavaObject jo;
string wifiData;
float battarry_value = 1f;
private static AndroidJavaObject mainActivity;
private static bool initWXPay = false;
private static LuaFunction onScuessPayHandle;
private static LuaFunction onFailPayHandle;
private static LuaFunction onUserCancelHandle;
public static AndroidJavaObject MainActivity
{
get
{
if (mainActivity == null)
{
using (var jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
mainActivity = jc.GetStatic<AndroidJavaObject>("currentActivity");
}
}
return mainActivity;
}
}
public static void LocalTestAppPay(int payType, string appId, string partnerId, string apiKey, string totalfee, string bodyStr, string notifyUrl, bool isCreditCard, string callBackBackObjectName, string callBackFunctionName)
{
if (Application.isMobilePlatform)
{
#if UNITY_ANDROID
var wxPay = new AndroidJavaClass("com.doudou.dwc.AppPaySDK");
if (wxPay != null)
{
if (!initWXPay)
{
if (wxPay.CallStatic<bool>("InitUnityActivity", MainActivity, appId))
{
initWXPay = true;
}
}
if (initWXPay)
{
object[] objs = new object[] { payType, appId, partnerId, apiKey, totalfee, bodyStr, notifyUrl, isCreditCard ? 0 : 1, callBackBackObjectName, "WXPayCallBack" };
wxPay.CallStatic("LocationPayReq", objs);
}
}
#endif
}
}
//package="Sign=WXPay"
public static void AppPay(int payType, string appid, string tokenId, string callBackBackObjectName, LuaFunction onScuessPay, LuaFunction onFailPay, LuaFunction onUserCancel)
{
if (Application.isMobilePlatform)
{
onScuessPayHandle = onScuessPay;
onFailPayHandle = onFailPay;
onUserCancelHandle = onUserCancel;
#if UNITY_ANDROID
var wxPay = new AndroidJavaClass("com.doudou.dwc.AppPaySDK");
if (wxPay != null)
{
if (!initWXPay)
{
if (wxPay.CallStatic<bool>("InitUnityActivity", MainActivity, appid))
{
initWXPay = true;
}
}
if (initWXPay)
{
object[] objs = new object[] { payType, appid, tokenId, callBackBackObjectName, "PayCallBack" };
wxPay.CallStatic("PayReq", objs);
}
}
else
{
GameLogic.Util.Log("No exsit AndroidJavaClass com.doudou.dwc.AppPaySDK");
}
#elif UNITY_IPHONE || UNITY_IOS
// AppPay(tokenId,callBackBackObjectName,"WXPayCallBack");
#endif
}
}
public void PayCallBack(string msg)
{
switch (msg)
{
case "0":
if (onScuessPayHandle != null)
{
onScuessPayHandle.Call();
}
break;
case "-1":
if (onFailPayHandle != null)
{
onFailPayHandle.Call();
}
break;
case "-2":
if (onUserCancelHandle != null)
{
onUserCancelHandle.Call();
}
break;
}
}
#if UNITY_IOS
//[DllImport("__Internal")]
//private static extern float getiOSBatteryLevel();
// [DllImport("__Internal")]
// private static extern void AppPay(string tokenId, string callBackObjectName,string callBackFunctionName);
//[DllImport("__Internal")]
//private static extern int getSignalStrength();
#endif
public void BatteryValue()
{
#if UNITY_ANDROID
#if !UNITY_EDITOR
jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
wifiData = jo.Call<string>("ObtainWifiInfo");
OnWifiDataBack(wifiData);
// _BatteryState.value = GetBattery();//电量
string batt = jo.Call<string>("MonitorBatteryState");
print("----------更新电量-----------" + batt);
if (float.TryParse(batt, out battarry_value))
{
//_BatteryState.value = battarry_value;
}
else { print("错误参数!"); }
#endif
#elif UNITY_IOS
//battarry_value = getiOSBatteryLevel();//电量
#endif
}
/// <summary>
/// 获取当前网络类型2g、3g、4g/Wifi/无)
/// </summary>
/// <returns></returns>
public static NetworkReachability GetNetworkReachabilityType()
{
return Application.internetReachability;
/*
*
Mark:
1.Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork "当前为运行商网络2g、3g、4g";
2.Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork "当前为Wifi网络";
3.Application.internetReachability == NetworkReachability.NotReachable "没有连接网络"**/
}
int xinhao = 0;
int OnWifiDataBack(string wifiData)
{
string[] args = wifiData.Split('|');
if (int.TryParse(args[0], out xinhao))
{
print(xinhao);
}
if (xinhao == 4)
{
print("信号很好");
return 3;
}
else if (xinhao == 3)
{
print("信号一般");
return 2;
}
else
{
print("信号很弱");
return 1;
}
}
public float GetBatteryValue()
{
BatteryValue();
return battarry_value;
}
enum NetType
{
None = 0,
G,//4G
W,//wifi
D,//未连接
}
public int GetNetType()
{
if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
{
return (int)NetType.W;
}
else if (Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
{
return (int)NetType.G;
}
else if (Application.internetReachability == NetworkReachability.NotReachable)
{
return (int)NetType.D;
}
return (int)NetType.None;
}
public string TimeYear()
{
return DateTime.Now.Year.ToString();
}
public string TimeMonth()
{
return DateTime.Now.Month.ToString();
}
public string TimeDay()
{
return DateTime.Now.Day.ToString();
}
public string TimeHour()
{
return DateTime.Now.Hour.ToString();
}
public string TimeMinute()
{
return DateTime.Now.Minute.ToString();
}
}
}