ממשקי API של Android 6.0

‫Android 6.0‏ (M) מציעה תכונות חדשות למשתמשים ולמפתחי אפליקציות. במסמך הזה מפורטות דוגמאות לממשקי ה-API הבולטים ביותר.

התחילו לפתח

כדי להתחיל לפתח אפליקציות ל-Android 6.0, קודם צריך להוריד את Android SDK. לאחר מכן משתמשים ב-SDK Manager כדי להוריד את Android 6.0 SDK Platform ואת System Images.

עדכון רמת ה-API המיועדת

כדי לבצע אופטימיזציה טובה יותר של האפליקציה למכשירים עם Android, צריך להגדיר את targetSdkVersion לערך "23", להתקין את האפליקציה ב קובץ אימג' של המערכת של Android, לבדוק אותה ואז לפרסם את האפליקציה המעודכנת עם השינוי הזה.

אתם יכולים להשתמש בממשקי Android API וגם לתמוך בגרסאות ישנות יותר על ידי הוספת תנאים לקוד שלכם שבודקים את רמת ה-API של המערכת לפני הפעלת ממשקי API שלא נתמכים על ידי minSdkVersion. מידע נוסף על שמירה על תאימות לדורות קודמים זמין במאמר תמיכה בגרסאות שונות של פלטפורמות.

מידע נוסף על אופן הפעולה של רמות API זמין במאמר מהי רמת API?

אימות באמצעות טביעת אצבע

בגרסה הזו יש ממשקי API חדשים שמאפשרים לאמת משתמשים באמצעות סריקות טביעות אצבע במכשירים נתמכים. אפשר להשתמש בממשקי ה-API האלה בשילוב עם מערכת Android Keystore.

כדי לאמת משתמשים באמצעות סריקת טביעת אצבע, צריך לקבל מופע של המחלקה החדשה FingerprintManager ולקרוא לשיטה authenticate(). האפליקציה צריכה לפעול במכשיר תואם עם חיישן טביעות אצבע. אתם צריכים להטמיע את ממשק המשתמש לתהליך האימות באמצעות טביעת אצבע באפליקציה שלכם, ולהשתמש בסמל טביעת האצבע הרגיל של Android בממשק המשתמש. סמל טביעת האצבע של Android‏ (c_fp_40px.png) נכלל בדוגמה לאימות ביומטרי. אם אתם מפתחים כמה אפליקציות שמשתמשות באימות באמצעות טביעת אצבע, חשוב לדעת שכל אפליקציה צריכה לאמת את טביעת האצבע של המשתמש באופן עצמאי.

כדי להשתמש בתכונה הזו באפליקציה, צריך קודם להוסיף את ההרשאה USE_FINGERPRINT למניפסט.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
טלפון נייד שמציג את הפונקציה של אימות באמצעות טביעת אצבע

כדי לראות הטמעה של אימות באמצעות טביעת אצבע באפליקציה, אפשר לעיין בדוגמה לאימות ביומטרי. כדי לראות איך אפשר להשתמש בממשקי ה-API האלה לאימות בשילוב עם ממשקי API אחרים ל-Android, אפשר לצפות בסרטון ממשקי API של טביעות אצבע ותשלומים.

אם אתם בודקים את התכונה הזו, אתם צריכים לפעול לפי השלבים הבאים:

  1. אם עדיין לא עשיתם את זה, צריך להתקין את Android SDK Tools Revision 24.3.
  2. כדי לרשום טביעת אצבע חדשה באמולטור, עוברים אל הגדרות > אבטחה > טביעת אצבע ופועלים לפי ההוראות לרישום.
  3. משתמשים באמולטור כדי לבצע אמולציה של אירועי מגע של טביעת אצבע באמצעות הפקודה הבאה. משתמשים באותה פקודה כדי לבצע אמולציה של אירועי מגע של טביעת אצבע במסך הנעילה או באפליקציה.
    adb -e emu finger touch <finger_id>
    

    ב-Windows, יכול להיות שתצטרכו להריץ את הפקודה telnet 127.0.0.1 <emulator-id> ואחריה את הפקודה finger touch <finger_id>.

