נקודת Wi-Fi לשיתוף אינטרנט (Soft AP)

Android מספקת תמיכה בנקודת Wi-Fi לשיתוף אינטרנט (Soft AP) כולל שיתוף אינטרנט בין מכשירים באמצעות נקודת Wi-Fi לשיתוף אינטרנט ונקודות Wi-Fi לשיתוף אינטרנט באופן מקומי בלבד.

התכונה soft AP מאפשרת להגדיר את האפשרויות הבאות:

  • SSID ו-BSSID
  • סוג האבטחה (כולל WPA3)
  • SSID מוסתר
  • התדר והערוץ התפעוליים (כולל ACS)
  • המספר המקסימלי של לקוחות מורשים
  • הערך של הזמן הקצוב לתפוגה של כיבוי אוטומטי
  • רשימת היתרים ורשימת החסימות כדי לאפשר למשתמשים לשלוט במכשירים המשויכים
  • רמת הרנדומיזציה של כתובת ה-MAC של BSSID של נקודת הגישה
  • 802.11ax ו-802.11be

הזמינות של אמצעי הבקרה האלה נקבעת לפי יכולות המכשיר. ב-Android 11 מוצגים ממשקי API שמאפשרים את השימוש ביכולות האלה. יצרני המכשירים יכולים גם לציין את יכולות המכשיר הבסיסיות באמצעות שכבות-על.

שימו לב שחלק מממשקי ה-API הם ממשקי API של המערכת, והם מוגבלים באמצעות ההרשאות, כדי שרק לאפליקציית ההגדרות של המערכת תהיה גישה אליהם.

פיתוח אפליקציות עם ממשקי API של נקודה לשיתוף אינטרנט (Hotspot)

אפליקציית ההגדרות של AOSP מספקת הטמעה שמוגדרת כברירת מחדל של נקודה לשיתוף אינטרנט (hotspot) ב-Wi-Fi מקושר, אבל היא לא משתמשת בכל ממשקי ה-API להגדרת Soft AP.

כדי לתמוך בשיתוף אינטרנט דרך נקודה לשיתוף אינטרנט או נקודה מקומית בלבד לשיתוף אינטרנט, האפליקציה צריכה לבצע את הפונקציות הבאות:

  1. כדי לקבל את יכולות המכשיר, צריך לרשום קריאה חוזרת (callback) באמצעות WifiManager#registerSoftApCallback לנקודה לשיתוף אינטרנט שמקושרת למכשיר אחר או באמצעות WifiManager#registerLocalOnlyHotspotSoftApCallback לנקודה לשיתוף אינטרנט מקומית בלבד.

    פונקציית הקריאה החוזרת SoftApCallback מספקת את השיטות הבאות:

    • SoftApCallback#onCapabilityChanged: מידע על יכולות המכשיר, כולל המספר המקסימלי של לקוחות נתמכים והאם יש תמיכה ב-SAE או ב-ACS.
    • SoftApCallback#onInfoChanged: מידע על נקודת ה-AP הווירטואלית שפועלת (תקף רק אחרי שהיא מופעלת), כולל מידע על התדר והתדרים.
    • SoftApCallback#onConnectedClientsChanged: מספק רשימה של לקוחות מקושרים. אפשר לקבל את כתובת ה-MAC של כל לקוח. כדי לקבל את פרטי ה-IP, משתמשים ב-callback‏ TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged: מספק עדכונים לגבי המצב של Soft AP כשהוא מופעל ומושבת.
    • SoftApCallback#onBlockedClientConnecting: מידע על הלקוח החסום, עם אחת מהסיבות הבאות לחסימה: המכשיר הגיע למספר המקסימלי של לקוחות שהוא יכול לתמוך בהם, או שהלקוח לא מורשה באופן מפורש להתחבר.

אם משתמשים בנקודה לשיתוף אינטרנט שמחוברת למכשיר אחר:

  1. כדי להגדיר את ההגדרות של נקודת הגישה הווירטואלית לצורך קישור, צריך לקרוא ל-method‏ WifiManager#setSoftApConfiguration ולספק מופע של SoftApConfiguration. יוצרים את SoftApConfiguration באמצעות הכיתה SoftApConfiguration.Builder.
  2. כדי להתחיל את הקישור, קוראים לשיטת הקישור ב-TetheringManager#startTethering.

לנקודה לשיתוף אינטרנט (Hotspot) באופן מקומי בלבד:

  1. כדי להפעיל את הנקודה לשיתוף אינטרנט מקומי בלבד עם הגדרה ספציפית של AP רך, צריך להפעיל את השיטה WifiManager#startLocalOnlyHotspot.

הטמעת רשימות היתרים ורשימות חסומים

