מערכת Android מספקת תמיכה בנקודת Wi-Fi לשיתוף אינטרנט (Soft AP), כולל שיתוף אינטרנט בין מכשירים דרך נקודת Wi-Fi לשיתוף אינטרנט ונקודות Wi-Fi לשיתוף אינטרנט באופן מקומי בלבד.
התכונה 'נקודת גישה רכה' מאפשרת להגדיר את הדברים הבאים:
- SSID ו-BSSID
- סוג אבטחה (כולל WPA3)
- SSID מוסתר
- פס הפעלה וערוץ (כולל ACS)
- מספר הלקוחות המקסימלי המותר
- הערך של הזמן הקצוב לתפוגה של כיבוי אוטומטי
- רשימת היתרים ורשימת חסימה כדי לאפשר למשתמשים לשלוט במכשירים המשויכים
- רמת הרנדומיזציה של כתובת ה-MAC עבור ה-BSSID של נקודת הגישה
- 802.11ax ו-802.11be
הזמינות של אמצעי הבקרה האלה תלויה ביכולות המכשיר. ב-Android 11 הוצגו ממשקי API לקבלת היכולות האלה. יצרני מכשירים יכולים גם לציין יכולות בסיסיות של המכשיר באמצעות שכבות-על.
שימו לב שחלק מממשקי ה-API הם ממשקי API של המערכת, והגישה אליהם מוגבלת באמצעות הרשאות, כך שרק אפליקציית ההגדרות של המערכת יכולה לגשת אליהם.
פיתוח אפליקציות באמצעות ממשקי API של נקודות גישה
אפליקציית ההגדרות של AOSP מספקת הטמעה של נקודה חמה ל-Wi-Fi שמוגדרת כברירת מחדל, אבל היא לא מפעילה את כל ממשקי ה-API להגדרת Soft AP.
כדי לתמוך בשיתוף אינטרנט באמצעות נקודה לשיתוף אינטרנט או נקודה מקומית בלבד לשיתוף אינטרנט, האפליקציה צריכה לבצע את הפעולות הבאות:
רושמים קריאה חוזרת (callback) כדי לקבל את יכולות המכשיר באמצעות
WifiManager#registerSoftApCallback
לנקודה ניידת לשיתוף אינטרנט אוWifiManager#registerLocalOnlyHotspotSoftApCallback
לנקודה ניידת לשיתוף אינטרנט מקומית בלבד.פונקציית הקריאה החוזרת
SoftApCallback
מספקת את השיטות הבאות:-
SoftApCallback#onCapabilityChanged
: מספק מידע על יכולות המכשיר, כולל המספר המקסימלי של לקוחות נתמכים, והאם נתמכים SAE או ACS. -
SoftApCallback#onInfoChanged
: מספק מידע על נקודת הגישה הווירטואלית (Soft AP) שפועלת (תקף רק אחרי ההפעלה), כולל מידע על התדר והפס. -
SoftApCallback#onConnectedClientsChanged
: הצגת רשימה של לקוחות מחוברים. לכל לקוח, אפשר לקבל את כתובת ה-MAC. כדי לקבל את פרטי ה-IP, משתמשים בקריאה החוזרת (callback)TetheringEventCallback#onClientsChanged
. -
SoftApCallback#onStateChanged
: מספק עדכונים על מצב ה-Soft AP בזמן שהוא מופעל ומושבת. -
SoftApCallback#onBlockedClientConnecting
: מספק את פרטי הלקוח החסום עם אחת מהסיבות הבאות לחסימה: המכשיר הגיע למספר המקסימלי של לקוחות שהוא יכול לתמוך בהם, או שהלקוח לא קיבל הרשאה מפורשת להתחבר. -
SoftApCallback#onClientsDisconnected
: הצגת רשימה של הלקוחות המנותקים. לכל לקוח אפשר לקבל את הסיבה לניתוק.
-
לנקודה לשיתוף אינטרנט שמחוברת באמצעות כבל:
- כדי להגדיר את ההגדרה של נקודת גישה וירטואלית לשיתוף אינטרנט, קוראים ל-method
WifiManager#setSoftApConfiguration
ומספקים מופעSoftApConfiguration
. בונים אתSoftApConfiguration
באמצעות המחלקהSoftApConfiguration.Builder
. - מתחילים את השיתוף על ידי קריאה לשיטת השיתוף בכתובת
TetheringManager#startTethering
.
לנקודה לשיתוף אינטרנט (hotspot) מקומית בלבד:
- כדי להפעיל נקודה לשיתוף אינטרנט לשימוש מקומי בלבד עם הגדרה ספציפית של AP וירטואלי, צריך לקרוא לשיטה
WifiManager#startLocalOnlyHotspot
.
הטמעה של רשימות היתרים ורשימות חסימה
דרישה אופיינית של ספקי סלולר היא לספק למשתמש אמצעי בקרה על המכשירים שמורשים להתחבר לנקודת הגישה הווירטואלית. יש כמה מנגנונים שמאפשרים לעשות את זה:
- הגבלת המספר המקסימלי של מכשירים שיכולים להתחבר לנקודת הגישה הווירטואלית באמצעות
SoftApConfiguration.Builder#setMaxNumberOfClients
. חשוב לציין מספר שהוא נמוך מהמספר המקסימלי של לקוחות שהמכשיר תומך בהם. אפשר לקבל את המספר המקסימלי מ-SoftApCapability#getMaxSupportedClients
. אפשרות לשליטה דינמית באמצעות רשימות של אישורים וחסימות:
- ההגדרה שמוגדרת כברירת מחדל בנקודת גישה וירטואלית מאפשרת לכל המכשירים להתחבר אליה, למעט מכשירים שכתובות ה-MAC שלהם נוספו ל-
SoftApConfiguration.Builder#setBlockedClientList
. אם נקודת הגישה הרכה מוגדרת עם
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
, נעשה שימוש ברשימת ההיתרים.- כל המכשירים שכתובות ה-MAC שלהם מופיעות ב-
SoftApConfiguration.Builder#setBlockedClientList
חסומים ולא יכולים להתחבר. - לכל המכשירים שכתובות ה-MAC שלהם מופיעות ב-
SoftApConfiguration.Builder#setAllowedClientList
יש הרשאה לשיוך. - כל המכשירים האחרים (כלומר, מכשירים שכתובות ה-MAC שלהם לא מופיעות ברשימת ההיתרים או ברשימת החסימה) נחסמים משיוך, אבל מתבצעת קריאה ל-
SoftApCallback#onBlockedClientConnecting
, שמאפשרת לאפליקציה השולטת (כלומר, אפליקציית ההגדרות) לבצע פעולה, למשל לבקש מהמשתמש אישור ואז להוסיף את המכשיר לרשימת ההיתרים או לרשימת החסימה, בהתאם להתנהגות המשתמש.
- כל המכשירים שכתובות ה-MAC שלהם מופיעות ב-
חשוב לדעת: מכשירים יכולים להשתמש בפונקציונליות של רשימת ההיתרים רק אם היא נתמכת במכשיר. אפשר לבדוק אם המכשיר נתמך באמצעות
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- ההגדרה שמוגדרת כברירת מחדל בנקודת גישה וירטואלית מאפשרת לכל המכשירים להתחבר אליה, למעט מכשירים שכתובות ה-MAC שלהם נוספו ל-
הטמעה
כדי לתמוך בשיתוף אינטרנט באמצעות נקודה לשיתוף אינטרנט או בנקודה לשיתוף אינטרנט מקומית בלבד, יצרני המכשירים צריכים לספק אפליקציית הגדרות, מסגרת ותמיכה ב-HAL/קושחה:
אפליקציית ההגדרות: אפליקציית ההגדרות של AOSP מספקת בסיס להגדרת נקודה חמה לשיתוף אינטרנט עם SSID ואישורי אבטחה. אפשר להשתמש בקוד הזה כמו שהוא או לשנות אותו כדי להוסיף לו יכולות נוספות, כמו שמתואר במאמר פיתוח אפליקציות עם ממשקי API של נקודות גישה.
מסגרת: קוד המסגרת של AOSP תומך בכל הפונקציונליות שמתוארת במאמר פיתוח אפליקציות עם ממשקי API של נקודות גישה.
HAL/firmware לנקודה חמה: גרסה 1.2 ואילך של HIDL
IHostapd.hal
או AIDLIHostapd.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) כדי לאמת את התכונה של נקודה לשיתוף אינטרנט. אפשר גם לבדוק את התכונה 'נקודה חמה' באמצעות Vendor Test Suite (VTS).
בדיקות יחידה
מאמתים את חבילת ה-Hotspot באמצעות הבדיקות הבאות.
בדיקות שירות:
atest packages/modules/Wifi/service/tests/wifitests/
בדיקות בחשבון ניהול:
atest packages/modules/Wifi/framework/tests/
בדיקות בחבילה לבדיקות תאימות (CTS)
כדי לאמת את התכונה של נקודת הגישה לאינטרנט, אפשר להשתמש בבדיקות CTS. מערכת CTS מזהה מתי התכונה מופעלת וכוללת באופן אוטומטי את הבדיקות שקשורות אליה.
כדי להפעיל את בדיקות ה-CTS, מריצים את הפקודה:
atest android.net.wifi.cts.WifiManagerTest
חבילה לבדיקת ספקים (VTS)
אם ממשק ה-HIDL מיושם, מריצים את הפקודה:
atest VtsHalWifiHostapdV1_2Target
אם הממשק של AIDL מיושם, מריצים את הפקודה:
atest VtsHalHostapdTargetTest