אישור פרטי הכניסה

האפליקציה יכולה לאמת משתמשים על סמך הזמן שעבר מאז שהם ביטלו את נעילת המכשיר שלהם. התכונה הזו פוטרת את המשתמשים מהצורך לזכור סיסמאות נוספות ספציפיות לאפליקציות, ומונעת את הצורך להטמיע ממשק משתמש משלכם לאימות. האפליקציה שלכם צריכה להשתמש בתכונה הזו בשילוב עם הטמעה של מפתח ציבורי או מפתח סודי לאימות משתמשים.

כדי להגדיר את משך הזמן הקצוב לתפוגה שבמהלכו אפשר לעשות שימוש חוזר באותו מפתח אחרי שמשתמש מאומת בהצלחה, קוראים ל-method החדש setUserAuthenticationValidityDurationSeconds() כשמגדירים KeyGenerator או KeyPairGenerator.

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

קישור אפליקציות

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

גיבוי אוטומטי של אפליקציות

המערכת מבצעת עכשיו גיבוי ושחזור אוטומטיים של נתונים מלאים באפליקציות. כדי להפעיל את ההתנהגות הזו, האפליקציה צריכה לטרגט את Android 6.0 (רמת API ‏23). אין צורך להוסיף קוד נוסף. אם משתמשים מוחקים את חשבונות Google שלהם, גם נתוני הגיבוי שלהם נמחקים. במאמר הגדרת גיבוי אוטומטי לאפליקציות מוסבר איך הפיצ'ר הזה פועל ואיך מגדירים מה לגבות במערכת הקבצים.

שיתוף ישיר

החלק התחתון של מסך בנייד שבו מוצגת הפונקציה 'שיתוף ישיר'

בגרסה הזו יש ממשקי API שמאפשרים למשתמשים לשתף קבצים בצורה אינטואיטיבית ומהירה. עכשיו אפשר להגדיר יעדים לשיתוף ישיר שמפעילים פעילות ספציפית באפליקציה. היעדים האלה לשיתוף ישיר מוצגים למשתמשים בתפריט שיתוף. התכונה הזו מאפשרת למשתמשים לשתף תוכן עם יעדים, כמו אנשי קשר, באפליקציות אחרות. לדוגמה, יעד השיתוף הישיר יכול להפעיל פעילות באפליקציית רשת חברתית אחרת, שתאפשר למשתמש לשתף תוכן ישירות עם חבר ספציפי או עם קהילה ספציפית באפליקציה הזו.

כדי להפעיל יעדים לשיתוף ישיר, צריך להגדיר מחלקה שמרחיבה את המחלקה ChooserTargetService. מצהירים על השירות במניפסט. בהצהרה הזו, מציינים את ההרשאה BIND_CHOOSER_TARGET_SERVICE ומסנן Intent באמצעות הפעולה SERVICE_INTERFACE.

בדוגמה הבאה אפשר לראות איך אפשר להצהיר על ChooserTargetService בקובץ המניפסט.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

לכל Activity שרוצים לחשוף ל-ChooserTargetService, מוסיפים רכיב <meta-data> עם השם "android.service.chooser.chooser_target_service" לקובץ מניפסט של האפליקציה.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

אינטראקציות קוליות

בגרסה הזו יש ממשק API חדש לאינטראקציה קולית, שמאפשר לכם, יחד עם פעולות קוליות, ליצור באפליקציות שלכם חוויות קוליות שימושיות. מריצים את השיטה isVoiceInteraction() כדי לקבוע אם פעולה קולית הפעילה את הפעילות. אם כן, האפליקציה יכולה להשתמש במחלקה VoiceInteractor כדי לבקש מהמשתמש אישור קולי, לבחור מתוך רשימת אפשרויות ועוד.

