תכונות וממשקי API ב-Android 9

מערכת Android 9 (רמת API 28) כוללת תכונות ויכולות חדשות ונהדרות משתמשים ומפתחים. במסמך הזה נדגיש את התכונות החדשות למפתחים.

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

מיקום בפנים עם Wi-Fi RTT

ממשקי RTT חדשים של RTT תומכים במיקום בתוך הבית באפליקציות שלכם.

ב-Android 9 נוספה תמיכה בפלטפורמה לרשת Wi-Fi מסוג IEEE 802.11-2016 פרוטוקול שנקרא גם Wi-Fi Round-Trip-Time (RTT) – כדי לאפשר לכם ליהנות מהיתרון של המיקום בפנים באפליקציות שלכם.

במכשירים שמותקנת בהם גרסת Android 9 עם תמיכה בחומרה, האפליקציות יכולות להשתמש ממשקי API של RTT שמיועדים למדידה של המרחק בין נקודות גישה (AP) ל-Wi-Fi עם יכולות RTT בקרבת מקום. יש צורך במכשיר שירותי המיקום מופעלים וסריקת נקודות ה-Wi-Fi מופעלת (בקטע הגדרות > מיקום), והאפליקציה צריכה לכלול את ACCESS_FINE_LOCATION הרשאה. המכשיר לא צריך להתחבר לנקודות הגישה כדי להשתמש ב-RTT. כדי לשמור על הפרטיות, רק הטלפון יכול לקבוע את המרחק אל נקודת גישה (AP) נקודות הגישה לא כוללות את המידע הזה.

אם המכשיר מודד את המרחק ל-3 נקודות גישה או יותר, ניתן להשתמש אלגוריתם רב-שלבי להערכת מיקום המכשיר המתאים ביותר מדידות. התוצאה היא בדרך כלל מדויקת בטווח של 1-2 מטר.

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

הצגת ה-Wi-Fi RTT API בשימוש ב אפליקציית הדגמה ל-Android WifiRttScan.

מידע נוסף זמין במאמר הבא: מיקום Wi-Fi: בטווח של RTT.

תמיכה במגרעת במסך

מסך של אפשרויות למפתחים שבו מוצגים גדלים שונים של גזיר

בדיקת המגרעת במסך באמצעות אמולטור

ב-Android 9 יש תמיכה במסכים העדכניים ביותר מקצה לקצה שכוללים גזירי מסך למצלמות ולרמקולים. DisplayCutout מאפשר לגלות את המיקום והצורה של האזורים הלא פונקציונליים שבהם אסור להציג תוכן. כדי לקבוע את הקיום ואת המיקום של של אזורי המגרעת האלה, getDisplayCutout() .

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

אפשר לדמות חיתוך מסך בכל מכשיר או אמולטור עם Android 9 ככה:

  1. מפעילים את האפשרות אפשרויות למפתחים.
  2. במסך אפשרויות למפתחים, גוללים למטה אל הקטע שרטוט. ובוחרים באפשרות סימולציה של מסך עם חיתוך.
  3. בוחרים את גודל המגרעת.

התראות

ב-Android 9 יש כמה שיפורים להתראות, שכולם זמין למפתחים שמטרגטים לרמת API 28 ומעלה.

התראות בהעברת הודעות

סגנון העברת הודעות עם תמונה מצורפת.

התראה בהודעות SMS

סגנון הודעות עם תשובות ושיחות.

כדי לראות קוד לדוגמה שמשתמש בהתראות, כולל תכונות של Android 9, אפשר לעיין אנשים דוגמה.

חוויה משופרת של העברת הודעות

