如何在Android和iOS手机上的Unity游戏应用程序中获取BSSID(我连接的wifi路由器的MAC地址,而不是我的设备MAC地址)?
我尝试了这些方法,但没有一个工作。我通过在游戏场景上打印来检查结果。请帮忙
*方法1:此代码工作正常并获得正确的BSSID信息,但它只适用于编辑器,当我将其构建到Android App时它无法正常工作,返回字符串什么都不是(非空但是空值)。
string mac = "";
var card = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault();
if (card == null)
return null;
else
{
byte[] bytes = card.GetPhysicalAddress().GetAddressBytes();
for (int i = 0; i < bytes.Length; i++)
{
mac = string.Concat(mac + (string.Format("{0}", bytes[i].ToString("X2"))));
if (i != bytes.Length - 1)
{
//This is just for formating the final result
mac = string.Concat(mac + ":");
}
}
mac = card.GetPhysicalAddress().ToString();
return mac;
}
*方法2:我使用AndroidJavaClass调用Android函数在Android手机上获取BSSID,就像在Unity文档中一样。有关Unity中AndroidJavaClass和Android {/ 3}}类
的更多信息 string mac = "";
AndroidJavaClass jc = new AndroidJavaClass("android.net.wifi.WifiInfo");
mac = jc.Call<string>("getBSSID");
我还通过修改&#34; AndroidManifest.xml&#34;添加了读取wifi状态的android权限。文件位置&#34; [项目位置] \资产\插件\ Android&#34;使用下面的代码
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
由于此方法无法在编辑器上运行,因此我在Android Phone上构建并运行此方法,但不返回任何字符串。任何人都可以帮助我。
答案 0 :(得分:1)
您需要制作插件才能在移动设备上执行此操作。
对于iOS,您必须将此answer转换为插件,然后从C#调用它。有很多Unity iOS插件教程可以让你开始这个。
对于Android,如果在使用以下代码获取BSSID之前启用了Wifi,则应首先check:
public static string getSSID()
{
string tempSSID = "";
try
{
using (var activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"))
{
using (var wifiManager = activity.Call<AndroidJavaObject>("getSystemService", "wifi"))
{
tempSSID = wifiManager.Call<AndroidJavaObject>("getConnectionInfo").Call<string>("getSSID");
}
}
}
catch (Exception e)
{
}
return tempSSID;
}
public static string getBSSID()
{
string tempBSSID = "";
try
{
using (var activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"))
{
using (var wifiManager = activity.Call<AndroidJavaObject>("getSystemService", "wifi"))
{
tempBSSID = wifiManager.Call<AndroidJavaObject>("getConnectionInfo").Call<string>("getBSSID");
}
}
}
catch (Exception e)
{
}
return tempBSSID;
}
请勿忘记包含权限<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
。
答案 1 :(得分:0)
使用此
import pandas as pd
import numpy as np
d = {'id': [1, 2, 2, 2],
'date': [np.datetime64('2019-07-01'), np.datetime64('2019-07-02'),
np.datetime64('2019-07-06'), np.datetime64('2019-07-19')]}
df = pd.DataFrame(data=d)