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

263 lines
7.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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();
}
}
}