החל מ-Android 7.0 (רמת API 24), אפשר להוסיף פעולה שצריך להשיב לה הודעות או טקסט אחר ישירות מתוך התראה. Android 9 משופר את התכונה הזו עם השיפורים הבאים:

  • תמיכה פשוטה יותר למשתתפי השיחה: Person הכיתה משמשת לזיהוי אנשים שמעורבים בשיחה, כולל דמויות ומזהי URI. ממשקי API רבים אחרים, addMessage(), עכשיו להשתמש במחלקה Person במקום ב-CharSequence. הכיתה Person תומכת גם בתבנית העיצוב של Builder.

  • תמיכה בתמונות: ב-Android 9 מוצגות עכשיו תמונות ב'התראות להעברת הודעות' בטלפונים. אפשר להשתמש setData() בהודעה כדי להציג תמונה. קטע הקוד הבא מדגים איך כדי ליצור Person והודעה שכוללת תמונה.

Kotlin

// Create new Person.
val sender = Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build()
// Create image message.
val message = Message("Picture", time, sender)
        .setData("image/", imageUri)
val style = Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message)

Java

// Create new Person.
Person sender = new Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build();
// Create image message.
Message message = new Message("Picture", time, sender)
        .setData("image/", imageUri);
Notification.MessagingStyle style = new Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message);
  • שמירת התשובות כטיוטות: האפליקציה יכולה לאחזר את EXTRA_REMOTE_INPUT_DRAFT נשלחות על ידי המערכת כשמשתמש סוגר בטעות את ההודעה. אפשר להשתמש בתוספת הזו כדי לאכלס מראש שדות טקסט באפליקציה כך שהמשתמשים יוכלו לסיים את התשובה.

  • איך יודעים אם שיחה היא שיחה קבוצתית? תוכלו להשתמש setGroupConversation() כדי לזהות באופן מכוון שיחה כשיחה קבוצתית או כשיחה שאינה קבוצתית.

  • מגדירים את הפעולה הסמנטית ל-Intent: setSemanticAction() מאפשרת לתת לפעולה משמעות סמנטית, כ'סימון כפריט שנקרא', "delete", "Reply, " וכן הלאה.

  • תשובה מהירה: ב-Android 9 יש תמיכה באותן הצעות לתשובות שזמינות של אפליקציית הודעות. כדאי להשתמש RemoteInput.setChoices() כדי לספק מערך של תשובות סטנדרטיות למשתמש.

הגדרות הערוץ, שידורים ו'נא לא להפריע'

ב-Android 8.0 הושקה Notification Channels, שמאפשרת ליצור ערוץ מותאם אישית לכל סוג של התראה שרוצים להציג. מערכת Android 9 מפשטת את ההגדרות של ערוצי התראות בעזרת השינויים הבאים:

  • חסימת קבוצות ערוצים: המשתמשים יכולים עכשיו לחסום קבוצות שלמות של ערוצים בהגדרת ההתראות של אפליקציה מסוימת. אפשר להשתמש isBlocked() כדי לזהות מתי קבוצה חסומה וכתוצאה מכך לא לשלוח התראות לערוצים בקבוצה הזו.

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

  • סוגים חדשים של כוונות שידור: מערכת Android שולחת עכשיו הפניות לחיפושים כשמצב החסימה של ערוצי ההתראות וקבוצות הערוצים משתנה. האפליקציה שבבעלותה הערוץ או הקבוצה החסומים יכולה להקשיב לכוונות האלה וגם מגיבים בהתאם. כדי לקבל מידע נוסף על כוונות הרכישה והתוספות האלה, לעיין ברשימת הקבועים המעודכנת NotificationManager הפניה. לקבלת מידע על תגובה לכוונות שידור, אפשר לעיין ב: שידורים.

  • NotificationManager.Policy יש שלוש קטגוריות חדשות של עדיפות 'נא לא להפריע':

  • ב-NotificationManager.Policy יש גם שבעה קבועי 'ללא הפרעות' חדשים יכול להשתמש כדי למנוע הפרעה בראייה:

תמיכה בכמה מצלמות ועדכונים למצלמות

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

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

ב-Android 9 יש ריבוי מצלמות API תומכת במצלמות מונוכרומטיות במכשירים עם FULL או יכולת LIMITED. הפלט המונוכרומטי מתקבל באמצעות YUV_420_888 פורמט Y עם גווני אפור, U (Cb) כ-128 ו-V (Cr) כ-128.

