רמת 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 או רשת לחיוב על ידי ספק, או אם רוצים לשלוח נתונים באמצעות פרוטוקול העברה מסוג מסוים.
כדי לבחור רשת ולהתחבר אליה באופן דינמי מתוך האפליקציה, פועלים לפי השלבים הבאים שלבים:
- יוצרים
ConnectivityManager
. - להשתמש בכיתוב
NetworkRequest.Builder
כדי ליצור אובייקטNetworkRequest
וציון תכונות הרשת וסוג התעבורה שהאפליקציה שלך מעוניינת בו. - כדי לסרוק לאיתור רשתות מתאימות, צריך להתקשר למספר
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>
כך שניתן לוודא שהאפליקציה מותקנת רק במכשירים
לספק את התכונות שדרושות לאפליקציה.
FEATURE_AUDIO_OUTPUT
FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
FEATURE_CAMERA_CAPABILITY_RAW
FEATURE_CAMERA_LEVEL_FULL
FEATURE_GAMEPAD
FEATURE_LIVE_TV
FEATURE_MANAGED_USERS
FEATURE_LEANBACK
FEATURE_OPENGLES_EXTENSION_PACK
FEATURE_SECURELY_REMOVES_USERS
FEATURE_SENSOR_AMBIENT_TEMPERATURE
FEATURE_SENSOR_HEART_RATE_ECG
FEATURE_SENSOR_RELATIVE_HUMIDITY
FEATURE_VERIFIED_BOOT
FEATURE_WEBVIEW
הרשאות המשתמשים
ההרשאה הבאה נתמכת עכשיו ב
<uses-permission>
להצהרה על ההרשאות הדרושות לאפליקציה כדי לגשת לממשקי API מסוימים.
BIND_DREAM_SERVICE
: כאשר מטרגטים API ברמה 21 ואילך, ההרשאה הזו נדרשת על ידי שירות Daydream, כדי להבטיח שרק המערכת תוכל לקשר אליו.