רוב האינטראקציות הקוליות מתחילות מפעולה קולית של המשתמש. עם זאת, פעילות של אינטראקציה קולית יכולה להתחיל גם ללא קלט של משתמשים. לדוגמה, אפליקציה אחרת שהופעלה באמצעות אינטראקציה קולית יכולה גם לשלוח כוונה להפעיל אינטראקציה קולית. כדי לקבוע אם הפעילות הופעלה משאילתת חיפוש קולית של משתמש או מאפליקציה אחרת של אינטראקציה קולית, צריך להתקשר לשיטה isVoiceInteractionRoot(). אם אפליקציה אחרת הפעילה את הפעילות, הפונקציה מחזירה false. יכול להיות שהאפליקציה תבקש מהמשתמש לאשר שהוא התכוון לבצע את הפעולה הזו.

מידע נוסף על הטמעת פעולות קוליות זמין באתר למפתחים בנושא פעולות קוליות.

Assist API

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

האפליקציה יכולה לבחור לא לשתף את ההקשר הנוכחי עם העוזר הדיגיטלי על ידי הגדרת הדגל FLAG_SECURE. בנוסף לסט המידע הרגיל שהפלטפורמה מעבירה לעוזר, האפליקציה יכולה לשתף מידע נוסף באמצעות המחלקה החדשה AssistContent.

כדי לספק לעוזר הדיגיטלי הקשר נוסף מהאפליקציה, פועלים לפי השלבים הבאים:

  1. מטמיעים את הממשק Application.OnProvideAssistDataListener.
  2. כדי לרשום את שירות האזנה הזה, משתמשים ב-registerOnProvideAssistDataListener().
  3. כדי לספק מידע הקשרי ספציפי לפעילות, צריך לבטל את ברירת המחדל של onProvideAssistData() callback ואופציונלית גם את ברירת המחדל של onProvideAssistContent() callback.

התקני אחסון שניתן להתאמה

בגרסה הזו, המשתמשים יכולים להשתמש בהתקני אחסון חיצוניים כמו כרטיסי SD. כשמשתמשים בהתקן אחסון חיצוני, ההתקן מוצפן ומפורמט כך שהוא מתנהג כמו אחסון פנימי. התכונה הזו מאפשרת למשתמשים להעביר אפליקציות ונתונים פרטיים של האפליקציות האלה בין מכשירי אחסון. כשמעבירים אפליקציות, המערכת מתחשבת בהעדפה android:installLocation בקובץ המניפסט.

אם האפליקציה שלכם ניגשת לממשקי ה-API או לשדות הבאים, חשוב לדעת שנתיבי הקבצים שמוחזרים ישתנו באופן דינמי כשהאפליקציה תועבר בין התקני אחסון פנימיים וחיצוניים. כשיוצרים נתיבי קבצים, מומלץ מאוד לקרוא תמיד ל-API האלה באופן דינמי. אל תשתמשו בנתיבי קבצים שמוגדרים מראש או בנתיבי קבצים מלאים שנבנו בעבר.

כדי לנפות באגים בתכונה הזו, אפשר להפעיל אימוץ של כונן USB שמחובר למכשיר Android באמצעות כבל USB On-The-Go ‏ (OTG), על ידי הפעלת הפקודה הבאה:

$ adb shell sm set-force-adoptable true

התראות

בגרסה הזו נוספו השינויים הבאים ב-API של ההתראות:

  • מסנן חדש ברמה INTERRUPTION_FILTER_ALARMS שתואם למצב החדש 'נא לא להפריע' התראות בלבד.
  • ערך חדש של הקטגוריה CATEGORY_REMINDER שמשמש להבחנה בין תזכורות שמשתמשים קובעים לבין אירועים אחרים (CATEGORY_EVENT) והתראות (CATEGORY_ALARM).
  • נוספה מחלקה חדשה, Icon, שאפשר לצרף להתראות באמצעות ה-methods‏ setSmallIcon() ו-setLargeIcon(). באופן דומה, השיטה addAction() מקבלת עכשיו אובייקט Icon במקום מזהה של משאב drawable.
  • שיטה חדשה getActiveNotifications() שמאפשרת לאפליקציות לגלות אילו מההתראות שלהן פעילות כרגע.