מערכת Android 9 מספקת גם תמיכה בUSB/UVC חיצוניים מצלמות מופעלות מכשירים נתמכים.

ImageDecoder לתמונות ולמפות ביטים שניתנים להזזה

Android 9 כולל ImageDecoder שמספק גישה מודרנית לפענוח תמונות. שימוש בכיתה הזו במקום BitmapFactory ו-BitmapFactory.Options ממשקי API.

ImageDecoder מאפשר לך ליצור Drawable או Bitmap ממאגר נתונים זמני של בייטים, מקובץ, או URI. כדי לפענח תמונה, צריך להפעיל createSource() במקור של התמונה המקודדת. לאחר מכן, התקשרו decodeDrawable() או decodeBitmap() על ידי העברת ImageDecoder.Source אובייקט ליצירת Drawable או Bitmap. כדי לשנות את הגדרות ברירת מחדל, מעבירים את OnHeaderDecodedListener אל decodeDrawable() או decodeBitmap(). ImageDecoder שיחות onHeaderDecoded() עם ערכי ברירת המחדל של הרוחב והגובה של התמונה, ברגע שהם ידועים. אם התמונה המקודדת היא GIF או WebP מונפש, הפונקציה decodeDrawable() מחזירה Drawable שהוא מופע של AnimatedImageDrawable בכיתה.

יש כמה שיטות להגדרת מאפיינים של תמונות:

  • כדי לשנות את הגודל של התמונה שמקודדת לגודל מדויק, צריך להעביר את מידות היעד אל setTargetSize() אפשר גם לשנות את גודל התמונות באמצעות מדגם. מעבירים את גודל הדגימה ישירות אל setTargetSampleSize()
  • לחיתוך תמונה מתוך הטווח של תמונה מותאמת, יש להפעיל את setCrop()
  • כדי ליצור מפת סיביות ניתנת לשינוי, מעבירים את true אל setMutableRequired().

באמצעות ImageDecoder אפשר גם להוסיף אפקטים מורכבים ומותאמים אישית לתמונה כמו פינות מעוגלות או מסיכות מעגלות. כדאי להשתמש setPostProcessor() עם מופע של PostProcessor class כדי להריץ כל פקודות שרטוט שרוצים.

אנימציה

Android 9 כולל AnimatedImageDrawable לציור ולהצגה של תמונות מונפשות בפורמט GIF ו-WebP. AnimatedImageDrawable פועל בצורה דומה ל- AnimatedVectorDrawable בכך ששרשור העיבוד מפעיל את האנימציות של AnimatedImageDrawable. ה-thread של העיבוד משתמש גם ב-thread של עובד כדי לפענח את הקוד, להפריע לפעולות אחרות בשרשור של העיבוד. ההטמעה הזאת מאפשרת להציג תמונה מונפשת באפליקציה בלי לנהל את העדכונים שלה שמפריעים לאירועים אחרים בשרשור (thread) בממשק המשתמש של האפליקציה.

אפשר לפענח את הקוד של AnimatedImageDrawable באמצעות מופע של ImageDecoder. הבאים קטע הקוד מראה איך להשתמש ב-ImageDecoder כדי לפענח AnimatedImageDrawable:

Kotlin

@Throws(IOException::class)
private fun decodeImage() {
    val decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(resources, R.drawable.my_drawable))

    // Prior to start(), the first frame is displayed.
    (decodedAnimation as? AnimatedImageDrawable)?.start()
}

Java

private void decodeImage() throws IOException {
    Drawable decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(getResources(), R.drawable.my_drawable));

    if (decodedAnimation instanceof AnimatedImageDrawable) {
        // Prior to start(), the first frame is displayed.
        ((AnimatedImageDrawable) decodedAnimation).start();
    }
}

ב-ImageDecoder יש כמה שיטות שמאפשרות להמשיך לשנות את התמונה. לדוגמה, אפשר להשתמש setPostProcessor() שיטה לשינוי מראה התמונה, כמו החלת מסכת עיגול או עם פינות מעוגלות.