בדרך כלל, ספקי הסלולר דורשים לספק למשתמש אמצעי בקרה על המכשירים שמותר לשייך ל-Soft AP. יש כמה מנגנונים שאפשר להשתמש בהם כדי לעשות זאת:

  • הגבלת המספר המקסימלי של מכשירים שיכולים לשייך ל-AP הווירטואלי באמצעות SoftApConfiguration.Builder#setMaxNumberOfClients. חשוב לציין מספר נמוך ממספר הלקוחות המקסימלי שנתמך במכשיר. אפשר לקבל את המספר המקסימלי מ-SoftApCapability#getMaxSupportedClients.
  • מתן שליטה דינמית באמצעות רשימות הרשאה וחסימה:

    • הגדרת ברירת המחדל של Soft AP מאפשרת לכל המכשירים להשתייך ל-soft AP, מלבד מכשירים שכתובות ה-MAC שלהם מתווספות ל-SoftApConfiguration.Builder#setBlockedClientList.
    • אם ה-Soft AP מוגדר עם SoftApConfiguration.Builder#setClientControlByUserEnabled(true), המערכת משתמשת ברשימת ההיתרים.

      • כל המכשירים שכתובות ה-MAC שלהם נמצאות ב-SoftApConfiguration.Builder#setBlockedClientList חסומים משיוך.
      • כל המכשירים שכתובות ה-MAC שלהם נמצאות ב-SoftApConfiguration.Builder#setAllowedClientList מורשים לשייך.
      • כל שאר המכשירים (כלומר, מכשירים שמזהי ה-MAC שלהם לא רשומים ברשימת ההיתרים או ברשימת החסימה) חסומים מפני שיוך, אבל מתבצעת קריאה ל-SoftApCallback#onBlockedClientConnecting, שמאפשרת לאפליקציה השולטת (כלומר, אפליקציית ההגדרות) לבצע פעולה, למשל לבקש מהמשתמש אישור ואז להוסיף את המכשיר לרשימת ההיתרים או לרשימת החסימה, בהתאם להתנהגות המשתמש.

    חשוב לדעת: אפשר להשתמש בפונקציות של רשימת ההיתרים במכשירים רק אם הם תומכים בהן. תוכלו לאמת את התמיכה במכשירים באמצעות SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).

הטמעה

כדי לתמוך בקישור דרך נקודה לשיתוף אינטרנט או לתמוך בנקודה לשיתוף אינטרנט מקומית בלבד, יצרני המכשירים חייבים לספק תמיכה באפליקציית ההגדרות, במסגרת וב-HAL/קושחה:

התאמה אישית

כדי להתאים אישית את ההטמעה, יצרני המכשירים צריכים להגדיר את שכבות-העל ואת הגדרות הספקים הבאות, שמפורטות במסמך packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: מרווח הזמן שמוגדר כברירת מחדל לתפוגת הזמן של השבתה. התכונה תקפה רק אם SoftApConfiguration#setAutoShutdownEnabled מופעל. אפשר לשנות את הערך באמצעות SoftApConfiguration#setShutdownTimeoutMillis.
  • config_wifiHardwareSoftapMaxClientCount: המגבלה של החומרה למספר המקסימלי של לקוחות נתמכים. המספר המקסימלי של לקוחות שנתמכים במכשיר הוא המספר המינימלי של האילוצים של החומרה ושל הספק (שצוין ב-CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). התוצאה הסופית מסופקת לאפליקציה באמצעות SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: האם למכשיר יש אפשרות לנתק לקוח בכוח. נדרשת כדי להפעיל רשימות של הרשאות וחסימות. מועבר לאפליקציה השולטת (אפליקציית ההגדרות) דרך SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).
  • (זמין החל מ-13) config_wifiSoftapPassphraseAsciiEncodableCheck: בין אם ביטוי הסיסמה ה-soft AP חייב להיות ניתן לקידוד ב-ASCII, וגם אם לא.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: האם לשדרג באופן אוטומטי את הגדרת התדרים לשני תדרים במהלך שחזור ההגדרות בענן כשיש תמיכה במכשיר חדש.
  • (זמין מגרסה 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: האם המסגרת מצרפת באופן אוטומטי תדרים נמוכים יותר להגדרת התדר כדי למנוע טיפול בקיום משותף.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: האם המכשיר תומך בעדכון דינמי של קידומת החיוג במצב AP
  • תמיכה בערוצים: config_wifiSoftap2gChannelList,‏ config_wifiSoftap5gChannelList, ‏ config_wifiSoftap6gChannelList ו-config_wifiSoftap60gChannelList.
  • תמיכה בשחזור, עם ציון אם הרשומות התואמות יאופסו לברירת המחדל כשמשחזרים את הגדרות הנקודה לשיתוף אינטרנט במכשיר חדש: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. לתשומת ליבכם: הערכים האלה מוגדרים כברירת מחדל כ-true, כלומר הם מתאפסים. זה חיוני אם המכשיר החדש לא תומך בתצורה.
  • יכולות החומרה:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (התכונה זמינה מגיל 13) config_wifiSoftapOweTransitionSupported
    • (התכונה זמינה מגיל 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (התכונה זמינה מגיל 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

אימות

ב-Android יש קבוצה של בדיקות יחידה ובדיקות של חבילה לבדיקות תאימות (CTS) כדי לאמת את התכונה 'נקודת אינטרנט'. אפשר לבדוק את מאפיין הנקודה לשיתוף אינטרנט גם באמצעות חבילת הבדיקה של הספק (VTS).

בדיקות יחידה

מאמתים את חבילת הנקודה לשיתוף אינטרנט באמצעות הבדיקות הבאות.

  • בדיקות שירות:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • בדיקות מנהל:

    atest packages/modules/Wifi/framework/tests/
    

בדיקות של חבילה לבדיקות תאימות (CTS)

משתמשים בבדיקות CTS כדי לאמת את התכונה של נקודת ה-Wi-Fi לשיתוף אינטרנט. CTS מזהה מתי התכונה מופעלת וכולל באופן אוטומטי את הבדיקות המשויכות.

כדי להפעיל את בדיקות CTS, מריצים את הפקודה:

atest android.net.wifi.cts.WifiManagerTest

חבילה לבדיקת ספקים (VTS)

אם ממשק HIDL מוטמע, מריצים את הפקודה:

atest VtsHalWifiHostapdV1_2Target

אם ממשק AIDL מוטמע, מריצים את:

atest VtsHalHostapdTargetTest