תמיכה בסטיילוס Bluetooth

בגרסה הזו שיפרנו את התמיכה בקלט של משתמשים באמצעות עט סטיילוס Bluetooth. המשתמשים יכולים להתאים ולחבר סטיילוס Bluetooth תואם לטלפון או לטאבלט שלהם. בזמן החיבור, מידע על המיקום ממסך המגע משולב עם מידע על הלחץ והלחצנים מהעט, כדי לספק טווח רחב יותר של הבעה מאשר רק עם מסך המגע. האפליקציה יכולה להאזין ללחיצות על לחצן העט האלקטרוני ולבצע פעולות משניות, על ידי רישום אובייקטים של View.OnContextClickListener ושל GestureDetector.OnContextClickListener בפעילות.

אפשר להשתמש בשיטות ובקבועים של MotionEvent כדי לזהות אינטראקציות עם לחצן העט:

  • אם המשתמש נוגע בעט סטיילוס עם לחצן במסך של האפליקציה, השיטה getTooltype() מחזירה TOOL_TYPE_STYLUS.
  • באפליקציות שמטרגטות ל-Android 6.0 (רמת API‏ 23), השיטה getButtonState() מחזירה BUTTON_STYLUS_PRIMARY כשהמשתמש לוחץ על הלחצן הראשי של העט. אם לעט יש כפתור שני, אותה שיטה מחזירה BUTTON_STYLUS_SECONDARY כשהמשתמש לוחץ עליו. אם המשתמש לוחץ על שני הלחצנים בו-זמנית, השיטה מחזירה את שני הערכים או את הערך שמתקבל אחרי פעולת OR (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY).
  • באפליקציות שמטרגטות גרסה נמוכה יותר של הפלטפורמה, השיטה getButtonState() מחזירה BUTTON_SECONDARY (ללחיצה על הלחצן הראשי של העט), BUTTON_TERTIARY (ללחיצה על הלחצן המשני של העט) או את שניהם.

שיפור בסריקה של Bluetooth עם צריכת אנרגיה נמוכה

אם האפליקציה שלכם מבצעת סריקות של Bluetooth עם צריכת אנרגיה נמוכה (BLE), אתם יכולים להשתמש בשיטה החדשה setCallbackType() כדי לציין שאתם רוצים שהמערכת תשלח קריאות חוזרות (callback) כשהיא מוצאת בפעם הראשונה חבילת מודעות שתואמת לערך ScanFilter, או כשהיא רואה חבילה כזו אחרי זמן רב. הגישה הזו לסריקה חסכונית יותר בצריכת החשמל בהשוואה לגישה שסופקה בגרסה הקודמת של הפלטפורמה.

תמיכה ב-Hotspot 2.0 Release 1

בגרסה הזו נוספה תמיכה במפרט Hotspot 2.0 Release 1 במכשירי Nexus 6 ו-Nexus 9. כדי להקצות הרשאות ל-Hotspot 2.0 באפליקציה, משתמשים בשיטות החדשות של המחלקה WifiEnterpriseConfig, כמו setPlmn() ו-setRealm(). באובייקט WifiConfiguration אפשר להגדיר את השדות FQDN ו-providerFriendlyName. השיטה החדשה isPasspointNetwork() מציינת אם רשת שזוהתה מייצגת נקודת גישה של Hotspot 2.0.

מצב תצוגה 4K

הפלטפורמה מאפשרת עכשיו לאפליקציות לבקש שרזולוציית התצוגה תשודרג לרינדור באיכות 4K בחומרה תואמת. כדי לשלוח שאילתה לגבי הרזולוציה הפיזית הנוכחית, צריך להשתמש בממשקי ה-API החדשים של Display.Mode. אם ממשק המשתמש מצויר ברזולוציה לוגית נמוכה יותר ומוגדל לרזולוציה פיזית גדולה יותר, חשוב לדעת שהרזולוציה הפיזית שמוחזרת על ידי השיטה getPhysicalWidth() עשויה להיות שונה מהרזולוציה הלוגית שמדווחת על ידי getSize().