דחיסת וידאו בפורמט HDR VP9 , דחיסת תמונות HEIF וממשקי API של מדיה

ב-Android 9 יש תמיכה מובנית בטווח דינמי גבוה (HDR) בפרופיל 29. כדי שתהיה לך אפשרות לספק למשתמשים שלך סרטים שתומכים ב-HDR מ-YouTube, מ-Play Movies, ומקורות אחרים במכשירים שתומכים ב-HDR.

ב-Android 9 נוספה גם תמיכה בקידוד תמונות באמצעות התכונה 'תמונה של רמת יעילות גבוהה' פורמט הקובץ (HEIF או HEIC), שמשפר את הדחיסה ומצמצם את נפח האחסון ונתוני הרשת בשימוש. דוגמאות של תמונות סטילס מסוג HEIF נתמכות MediaMuxer ו-MediaExtractor הסוגים. עם תמיכה בפלטפורמה במכשירי Android 9, קל לשלוח ולקבל להשתמש בתמונות HEIF משרת הקצה העורפי. אחרי שמוודאים תואמת לפורמט הנתונים הזה לצורך שיתוף והצגה. אפשר לנסות את HEIF בתור פורמט לאחסון תמונות באפליקציה. אפשר לבצע המרה מסוג jpeg-to-heic באמצעות ImageDecoder או BitmapFactory (שמקבל מפת סיביות מקובץ JPEG). לאחר מכן תוכלו להשתמש HeifWriter כדי לכתוב HEIF תמונות סטילס ממאגרי נתונים זמניים של בייטים של YUV, או מופעים של Surface או Bitmap.

מדדי המדיה זמינים גם דרך AudioTrack, AudioRecord, ו-MediaDrm כיתות.

ב-Android 9 יש שיטות חדשות MediaDRM כדי לקבל מדדים, HDCP רמות האבטחה, מספר הסשנים ומספר הסשנים, וכדי להוסיף יותר שליטה רמות האבטחה ועצירות מאובטחות. לעיון בהבדלים ב-API לפרטים נוספים.

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

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

רגישות עלות הנתונים ב-JobScheduler

החל מ-Android 9, JobScheduler יכול להשתמש באותות סטטוס הרשת שסופקו על ידי הספקים כדי לשפר את של משרות שקשורות לרשת.

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

כשמוסיפים משרות, חשוב להשתמש בכתובת setEstimatedNetworkBytes(), setPrefetch(), ו-setRequiredNetwork() כשהדבר רלוונטי JobScheduler מטפלים בעבודה כמו שצריך. כשהמשימה מתבצעת, חשוב להשתמש באובייקט Network הוחזר על ידי JobParameters.getNetwork() אחרת, תשתמשו באופן מרומז ברשת ברירת המחדל של המכשיר, לא יעמדו בדרישות שלך, מה שיגרום לשימוש לא מכוון בנתונים.

Neural Networks API 1.1

השקנו את Neural Networks API ב-Android 8.1 (רמת API 27) כדי להאיץ את למידת המכונה במכשיר Android. מערכת Android 9 מרחיבה ומשפרת את ה-API, תמיכה בתשע פעולות חדשות:

בעיה ידועה: כשמעבירים את העכבר ANEURALNETWORKS_TENSOR_QUANT8_ASYMM את Tensor ANEURALNETWORKS_PAD שזמינה ב-Android מגרסה 9 ואילך, יכול להיות שהפלט מ-NNAPI לא יתאים לפלט ממכונה ברמה גבוהה יותר מסגרות למידה, TensorFlow Lite. שלך במקום זאת עובר רק ANEURALNETWORKS_TENSOR_FLOAT32 עד שהבעיה תיפתר.

בנוסף, ה-API כולל גם פונקציה חדשה: ANeuralNetworksModel_relaxComputationFloat32toFloat16() שמאפשרת לקבוע אם לחשב ANEURALNETWORKS_TENSOR_FLOAT32 בטווח ובדיוק נמוכים כמו של ה-IEEE 754 עם נקודה צפה (floating-point) של 16 ביט הפורמט.

