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.
כדי לתמוך בשיתוף אינטרנט בין מכשירים באמצעות נקודה לשיתוף אינטרנט או נקודה מקומית בלבד, האפליקציה צריכה לבצע את הפעולות הבאות:
אפשר לרשום קריאה חוזרת כדי לקבל את יכולות המכשיר באמצעות
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):
- מגדירים את התצורה של soft AP לשיתוף אינטרנט בין מכשירים על-ידי קריאה ל-method
WifiManager#setSoftApConfiguration
ומספקים מכונה שלSoftApConfiguration
. בונים אתSoftApConfiguration
באמצעות המחלקהSoftApConfiguration.Builder
. - מתחילים את שיתוף האינטרנט בין מכשירים על ידי קריאה ל-method של שיתוף האינטרנט בין מכשירים בכתובת
TetheringManager#startTethering
.
לנקודה לשיתוף אינטרנט (Hotspot) באופן מקומי בלבד:
- מפעילים את הנקודה לשיתוף אינטרנט מקומית בלבד עם הגדרה ספציפית של 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
נקראת כך שהיא מאפשרת לאפליקציה השולטת (כלומר אפליקציית ההגדרות) לבצע פעולה. לדוגמה, לבקש מהמשתמש אישור ואז להוסיף את המכשיר לרשימת ההיתרים או לרשימת החסימה, בהתאם להתנהגות המשתמש.
- כל המכשירים שכתובות ה-MAC שלהם נמצאות ב-
שימו לב שאפשר להשתמש בפונקציונליות של רשימת ההיתרים רק אם היא נתמכת במכשיר. תוכלו לאמת את התמיכה במכשירים באמצעות
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- הגדרת ברירת המחדל של Soft AP מאפשרת לכל המכשירים להשתייך ל-soft AP, מלבד מכשירים שכתובות ה-MAC שלהם מתווספות ל-
הטמעה
כדי לתמוך בשיתוף אינטרנט בין מכשירים באמצעות נקודה לשיתוף אינטרנט או כדי לתמוך בנקודה מקומית בלבד, יצרני המכשירים צריכים לספק תמיכה באפליקציית ההגדרות, ב-framework וב-HAL/בקושחה:
אפליקציית ההגדרות: אפליקציית הגדרות AOSP מספקת נקודת בסיס להגדרת נקודה לשיתוף אינטרנט בין מכשירים (Hotspot) עם SSID ופרטי כניסה מאובטחים. אפשר להשתמש בקוד הזה כמו שהוא או לשנות אותו כדי לספק יכולות נוספות כפי שמתואר במאמר פיתוח אפליקציות עם ממשקי API לשיתוף אינטרנט (Hotspot).
Framework: קוד ה-framework של AOSP תומך בכל הפונקציונליות שמתוארת במאמר פיתוח אפליקציות עם ממשקי API לשיתוף אינטרנט (Hotspot).
HAL/קושחה לנקודה לשיתוף אינטרנט: ניתן להשתמש ב-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
: בין אם ביטוי הסיסמה ה-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