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 של נקודה לשיתוף אינטרנט (Hotspot)
אפליקציית ההגדרות של AOSP מספקת הטמעה שמוגדרת כברירת מחדל של נקודה לשיתוף אינטרנט (hotspot) ב-Wi-Fi מקושר, אבל היא לא משתמשת בכל ממשקי ה-API להגדרת Soft AP.
כדי לתמוך בשיתוף אינטרנט דרך נקודה לשיתוף אינטרנט או נקודה מקומית בלבד לשיתוף אינטרנט, האפליקציה צריכה לבצע את הפונקציות הבאות:
כדי לקבל את יכולות המכשיר, צריך לרשום קריאה חוזרת (callback) באמצעות
WifiManager#registerSoftApCallback
לנקודה לשיתוף אינטרנט שמקושרת למכשיר אחר או באמצעותWifiManager#registerLocalOnlyHotspotSoftApCallback
לנקודה לשיתוף אינטרנט מקומית בלבד.פונקציית הקריאה החוזרת
SoftApCallback
מספקת את השיטות הבאות:SoftApCallback#onCapabilityChanged
: מידע על יכולות המכשיר, כולל המספר המקסימלי של לקוחות נתמכים והאם יש תמיכה ב-SAE או ב-ACS.SoftApCallback#onInfoChanged
: מידע על נקודת ה-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
.
הטמעת רשימות היתרים ורשימות חסומים
בדרך כלל, ספקי הסלולר דורשים לספק למשתמש אמצעי בקרה על המכשירים שמותר לשייך ל-Soft 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/קושחה לנקודה לשיתוף אינטרנט: ניתן להשתמש ב-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
: האם המסגרת מצרפת באופן אוטומטי תדרים נמוכים יותר להגדרת התדר כדי למנוע טיפול בקיום משותף. 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) כדי לאמת את התכונה 'נקודת אינטרנט'. אפשר לבדוק את מאפיין הנקודה לשיתוף אינטרנט גם באמצעות חבילת הבדיקה של הספק (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