מסגרת למילוי אוטומטי

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

שיפורי אבטחה

ב-Android 9 יש כמה תכונות אבטחה, סיכום הקטעים הבאים:

אישור מאובטח של Android

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

אם המשתמש מקבל את דף החשבון, Android Keystore מקבל ומאחסן חתימה קריפטוגרפית שמוגנת על ידי אימות הודעה עם גיבוב (hash) עם מפתח קוד HMAC. לאחר ש-Android Keystore יאשר את תוקף ההודעה, האפליקציה שלך יכול להשתמש במפתח שנוצר מ-trustedConfirmationRequired באפליקציית בסביבת הביצוע (TEE) כדי לחתום על ההודעה שהמשתמש אישר. מציינת, ברמת ביטחון גבוהה מאוד, שהמשתמש ראה את והם מסכימים לה.

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

לקבלת הנחיות להוספת תמיכה ב'אישור מוגן ב-Android', אפשר לעיין ב הגנה על Android אישור מותאמת אישית.

תיבת דו-שיח מאוחדת לאימות ביומטרי

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

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

מודול אבטחה לחומרה

מכשירים נתמכים שבהם פועלת מערכת Android מגרסה 9 ואילך יכולים כולל StrongBox Keymaster, יישום של Keymaster HAL נמצא במודול אבטחת חומרה. המודול מכיל את הדברים הבאים:

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

בבדיקת מפתחות השמורים ב-StrongBox Keymaster, המערכת מאמתת התקינות של המפתח בסביבת ביצוע מהימנה (TEE).

למידע נוסף על השימוש ב-Strongbox Keymaster, אפשר לעיין באבטחת חומרה יחידת לימוד.

ייבוא של מפתחות מאובטחים ל-Keystore

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

מידע נוסף על ייבוא מפתחות מוצפנים באופן מאובטח.

סכמת חתימת APK עם רוטציית מפתחות

ב-Android 9 נוספה תמיכה ב-APK Signature Scheme v3. לסכמה הזו יש אפשרות לכלול רשומה של הוכחת סבב מפתחות בבלוק החתימה על כל חתימה. אישור. היכולת הזו מאפשרת לחתום על האפליקציה באמצעות חתימה חדשה על ידי קישור אישורי החתימה הקודמים של קובץ ה-APK לאישור עם והוא חתום עכשיו.

מידע נוסף על רוטציית מפתחות באמצעות apksigner

אפשרות לאפשר פענוח מפתחות רק במכשירים לא נעולים

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

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

תמיכה בהצפנה מדור קודם

מכשירי Android 9 שנשלחים עם Keymaster 4 תומכים ב-Triple Data Encryption Algorithm, או Triple DES. אם האפליקציה פועלת באופן הדדי עם משתמשים מדור קודם במערכות שדורשות Triple DES, משתמשות בהצפנה מהסוג הזה במהלך ההצפנה פרטי כניסה רגישים.

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

הוצאה משימוש של WPS

הגדרת Wi-Fi Protected Setup (WPS) הוצאה משימוש מטעמי אבטחה.

גיבויים של Android

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

גיבויים להצפנה מצד הלקוח

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

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

הגדרת התנאים שנדרשים לגיבוי במכשיר

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

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

נגישות

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

סמנטיקה של ניווט

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

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

כותרות של חלונית נגישות

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

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

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

ניווט מבוסס-כותרת

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

ניווט ופלט קבוצתי

בדרך כלל, קוראי מסך השתמשו שיוך של android:focusable לערך כדי לקבוע מתי כדאי לקרוא ViewGroup, או אוסף של View אובייקטים, כיחידה אחת. כך, משתמשים יכלו להבין שהצפיות היו קשורות באופן לוגי זו לזו.

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

