שמירה על נקודות לשיתוף אינטרנט בין פעילויות נהיגה

בדף הזה נסביר איך להגדיר משתמשים כך שלא יאבדו נקודות לשיתוף אינטרנט (Hotspot) בין פעילויות נהיגה, בדומה לחוויית הנהיגה ב-Wi-Fi ב-AAOS.

public class CarSettings {
  ...

  @SystemApi
  public static final class Global {
    ...

    /**
     * Enables persistent tethering when set to {@code "true"}.
     *
     * <p>When enabled, tethering is started when the car is started given
     * that the hotspot was enabled at shutdown and all tethering sessions
     * will remain on even if no devices are connected to it.
     *
     * <p>When disabled, hotspot will turn off automatically if no devices
     * are connected and will no longer persist through drives.
     *
     * @hide
     */
    @SystemApi
    public static final String ENABLE_PERSISTENT_TETHERING =
           "android.car.ENABLE_PERSISTENT_TETHERING";
  }
}

כדי לשמור על שיתוף אינטרנט בין מכשירים, צריך להשתמש ב-ENABLE_PERSISTENT_TETHERING דרך Settings API, אפשר להשתמש בו גם כדי ליצור שאילתות.

הרשאות

השימוש ב-CarWi-Manager API מוגבל. ההרשאה החדשה הזו נוצרה כדי לשמירה על הגישה.

public boolean canControlPersistApSettings() { ... }

רמות ההגנה על ההרשאה הזו הן:

הרשאה חדשה הרשאה רמת הגנה
כן READ_PERSIST_TETHERING_SETTINGS חתימה | בעל הרשאות

כברירת מחדל, ההתנהגות הקבועה מוגדרת כלא נתמכת. שכבת-על של משאב (config_enablePersistTetheringCapabilities) מוגדר לחסום את יכולת לשמור על שיתוף אינטרנט בין מכשירים. כדי לשמור באופן מכוון את שיתוף האינטרנט בין מכשירים, לערך true כדי להפעיל את התכונה בנוסף להעדפת המשתמש מאחר שאפליקציות מערכת אחרות עם ההרשאה WRITE_SECURE_SETTINGS עשויות לשלוט גם בהגדרה הזו.

ממשק ה-API הבא קובע אם ההתנהגות מופעלת. צריך לשלוח קריאה ל-API הזה לפני את/ה משנה את ENABLE_PERSISTENT_TETHERING.

/**
 * CarWifiManager provides API to allow for applications to perform Wi-Fi specific
 * operations.
 *
 * @hide
 */
@SystemApi
public final class CarWifiManager extends CarManagerBase {
 /**
  * Returns {@code true} if the persist tethering settings are able to be
  * changed.
  *
  * @hide
  */
 @SystemApi
 @RequiresPermission(Car.PERMISSION_READ_PERSIST_TETHERING_SETTINGS)
 public boolean canControlPersistApSettings() { ... }
}