רמת API: 12
למפתחים, פלטפורמת Android 3.1
(HONEYCOMB_MR1
) זמין בתור
רכיב להורדה עבור Android SDK. הפלטפורמה שניתנת להורדה כוללת
ספריית Android ותמונת מערכת, וגם ערכת סקינים של אמולטור
עוד. הפלטפורמה שניתנת להורדה לא כוללת ספריות חיצוניות.
למפתחים, פלטפורמת Android 3.1 זמינה רכיב להורדה עבור Android SDK. הפלטפורמה שניתנת להורדה כוללת ספריית Android ותמונת מערכת, וגם ערכת סקינים של אמולטור עוד. כדי להתחיל לפתח או לבדוק את האפליקציה מול Android 3.1, להשתמש ב-Android SDK Manager כדי להוריד את הפלטפורמה ל-SDK.
סקירה כללית על API
הקטעים הבאים מספקים סקירה טכנית של התכונות החדשות למפתחים ב-Android 3.1, כולל תכונות חדשות ושינויים ב-framework API מאז את הגרסה הקודמת.
ממשקי API של USB
Android 3.1 מציג ממשקי API חדשים רבי עוצמה עבור שילוב של ציוד היקפי מחובר עם אפליקציות שפועלות בפלטפורמה. ממשקי ה-API מבוססים על סטאק USB (Universal טורי אפיק) ושירותים שמובנית בפלטפורמה, כולל תמיכה במארח USB וגם במכשיר האינטראקציות. באמצעות ממשקי ה-API, מפתחים יכולים ליצור אפליקציות ש לגלות, לתקשר ולנהל מגוון של סוגי מכשירים המחוברים באמצעות USB.
המקבץ וממשקי ה-API מבחינים בין שני סוגים בסיסיים של חומרת USB, בהתבסס על האם המכשיר המבוסס על Android פועל כמארח או כחומרה החיצונית פועל כמארח:
- התקן USB הוא חלק של חומרה מחוברת שתלויה מכשיר מבוסס Android שישמש כמארח. לדוגמה, רוב המכשירים לקליטת נתונים, עכברים, וג'ויסטיקים הם התקני USB, כמו גם מצלמות רבות, מפצלים וכן הלאה.
- אביזר USB הוא חלק של חומרה מחוברת שיש לה USB בקר מארח, מספק חשמל ונועד לתקשר עם מכשירים מבוססי Android באמצעות USB, מגוון ציוד היקפי יכול להתחבר בתור אביזרים, מבקרי רובוטיקה ועד לציוד מוזיקה, אופני אימון, ועוד.
לשני הסוגים – התקני USB ואביזרי USB – ממשקי API של USB בפלטפורמה תומכים בגילוי באמצעות שידור Intent כשהם מחוברים או וכל ממשקים סטנדרטיים, נקודות קצה ומצבי העברה (שליטה, בכמות גדולה והפרעות).
ממשקי ה-API של ה-USB זמינים בחבילה android.hardware.usb
.
המחלקה המרכזית היא UsbManager
, שמספקת
שיטות עזר לזיהוי ולתקשורת עם
הן התקני USB וגם אביזרי USB. אפליקציות יכולות לקבל מופע של
UsbManager
ואז שאילתה לגבי הרשימה של הקבצים המצורפים
מכשירים או אביזרים ולאחר מכן לתקשר איתם או לנהל אותם.
בנוסף, UsbManager
מצהיר/ה על פעולות Intent ש
שידורים מהמערכת, כדי להודיע כשמחוברים התקן USB או אביזר, או
נותקה.
סיווגים נוספים כוללים:
UsbDevice
, מחלקה שמייצגת גורמים חיצוניים חומרה המחוברת כהתקן USB (כאשר המכשיר המבוסס על Android פועל בתור מארח).UsbAccessory
, שמייצג חומרה חיצונית מחובר כמארח ה-USB (כאשר המכשיר המבוסס על Android פועל כ-USB במכשיר).UsbInterface
ו-UsbEndpoint
, שמספקים גישה ל-USB רגיל ונקודות קצה (endpoints) במכשיר.UsbDeviceConnection
ו-UsbRequest
, לשליחה ולקבלה של נתונים ולשליטה הודעות אל התקן USB או ממנו, באופן סינכרוני ואסינכרוני.UsbConstants
, שמספק קבועים הצהרה על סוגים של נקודות קצה, סוגי מכשירים וכו'
שימו לב שלמרות שמקבץ ה-USB מובנה בפלטפורמה, התמיכה בפועל למצבי מארח USB ופתיחת אביזרים במכשירים מסוימים נקבעים לפי של היצרנים שלהם. באופן ספציפי, מצב מארח מסתמך על חיבור USB מתאים חומרת שלט רחוק במכשיר מבוסס Android.
בנוסף, מפתחים יכולים לבקש סינון ב-Google Play, למשל שהאפליקציות שלהם לא זמינות למשתמשים שהמכשירים שלהם לא מספקים תמיכה מתאימה ב-USB. כדי לבקש סינון, מוסיפים אחד מהרכיבים או את שניהם למטה למניפסט של האפליקציה, לפי הצורך:
- אם האפליקציה צריכה להיות גלויה רק למכשירים שתומכים ב-USB
מצב מארח (חיבור של התקני USB), צריך להצהיר על הרכיב הבא:
<uses-feature android:name="android.hardware.usb.host" android:required="true">
- אם האפליקציה צריכה להיות גלויה רק למכשירים שתומכים ב-USB
אביזרים (חיבור של מארחי USB), מצהירים על הרכיב הזה:
<uses-feature android:name="android.hardware.usb.accessory" android:required="true">
לקבלת המידע המלא על פיתוח אפליקציות שמקיימות אינטראקציה עם אביזרי USB, ראו מסמכי תיעוד למפתחים.
כדי לעיין באפליקציות לדוגמה שמשתמשות ב-USB Host API, ראו בדיקת ADB וMissile מרכז אפליקציות
API של MTP/PTP
Android 3.1 חושף ממשק MTP API חדש שמאפשר לאפליקציות לבצע אינטראקציה ישירה עם מצלמות מחוברות ומכשירי PTP אחרים. ה-API החדש מקל על אפליקציה לקבלת התראות כאשר מכשירים מצורפים ומוסרים, לנהל קבצים ואחסון במכשירים האלה, ולהעביר קבצים ומטא-נתונים אל ומהם. ממשק ה-API של MTP מיישם את קבוצת המשנה PTP (פרוטוקול העברת תמונות) של מפרט ה-MTP (פרוטוקול העברת מדיה).
ה-MTP API זמין בחבילה של android.mtp
ומספק
המחלקות הבאות:
MtpDevice
כולל מכשיר MTP ש מחובר דרך אפיק המארח של USB. אפליקציה יכולה ליצור אובייקט של מהסוג הזה ואז להשתמש בשיטות שלו כדי לקבל מידע על המכשיר, אובייקטים המאוחסנים בו, וגם פתיחת החיבור והעברת נתונים. חלק מהשיטות כוללות:getObjectHandles()
מחזיר רשימה של כינויים לכל האובייקטים במכשיר תואמים לפורמט ולהורה שצוינו. כדי לקבל מידע על אובייקט, האפליקציה יכולה להעביר כינוי ל-getObjectInfo()
.importFile()
מאפשרת לאפליקציה להעתיק נתונים של אובייקט לקובץ חיצוני אחסון. השיחה עשויה להיחסם למשך זמן שרירותי, בהתאם ל גודל הנתונים והמהירות של המכשירים, לכן צריך ליצור מהם של שרשור.open()
מאפשרת לאפליקציה לפתוח מכשיר MTP/PTP מחובר.- אפשרות החזרה במחיר
getThumbnail()
את התמונה הממוזערת של האובייקט כמערך בייטים.
MtpStorageInfo
מכיל מידע על אחסון יחידה במכשיר MTP, התואם למערך הנתונים של StorageInfo שמתואר במאמר סעיף 5.2.2 במפרט MTP. ה-methods במחלקה מאפשרות לאפליקציה לקבל מחרוזת תיאור של יחידת אחסון, שטח פנוי, קיבולת אחסון מקסימלית מזהה האחסון ומזהה הנפח.MtpDeviceInfo
מכיל מידע על מכשיר MTP תואם למערך הנתונים של DeviceInfo המתואר בסעיף 5.1.1 של פרוטוקול MTP. למפרט. השיטות בכיתה מאפשרות לאפליקציות לקבל היצרן, הדגם, המספר הסידורי והגרסה.MtpObjectInfo
מכיל מידע על אובייקט שמאוחסן במכשיר MTP, התואם למערך הנתונים של ObjectInfo, כפי שמתואר בסעיף 5.3.1 של מפרט ה-MTP. השיטות בכיתה מאפשרות לאפליקציות לקבל הגודל, פורמט הנתונים, סוג השיוך, תאריך היצירה והתמונה הממוזערת של האובייקט מידע.MtpConstants
מספק קבועים להצהרה על קובץ MTP קודי פורמט, סוג השיוך וסטטוס ההגנה.
תמיכה במכשירי קלט חדשים ובאירועי תנועה
Android 3.1 מרחיב את מערכת המשנה לקלט כדי לתמוך במכשירי קלט חדשים סוגים של אירועי תנועה, בכל התצוגות והחלונות. מפתחים יכולים להתבסס על את היכולות האלה כדי לאפשר למשתמשים ליצור אינטראקציה עם האפליקציות שלהם באמצעות עכברים, כדורי עקיבה, ג'ויסטיקים, גיימפאדים ומכשירים אחרים, בנוסף למקלדות מסכי מגע.
לטיפול בעכבר, בגלגל גלילה ובקלט של כדור עקיבה, הפלטפורמה תומכת שתי פעולות חדשות של אירועי תנועה:
ACTION_SCROLL
, שמתאר את מיקום הסמן במיקום שבו תנועת גלילה ללא מגע, למשל מתוך גלגל גלילה של העכבר, שהתרחשו. ב-MotionEvent, הערך של הציריםAXIS_HSCROLL
ו-AXIS_VSCROLL
מציין את הגלילה היחסית. .ACTION_HOVER_MOVE
, מדווח על ההגדרה הנוכחית את מיקום העכבר כאשר לא לוחצים על לחצנים, וכן כל אמצעי ביניים נקודות מאז האירוע האחרון שלHOVER_MOVE
. מעבר עם העכבר מעל כניסה ויציאה עדיין אין תמיכה בהתראות.
כדי לתמוך בג'ויסטיקים ובגיימפאד, הכיתה InputDevice
כולל את המקורות החדשים הבאים לקליטת נתונים של מכשירים:
SOURCE_CLASS_JOYSTICK
– המקור יש במכשיר צירי ג'ויסטיק.SOURCE_CLASS_BUTTON
– המקור יש לחצנים או מקשים.SOURCE_GAMEPAD
– מכשיר המקור כולל לחצנים בקר משחקים כמוKEYCODE_BUTTON_A
אוKEYCODE_BUTTON_B
. משתמעSOURCE_CLASS_BUTTON
SOURCE_JOYSTICK
– מכשיר המקור יש צירי ג'ויסטיק. משתמע מ-SOURCE_CLASS_JOYSTICK.
כדי לתאר אירועי תנועה מהמקורות החדשים האלה וגם אירועים מעכברים
וכדורי עקיבה, הפלטפורמה מגדירה עכשיו קודי צירים ב-MotionEvent
, בדומה לאופן שבו היא מגדירה קודי מפתח ב-KeyEvent
. קודי צירים חדשים לג'ויסטיקים
ובקרי המשחקים יש
AXIS_HAT_X
, AXIS_HAT_Y
, AXIS_RTRIGGER
, AXIS_ORIENTATION
, AXIS_THROTTLE
ועוד רבים אחרים.
הצירים MotionEvent
קיימים מיוצגים על ידי AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
וגם AXIS_ORIENTATION
.
בנוסף, MotionEvent
מגדיר מספר
קודי צירים שבהם נעשה שימוש כשהמסגרת לא יודעת איך למפות
לציר מסוים. במכשירים ספציפיים ניתן להשתמש בקודים הגנריים של הציר כדי להעביר
של נתוני תנועה לאפליקציות. לרשימה מלאה של הצירים והתפקידים שלהם
מפרשים, כדאי לעיין במסמכי התיעוד בנושא MotionEvent
.
הפלטפורמה מספקת אירועי תנועה לאפליקציות באצוות, כך
האירוע עשוי להכיל מיקום נוכחי ומספר תנועות היסטוריות שנקראות כאן.
אפליקציות צריכות להשתמש ב-getHistorySize()
כדי לקבל
מספר הדגימות ההיסטוריות, ואז לאחזר ולעבד את כל הדגימות ההיסטוריות
דוגמאות לפי הסדר באמצעות getHistoricalAxisValue()
. לאחר מכן, האפליקציות אמורות לעבד את
לדוגמה באמצעות getAxisValue()
.
אפשר לאחזר חלק מהצירים באמצעות שיטות גישה מיוחדות. לדוגמה,
במקום להתקשר ל-getAxisValue()
, אפליקציות יכולות לקרוא ל-getX()
. צירים עם רכיבי גישה מובנים כוללים את AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
וגם AXIS_ORIENTATION
.
לכל מכשיר קלט יש מזהה ייחודי שמוקצה על ידי המערכת, והוא גם יכול לספק
ממקורות שונים. כשמכשיר מספק כמה מקורות, יותר ממקור אחד
יכול לספק נתוני צירים באמצעות אותו ציר. לדוגמה, אירוע מגע יגיע בקרוב
ממקור המגע משתמש בציר ה-X לנתונים של מיקום המסך, ואילו ג'ויסטיק
באירוע שמקורו במקור הג'ויסטיק, המערכת תשתמש בציר ה-X למיקום המקדים
במקום זאת. לכן חשוב שהאפליקציות יפרשו צירים
בהתאם למקור שממנו הם מגיעים. כשאתם מטפלים בתנועה
אירוע, אפליקציות צריכות להשתמש ב-methods ב-InputDevice
כדי לקבוע את הצירים שנתמכים על ידי מכשיר או מקור. ובאופן ספציפי,
אפליקציות יכולות להשתמש ב-getMotionRanges()
כדי לשלוח שאילתה על כל הצירים במכשיר או על כל הצירים
במקור של המכשיר. בשני המקרים, פרטי הטווח של הצירים שמוחזרים
האובייקט InputDevice.MotionRange
מציין את המקור
בכל ערך של ציר.
לבסוף, מכיוון שאירועי התנועה מג'ויסטיקים, גיימפאד, עכברים
כדורי עקיבה הם לא אירועי מגע, הפלטפורמה מוסיפה שיטת קריאה חוזרת (callback) חדשה
להעביר אותם אל View
בסטטוס "גנרי". אירועי תנועה.
באופן ספציפי, הוא מדווח על אירועי התנועה ללא מגע כדי
View
באמצעות שיחה אל onGenericMotionEvent()
במקום אל onTouchEvent()
.
הפלטפורמה שולחת אירועי תנועה גנריים באופן שונה, בהתאם
סיווג מקור האירוע. SOURCE_CLASS_POINTER
אירועים
יש לעבור אל View
שמתחת לסמן, בדומה לאופן הפעולה של מגע
שהאירועים פועלים. כל שאר המשתמשים מועברים אל View
שנמצא כרגע במוקד.
לדוגמה, המשמעות היא ש-View
חייב להתמקד כדי
קבלת אירועי ג'ויסטיק. במקרה הצורך, אפליקציות יכולות לטפל באירועים האלה
רמת הפעילות או תיבת הדו-שיח על ידי הטמעת onGenericMotionEvent()
שם.
להתבונן באפליקציה לדוגמה שמשתמשת בתנועת ג'ויסטיק אירועים: GameControllerInput ו-GameView.
ממשק API של RTP
מערכת Android 3.1 חושפת את ה-API ל-RTP המובנה שלו (פרוטוקול העברה בזמן אמת) סטאק, אפליקציות יכולות להשתמש בהן כדי לנהל נתונים על פי דרישה או נתונים אינטראקטיביים בסטרימינג. בפרט, אפליקציות שמספקות VOIP, שיחות דחיפה לדיבור, שיחות ועידה סטרימינג של אודיו יכול להשתמש ב-API כדי ליזום סשנים, לשדר או לקבל מקורות נתונים דרך כל רשת זמינה.
RTP API זמין בחבילת android.net.rtp
. מחלקות
כוללים:
RtpStream
, המחלקה הבסיסית של זרמים ששולחים ו קבלת חבילות רשת עם מטענים ייעודיים של מדיה באמצעות RTP.AudioStream
, מחלקה שלRtpStream
שנושאת מטענים ייעודיים של אודיו (payloads) של אודיו ב-RTP.AudioGroup
, מרכז אודיו מקומי לניהול ערבוב את הרמקול, המיקרופון ו-AudioStream
של המכשיר.AudioCodec
, שמכיל אוסף של רכיבי קודק שאתם מגדירים ל-AudioStream
.
כדי לתמוך בשיחות ועידה באודיו ובשימושים דומים, אפליקציה יוצרת מופע שתי מחלקות כנקודות קצה עבור הזרם:
AudioStream
מציין נקודת קצה (endpoint) מרוחקת של מיפוי הרשת ו-AudioCodec
מוגדר.AudioGroup
מייצג את נקודת הקצה המקומית של או יותרAudioStream
. מיקסים שלAudioGroup
כל ערכי ה-AudioStream
, ואפשר גם לקיים אינטראקציה עם המכשיר הרמקול והמיקרופון בו-זמנית.
השימוש הפשוט ביותר כולל נקודת קצה אחת (endpoint) מקומית ונקודת קצה (endpoint) מקומית אחת.
לשימושים מורכבים יותר, יש לעיין במגבלות שתוארו לגבי
AudioGroup
כדי להשתמש ב-API של RTP, האפליקציות חייבות לבקש הרשאה מהמשתמש עד
הצהרה על <uses-permission
android:name="android.permission.INTERNET">
בקובצי המניפסט. כדי להשיג את המיקרופון של המכשיר, נדרשת גם ההרשאה <uses-permission
android:name="android.permission.RECORD_AUDIO">
.
ווידג'טים של אפליקציות שניתן לשנות את הגודל שלהם
החל מגרסת Android 3.1, מפתחים יכולים ליצור ווידג'טים למסך הבית שניתן לשנות את הגודל שלו - לרוחב, לאורך או בשני הצירים. משתמשים לוחצים לחיצה ארוכה על את הווידג'ט כדי להציג את נקודות האחיזה לשינוי הגודל שלו, ואז לגרור את הווידג'ט האופקי או האנכי נקודות האחיזה לשינוי הגודל ברשת הפריסה.
המפתחים יכולים לשנות את גודל הווידג'ט של מסך הבית על ידי הגדרת
resizeMode
במטא-נתונים AppWidgetProviderInfo
של הווידג'ט. ערכים עבור
המאפיין resizeMode
כולל 'אופקי', 'אנכי' ו'ללא'.
כדי להצהיר על ווידג'ט שאפשר לשנות את הגודל שלו במאוזן או במאונך, צריך לציין את הערך
'vertical|vertical'.
הנה דוגמה:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:previewImage="@drawable/preview" android:initialLayout="@layout/example_appwidget" android:configure="com.example.android.ExampleAppWidgetConfigure" android:resizeMode="horizontal|vertical" > </appwidget-provider>
למידע נוסף על ווידג'טים של מסך הבית, ניתן לעיין במאמר ווידג'טים של אפליקציות התיעוד.
מסגרת אנימציה
- מחלקה חדשה של ViewPropertyAnimator
- מחלקה חדשה ב-
ViewPropertyAnimator
מספקת נוח שמאפשרת למפתחים להוסיף אנימציה למאפיינים נבחרים באובייקטים שלView
. הכיתה מבצע אוטומציה של המאפיינים ומבצע אופטימיזציה של האנימציה של המאפיינים ומקל לנהל מספר אנימציות בו-זמנית באובייקטView
.השימוש ב
ViewPropertyAnimator
הוא פשוט. כדי להוסיף אנימציה לנכסים עבורView
, צריך להתקשר למספרanimate()
כדי ליצור אובייקטViewPropertyAnimator
בשביל ה-View
הזה. משתמשים ב methods ב-ViewPropertyAnimator
כדי לציין לאיזה מאפיין כיצד ליצור אנימציה ואיך להנפיש אותה. לדוגמה, כדי להפוך אתView
לשקוף, קוראים לפונקציהalpha(0);
. האובייקטViewPropertyAnimator
מטפל בפרטים של הגדרת המחלקה הבסיסיתAnimator
והפעלה שלה, ואז רינדור אנימציה.
- מחלקה חדשה ב-
- צבע הרקע של האנימציה
getBackgroundColor()
חדשים וגם השיטות שלsetBackgroundColor(int)
מאפשרות מקבלים/מגדירים את צבע הרקע מאחורי אנימציות, לאנימציות בחלון בלבד. בשלב הזה הרקע צריך להיות שחור עם כל רמת אלפא רצויה.
- מקבל שבר מונפש מ-
ViewAnimator
getAnimatedFraction()
חדש אמצעי תשלום אחד מאפשר לקבל את השבר הנוכחי של האנימציה — הזמן שחלף/האינטרפולציה השבר שנעשה בו שימוש בעדכון הפריימים האחרון – מ-ValueAnimator
.
מסגרת של ממשק משתמש
- עיבוד מאולץ של שכבה
- שיטת
buildLayer()
חדשה מאפשרת לאפליקציה לאלץ יצירה של שכבת תצוגה ועיבוד שלה באופן מיידי. לדוגמה, אפליקציה יכולה להשתמש בשיטה זו כדי לעבד תצוגה לפני התחלת אנימציה. אם ה-View הוא מורכב, השכבה לפני התחלת האנימציה תמנע דילוג על פריימים.
- שיטת
- המרחק של המצלמה
- אפליקציות יכולות להשתמש בשיטה חדשה
setCameraDistance(float)
כדי להגדיר את המרחק מצלמה לתצוגה מפורטת. כך האפליקציות יכולות לשלוט טוב יותר בטרנספורמציות תלת-ממדיות את התצוגה, למשל סיבובים.
- אפליקציות יכולות להשתמש בשיטה חדשה
- אחזור של תצוגת יומן מ-Date Picker
- שיטת
getCalendarView()
חדשה מאפשר לך לקבלCalendarView
מ-DatePicker
מכונה.
- שיטת
- קבלת התקשרות חזרה כאשר תצוגות מפורטות מנותקות
View.OnAttachStateChangeListener
חדש מאפשר לך לקבל קריאה חוזרת (callback) כאשר תצוגה מצורפת או מנותקת מהחלון שלה. שימוש בפורמטaddOnAttachStateChangeListener()
כדי להוסיף האזנה ו-addOnAttachStateChangeListener()
כדי להסיר אותו.
- Fragment breadflower, חתימה חדשה של onInflate()
- שיטה חדשה,
setOnBreadCrumbClickListener()
, מספק קרס אפליקציות קולטות קליקים של מיקומים באתר ומבצעות כל פעולה שנדרשת לפני מעבר לרשומת ה-backstack או למקטע שעליו בוצעה לחיצה. - במחלקה
Fragment
,onInflate(attrs, savedInstanceState)
הוצא משימוש. במקומם יש להשתמש ב-onInflate(activity, attrs, savedInstanceState)
.
- שיטה חדשה,
- הצגה של תוצאת החיפוש בכרטיסייה חדשה
- מפתח נתונים של
EXTRA_NEW_SEARCH
לאובייקטים מסוגACTION_WEB_SEARCH
מאפשר לפתוח חיפוש בכרטיסייה חדשה בדפדפן במקום בכרטיסייה קיימת.
- מפתח נתונים של
- סמן הטקסט שניתן לשרטוט
- עכשיו אפשר לציין פריט גרפי שניתן להזזה שישמש כסמן הטקסט באמצעות
מאפיין המשאב
textCursorDrawable
.
- עכשיו אפשר לציין פריט גרפי שניתן להזזה שישמש כסמן הטקסט באמצעות
מאפיין המשאב
- הגדרה של קטגוריית צאצא שמוצגת בתצוגות מרוחקות
- שיטה חדשה,
setDisplayedChild(viewId, childIndex)
, זמינה ב-RemoteViews
מחלקות משנה, מאפשרת להגדיר את הילד או הילדה שמוצגים ב-ViewAnimator
AdapterViewAnimator
מחלקות משנה כמוAdapterViewFlipper
,StackView
,ViewFlipper
ו-ViewSwitcher
.
- שיטה חדשה,
- מפתחות גנריים לגיימפאד ולמכשירי קלט אחרים
KeyEvent
מוסיף טווח של קודי מפתחות גנריים להכיל לחצני בקר משחקים. הכיתה גם מוסיפהisGamepadButton(int)
ועוד כמה שיטות מסייעות לעבודה עם קודי מפתחות.
גרפיקה
- עוזרים לניהול מפות סיביות
- ההרשאה
setHasAlpha(boolean)
מאפשרת לאפליקציה לציין כל הפיקסלים במפת סיביות (bitmap) ידועים כאטומים (false), או שחלק מהפיקסלים פיקסלים עשויים להכיל ערכי אלפא לא אטומים (true). הערה: בחלק מההגדרות (למשל כ-RGB_565) המערכת מתעלמת מהקריאה הזו, כי היא לא תומכת באלפא לפיקסל ערכים. הדבר נועד לשמש כרמז לשרטוט, כמו, במקרים מסוימים, במפת סיביות (bitmap) להיות אטום יכול לקחת מקרה שרטוט מהיר יותר מאשר במקרה שאינו אטום לכל פיקסל. - הגודל של מפת סיביות (bitmap) של
getByteCount()
מתקבל בייטים. getGenerationId()
מאפשר לאפליקציה למצוא לבדוק אם שונתה מפת סיביות (Bitmap), למשל לשמירה במטמון.sameAs(android.graphics.Bitmap)
קובע האם מפת סיביות נתונה שונה ממפת סיביות (bitmap) הנוכחית, במימד, או נתוני פיקסלים.
- ההרשאה
- הגדרת המיקום והסיבוב של המצלמה
Camera
מוסיף שתי שיטות חדשותrotate()
ו-setLocation()
עבור את השליטה מיקום המצלמה, עבור טרנספורמציות תלת-ממדיות.
רשת
- נעילת Wi-Fi בעלת ביצועים גבוהים
- נעילת Wi-Fi חדשה עם ביצועים גבוהים מאפשרת לאפליקציות לתחזק
חיבורי Wi-Fi באיכות גבוהה גם כשמסך המכשיר כבוי.
אפליקציות שמשדרות מוזיקה, וידאו או קול למשך תקופות ארוכות יכולות לרכוש
נעילת Wi-Fi בעלת ביצועים גבוהים כדי להבטיח ביצועי סטרימינג גם כשהמסך
מושבתת. מאחר שהיא צורכת יותר חשמל, אפליקציות צריכות לקבל את
רשת Wi-Fi בעלת ביצועים גבוהים, כשיש צורך בפעולה פעילה לטווח ארוך
חיבור כזה.
כדי ליצור נעילה עם ביצועים גבוהים, מעבירים את
WIFI_MODE_FULL_HIGH_PERF
כמצב נעילה ב קריאה אלcreateWifiLock()
.
- נעילת Wi-Fi חדשה עם ביצועים גבוהים מאפשרת לאפליקציות לתחזק
חיבורי Wi-Fi באיכות גבוהה גם כשמסך המכשיר כבוי.
אפליקציות שמשדרות מוזיקה, וידאו או קול למשך תקופות ארוכות יכולות לרכוש
נעילת Wi-Fi בעלת ביצועים גבוהים כדי להבטיח ביצועי סטרימינג גם כשהמסך
מושבתת. מאחר שהיא צורכת יותר חשמל, אפליקציות צריכות לקבל את
רשת Wi-Fi בעלת ביצועים גבוהים, כשיש צורך בפעולה פעילה לטווח ארוך
חיבור כזה.
- עוד נתונים סטטיסטיים של תנועה
- אפליקציות יכולות עכשיו לגשת לנתונים סטטיסטיים לגבי סוגים נוספים של שימוש ברשת
באמצעות שיטות חדשות ב-
TrafficStats
. האפליקציות יכולות להשתמש ב שיטות לקבלת נתונים סטטיסטיים של UDP, ספירת המנות, העברת בייטים של מטען ייעודי (payload)/העברת TCP של UID נתון.
- אפליקציות יכולות עכשיו לגשת לנתונים סטטיסטיים לגבי סוגים נוספים של שימוש ברשת
באמצעות שיטות חדשות ב-
- שם משתמש לאימות SIP
- עכשיו אפליקציות יכולות לקבל ולהגדיר את שם המשתמש של אימות ה-SIP לפרופיל
באמצעות
משתמשים בשיטות החדשות
getAuthUserName()
ו-setAuthUserName()
.
- עכשיו אפליקציות יכולות לקבל ולהגדיר את שם המשתמש של אימות ה-SIP לפרופיל
באמצעות
משתמשים בשיטות החדשות
מנהל ההורדות
- טיפול בהורדות שהושלמו
- אפליקציות יכולות עכשיו ליזום הורדות לשליחת התראות למשתמשים רק ב-
לסיום. כדי להתחיל הורדה מהסוג הזה, האפליקציות עוברות את
VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
בשיטהsetNotificationVisibility()
של את אובייקט הבקשה. - שיטה חדשה,
addCompletedDownload()
, מאפשרת לאפליקציה להוסיף קובץ של מסד הנתונים של ההורדות, כך שאפליקציית ההורדות יכולה לנהל אותו.
- אפליקציות יכולות עכשיו ליזום הורדות לשליחת התראות למשתמשים רק ב-
לסיום. כדי להתחיל הורדה מהסוג הזה, האפליקציות עוברות את
- הצגת ההורדות ממוינות לפי גודל
- אפליקציות יכולות להפעיל את יישום ההורדות במצב מיון לפי גודל לפי
הוספה של
INTENT_EXTRAS_SORT_BY_SIZE
הנוסף החדש ל-Intent שלACTION_VIEW_DOWNLOADS
.
- אפליקציות יכולות להפעיל את יישום ההורדות במצב מיון לפי גודל לפי
הוספה של
מסגרת IME
- קבלת מפתח הערך הנוסף של שיטת קלט
InputMethodSubtype
מוסיף את אמצעי תשלום אחדcontainsExtraValueKey()
כדי לבדוק אם שמורה מחרוזת ExtraValue לפי סוג המשנה את השיטהgetExtraValueOf()
כדי לחלץ ערך מפתח ספציפי מה-hashmap של ExtraValue.
מדיה
- פורמטים חדשים של אודיו בסטרימינג
- מסגרת המדיה מוסיפה תמיכה מובנית לתוכן RAW של ADTS AAC, עבור אודיו בסטרימינג משופר, וגם תמיכה באודיו מסוג FLAC, באיכות הגבוהה ביותר תוכן אודיו דחוס (ללא אובדן). לפורמטים הנתמכים של מדיה לקבלת מידע נוסף.
פקדי ההפעלה הופסקו אפליקציות
החל מ-Android 3.1, מנהל החבילות של המערכת עוקב אחר שנמצאים במצב של הפסקת פעילות ומספקים אמצעי לשליטה את ההשקה שלהם מתהליכי רקע ואפליקציות אחרות.
שים לב שמצב עצירה של אפליקציה אינו זהה למצב פעילות במצב הופסק. המערכת מנהלת בנפרד את שני המצבים האלה.
הפלטפורמה מגדירה שני סימונים חדשים של Intent שמאפשרים לשולח לציין האם יש לאפשר ל-Intent להפעיל רכיבים בעצירה תרגום מכונה.
FLAG_INCLUDE_STOPPED_PACKAGES
– הכללת מסנני Intent של אפליקציות שהופסקו ברשימת היעדים הפוטנציאליים כדי לפתור מולו.FLAG_EXCLUDE_STOPPED_PACKAGES
– החרגה של מסנני Intent של אפליקציות שהופסקו מרשימת הנכסים הפוטנציאליים יעדים.
אם אף אחד מהדגלים האלה או שניהם לא מוגדרים ב-Intent, ברירת המחדל היא לכלול מסננים של אפליקציות שהופסקו ברשימת האפליקציות יעדים פוטנציאליים.
שים לב שהמערכת מוסיפה את FLAG_EXCLUDE_STOPPED_PACKAGES
לכל השידורים
Intents. הוא עושה זאת כדי למנוע שידורים משירותי רקע
להשיק באופן לא מכוון או שלא לצורך רכיבים של אפליקציות שנעצרו.
שירות רקע או אפליקציה ברקע יכולים לבטל את ההתנהגות הזו על ידי הוספת
סימון FLAG_INCLUDE_STOPPED_PACKAGES
לשידור
אובייקטים שצריכים להיות מורשים להפעיל אפליקציות שנעצרו.
האפליקציות במצב עצירה כאשר הן מתקינים אותן בפעם הראשונה, אך לא עדיין מופעלות וכשהמשתמש עצר אותן באופן ידני (בקטע 'ניהול' אפליקציות).
התראה על ההפעלה והשדרוג הראשונים של האפליקציה
הפלטפורמה מוסיפה התראה משופרת לגבי השקה ראשונה של האפליקציה ומשודרגים באמצעות שתי פעולות חדשות של Intent:
ACTION_PACKAGE_FIRST_LAUNCH
– נשלח אל חבילת מנהל ההתקנה של אפליקציה כשהיא מופעלת בפעם הראשונה (כלומר, בפעם הראשונה שמעבירים אותו ממצב עצירה). הנתונים מכיל את שם החבילה.ACTION_MY_PACKAGE_REPLACED
– התראות אפליקציה שהיא עודכנה, עם גרסה חדשה שמותקנת בה גרסה קיימת. הוא נשלח רק לאפליקציה שהוחלפה. הוא לא מכיל נתונים נוספים. כדי לקבל אותו, צריך להצהיר על מסנן Intent לביצוע הפעולה הזו. אפשר להשתמש בכוונה כדי להפעיל קוד שעוזר לקבל היישום יחזור לפועל בצורה תקינה לאחר שדרוג.הכוונה הזו נשלחת ישירות לאפליקציה, אבל רק אם האפליקציה שודרג בזמן שהיה במצב התחלה (לא במצב עצירה).
שירותי ליבה
- מטמון LRU
- מחלקה חדשה של
LruCache
מאפשרת לאפליקציות שלך להפיק תועלת משמירה יעילה במטמון. אפליקציות יכולות להשתמש בכיתה כדי לצמצם את משך הזמן או להוריד נתונים מהרשת, תוך שמירה על טביעת הרגל הפחמנית של הנתונים השמורים במטמון.LruCache
הוא מטמון שכולל הפניות חזקות למספר מוגבל של ערכים. בכל פעם שהערך שניגשת אליו, הוא מועבר לראש התור. כשמוסיפים ערך למאפיין מלא של המטמון, הערך שבסוף תור יוסר ועשוי להיות כשיר ל- איסוף אשפה.
- מחלקה חדשה של
- מתאר הקובץ בתור
int
- עכשיו אפשר לקבל את מתאר הקובץ המקורי עבור
ParcelFileDescriptor
באמצעות השיטות החדשותgetFd()
אוdetachFd()
.
- עכשיו אפשר לקבל את מתאר הקובץ המקורי עבור
WebKit
- קובצי cookie של סכמת קבצים
- ב-
CookieManager
יש עכשיו תמיכה בקובצי cookie שמשתמשים ה סכימת URIfile:
. אפשר להשתמש ב-setAcceptFileSchemeCookies()
כדי הפעלה/השבתה של התמיכה בקובצי cookie של סכמת קבצים, לפני שיוצרים מכונה שלWebView
אוCookieManager
. תוך שימוש במופע שלCookieManager
, אפשר לבדוק אם קובצי cookie של סכמת קבצים מופעלת על ידי קריאה ל-allowFileSchemeCookies()
.
- ב-
- התראה על בקשת התחברות
- כדי לתמוך בתכונות ההתחברות האוטומטית של הדפדפן שהוצגו ב-Android 3.0,
חדשה
אמצעי תשלום
onReceivedLoginRequest()
מודיע למארח אפליקציה שבה עובדה בקשת התחברות אוטומטית עבור המשתמש.
- כדי לתמוך בתכונות ההתחברות האוטומטית של הדפדפן שהוצגו ב-Android 3.0,
חדשה
אמצעי תשלום
- כיתות וממשקים שהוסרו
- מספר מחלקות וממשקים הוסרו מה-API הציבורי אחרי היה בעבר במצב הוצאה משימוש. לעיון ב-API מידע נוסף זמין בדוח 'הבדלים'.
דפדפן
אפליקציית הדפדפן מוסיפה את התכונות הבאות כדי לתמוך בדפדפן אפליקציות:
- תמיכה בהפעלה מוטבעת של סרטונים ב-HTML5
תג
<video>
. ההפעלה תשופר באמצעות חומרה כשזה יתאפשר. - תמיכה בשכבות ברכיבי מיקום קבוע לכל האתרים (ניידים במחשב שולחני).
קבועים של תכונות חדשות
הפלטפורמה מוסיפה קבועים חדשים של תכונות חומרה שהמפתחים יכולים להצהיר עליהם
במניפסטים של האפליקציות, כדי ליידע ישויות חיצוניות כמו Google
הפעלה של דרישת האפליקציה ליכולות חומרה חדשות שנתמכות
בגרסה הזאת של הפלטפורמה. המפתחים מצהירים על התכונות האלה ועל תכונות אחרות
קבועים ברכיבי מניפסט <uses-feature>
.
android.hardware.usb.accessory
— האפליקציה משתמשת בכבל USB API לתקשורת עם מכשירי חומרה חיצוניים שמחוברים דרך USB וגם פועלים כמארחים.android.hardware.usb.host
— האפליקציה משתמשת ב-USB API לתקשורת עם מכשירי חומרה חיצוניים שמחוברים באמצעות USB ופועלים מכשירים.
מערכת Google Play מסננת אפליקציות לפי תכונות שהוצהרו ברכיבי המניפסט של <uses-feature>
. מידע נוסף על
הצהרה על תכונות במניפסט של אפליקציה, יש לקרוא את Google Play
מסננים.
דוח ההבדלים ב-API
לתצוגה מפורטת של כל שינויי ה-API ב-Android 3.1 (API שלב 12), ראו API הדוח 'הבדלים'.
רמת API
פלטפורמת Android 3.1 מספקת גרסה מעודכנת של ממשק ה-API של framework. ממשק ה-API של Android 3.1 מקבלים מזהה של מספר שלם – 12 – כלומר מאוחסנים במערכת עצמה. המזהה הזה, שנקרא 'רמת API', מאפשר כדי לקבוע בצורה נכונה אם אפליקציה תואמת במערכת, לפני התקנת האפליקציה.
כדי להשתמש בממשקי API שנוספו ל-Android 3.1 באפליקציה שלכם:
צריך להדר את האפליקציה מול ספריית Android שמופיעה
פלטפורמת Android 3.1 SDK. בהתאם לצרכים שלכם,
אולי
צריך להוסיף גם android:minSdkVersion="12"
לרכיב <uses-sdk>
.
מידע נוסף זמין במאמר מהו API רמה?