ממשקי API של Android 3.1

רמת ה-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, כולל תכונות חדשות ושינויים בממשק ה-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 גם מכריז על פעולות כוונה שהמערכת משדרת, כדי להודיע כשמכשיר 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. מעבר עם העכבר מעל כניסה ויציאה עדיין אין תמיכה בהתראות.

כדי לתמוך ב-joysticks וב-gamepads, הכיתה InputDevice כוללת את מקורות המכשירים החדשים הבאים של קלט:

כדי לתאר אירועי תנועה מהמקורות החדשים האלה וגם אירועים מעכברים וכדורי עקיבה, הפלטפורמה מגדירה עכשיו קודי צירים ב-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 בסטטוס "גנרי". אירועי תנועה. באופן ספציפי, המערכת מדווחת על אירועי תנועה ללא מגע ל-Views באמצעות קריאה ל-onGenericMotionEvent(), ולא ל-onTouchEvent().

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

להתבונן באפליקציה לדוגמה שמשתמשת בתנועת ג'ויסטיק אירועים: GameControllerInput ו-GameView.

ממשק API של RTP

ב-Android 3.1 מוצג API למחסנית ה-RTP (Real-time Transport Protocol) המובנית, שבאמצעותה אפליקציות יכולות לנהל סטרימינג של נתונים על פי דרישה או סטרימינג אינטראקטיבי. בפרט, אפליקציות שמספקות VOIP, שיחות דחיפה לדיבור, שיחות ועידה סטרימינג של אודיו יכול להשתמש ב-API כדי ליזום סשנים, לשדר או לקבל מקורות נתונים דרך כל רשת זמינה.

RTP API זמין בחבילת android.net.rtp. מחלקות כוללים:

  • RtpStream, המחלקה הבסיסית של זרמים ששולחים ו קבלת חבילות רשת עם מטענים ייעודיים של מדיה באמצעות RTP.
  • AudioStream, קבוצת משנה של RtpStream שנושאת עומסי נתונים של אודיו באמצעות RTP.
  • AudioGroup, מרכז אודיו מקומי לניהול ערבוב את הרמקול, המיקרופון ו-AudioStream של המכשיר.
  • AudioCodec, שמכיל אוסף של רכיבי קודק שאתם מגדירים ל-AudioStream.

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

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

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

כדי להשתמש ב-RTP API, האפליקציות צריכות לבקש הרשאה מהמשתמש על ידי הצהרה על <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
  • קבלת התקשרות חזרה כאשר תצוגות מפורטות מנותקות
  • Fragment breadflower, חתימה חדשה של onInflate()
  • הצגה של תוצאת החיפוש בכרטיסייה חדשה
    • מפתח נתונים מסוג EXTRA_NEW_SEARCH לכוונות ACTION_WEB_SEARCH מאפשר לפתוח חיפוש בכרטיסייה חדשה בדפדפן, במקום בכרטיסייה קיימת.
  • סמן טקסט שאפשר לצייר
    • עכשיו אפשר לציין פריט גרפי שניתן להזזה שישמש כסמן הטקסט באמצעות מאפיין המשאב textCursorDrawable.
  • הגדרה של קטגוריית צאצא שמוצגת בתצוגות מרוחקות
  • מקשים כלליים למכשירי גיימפאד ולמכשירי קלט אחרים
    • KeyEvent מוסיף טווח של קודי מפתחות גנריים להכיל לחצני בקר משחקים. הכיתה גם מוסיפה isGamepadButton(int) ועוד כמה שיטות מסייעות לעבודה עם קודי מפתחות.

גרפיקה

  • פונקציות עזר לניהול בייטים
    • ההרשאה setHasAlpha(boolean) מאפשרת לאפליקציה לציין כל הפיקסלים במפת סיביות (bitmap) ידועים כאטומים (false), או שחלק מהפיקסלים פיקסלים עשויים להכיל ערכי אלפא לא אטומים (true). הערה: בחלק מההגדרות (למשל כ-RGB_565) המערכת מתעלמת מהקריאה הזו, כי היא לא תומכת באלפא לפיקסל ערכים. ההערה הזו מיועדת להצעה לציור, כי במקרים מסוימים ציור של קובץ בייטמאפ שידוע שהוא אטום יכול להתבצע מהר יותר מאשר ציור של קובץ בייטמאפ שעשויים להיות לו ערכי אלפא לא אטומים לכל פיקסל.
    • הגודל של מפת סיביות (bitmap) של getByteCount() מתקבל בייטים.
    • getGenerationId() מאפשר לאפליקציה למצוא לבדוק אם שונתה מפת סיביות (Bitmap), למשל לשמירה במטמון.
    • sameAs(android.graphics.Bitmap) קובע אם Bitmap נתון שונה מ-Bitmap הנוכחי, במאפיינים של המימדים, ההגדרות או נתוני הפיקסלים.
  • הגדרת המיקום והכיוון של המצלמה
    • Camera מוסיף שתי שיטות חדשות rotate() ו-setLocation() עבור את השליטה מיקום המצלמה, עבור טרנספורמציות תלת-ממדיות.

רשת

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

      כדי ליצור נעילה עם ביצועים גבוהים, מעבירים את WIFI_MODE_FULL_HIGH_PERF כמצב נעילה ב קריאה אל createWifiLock().

  • נתונים סטטיסטיים נוספים על תנועה
    • אפליקציות יכולות עכשיו לגשת לנתונים סטטיסטיים לגבי סוגים נוספים של שימוש ברשת באמצעות שיטות חדשות ב-TrafficStats. האפליקציות יכולות להשתמש ב שיטות לקבלת נתונים סטטיסטיים של UDP, ספירת המנות, העברת בייטים של מטען ייעודי (payload)/העברת TCP של UID נתון.
  • שם משתמש לאימות SIP
    • אפליקציות יכולות עכשיו לקבל ולהגדיר את שם המשתמש לאימות SIP של פרופיל באמצעות השיטות החדשות getAuthUserName() ו-setAuthUserName().

מנהל ההורדות

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

מסגרת IME

  • אחזור של מפתח הערך הנוסף של שיטת קלט

מדיה

  • פורמטים חדשים של אודיו בסטרימינג
    • מסגרת המדיה מוסיפה תמיכה מובנית לתוכן 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

WebKit

  • קובצי cookie של סכמת קבצים
    • ב-CookieManager יש עכשיו תמיכה בקובצי cookie שמשתמשים ה סכימת URI file:. אפשר להשתמש ב-setAcceptFileSchemeCookies() כדי הפעלה/השבתה של התמיכה בקובצי cookie של סכמת קבצים, לפני שיוצרים מכונה של WebView או CookieManager. תוך שימוש במופע של CookieManager, אפשר לבדוק אם קובצי cookie של סכמת קבצים מופעלת על ידי קריאה ל-allowFileSchemeCookies().
  • התראה על בקשת התחברות
    • כדי לתמוך בתכונות ההתחברות האוטומטית של הדפדפן שהוצגו ב-Android 3.0, חדשה אמצעי תשלום onReceivedLoginRequest() מודיע למארח אפליקציה שבה עובדה בקשת התחברות אוטומטית עבור המשתמש.
  • כיתות וממשקים שהוסרו

דפדפן

אפליקציית הדפדפן מוסיפה את התכונות הבאות כדי לתמוך בדפדפן אפליקציות:

  • תמיכה בהפעלה מוטבעת של סרטונים ב-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 רמה?