Kablosuz hotspot (Soft AP)

Android, kablosuz hotspot üzerinden tethering ve yalnızca yerel kablosuz hotspot'lar da dahil olmak üzere kablosuz hotspot (Soft AP) desteği sunar.

Sanal AP özelliği aşağıdakilerin yapılandırılmasına olanak tanır:

  • SSID ve BSSID
  • Güvenlik türü (WPA3 dahil)
  • Gizli SSID
  • Çalışma bandı ve kanalı (ACS dahil)
  • İzin verilen maksimum istemci sayısı
  • Otomatik kapanma zaman aşımı değeri
  • Kullanıcının ilişkili cihazları kontrol etmesine izin vermek için izin verilenler listesi ve engellenenler listesi
  • AP BSSID'si için MAC rastgeleleştirme düzeyi
  • 802.11ax ve 802.11be

Bu kontrollerin kullanılabilirliği cihaz özelliklerine bağlıdır. Android 11, bu özellikleri elde etmek için API'ler sunar. Cihaz üreticileri, yer paylaşımlarını kullanarak temel cihaz özelliklerini de belirtebilir.

API'lerin bazılarının sistem API'si olduğunu ve yalnızca sistemin Ayarlar uygulamasının erişebilmesi için izinlerle kısıtlandığını unutmayın.

Hotspot API'leriyle uygulama geliştirme

AOSP Ayarlar uygulaması, bağlı kablosuz hotspot'un varsayılan uygulamasını sağlar ancak Soft AP yapılandırması için tüm API'leri kullanmaz.

Hotspot veya yalnızca yerel hotspot üzerinden tethering'i desteklemek için uygulamanın aşağıdaki işlevleri gerçekleştirmesi gerekir:

  1. Tethered hotspot için WifiManager#registerSoftApCallback, yalnızca yerel hotspot için WifiManager#registerLocalOnlyHotspotSoftApCallback kullanarak cihaz özelliklerini almak üzere geri çağırma işlevi kaydedin.

    SoftApCallback geri çağırma işlevi aşağıdaki yöntemleri sağlar:

    • SoftApCallback#onCapabilityChanged: Desteklenen istemcilerin maksimum sayısı ve SAE veya ACS'nin desteklenip desteklenmediği dahil olmak üzere cihaz özellikleri hakkında bilgi sağlar.
    • SoftApCallback#onInfoChanged: Bant ve frekans bilgileri dahil olmak üzere çalışan Soft AP hakkında bilgi sağlar (yalnızca başlatıldıktan sonra geçerlidir).
    • SoftApCallback#onConnectedClientsChanged: Bağlı istemcilerin listesini sağlar. Her istemci için MAC adresini alabilirsiniz. IP bilgilerini almak için TetheringEventCallback#onClientsChanged geri çağırma işlevini kullanın.
    • SoftApCallback#onStateChanged: Etkinleştirilirken ve devre dışı bırakılırken sanal AP'nin durumuyla ilgili güncellemeler sağlar.
    • SoftApCallback#onBlockedClientConnecting: Engellenen istemci bilgilerini, engelleme nedenlerinden biriyle birlikte sağlar: Cihaz, destekleyebileceği maksimum istemci sayısına ulaştı veya istemci, bağlanmak için açıkça yetkilendirilmedi.

Tethering yapılan hotspot için:

  1. WifiManager#setSoftApConfiguration yöntemini çağırıp bir SoftApConfiguration örneği sağlayarak kablosuz AP yapılandırmasını tethering için yapılandırın. SoftApConfiguration.Builder sınıfını kullanarak SoftApConfiguration oluşturun.
  2. TetheringManager#startTethering adresindeki tethering yöntemini çağırarak tethering'i başlatın.

Yalnızca yerel hotspot için:

  1. WifiManager#startLocalOnlyHotspot yöntemini çağırarak yalnızca yerel hotspot'u belirli bir yumuşak AP yapılandırmasıyla başlatın.

İzin verilenler ve engellenenler listelerini uygulama

Tipik bir operatör koşulu, kullanıcıya yumuşak AP ile ilişkilendirilmesine izin verilen cihazların kontrollerini sağlamaktır. Bunu yapmanın birkaç mekanizması vardır:

  • SoftApConfiguration.Builder#setMaxNumberOfClients kullanarak, yumuşak AP ile ilişkilendirilebilecek maksimum cihaz sayısını sınırlayın. Cihaz tarafından desteklenen maksimum istemci sayısından daha düşük bir sayı belirtmeyi unutmayın. Maksimum sayıyı SoftApCapability#getMaxSupportedClients'ten alabilirsiniz.
  • İzin verilenler ve engellenenler listelerini kullanarak dinamik kontrol sağlayın:

    • Yumuşak AP'nin varsayılan yapılandırması, MAC adresleri SoftApConfiguration.Builder#setBlockedClientList'e eklenen cihazlar hariç tüm cihazların yumuşak AP ile ilişkilendirilmesine olanak tanır.
    • Soft AP, SoftApConfiguration.Builder#setClientControlByUserEnabled(true) ile yapılandırılmışsa izin verilenler listesi kullanılır.

      • MAC adresleri SoftApConfiguration.Builder#setBlockedClientList içinde olan tüm cihazların ilişkilendirilmesi engellenir.
      • MAC adresleri SoftApConfiguration.Builder#setAllowedClientList içinde olan tüm cihazların ilişkilendirilmesine izin verilir.
      • Diğer tüm cihazların (yani MAC adresleri izin verilenler veya engellenenler listesinde olmayan cihazların) ilişkilendirilmesi engellenir ancak SoftApCallback#onBlockedClientConnecting çağrılır. Bu çağrı, kontrol eden uygulamanın (yani Ayarlar uygulamasının) işlem yapmasına olanak tanır. Örneğin, kullanıcıdan onay istenir ve ardından cihaz, kullanıcının davranışına bağlı olarak izin verilenler veya engellenenler listesine eklenir.

    Cihazların izin verilenler listesi işlevini yalnızca cihazda destekleniyorsa kullanabileceğini unutmayın. SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)'yi kullanarak cihaz desteğini doğrulayabilirsiniz.

