diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/SoftApConfigurationCompat.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/SoftApConfigurationCompat.kt index a5acad2e..8ac6149e 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/SoftApConfigurationCompat.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/SoftApConfigurationCompat.kt @@ -28,7 +28,9 @@ data class SoftApConfigurationCompat( /** * To read legacy band/channel pair, use [requireSingleBand]. For easy access, see [getChannel]. * - * You should probably not set or modify this field directly. Use [optimizeChannels] or [setChannel]. + * You should probably set or modify this field directly only when you want to use bridged AP, + * see also [android.net.wifi.WifiManager.isBridgedApConcurrencySupported]. + * Otherwise, use [optimizeChannels] or [setChannel]. */ @TargetApi(23) var channels: SparseIntArray = SparseIntArray(1).apply { put(BAND_2GHZ, 0) }, diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApDialogFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApDialogFragment.kt index db76a62d..39881020 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApDialogFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApDialogFragment.kt @@ -80,7 +80,7 @@ class WifiApDialogFragment : AlertDialogFragment= 0) channels.put(band, channel) } - optimizeChannels(channels) + if (!arg.p2pMode && BuildCompat.isAtLeastS() && dialogView.bridgedMode.isChecked) { + this.channels = channels + } else optimizeChannels(channels) } bssid = if (dialogView.bssid.length() != 0) { MacAddressCompat.fromString(dialogView.bssid.text.toString()) @@ -198,6 +200,7 @@ class WifiApDialogFragment : AlertDialogFragment= 29) dialogView.macRandomization.isEnabled = false else if (arg.p2pMode || !BuildCompat.isAtLeastS()) dialogView.macRandomization.isGone = true if (arg.p2pMode || !BuildCompat.isAtLeastS()) { + dialogView.bridgedMode.isGone = true dialogView.bridgedModeOpportunisticShutdown.isGone = true dialogView.ieee80211ax.isGone = true dialogView.userConfig.isGone = true @@ -214,6 +217,26 @@ class WifiApDialogFragment : AlertDialogFragment auto = 1 + !is ChannelOption.Disabled -> ++set + } + if (auto + set > 1) { + if (dialogView.bridgedMode.isEnabled) { + userBridgedMode = dialogView.bridgedMode.isChecked + dialogView.bridgedMode.isEnabled = false + dialogView.bridgedMode.isChecked = true + } + } else if (!dialogView.bridgedMode.isEnabled) { + dialogView.bridgedMode.isEnabled = true + dialogView.bridgedMode.isChecked = userBridgedMode + } + + } private fun populateFromConfiguration() { dialogView.ssid.setText(base.ssid) if (!arg.p2pMode) dialogView.security.setSelection(base.securityType) @@ -225,6 +248,9 @@ class WifiApDialogFragment : AlertDialogFragment 1 + dialogView.bridgedMode.isChecked = userBridgedMode + setBridgedMode() } dialogView.bssid.setText(base.bssid?.toString()) dialogView.hiddenSsid.isChecked = base.isHiddenSsid @@ -295,6 +321,7 @@ class WifiApDialogFragment : AlertDialogFragment true } + setBridgedMode() dialogView.bssidWrapper.error = null val bssidValid = dialogView.bssid.length() == 0 || try { MacAddressCompat.fromString(dialogView.bssid.text.toString()) diff --git a/mobile/src/main/res/layout/dialog_wifi_ap.xml b/mobile/src/main/res/layout/dialog_wifi_ap.xml index a25688aa..4f4485cd 100644 --- a/mobile/src/main/res/layout/dialog_wifi_ap.xml +++ b/mobile/src/main/res/layout/dialog_wifi_ap.xml @@ -195,6 +195,22 @@ android:minHeight="@dimen/touch_target_min" android:prompt="@string/wifi_ap_choose_60G" /> + + - 设备黑名单 设备白名单 随机生成 MAC 地址 + 启用无线接入点桥接模式 启用桥接模式伺机关闭 启用 Wi\u2011Fi 6 用户提供配置 diff --git a/mobile/src/main/res/values/strings.xml b/mobile/src/main/res/values/strings.xml index 95eebc0c..73ca4bb6 100644 --- a/mobile/src/main/res/values/strings.xml +++ b/mobile/src/main/res/values/strings.xml @@ -207,7 +207,8 @@ Blocked list of clients Allowed list of clients Use randomized MAC - Enable bridged mode opportunistic shutdown + Enable Bridged Access point (AP) concurrency + Enable Bridged mode opportunistic shutdown Enable Wi\u2011Fi 6 User Supplied Configuration Save