ממשקי API של Android 5.0

רמת API: 21

Android 5.0 (LOLLIPOP) מציע תכונות חדשות למשתמשים ולמפתחי אפליקציות. במסמך הזה אנחנו מסבירים של ממשקי ה-API החדשים והחשובים ביותר.

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

כדי לראות סקירה כללית של תכונות הפלטפורמה החדשות, לראות את Android Lollipop המיטב.

התחילו לפתח

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

עדכון רמת ה-API המטורגטת

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

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

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

שינויים חשובים בהתנהגות

אם פרסמת בעבר אפליקציה ל-Android, ייתכן שהאפליקציה מושפעת משינויים ב-Android 5.0.

מידע מלא זמין במאמר שינויים ב-Android 5.0.

ממשק משתמש

תמיכה בעיצוב חומרים

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

  • העיצוב של החומר
  • הצגת האזורים הכהים
  • הווידג'ט RecyclerView
  • אנימציה ואפקטים של עיצוב שניתן לצייר
  • אנימציה של עיצוב חדשני ואפקטים של מעבר בין פעילויות
  • אנימטורים של מאפייני תצוגה על סמך מצב התצוגה
  • ווידג'טים של ממשק המשתמש וסרגלי אפליקציות שניתנים להתאמה אישית עם לוחות צבעים שנמצאים בשליטתך
  • פריטי גרפיקה עם אנימציה ולא מונפשים על סמך גרפיקה וקטורית של XML

למידע נוסף על הוספת פונקציונליות של עיצוב חדש לאפליקציה: עיצוב חומרים (Material Design).

פעילויות ומסמכים בו-זמנית במסך האחרונים

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

להכניס הפסקה לוגית כדי שהמערכת תתייחס לפעילות שלכם כאירוע חדש משימה, יש להשתמש ב-FLAG_ACTIVITY_NEW_DOCUMENT כאשר מתחיל את הפעילות עם startActivity(). אפשר גם לקבל את ההתנהגות הזו על ידי הגדרת <activity> המאפיין documentLaunchMode של הרכיב ל-"intoExisting" או "always" במניפסט.

כדי להימנע מעומס במסך של הפריטים האחרונים, ניתן להגדיר את המספר המקסימלי של משימות מהאפליקציה שיכולות להופיע במסך הזה. כדי לעשות את זה, <application> מאפיין android:maxRecents. הערך הנוכחי אפשר לציין עד 50 משימות לכל משתמש (25 מכשירים עם זיכרון RAM נמוך).

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

עדכונים של WebView

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

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

באמצעות השיטה החדשה onShowFileChooser(), עכשיו תוכלו להשתמש בשדה להזנת קלט ב-WebView, ולהפעיל בורר קבצים כדי לבחור תמונות וקבצים ממכשיר Android.

בנוסף, גרסה זו כוללת תמיכה WebAudio, WebGL, סטנדרטים פתוחים של WebRTC. למידע נוסף על התכונות החדשות שכלולות בגרסה הזו: WebView ל-Android.

צילום מסך ושיתוף שלו

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

ה-method החדש של createVirtualDisplay() מאפשרת לאפליקציה לצלם את התוכן של המסך הראשי (ברירת המחדל ) לאובייקט Surface, שאותו האפליקציה יכולה לשלוח דרך הרשת. ה-API מאפשר לצלם מסך לא מאובטח בלבד תוכן, ולא אודיו של המערכת. כדי להתחיל בצילום המסך, צריך להתקין את האפליקציה לבקש את הרשאת המשתמש על ידי הפעלת תיבת דו-שיח של צילום מסך באמצעות Intent הושג באמצעות createScreenCaptureIntent() .

דוגמה לאופן השימוש בממשקי ה-API החדשים זמינה בכתובת MediaProjectionDemo המחלקה בפרויקט לדוגמה.

התראות