אתם יכולים לבקש מהמערכת לשנות את הרזולוציה הפיזית באפליקציה בזמן שהיא פועלת, על ידי הגדרת המאפיין preferredDisplayModeId של חלון האפליקציה. התכונה הזו שימושית אם רוצים לעבור לרזולוציית תצוגה של 4K. בזמן שמוצגות תמונות ברזולוציית 4K, ממשק המשתמש ממשיך להיות מוצג ברזולוציה המקורית (למשל 1080p) ועובר הגדלה ל-4K, אבל יכול להיות שאובייקטים של SurfaceView יציגו תוכן ברזולוציה המקורית.

Themeable ColorStateLists

מאפייני עיצוב נתמכים עכשיו ב-ColorStateList במכשירים עם Android 6.0 (רמת API‏ 23). ה-methods‏ Resources.getColorStateList() ו-Resources.getColor() הוצאו משימוש. אם אתם קוראים לממשקי ה-API האלה, אתם צריכים לקרוא לשיטות החדשות Context.getColorStateList() או Context.getColor() במקום זאת. ה-methods האלה זמינות גם בספריית v4 appcompat דרך ContextCompat.

תכונות אודיו

בגרסה הזו הוספנו שיפורים לעיבוד אודיו ב-Android, כולל:

  • תמיכה בפרוטוקול MIDI באמצעות ממשקי ה-API החדשים של android.media.midi. אפשר להשתמש בממשקי ה-API האלה כדי לשלוח ולקבל אירועי MIDI.
  • מחלקות חדשות AudioRecord.Builder ו-AudioTrack.Builder ליצירת אובייקטים של לכידה והשמעה של אודיו דיגיטלי, בהתאמה, ולהגדרת מאפייני מקור ויעד של אודיו כדי לבטל את ברירות המחדל של המערכת.
  • ‫API hooks לשיוך של מכשירי אודיו וקלט. האפשרות הזו שימושית במיוחד אם האפליקציה מאפשרת למשתמשים להתחיל חיפוש קולי משלט משחק או משלט רחוק שמחוברים ל-Android TV. המערכת מפעילה את פונקציית הקריאה החוזרת (callback) החדשה onSearchRequested() כשמשתמש מתחיל חיפוש. כדי לקבוע אם למכשיר הקלט של המשתמש יש מיקרופון מובנה, מאחזרים את האובייקט InputDevice מהקריאה החוזרת הזו, ואז קוראים ל-method new hasMicrophone().
  • שיטה חדשה של getDevices() שמאפשרת לאחזר רשימה של כל מכשירי האודיו שמחוברים כרגע למערכת. אפשר גם לרשום אובייקט AudioDeviceCallback אם רוצים שהמערכת תשלח לאפליקציה התראה כשמכשיר אודיו מתחבר או מתנתק.

תכונות וידאו

בגרסה הזו הוספנו יכולות חדשות לממשקי ה-API לעיבוד וידאו, כולל:

  • מחלקת MediaSync חדשה שעוזרת לאפליקציות להציג באופן סינכרוני זרמי אודיו ווידאו. מאגרי האודיו נשלחים באופן לא חוסם ומוחזרים באמצעות קריאה חוזרת (callback). הוא תומך גם במהירות הפעלה דינמית.
  • אירוע חדש של EVENT_SESSION_RECLAIMED, שמציין שמנהל המשאבים החזיר לעצמו סשן שנפתח על ידי האפליקציה. אם האפליקציה שלכם משתמשת בסשנים של DRM, אתם צריכים לטפל באירוע הזה ולוודא שלא נעשה שימוש בסשן שהוחזר.
  • קוד שגיאה חדש ERROR_RECLAIMED, שמציין שמנהל המשאבים החזיר לעצמו את משאב המדיה שבו נעשה שימוש על ידי רכיב ה-codec. למעט החריג הזה, צריך לשחרר את רכיב ה-codec כי הוא עבר למצב סופי.
  • ממשק חדש getMaxSupportedInstances() לקבלת רמז לגבי המספר המקסימלי של מופעי codec בו-זמניים נתמכים.
  • שיטה חדשה setPlaybackParams() להגדרת מהירות ההפעלה של מדיה להפעלה בהילוך מהיר או בהילוך איטי. הוא גם מאריך או מאיץ את הפעלת האודיו באופן אוטומטי, בהתאם לסרטון.

