ממשקי 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, כולל תכונות חדשות ושינויים ב-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 כולל את המקורות החדשים הבאים לקליטת נתונים של מכשירים:

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

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