התראות במסך הנעילה

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

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

  • VISIBILITY_PRIVATE: מציגה מידע בסיסי, כמו סמל ההתראה, אבל מסתירה את את כל התוכן של ההתראה.
  • VISIBILITY_PUBLIC: הצגת כל התוכן של ההתראה.
  • VISIBILITY_SECRET: לא מציגה שום דבר, אפילו לא את סמל ההתראה.

כשרמת החשיפה היא VISIBILITY_PRIVATE, אפשר גם לספק גרסה מצונזרת של ההתראה תוכן שמסתיר פרטים אישיים. לדוגמה, אפליקציית SMS עשויה להציג התראה על ההודעה 'יש לך 3 הודעות טקסט חדשות' אבל מסתיר את ההודעה תכנים ושולחים. כדי לספק את ההודעה החלופית הזו, קודם צריך ליצור התראה על החלפה באמצעות Notification.Builder. מתי אתם יוצרים את אובייקט ההתראה הפרטית, מצרפים את ההתראה לגבי ההחלפה אליו דרך אמצעי תשלום אחד (setPublicVersion()).

מטא-נתונים של התראות

מערכת Android 5.0 משתמשת במטא-נתונים שמשויכים להתראות מהאפליקציה כדי למיין את ההתראות בצורה חכמה יותר. כדי להגדיר את המטא-נתונים, קוראים לפונקציה בשיטות הבאות ב-Notification.Builder ליצור את ההתראה:

  • setCategory(): מנחה את המערכת איך לטפל בהתראות מהאפליקציה כאשר המכשיר נמצא במצב עדיפות (לדוגמה, אם התראה מייצגת שיחה נכנסת, הודעה מיידית או התראה).
  • setPriority(): מסמן את ההתראה כחשובה יותר או פחות מהרגיל. התראות ששדה העדיפות שלהן מוגדר ל- PRIORITY_MAX או PRIORITY_HIGH מופיעים ב חלון צף קטן אם להודעה יש גם צליל או רטט.
  • addPerson(): ניתן להוסיף אדם אחד או יותר שרלוונטיים להודעה. האפליקציה יכולה להשתמש במספר הזה כדי לאותת למערכת שצריך לקבץ יחד הודעות מהאנשים שצוינו, או דירוג הודעות מהאנשים האלה להיות יותר חשוב.

גרפיקה

תמיכה ב-OpenGL ES 3.1

במערכת Android 5.0 נוספו ממשקי Java ותמיכה מובנית ב-OpenGL ES 3.1. הפונקציונליות החדשה העיקרית שמסופקת על ידי OpenGL ES 3.1 כוללת:

  • חישוב של תוכנות הצללה (shader)
  • הפרדת אובייקטים של תוכנת ההצללה
  • פקודות ציור עקיפות
  • מרקמים של מספר דוגמאות ושבלונות
  • שיפורים בשפה ההצללה
  • תוספים למצבי שילוב מתקדמים ולניפוי באגים
  • תאימות לאחור עם OpenGL ES 2.0 ו-3.0

ממשק Java ל-OpenGL ES 3.1 ב-Android מסופק עם GLES31 כשמשתמשים ב-OpenGL ES 3.1, צריך לוודא להצהיר עליו בקובץ המניפסט עם התג <uses-feature> והמאפיין android:glEsVersion. לדוגמה:

<manifest>
    <uses-feature android:glEsVersion="0x00030001" />
    ...
</manifest>

לקבלת מידע נוסף על השימוש ב-OpenGL ES, כולל איך לבדוק את לגרסת OpenGL ES הנתמכת של המכשיר בזמן הריצה, מדריך OpenGL ES API

חבילת תוספים ל-Android

