נקודת 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 מספקת הטמעת ברירת מחדל של נקודת Wi-Fi לשיתוף אינטרנט בין מכשירים אפליקציית ההגדרות, אבל היא לא מפעילה את כל ממשקי ה-API של Soft AP הגדרה אישית.

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

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

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

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

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

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

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

  1. הפעלת נקודה לשיתוף אינטרנט (Hotspot) מקומי בלבד עם הגדרה ספציפית של soft AP באמצעות קוראים לפונקציה 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)

הטמעה

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