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

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

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

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

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

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

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

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

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

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

    הקריאה החוזרת (callback) של SoftApCallback מספקת את השיטות הבאות:

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

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

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

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

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

יישום רשימות של אישור וחסימה

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

  • הגבלת המספר המקסימלי של מכשירים שאפשר לשייך ל-soft 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).

הטמעה

כדי לתמוך בשיתוף אינטרנט בין מכשירים באמצעות נקודה לשיתוף אינטרנט או כדי לתמוך בנקודה מקומית בלבד, יצרני המכשירים צריכים לספק תמיכה באפליקציית ההגדרות, ב-framework וב-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: אם ה-framework מצרף באופן אוטומטי תדרים נמוכים יותר להגדרות הרצועה, כדי למנוע טיפול דו-קיים.
  • 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) כדי לאמת את התכונה של הנקודה לשיתוף אינטרנט (Hotspot). אפשר לבדוק את מאפיין הנקודה לשיתוף אינטרנט גם באמצעות חבילת הבדיקה של הספק (VTS).

בדיקות יחידה (unit testing)

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

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

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

    atest packages/modules/Wifi/framework/tests/
    

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

משתמשים בבדיקות CTS כדי לאמת את תכונת הנקודה לשיתוף אינטרנט (Hotspot). CTS מזהה מתי התכונה מופעלת וכולל באופן אוטומטי את הבדיקות המשויכות.

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

atest android.net.wifi.cts.WifiManagerTest

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

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

atest VtsHalWifiHostapdV1_2Target

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

atest VtsHalHostapdTargetTest