Uygulama

Hotspot üzerinden tethering'i veya yalnızca yerel hotspot'u desteklemek için cihaz üreticilerinin Ayarlar uygulaması, çerçeve ve HAL/donanım yazılımı desteği sağlaması gerekir:

  • Ayarlar uygulaması: AOSP Ayarlar uygulaması, tethering hotspot'u SSID ve güvenlik kimlik bilgileriyle yapılandırma için temel bir referans sağlar. Bu kod olduğu gibi kullanılabilir veya Hotspot API'leri ile uygulama geliştirme bölümünde açıklandığı gibi ek özellikler sağlamak için değiştirilebilir.

  • Çerçeve: AOSP çerçeve kodu, Hotspot API'leriyle uygulama geliştirme bölümünde açıklanan tüm işlevleri destekler.

  • Hotspot için HAL/donanım yazılımı: HIDL IHostapd.hal 1.2 veya sonraki bir sürüm ya da AIDL IHostapd.aidl.

Özelleştirme

Uygulamayı özelleştirmek için cihaz üreticileri, packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml dokümanında açıklanan aşağıdaki yer paylaşımlarını ve operatör yapılandırmalarını yapılandırmalıdır:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Varsayılan kapatma zaman aşımı aralığı. Yalnızca SoftApConfiguration#setAutoShutdownEnabled etkinse geçerlidir. SoftApConfiguration#setShutdownTimeoutMillis kullanılarak geçersiz kılınabilir.
  • config_wifiHardwareSoftapMaxClientCount: Desteklenen maksimum istemci sayısı için donanım sınırlaması. Cihazın desteklediği maksimum istemci sayısı, donanım ve operatör kısıtlamalarının minimum değeridir (CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT ile belirtilir). Nihai sonuç, SoftApCapabilities#getMaxSupportedClients ile uygulamaya sağlanır.
  • config_wifiSofapClientForceDisconnectSupported: Cihazın, istemcinin bağlantısını zorla kesme özelliğinin olup olmadığı. İzin verilenler ve engellenenler listelerini etkinleştirmek için gereklidir. SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) üzerinden kontrol eden uygulamaya (Ayarlar uygulaması) iletilir.
  • (13'ten itibaren kullanılabilir) config_wifiSoftapPassphraseAsciiEncodableCheck: Yazılı AP şifresinin ASCII kodlanabilir olması gerekip gerekmediği.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Yeni bir cihaz desteklendiğinde bulut yapılandırması geri yükleme sırasında bant ayarı yapılandırmasını otomatik olarak çift bantlara yükseltip yükseltmeyeceğinizi belirtir.
  • (13 sürümünden itibaren kullanılabilir) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Çerçevenin, birlikte var olma işlemini önlemek için bant yapılandırmasına otomatik olarak daha düşük bantlar ekleyip eklemediğini belirtir.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: AP modunda dinamik ülke kodu güncellemesinin cihazda desteklenip desteklenmediği
  • Kanal desteği: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList ve config_wifiSoftap60gChannelList.
  • Hotspot yapılandırması yeni bir cihaza geri yüklenirken ilgili girişlerin varsayılan ayarlara sıfırlanıp sıfırlanmayacağını belirten geri yükleme desteği: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Bunların varsayılan olarak true olarak ayarlandığını, yani değerlerin sıfırlandığını unutmayın. Yeni cihaz yapılandırmayı desteklemiyorsa bu işlem çok önemlidir.
  • Donanım özellikleri:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (13 yaşından itibaren kullanılabilir) config_wifiSoftapOweTransitionSupported
    • (13 yaşından itibaren kullanılabilir) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (13 yaşından itibaren kullanılabilir) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Doğrulama

Android, hotspot özelliğini doğrulamak için bir dizi birim testi ve Compatibility Test Suite (CTS) testi sağlar. Hotspot özelliği, Tedarikçi Testi Paketi (VTS) kullanılarak da test edilebilir.

Birim testleri

Aşağıdaki testleri kullanarak hotspot paketini doğrulayın.

  • Hizmet testleri:

    atest packages/modules/Wifi/service/tests/wifitests/
  • Yönetici testleri:

    atest packages/modules/Wifi/framework/tests/

Compatibility Test Suite (CTS) testleri

Hotspot özelliğini doğrulamak için CTS testlerini kullanın. CTS, özelliğin ne zaman etkinleştirildiğini algılar ve ilişkili testleri otomatik olarak içerir.

CTS testlerini tetiklemek için şu komutu çalıştırın:

atest android.net.wifi.cts.WifiManagerTest

Tedarikçi Test Paketi (VTS)

HIDL arayüzü uygulanmışsa şunları çalıştırın:

atest VtsHalWifiHostapdV1_2Target

AIDL arayüzü uygulanmışsa şunları çalıştırın:

atest VtsHalHostapdTargetTest