的EASY方式:
嘗試實例化WifiConfiguration
第一:
AndroidJavaObject wifiConfiguration = new AndroidJavaClass("android.net.wifi.WifiConfiguration");
現在你可以調用方法和設置/這個對象中獲取字段:
// to set SSID
wifiConfiguration.Set("SSID", meSSID); // string
wifiConfiguration.Set("preSharedKey", mePassword); // string
設置完所有必填字段後,請致電setWifiApEnabled
方法:
wifiManager.Call<bool>("setWifiApEnabled", wifiConfiguration, enabled);
也許你會設置一個比這兩個領域,但以確認您應檢查source保證什麼setWifiApEnabled
方法做internaly。
的HARD方式:
(使用反射代碼)
使用反射與AndroidJavaObject
可有點棘手,因爲你必須記住處置每一個對象。
// android code for that should look like :
// wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
// but in Unity C# you have to split this into few chunks:
// 1. Get calling class :
using (AndroidJavaObject classObj = wifiManager.Call<AndroidJavaObject>("getClass"))
{
// classObj should contains your class object
// 2. call get WifiConfiguration class details :
using (AndroidJavaObject wifiConfiguration = new AndroidJavaObject("setWifiApEnabled"))
{
// 3. Fill that object :
wifiConfiguration.Set("SSID", meSSID); // string
wifiConfiguration.Set("preSharedKey", mePassword); // string
// 4. Get WifiConfiguration class definition
using (AndroidJavaObject wifiCfgClass = wifiConfiguration.Call<AndroidJavaObject>("getClass"))
{
// 5. Get boolean definition
using (AndroidJavaObject booleanObj = new AndroidJavaObject("java.lang.Boolean"))
{
using (AndroidJavaObject booleanClass = booleanObj.Call<AndroidJavaObject>("getClass"))
// 6. Get method definition
using (AndroidJavaObject methodObj = classObj.Call<AndroidJavaObject>("getMethod", "setWifiApEnabled", wifiCfgClass , booleanClass)
{
// 7. Call that method :)
methodObj.Call("invoke", wifiManager, wifiConfiguration, enabled);
}
}
}
}
}
WifiConfiguration:
我試圖找出爲什麼上面的代碼可能無法正常工作,但對我來說這是工作好(測試
所以從一開始
在一些虛擬機和三星Galaxy S5 Neo上)。
可能是什麼情況(我幾乎在午夜發現)是一個密碼。
根據所部this wikipedia article約WPA-PSK
也被稱爲WPA-PSK(預共享密鑰)模式下,此被設計用於家庭和小型辦公室網絡,並且不需要一個認證服務器。[9]每個無線網絡設備使用256位密鑰加密網絡流量。該密鑰可以作爲一串64個十六進制數字輸入,也可以作爲8到63個可打印ASCII字符的密碼輸入。如果使用ASCII字符,所述256位的密鑰是通過將PBKDF2密鑰推導函數的密碼,使用SSID作爲鹽和HMAC-SHA1的4096次迭代計算。[11] WPA-個人模式可與WPA和WPA2)。
我的建議是使用相同的密碼作爲上面鏈接,以確保它是有效的文章。
還有一點需要注意的是SSID部分有一個簡短但很好的描述here on wikipedia。
一個常見的,儘管不正確的假設是,一個SSID是人類可讀的字符(例如ASCII),由一個NUL字符結束的字符串(如在C-字符串)。的SSID必須進行處理和處置,因爲它們是什麼,0-32個字節,其中一些可能不是人類可讀
從我查了順序,你不需要用空字符結束的Java或C#中的字符串,因爲它將由本機代碼處理,但仍不應超過31個字符(32將爲空字符)。
我檢查這個搭配:
SSID:MeHotSpot
WPA-PSK:5260305714217573
你是非常接近的。該參數有點不對。檢查問題。 – Programmer
@程序員**這不是重複的**。 OP詢問打開熱點(AP)而不是WiFi。 –
我的不好。沒有看到熱點部分。 – Programmer