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