בנוסף ל-OpenGL ES 3.1, בגרסה הזו יש חבילת תוספים עם ממשקי Java ותמיכה מובנית לפונקציונליות גרפיקה מתקדמת. האלה תוספים נחשבים כחבילה אחת על ידי Android. (אם יש תוסף אחד (ANDROID_extension_pack_es31a), האפליקציה יכולה מניחים שכל התוספים בחבילה קיימים ומאפשרים את שפת ההצללה באמצעות הצהרת #extension אחת.)

חבילת התוספים תומכת:

  • תמיכה מובטחת בהצללה (shader) של מקטעי נתונים, לתמונות ולמאגרי נתונים של תוכנת ההצללה (shader) אטומיות (תמיכה בהצללה במקטעים (Fragment) היא אופציונלית ב-OpenGL ES 3.1).
  • תוכנות הצללה (shader) וגיאומטריה
  • פורמט דחיסה של טקסטורה ASTC (LDR)
  • אינטרפולציה והצללה לכל דגימה
  • מצבי שילוב שונים לכל צבע שמצורף במאגר הנתונים הזמני

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

<manifest>
    <uses-feature android:name=“android.hardware.opengles.aep”
        android:required="true" />
    ...
</manifest>

מדיה

ממשק API של מצלמה ליכולות מתקדמות של המצלמה

Android 5.0 מציג את הגרסה החדשה android.hardware.camera2 API שעוזר לצלם תמונות פרטניות ועיבוד תמונות. מעכשיו אפשר גישה פרוגרמטית להתקני המצלמה שזמינים למערכת באמצעות getCameraIdList() ומתחברים למכשיר ספציפי באמצעות openCamera(). כדי להתחיל לצלם תמונות, צריך ליצור CameraCaptureSession ולציין את האובייקטים Surface כדי לשלוח תמונות שצולמו. אפשר להגדיר את CameraCaptureSession כך לצלם תמונות בודדות או כמה תמונות ברצף.

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

המחלקה CameraCharacteristics מאפשרת מזהה אילו תכונות של המצלמה זמינות במכשיר. המאפיין המאפיין INFO_SUPPORTED_HARDWARE_LEVEL מייצג את רמת הפונקציונליות של המצלמה.

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

כדי לראות איך להשתמש בגרסה המעודכנת מצלמה API, יש לעיין בהטמעה של Camera2Basic ו-Camera2Video דוגמאות בגרסה הזו.

הפעלת האודיו

הגרסה הזו כוללת את השינויים הבאים ב AudioTrack:

  • האפליקציה יכולה עכשיו לספק נתוני אודיו בפורמט נקודה צפה (floating-point) (ENCODING_PCM_FLOAT). הזה מאפשרת טווח דינמי גדול יותר, דיוק עקבי יותר ופוטנציאל גדול יותר. חשבונית של נקודה צפה (floating-point) שימושית במיוחד במהלך חישובי ביניים. נקודות הקצה להפעלה משתמשות בפורמט של מספרים שלמים לנתוני אודיו, עם עומק ביט נמוך יותר. (ב-Android 5.0, חלקים מצינור עיבוד הנתונים הפנימי עדיין לא נקודה צפה (floating-point).
  • האפליקציה שלך יכולה עכשיו לספק נתוני אודיו בתור ByteBuffer, במדינות ובאזורים הבאים זהה לפורמט שסופק על ידי MediaCodec.
  • WRITE_NON_BLOCKING היא יכולה לפשט את אגירת הנתונים ואת ריבוי השרשורים באפליקציות מסוימות.

פקד הפעלת מדיה

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

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

עכשיו אפשר ליצור אפליקציה משלך לבקרת מדיה באמצעות כיתה אחת (MediaController). הכיתה הזו מספקת דרך בטוחה לשרשורים ולעקוב אחרי הפעלת המדיה מתוך תהליך ממשק המשתמש של האפליקציה. כשיוצרים בקר, צריך לציין MediaSession.Token כדי שהאפליקציה תוכל לקיים אינטראקציה עם MediaSession הנתון. באמצעות ה-methods MediaController.TransportControls, אתם יכולים לשלוח פקודות כמו play(), stop(), skipToNext(), ו-setRating() כדי לשלוט בהפעלת המדיה בסשן הזה. בעזרת השלט רחוק אפשר גם רושמים אובייקט MediaController.Callback בשביל להאזין לשינויי מטא-נתונים ומצב בסשן.

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

דפדוף במדיה

ב-Android 5.0 ניתן להוסיף לאפליקציות את האפשרות לדפדף בתוכן המדיה של אפליקציה אחרת, android.media.browse API. כדי לחשוף את תוכן המדיה באפליקציה, מרחיבים את הקטע כיתה אחת (MediaBrowserService). ההטמעה של האפליקציה MediaBrowserService צריכה לספק גישה ל MediaSession.Token כדי שאפליקציות יוכלו להפעיל תוכן מדיה שניתן באמצעות השירות שלך.

כדי לבצע אינטראקציה עם שירות של דפדפן מדיה, משתמשים כיתה אחת (MediaBrowser). ציון הרכיב השם של MediaSession כשיוצרים מופע אחד (MediaBrowser). באמצעות המופע של הדפדפן, שהאפליקציה יכולה להתחבר לשירות המשויך ולקבל אובייקט אחד (MediaSession.Token) כדי להפעיל את התוכן שנחשף באמצעות השירות הזה.

אחסון

בחירת ספרייה

Android 5.0 מרחיב את Storage Access Framework כדי לאפשר למשתמשים לבחור עץ משנה של הספרייה כולה, וכך לתת לאפליקציות גישת קריאה/כתיבה לכל המסמכים הכלולים בלי לדרוש אישור משתמש עבור כל פריט.

כדי לבחור עץ משנה של ספרייה, צריך ליצור ולשלוח OPEN_DOCUMENT_TREE בכוונה טובה. המערכת מציגה את כל DocumentsProvider מופעים שתומכים בבחירת עץ משנה, ולאפשר למשתמש לדפדף ולבחור ספרייה. ה-URI המוחזר מייצג גישה לעץ המשנה שנבחר. אחר כך אפשר יהיה להשתמש ב-buildChildDocumentsUriUsingTree() ו-buildDocumentUriUsingTree() וגם query() לחקור את עץ המשנה.

השיטה החדשה createDocument() מאפשרת ליצור ספריות או מסמכים חדשים בכל מקום מתחת לעץ המשנה. כדי לנהל מסמכים קיימים, צריך להשתמש ב renameDocument() והקבוצה deleteDocument(). צריך לבדוק את COLUMN_FLAGS כדי לאמת את תמיכת הספק עבור הקריאות האלה לפני ביצוען.

אם אתם מטמיעים DocumentsProvider ורוצים כדי לתמוך בבחירת עצי משנה, צריך להטמיע את isChildDocument() ולכלול את FLAG_SUPPORTS_IS_CHILD ב-COLUMN_FLAGS שלך.

Android 5.0 כולל גם ספריות חדשות שספציפיות לחבילות ב- נפח אחסון משותף שבו האפליקציה יכולה למקם קובצי מדיה להוספה MediaStore הגרסה החדשה הפונקציה getExternalMediaDirs() מחזירה דרכים אל ספריות בכל התקני האחסון המשותפים. בדומה ל- getExternalFilesDir(), לאפליקציה שלכם אין הרשאות נוספות שנדרשות כדי לגשת לנתיבים שהוחזרו. מבצעת מדי פעם סריקה לאיתור מדיה חדשה בספריות האלה, אבל אפשר גם להשתמש ב-MediaScannerConnection כדי לבצע סריקה מפורשת לאיתור תוכן.

אלחוטי קישוריות

מספר חיבורי רשת

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

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

  1. יוצרים ConnectivityManager.
  2. להשתמש בכיתוב NetworkRequest.Builder כדי ליצור אובייקט NetworkRequest וציון תכונות הרשת וסוג התעבורה שהאפליקציה שלך מעוניינת בו.
  3. כדי לסרוק לאיתור רשתות מתאימות, צריך להתקשר למספר requestNetwork() או registerNetworkCallback(), ונעביר את אובייקט NetworkRequest ויישום של ConnectivityManager.NetworkCallback משתמשים ב requestNetwork() אם רוצים לעבור באופן פעיל לרשת מתאימה לאחר שהיא מזוהה. לקבל רק התראות על רשתות שנסרקו מבלי לעבור באופן פעיל, השתמשו registerNetworkCallback() במקום זאת.

כשהמערכת מזהה רשת מתאימה, היא מתחברת לרשת מפעיל את onAvailable() קריאה חוזרת. אפשר להשתמש באובייקט Network מהקריאה החוזרת (callback) אל לקבל מידע נוסף על הרשת, או להפנות את התנועה לשימוש הרשת שנבחרה.

Bluetooth עם צריכת אנרגיה נמוכה (BLE)

ב-Android 4.3 הושקה תמיכה בפלטפורמה עבור Bluetooth עם צריכת אנרגיה נמוכה (Bluetooth LE) בתפקיד המרכזי. ב-Android 5.0, מכשיר Android יכול עכשיו לשמש כמכשיר היקפי של Bluetooth LE. אפליקציות יכולות להשתמש ביכולת הזו כדי לחשוף את הנוכחות שלהם למכשירים בקרבת מקום. לדוגמה, אפשר לפתח אפליקציות שמאפשרות למכשיר לתפקד כמד צעדים או כניטור תקינות ולתקשר את הנתונים שלו עם מכשיר Bluetooth LE אחר.

ממשקי ה-API החדשים של android.bluetooth.le מאפשרים לאפליקציות שלך לשדר פרסומות, סריקה לאיתור תשובות, ויצירת חיבורים באמצעות Bluetooth בקרבת מקום מכשירי LE. כדי להשתמש בתכונות החדשות של פרסום וסריקה, צריך להוסיף את הקוד BLUETOOTH_ADMIN במניפסט. כשמשתמשים מעדכנים או מורידים את האפליקציה מחנות Play, הוא יתבקש להעניק לאפליקציה את ההרשאה הבאה: מידע על חיבור Bluetooth: מאפשר לאפליקציה לשלוט ב-Bluetooth, כולל שידור למכשירי Bluetooth בקרבת מקום או קבלת מידע עליהם.'

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

Android 5.0 מציג את הכיתה ScanFilter שהאפליקציה יכולה לסרוק רק כדי למצוא בסוגים מסוימים של מכשירים שבהם הוא מעוניין. כדי להתחיל לסרוק לאיתור Bluetooth מכשירי LE, שיחה אל startScan() ומעבירים רשימה של מסננים. בהפעלת ה-method עליך גם לציין של ScanCallback כדי לדווח כאשר נמצאה פרסומת Bluetooth LE.

שיפורי NFC

מערכת Android 5.0 מוסיפה את השיפורים האלה כדי לאפשר שימוש רחב יותר ועוד שימוש גמיש ב-NFC:

  • Android Beam זמין עכשיו בתפריט שיתוף.
  • האפליקציה שלך יכולה להפעיל את Android Beam במכשיר של המשתמש כדי לשתף נתונים באמצעות מתבצעת התקשרות אל invokeBeam(). כך המשתמש לא יצטרך להצמיד את המכשיר למכשיר אחר מכשיר עם תמיכה ב-NFC כדי להשלים את העברת הנתונים.
  • אפשר להשתמש בשיטה createTextRecord() החדשה כדי ליצור רשומת NDEF שמכילה נתוני טקסט בתקן UTF-8.
  • אם מפתחים אפליקציית תשלומים, עכשיו יש לך אפשרות רישום מזהה אפליקציית NFC (AID) באופן דינמי באמצעות התקשרות registerAidsForService() אפשר גם להשתמש ב-setPreferredService() כדי להגדיר את שירות הדמיית הכרטיסים המועדף שאמור יכול לשמש כשפעילות ספציפית מתבצעת בחזית.

פרויקט וולטה

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

תזמון משימות

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

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

יחידת עבודה נכללת באובייקט JobInfo. האובייקט הזה מציין את הקריטריונים לתזמון.

משתמשים במחלקה JobInfo.Builder כדי להגדיר איך המשימה המתוזמנת אמורה לפעול. אפשר לתזמן את המשימה כך שתפעל לפי תנאים, כמו:

  • הפעלה כשהמכשיר בטעינה
  • הפעלה כשהמכשיר מחובר לרשת ללא חיוב לפי שימוש בנתונים
  • הפעלה כשהמכשיר לא פעיל
  • סיום לפני תאריך יעד מסוים או עם עיכוב מינימלי

לדוגמה, תוכלו להוסיף קוד כמו זה כדי להריץ את המשימה רשת לא נמדדת:

Kotlin

val uploadTask: JobInfo = JobInfo.Builder(
        jobId,
        serviceComponent /* JobService component */
).run {
    setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
    build()
}
val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
jobScheduler.schedule(uploadTask)

Java

JobInfo uploadTask = new JobInfo.Builder(jobId,
                                         serviceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

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

כדי לראות דוגמה לשימוש ב-API של JobScheduler, אפשר לעיין בדוגמת ההטמעה JobSchedulerSample בגרסה הזו.

כלים למפתחים לשימוש בסוללה

הפקודה החדשה dumpsys batterystats יוצרת קריאות מעניינות נתונים סטטיסטיים על השימוש בסוללה במכשיר, בחלוקה לפי מזהה משתמש ייחודי (UID). הנתונים הסטטיסטיים כוללים:

  • היסטוריה של אירועים שקשורים לסוללה
  • נתונים סטטיסטיים גלובליים עבור המכשיר
  • צריכת חשמל משוערת לכל UID ורכיב מערכת
  • ms לנייד לפי אפליקציה לכל מנה
  • נתונים סטטיסטיים מצטברים על UID של המערכת
  • נתונים סטטיסטיים מצטברים לגבי UID של האפליקציה

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

$ adb shell dumpsys batterystats --charged <package-name>

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

Android במקום העבודה ובחינוך

ניהול תצורה מנוהל

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

כדי להתחיל בתהליך הקצאת ההרשאות המנוהלת, צריך לשלוח ACTION_PROVISION_MANAGED_PROFILE בIntent. אם הקריאה מצליחה, המערכת מפעילה את התקשרות חזרה onProfileProvisioningComplete(). לאחר מכן אפשר להתקשר אל setProfileEnabled() כדי להפעיל את הפרופיל המנוהל הזה.

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

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

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

בעלי המכשיר

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

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

הקפאת מסך

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

יש שתי דרכים להפעיל את הצמדת המסך:

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

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

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

מסגרת הדפסה

עיבוד PDF כמפת סיביות (bitmap)

עכשיו אפשר לעבד דפים של מסמכי PDF לתמונות במפת סיביות (bitmap) להדפסה באמצעות משתמשים במחלקה החדשה PdfRenderer. עליך לציין ParcelFileDescriptor שניתן לחפש (כלומר, התוכן) שבו המערכת כותבת את התוכן להדפסה. האפליקציה יכולה לקבל דף לעיבוד באמצעות openPage(), ואז התקשרות render() כדי להפוך את השדה PdfRenderer.Page הפתוח למפת סיביות (bitmap). שלך אפשר גם להגדיר פרמטרים נוספים אם רוצים להמיר רק חלק את המסמך לתמונה של מפת סיביות (bitmap) (לדוגמה, כדי להטמיע רינדור משבצות כדי להגדיל את התצוגה).

דוגמה לאופן השימוש בממשקי ה-API החדשים זמינה בכתובת PdfRendererBasic לדוגמה.

מערכת

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

עכשיו אפשר לגשת להיסטוריית השימוש באפליקציות במכשיר Android באמצעות API חדש של android.app.usage. ה-API הזה מספק מידע מפורט יותר מאשר אמצעי תשלום אחד (getRecentTasks()). כדי להשתמש ב-API הזה, צריך קודם להצהיר על הרשאה "android.permission.PACKAGE_USAGE_STATS" במניפסט. המשתמש צריך גם להפעיל את הגישה לאפליקציה הזו דרך הגדרות > אבטחה > אפליקציות עם גישה לנתוני שימוש.

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

  • נתונים יומיים: 7 ימים
  • נתונים שבועיים: 4 שבועות
  • נתונים חודשיים: 6 חודשים
  • נתונים שנתיים: שנתיים

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

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

בדיקות ו נגישות

שיפורי בדיקה ונגישות

ב-Android 5.0 נוספה התמיכה הבאה לבדיקה ו נגישות:

  • הגרסה החדשה של getWindowAnimationFrameStats() ו-getWindowContentFrameStats() שיטות לוכדות נתונים סטטיסטיים של מסגרות עבור אנימציות ותוכן בחלון. השיטות האלה מאפשרות לכתוב בדיקות אינסטרומנטציה כדי להעריך אם אפליקציה מבצעת רינדור של פריימים בתדירות רענון מספקת כדי לספק חוויית משתמש חלקה.
  • הגרסה החדשה executeShellCommand() רכיב method מאפשר לכם להריץ פקודות מעטפת מבדיקת האינסטרומנטציה. ביצוע הפקודה דומה להרצת adb shell ממארח שמחובר למכשיר, ומאפשר לכם להשתמש בכלים מבוססי מעטפת כמו dumpsys, am, content וגם pm.
  • שירותי נגישות וכלי בדיקה המשתמשים בממשקי API לנגישות (למשל UiAutomator) יכול עכשיו לאחזר מידע מפורט על המאפיינים של חלונות מסך שמשתמשים גלויים יכולים לבצע בו אינטראקציה. כדי לאחזר רשימה של AccessibilityWindowInfo אובייקטים, קוראים לפונקציה החדשה getWindows() .
  • הגרסה החדשה של AccessibilityNodeInfo.AccessibilityAction מאפשר להגדיר פעולות סטנדרטיות או מותאמות אישית לביצוע AccessibilityNodeInfo. הגרסה החדשה של AccessibilityNodeInfo.AccessibilityAction class מחליף את ממשקי ה-API שקשורים לפעולות שנמצאו בעבר ב- AccessibilityNodeInfo.
  • Android 5.0 מספק שליטה פרטנית יותר בסינתזה של טקסט לדיבור באפליקציה שלך. הכיתה החדשה ב-Voice מאפשרת לאפליקציה משתמשים בפרופילים קוליים שמשויכים ללוקאלים, לאיכות ולזמן אחזור ספציפיים ופרמטרים ספציפיים למנוע המרת טקסט לדיבור (TTS).

IME

קל יותר לעבור בין שפות קלט

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

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

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

הצהרות מניפסט

תכונות נדרשות שניתנות להצהרה

הערכים הבאים נתמכים עכשיו ב <uses-feature> כך שניתן לוודא שהאפליקציה מותקנת רק במכשירים לספק את התכונות שדרושות לאפליקציה.

הרשאות המשתמשים

ההרשאה הבאה נתמכת עכשיו ב <uses-permission> להצהרה על ההרשאות הדרושות לאפליקציה כדי לגשת לממשקי API מסוימים.

  • BIND_DREAM_SERVICE: כאשר מטרגטים API ברמה 21 ואילך, ההרשאה הזו נדרשת על ידי שירות Daydream, כדי להבטיח שרק המערכת תוכל לקשר אליו.