תכונות המצלמה

הגרסה הזו כוללת את ממשקי ה-API החדשים הבאים לגישה לפנס של המצלמה ולעיבוד מחדש של תמונות במצלמה:

Flashlight API

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

כדי להירשם לקריאה חוזרת כדי לקבל הודעה על הסטטוס של מצב הפנס, קוראים לשיטה registerTorchCallback(). בפעם הראשונה שרושמים את הקריאה החוזרת, היא מופעלת באופן מיידי עם סטטוס מצב הפנס של כל מכשירי המצלמה הידועים כרגע עם יחידת פלאש. אם מצב הפנס מופעל או מושבת בהצלחה, מופעלת השיטה onTorchModeChanged().

Reprocessing API

ה-API של Camera2 הורחב כדי לתמוך בעיבוד מחדש של תמונות בפורמט YUV ובפורמט אטום פרטי. כדי לבדוק אם האפשרויות האלה לעיבוד מחדש זמינות, מתקשרים אל getCameraCharacteristics() ומחפשים את המפתח REPROCESS_MAX_CAPTURE_STALL. אם המכשיר תומך בעיבוד מחדש, אפשר ליצור סשן של צילום במצלמה שניתן לעיבוד מחדש על ידי קריאה ל-createReprocessableCaptureSession(), וליצור בקשות לעיבוד מחדש של מאגר קלט.

משתמשים במחלקת ImageWriter כדי לחבר את זרימת מאגר הקלט לקלט העיבוד מחדש של המצלמה. כדי לקבל מאגר ריק, פועלים לפי מודל התכנות הזה:

  1. מבצעים קריאה ל-dequeueInputImage().
  2. ממלאים את הנתונים במאגר הקלט.
  3. שולחים את המאגר למצלמה באמצעות קריאה לשיטה queueInputImage().

אם אתם משתמשים באובייקט ImageWriter יחד עם תמונה PRIVATE, לאפליקציה שלכם אין גישה ישירה לנתוני התמונה. במקום זאת, מעבירים את התמונה PRIVATE ישירות אל ImageWriter על ידי קריאה לשיטה queueInputImage() בלי להעתיק את המאגר.

הסיווג ImageReader תומך עכשיו בזרמי תמונות בפורמט PRIVATE. התמיכה הזו מאפשרת לאפליקציה לשמור תור מעגלי של ImageReader תמונות פלט, לבחור תמונה אחת או יותר ולשלוח אותן אל ImageWriter לעיבוד מחדש של המצלמה.

תכונות של Android for Work

