EASY方法:
WifiConfiguration
最初のインスタンス化してみてください。
// to set SSID
wifiConfiguration.Set("SSID", meSSID); // string
wifiConfiguration.Set("preSharedKey", mePassword); // string
:
AndroidJavaObject wifiConfiguration = new AndroidJavaClass("android.net.wifi.WifiConfiguration");
は今、あなたは、このオブジェクト内のフィールドを取得するメソッドを呼び出し、/設定することができます必要なフィールドをすべて設定したら、に電話してください方法:
wifiManager.Call<bool>("setWifiApEnabled", wifiConfiguration, enabled);
たぶん、あなたはこれらの2以上のフィールドを設定することができますが、sourceをチェックし、setWifiApEnabled
方法は、内部的何をするかを確認しなければならないことを確認する必要があります。
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:
テスト(私は上記のコードは動作しない場合があります理由を見つけるためにしようとしていた私にとって、それは大丈夫を働いていました一部の仮想マシンとSamsung Galaxy S5 Neo)
場合によっては(これはほぼ真夜中にわかりました)はパスフレーズです。およそWPA-PSK
はまた、WPA-PSK(事前共有キー)モードと呼ばれるセクションでthis wikipedia articleによると
、これは、家庭や小規模オフィスのネットワーク用に設計されており、必要としません認証サーバ。[9]各無線ネットワークデバイスは、256ビットのキーを使用してネットワークトラフィックを暗号化します。このキーは、64桁の16進数の文字列、または8〜63文字の印刷可能なASCII文字のパスフレーズとして入力できます。[10] ASCII文字が使用されている場合、PBKDF2キー導出関数をパスフレーズに適用してSSIDをソルトとして使用し、HMAC-SHA1の4096回の反復を使用して256ビットのキーを計算します。[11] WPAパーソナルモードはWPAとWPA2の両方で使用可能です。)
私の提案は、それが有効だことを確認するために、上記のリンク先の記事と同じパスフレーズを使用することです。
もう1つ注意すべき点は、SSID部分ですが、説明は簡潔ですが説明はhere on wikipediaです。
共通、間違った仮定はいえ、SSIDはNUL文字で終了し、人間が読める文字(ASCIIなど)、の文字列は(C文字列のように)であるということです。 SSIDが、彼らが何であるかのように私はあなたがnullで終了するためにあなたの必要はありません確認してきたものから、人間が読める
ではないかもしれないそのうちのいくつかは0から32オクテットのシーケンス処理し、処理しなければなりませんネイティブコードで処理されるため、JavaまたはC#内の文字列を使用できますが、31文字を超えることはできません(32文字はnull文字になります)。
私は、このチェック:
SSID:MeHotSpot
WPA-PSK:5260305714217573
をあなたは非常に接近していました。パラメータは少し間違っています。質問を確認してください。 – Programmer
@Programmer **これは複製ではありません**。 OPはホットスポット(AP)をオンにし、WiFiをオンにすることについて尋ねた。 –
私の悪いです。ホットスポットの部分が見えませんでした。 – Programmer