Android מספקת תמיכה בנקודת Wi-Fi לשיתוף אינטרנט (Soft AP), כולל שיתוף אינטרנט בין מכשירים דרך נקודת Wi-Fi לשיתוף אינטרנט ונקודות Wi-Fi לשיתוף אינטרנט באופן מקומי בלבד.
התכונה 'נקודת גישה רכה' מאפשרת להגדיר את הדברים הבאים:
- SSID ו-BSSID
- סוג האבטחה (כולל WPA3)
- SSID מוסתר
- פס הפעלה וערוץ (כולל ACS)
- מספר הלקוחות המקסימלי המותר
- הערך של הזמן הקצוב לכיבוי אוטומטי
- רשימת היתרים ורשימת חסימה כדי לאפשר למשתמשים לשלוט במכשירים המשויכים
- רמת הרנדומיזציה של כתובת ה-MAC של ה-BSSID של נקודת הגישה
- 802.11ax ו-802.11be
הזמינות של אמצעי הבקרה האלה תלויה ביכולות המכשיר. ב-Android 11 נוספו ממשקי API כדי לקבל את היכולות האלה. יצרני מכשירים יכולים גם לציין יכולות בסיסיות של המכשיר באמצעות שכבות-על.
פיתוח אפליקציות באמצעות ממשקי API של נקודות גישה אישיות
הטמעה של נקודה לשיתוף אינטרנט ב-Wi-Fi מסופקת כברירת מחדל על ידי אפליקציית ההגדרות של פרויקט קוד פתוח של Android (AOSP), אבל היא לא מפעילה את כל ממשקי ה-API להגדרת Soft AP.
כדי לתמוך בשיתוף אינטרנט באמצעות נקודה לשיתוף אינטרנט או נקודה מקומית בלבד לשיתוף אינטרנט, האפליקציה צריכה לבצע את הפונקציות הבאות:
צריך לרשום קריאה חוזרת כדי לקבל את יכולות המכשיר באמצעות
WifiManager#registerSoftApCallbackלנקודה ניידת לשיתוף אינטרנט אוWifiManager#registerLocalOnlyHotspotSoftApCallbackלנקודה ניידת לשיתוף אינטרנט לשימוש מקומי בלבד.פונקציית הקריאה החוזרת
SoftApCallbackמספקת את ה-methods הבאים:-
SoftApCallback#onCapabilityChanged: מספק מידע על יכולות המכשיר, כולל המספר המקסימלי של לקוחות נתמכים, והאם נתמכים SAE או ACS. -
SoftApCallback#onInfoChanged: מספק מידע על נקודת הגישה הרכה שפועלת (תקף רק אחרי ההפעלה), כולל מידע על הפס והתדר. -
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/קושחה:
אפליקציית ההגדרות: אפליקציית ההגדרות של פרויקט הקוד הפתוח של Android (AOSP) מספקת בסיס להגדרת נקודת אינטרנט (hotspot) לשיתוף אינטרנט עם SSID ופרטי אבטחה. אפשר להשתמש בקוד הזה כמו שהוא או לשנות אותו כדי להוסיף לו יכולות נוספות, כמו שמתואר במאמר פיתוח אפליקציות באמצעות ממשקי API של נקודות גישה.
Framework: קוד ה-framework של 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). - (זמין מ-Android 13)
config_wifiSoftapPassphraseAsciiEncodableCheck: האם ביטוי הסיסמה של נקודת הגישה הווירטואלית צריך להיות ניתן לקידוד ב-ASCII. -
config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: האם לשדרג אוטומטית את הגדרת הפס לפסים כפולים במהלך שחזור הגדרות הענן כשמתווספת תמיכה במכשיר חדש. - (זמין מגרסה Android 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_supportedconfig_wifi_softap_sae_supported- (זמין מ-Android 13)
config_wifiSoftapOweTransitionSupported - (זמין מ-Android 13)
config_wifiSoftapOweSupported config_wifi_softap_ieee80211ac_supportedconfig_wifiSoftapIeee80211axSupported- (זמין מ-Android 13)
config_wifiSoftapIeee80211beSupported config_wifiSoftapMacAddressCustomizationSupportedconfig_wifiSoftapHeSuBeamformerSupportedconfig_wifiSoftapHeSuBeamformeeSupportedconfig_wifiSoftapHeMuBeamformerSupportedconfig_wifiSoftapHeTwtSupportedconfig_wifiSoftap24ghzSupportedconfig_wifiSoftap5ghzSupportedconfig_wifiSoftap6ghzSupportedconfig_wifiSoftap60ghzSupportedconfig_wifiSoftapAcsIncludeDfs
אימות
Android מספקת קבוצה של בדיקות יחידה ובדיקות של חבילת בדיקות התאימות (CTS) כדי לאמת את התכונה של נקודה לשיתוף אינטרנט. אפשר גם לבדוק את התכונה 'נקודה חמה' באמצעות Vendor Test Suite (VTS).
בדיקות יחידה
כדי לבדוק את חבילת הנקודה החמה, משתמשים בבדיקות הבאות.
בדיקות שירות:
atest packages/modules/Wifi/service/tests/wifitests/בדיקות בחשבון ניהול:
atest packages/modules/Wifi/framework/tests/
בדיקות בחבילה לבדיקות תאימות (CTS)
כדי לאמת את התכונה של נקודת Wi-Fi לשיתוף אינטרנט, אפשר להשתמש בבדיקות CTS. מערכת CTS מזהה מתי התכונה מופעלת וכוללת אוטומטית את הבדיקות שמשויכות אליה.
כדי להפעיל את בדיקות ה-CTS, מריצים את הפקודה:
atest android.net.wifi.cts.WifiManagerTestחבילת בדיקות לספקים (VTS)
אם הממשק של HIDL מיושם, מריצים את הפקודה:
atest VtsHalWifiHostapdV1_2Targetאם ממשק ה-AIDL מיושם, מריצים את הפקודה:
atest VtsHalHostapdTargetTest