Androidアプリケーションでは、次のコードスニペットを使用しています。
@RequiresApi(api = Build.VERSION_CODES.O)
private void turnOnHotspot(){
WifiManager manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
manager.startLocalOnlyHotspot(new WifiManager.LocalOnlyHotspotCallback(){
@Override
public void onStarted(WifiManager.LocalOnlyHotspotReservation reservation) {
super.onStarted(reservation);
Log.d(TAG, "Wifi Hotspot is on now");
}
@Override
public void onStopped() {
super.onStopped();
Log.d(TAG, "onStopped: ");
}
@Override
public void onFailed(int reason) {
super.onFailed(reason);
Log.d(TAG, "onFailed: ");
}
},new Handler());
}
このコードは、「AndroidShare_1234」などの名前のホットスポットを作成します。私のプロジェクトでは、このホットスポットにパスワードとSSIDを設定する必要がありますが、これを行う方法が見つかりません。 MyHotspot
のようなSSIDとカスタムパスワードでホットスポットを作成したいと思います。
setWifiApEnabled
は、Android Oではもうサポートされていません。これは、古いバージョンのAndroidで行われている方法です。ただし、 SSIDとパスワード。これを行う方法がわかりません。事前に感謝します。
気にする人のために...:
学校のプロジェクトでは、特定の暗号でワイヤレスネットワークに接続できる場合はいつでもロックを解除するロッカーを作成しました。そのため、プログラムでホットスポットを設定する必要があります。
問題の部分的な解決策しかありません。うまくいけば、あなたが設計しているアプリケーションに十分なものになるでしょう。
SSIDとパスワードは、Hotspotの起動時にAndroidシステムによってハードコーディングされます。 AOSPコードでは、同じホットスポットを複数のアプリケーションで共有できることがわかります。このホットスポット(クラス名はWifiConfiguration
)の構成も、要求元のすべてのアプリケーションと共有されます。この構成はアプリケーションに返されます。コールバックでonStarted(LocalOnlyHotspotReservation reservation)
。reservation.getWifiConfiguration()
を呼び出すことでWifiConfiguration
を取得できます。必要なすべての情報をWifiConfiguration
オブジェクトから取得します。事前共有キーとアクセスポイント名をreadできますが、変更できないと思います
FYI、wifi構成を設定する関連コード(ハードコーディングされたSSIDおよびWPA2-PSKキーを含む)は、次のコードによって実行されます
/**
* Generate a temporary WPA2 based configuration for use by the local only hotspot.
* This config is not persisted and will not be stored by the WifiApConfigStore.
*/
public static WifiConfiguration generateLocalOnlyHotspotConfig(Context context) {
WifiConfiguration config = new WifiConfiguration();
config.SSID = context.getResources().getString(
R.string.wifi_localhotspot_configure_ssid_default) + "_"
+ getRandomIntForDefaultSsid();
config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
config.networkId = WifiConfiguration.LOCAL_ONLY_NETWORK_ID;
String randomUUID = UUID.randomUUID().toString();
// first 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
config.preSharedKey = randomUUID.substring(0, 8) + randomUUID.substring(9, 13);
return config;
}