הגרסה הזו כוללת את ממשקי ה-API החדשים הבאים ל-Android for Work:

  • אמצעי בקרה משופרים למכשירים שבבעלות החברה לשימוש יחיד: בעלי המכשיר יכולים עכשיו לשלוט בהגדרות הבאות כדי לשפר את הניהול של מכשירים שבבעלות החברה לשימוש יחיד (COSU):
    • משביתים או מפעילים מחדש את מסך הנעילה באמצעות השיטה setKeyguardDisabled().
    • משביתים או מפעילים מחדש את סרגל הסטטוס (כולל הגדרות מהירות, התראות והתנועה להחלקת המסך כלפי מעלה כדי להפעיל את Google Now) באמצעות השיטה setStatusBarDisabled().
    • משביתים או מפעילים מחדש את האתחול הבטוח באמצעות הקבוע UserManager DISALLOW_SAFE_BOOT.
    • כדי למנוע את כיבוי המסך כשהמכשיר מחובר לחשמל, משתמשים בקבוע STAY_ON_WHILE_PLUGGED_IN.
  • התקנה והסרה שקטות של אפליקציות על ידי בעל המכשיר: בעל המכשיר יכול עכשיו להתקין ולהסיר אפליקציות באופן שקט באמצעות ממשקי ה-API של PackageInstaller, ללא תלות ב-Google Play לעסקים. מעכשיו אפשר להקצות מכשירים באמצעות בעלות על המכשיר, שמאפשרת לאחזר ולהתקין אפליקציות ללא אינטראקציה מצד המשתמש. התכונה הזו שימושית להקצאת הרשאות במצב קיוסק או במכשירים דומים אחרים בלחיצה אחת, בלי להפעיל חשבון Google.
  • גישה שקטה לאישור ארגוני: כשאפליקציה קוראת ל-choosePrivateKeyAlias(), לפני שהמשתמש מתבקש לבחור אישור, הבעלים של הפרופיל או המכשיר יכולים עכשיו לקרוא לשיטה onChoosePrivateKeyAlias() כדי לספק את הכינוי בשקט לאפליקציה המבקשת. התכונה הזו מאפשרת להעניק לאפליקציות מנוהלות גישה לאישורים בלי שהמשתמש יצטרך לבצע פעולה.
  • אישור אוטומטי של עדכוני מערכת. הגדרת מדיניות עדכוני מערכת באמצעות setSystemUpdatePolicy() מאפשרת לבעלי מכשירים לקבל עדכוני מערכת באופן אוטומטי, למשל במקרה של מכשיר קיוסק, או לדחות את העדכון ולמנוע מהמשתמש להתקין אותו למשך עד 30 ימים. בנוסף, אדמין יכול להגדיר חלון זמן יומי שבו צריך לבצע עדכון, למשל בשעות שבהן מכשיר קיוסק לא נמצא בשימוש. כשעדכון מערכת זמין, המערכת בודקת אם אפליקציית בקר המדיניות של המכשיר הגדירה מדיניות עדכון מערכת, ופועלת בהתאם.
  • התקנת אישורים בהרשאה: בעלי פרופיל או בעלי מכשיר יכולים עכשיו להעניק לאפליקציית צד שלישי את היכולת להפעיל את ממשקי ה-API האלה לניהול אישורים:DevicePolicyManager
  • טלפון נייד שמוצגת בו התכונה 'התראות לגבי סטטוס' ב-Android for Work
  • מעקב אחרי השימוש בחבילת הגלישה. בעלי פרופיל או מכשיר יכולים עכשיו לשלוח שאילתה לגבי נתוני השימוש בחבילת הגלישה שמוצגים בהגדרות > שימוש בחבילת הגלישה באמצעות השיטות החדשות NetworkStatsManager. בעלי הפרופיל מקבלים באופן אוטומטי הרשאה לשלוח שאילתות לגבי הנתונים בפרופיל שהם מנהלים, ואילו בעלי המכשיר מקבלים גישה לנתוני השימוש של המשתמש הראשי המנוהל.
  • ניהול הרשאות בתחילת ההפעלה:

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

  • VPN בהגדרות: אפליקציות VPN מוצגות עכשיו בהגדרות > עוד > VPN. בנוסף, ההתראות שמצורפות לשימוש ב-VPN הן עכשיו ספציפיות לאופן שבו ה-VPN מוגדר. ההתראות שבעלי הפרופיל מקבלים תלויות בסוג הפרופיל שבו מוגדר ה-VPN: פרופיל מנוהל, פרופיל אישי או שניהם. במכשירים בבעלות פרטית, ההתראות תלויות בהגדרת ה-VPN לכל המכשיר.
  • התראה על סטטוס העבודה: סמל של תיק מסמכים מופיע עכשיו בשורת הסטטוס בכל פעם שאפליקציה מהפרופיל המנוהל מבצעת פעילות בחזית. בנוסף, אם המכשיר נפתח ישירות לפעילות של אפליקציה בפרופיל המנוהל, תוצג הודעה קצרה שתעדכן את המשתמש שהוא נמצא בפרופיל העבודה.