类android.net.wifi.WifiNetworkSpecifier源码实例Demo

下面列出了怎么用android.net.wifi.WifiNetworkSpecifier的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: WifiUtils   文件: ConfigSecurities.java
@TargetApi(Build.VERSION_CODES.Q)
static void setupWifiNetworkSpecifierSecurities(@NonNull WifiNetworkSpecifier.Builder wifiNetworkSpecifierBuilder, String security, @NonNull final String password) {
    wifiLog("Setting up WifiNetworkSpecifier.Builder " + security);
    switch (security) {
        case SECURITY_NONE:
            // nothing to do
            break;
        case SECURITY_WEP:
            // no longer possible
            break;
        case SECURITY_PSK:
        case SECURITY_EAP:
            wifiNetworkSpecifierBuilder.setWpa2Passphrase(password);
            break;

        default:
            wifiLog("Invalid security type: " + security);
            break;
    }
}
 
源代码2 项目: WifiUtils   文件: ConnectorUtils.java
@RequiresApi(Build.VERSION_CODES.Q)
private static boolean connectAndroidQ(@Nullable ConnectivityManager connectivityManager, @NonNull ScanResult scanResult, @NonNull String password) {
    if (connectivityManager == null) {
        return false;
    }

    WifiNetworkSpecifier.Builder wifiNetworkSpecifierBuilder = new WifiNetworkSpecifier.Builder()
            .setSsid(scanResult.SSID)
            .setBssid(MacAddress.fromString(scanResult.BSSID));

    final String security = ConfigSecurities.getSecurity(scanResult);

    ConfigSecurities.setupWifiNetworkSpecifierSecurities(wifiNetworkSpecifierBuilder, security, password);


    NetworkRequest networkRequest = new NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .setNetworkSpecifier(wifiNetworkSpecifierBuilder.build())
            .build();

    // not sure, if this is needed
    if (networkCallback != null) {
        connectivityManager.unregisterNetworkCallback(networkCallback);
    }

    networkCallback = new ConnectivityManager.NetworkCallback() {
        @Override
        public void onAvailable(@NonNull Network network) {
            super.onAvailable(network);

            wifiLog("AndroidQ+ connected to wifi ");

            // bind so all api calls are performed over this new network
            connectivityManager.bindProcessToNetwork(network);
        }

        @Override
        public void onUnavailable() {
            super.onUnavailable();

            wifiLog("AndroidQ+ could not connect to wifi");
        }
    };

    connectivityManager.requestNetwork(networkRequest, networkCallback);

    return true;
}
 
@TargetApi(Build.VERSION_CODES.Q)
public void requestNetwork(final String ssId) {
    WifiNetworkSpecifier specifier = new WifiNetworkSpecifier.Builder()
            .setSsid(ssId)
            .setWpa2Passphrase(parsePassword(ssId))
            .build();
    NetworkRequest request = new NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .setNetworkSpecifier(specifier)
            .build();
    requestNetwork(ssId, request);
}
 
 类所在包
 类方法
 同包方法