החל מ-Android 9, אפשר להשתמש android:screenReaderFocusable במקום המאפיין android:focusable במצבים שבהם להפיכת אובייקט View לניתן למיקוד יש השלכות לא רצויות. קוראי מסך להתמקד בכל הרכיבים שהגדירו את android:screenReaderFocusable או android:focusable אל true.

פעולות נוחות

ב-Android 9 נוספה תמיכה בביצוע פעולות נוחות בשם משתמשים:

אינטראקציה עם הסברים קצרים
תכונות נוספות במסגרת הנגישות מאפשרות לך גישה אל הסברים קצרים בממשק המשתמש של האפליקציה. כדאי להשתמש getTooltipText() לקרוא את הטקסט של הסבר קצר, ולהשתמש ACTION_SHOW_TOOLTIP ו-ACTION_HIDE_TOOLTIP להורות למופעים של View להציג או להסתיר את ההסברים הקצרים שלהם.
פעולות גלובליות שנוספו
Android 9 כולל תמיכה בשתי פעולות נוספות במכשיר AccessibilityService בכיתה. השירות שלך יכול לעזור למשתמשים לנעול את המכשירים שלהם וליצור צילומי מסך באמצעות GLOBAL_ACTION_LOCK_SCREEN ו-GLOBAL_ACTION_TAKE_SCREENSHOT פעולות, בהתאמה.

פרטי השינוי של החלון

עם Android 9 קל יותר לעקוב אחרי עדכונים בחלונות של אפליקציות באפליקציות משרטט מחדש חלונות מרובים בו-זמנית. כאשר TYPE_WINDOWS_CHANGED של האירוע, השתמשו getWindowChanges() API לקביעת האופן שבו החלונות השתנו. במהלך עדכון של מספר חלונות, כל אחד המערכת יוצרת סדרת אירועים משלו. getSource() הפונקציה מחזירה את תצוגת הרמה הבסיסית (root) של החלון שמשויך לכל אירוע.

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

סיבוב

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

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

לפרטים נוספים אפשר לעיין בהתנהגות המשויכת .

סבב בנייד שבו מוצג מצב סיבוב חדש שמאפשר למשתמשים להפעיל סיבוב באופן ידני

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

טקסט

Android 9 כולל את התכונות הבאות שקשורות לטקסט Platform:

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

  • זכוכית מגדלת: הכיתה Magnifier היא ווידג'ט פלטפורמה שמספק API לזכוכית מגדלת, שמאפשר בכל האפליקציות.

  • Smart Linkify: מערכת Android 9 משפרת את TextClassifier כיתה, שמשתמש בלמידת מכונה כדי לזהות ישויות מסוימות בטקסט שנבחר הצעות לפעולות. לדוגמה, האפליקציה TextClassifier יכולה לאפשר לאפליקציה לזהות שהמשתמש בחר מספר טלפון. לאחר מכן האפליקציה יכולה להציע משתמש יבצע שיחת טלפון באמצעות המספר הזה. התכונות של TextClassifier החלפת הפונקציונליות של המחלקה Linkify.

  • פריסת טקסט: יש כמה שיטות ומאפייני נוחות שיעזרו לכם להטמיע את העיצוב של ממשק המשתמש. לקבלת פרטים, תוכלו לקרוא את מאמרי העזרה של TextView

המרה מראש של קובצי DEX ב-ART

במכשירים עם Android מגרסה 9 ואילך, זמן הריצה של Android (ART) מהדר מראש מבצע אופטימיזציה נוספת של Dalvik Executable בפורמט DEX על ידי המרת קובצי ה-DEX שבחבילת אפליקציה תצוגה קומפקטית. השינוי הזה מאפשר לאפליקציה לפעול מהר יותר ולצרוך יותר פחות מקום בכונן ו-RAM.

השיפור הזה מועיל במיוחד למכשירים פשוטים עם קלט/פלט (I/O) איטי יותר מהירויות גבוהות.

מעקב מערכת במכשיר

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

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

מידע נוסף על הכלי הזה זמין במאמר ביצוע מערכת במכשיר .