מערכת 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 של נקודות גישה
אפליקציית ההגדרות של AOSP מספקת הטמעה שמוגדרת כברירת מחדל של נקודה לשיתוף אינטרנט (hotspot) מקושרת ב-Wi-Fi, אבל היא לא משתמשת בכל ממשקי ה-API להגדרת Soft AP.
כדי לתמוך בשיתוף אינטרנט דרך נקודה לשיתוף אינטרנט או נקודה מקומית בלבד לשיתוף אינטרנט, האפליקציה צריכה לבצע את הפונקציות הבאות:
כדי לקבל את יכולות המכשיר, צריך לרשום קריאה חוזרת (callback) באמצעות
WifiManager#registerSoftApCallback
לנקודה לשיתוף אינטרנט שמקושרת למכשיר אחר או באמצעותWifiManager#registerLocalOnlyHotspotSoftApCallback
לנקודה לשיתוף אינטרנט מקומית בלבד.פונקציית הקריאה החוזרת
SoftApCallback
מספקת את השיטות הבאות:SoftApCallback#onCapabilityChanged
: מידע על יכולות המכשיר, כולל המספר המקסימלי של לקוחות נתמכים והאם יש תמיכה ב-SAE או ב-ACS.SoftApCallback#onInfoChanged
: מידע על נקודת ה-Soft AP שפועלת (תקף רק אחרי שהיא מופעלת), כולל מידע על התדר והתדרים.SoftApCallback#onConnectedClientsChanged
: הצגת רשימה של לקוחות מחוברים. אפשר לקבל את כתובת ה-MAC של כל לקוח. כדי לקבל את פרטי ה-IP, משתמשים ב-callbackTetheringEventCallback#onClientsChanged
.SoftApCallback#onStateChanged
: קבלת עדכונים על מצב ה-Soft AP בזמן שהוא מופעל ומושבת.SoftApCallback#onBlockedClientConnecting
: מידע על הלקוח החסום, עם אחת מהסיבות הבאות לחסימה: המכשיר הגיע למספר המקסימלי של לקוחות שהוא יכול לתמוך בהם, או שהלקוח לא מורשה באופן מפורש להתחבר.
לנקודת אינטרנט שמשותפת באמצעות שיתוף אינטרנט בין מכשירים:
- כדי להגדיר את ההגדרות של נקודת הגישה הווירטואלית לצורך קישור, צריך לקרוא ל-method
WifiManager#setSoftApConfiguration
ולספק מופע שלSoftApConfiguration
. יוצרים אתSoftApConfiguration
באמצעות הכיתהSoftApConfiguration.Builder
. - כדי להתחיל את הקישור, קוראים לשיטת הקישור ב-
TetheringManager#startTethering
.
לנקודת אינטרנט (hotspot) מקומית בלבד:
- כדי להפעיל את הנקודה לשיתוף אינטרנט מקומי בלבד עם הגדרה ספציפית של AP רך, צריך להפעיל את השיטה
WifiManager#startLocalOnlyHotspot
.
הטמעת רשימות היתרים ורשימות חסומים
בדרך כלל, ספקי הסלולר דורשים לספק למשתמש אמצעי בקרה על המכשירים שמותר לשייך לנקודת ה-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
, שמאפשרת לאפליקציה השולטת (כלומר, אפליקציית ההגדרות) לבצע פעולה, למשל לבקש מהמשתמש אישור ואז להוסיף את המכשיר לרשימת ההיתרים או לרשימת החסימה, בהתאם להתנהגות המשתמש.
- כל המכשירים שכתובות ה-MAC שלהם נמצאות ב-
חשוב לדעת: אפשר להשתמש בפונקציות של רשימת ההיתרים במכשירים רק אם הם תומכים בהן. אפשר לבדוק את תמיכת המכשיר באמצעות
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- הגדרת ברירת המחדל של Soft AP מאפשרת לכל המכשירים להתאגד ל-Soft AP, מלבד מכשירים שכתובות ה-MAC שלהם נוספו ל-
הטמעה
כדי לתמוך בקישור דרך נקודה לשיתוף אינטרנט או לתמוך בנקודה לשיתוף אינטרנט מקומית בלבד, יצרני המכשירים חייבים לספק תמיכה באפליקציית ההגדרות, במסגרת וב-HAL/קושחה:
אפליקציית ההגדרות: אפליקציית ההגדרות של AOSP מספקת בסיס להגדרת נקודה לשיתוף אינטרנט (hotspot) עם SSID ופרטי כניסה לאבטחה. אפשר להשתמש בקוד הזה כפי שהוא או לשנות אותו כדי לספק יכולות נוספות, כפי שמתואר במאמר פיתוח אפליקציות באמצעות ממשקי API של נקודות גישה.
מסגרת: קוד המסגרת של AOSP תומך בכל הפונקציונליות שמתוארת במאמר פיתוח אפליקציות באמצעות ממשקי API של נקודות גישה.
HAL/קושחת קצה ל-Hotspot: HIDL IHostapd.hal בגרסה 1.2 ואילך, או AIDL IHostapd.aidl.
התאמה אישית
כדי להתאים אישית את ההטמעה, יצרני המכשירים צריכים להגדיר את שכבות-העל ואת הגדרות הספקים הבאות, שמפורטות במסמך 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
: האם ביטוי הסיסמה של נקודת הגישה הווירטואלית צריך להיות ניתן לקידוד 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) כדי לאמת את התכונה 'נקודת אינטרנט'. אפשר לבדוק את תכונת נקודת ה-Wi-Fi גם באמצעות Vendor Test Suite (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