הפצת האפליקציה ברכבים עם Android Auto או Android Automotive OS. כדאי להשתמש בארכיטקטורת אפליקציה אחת שמתאימה לשני המקרים, כדי שכל משתמש יוכל ליהנות מהאפליקציה שלכם.
מה זה Android למכוניות?
אפליקציית מדיה לרכב יכולה לספק למשתמשים דרך להתחבר בצורה חלקה לחיים הדיגיטליים שלהם באמצעות הרכב. כשמרחיבים את הזמינות של אותן אפליקציות לטלפון גם לרכבים, חוויית המשתמש משתפרת. אפשר לעשות את זה באמצעות שילוב עם Android Auto או עם Android Automotive OS.
אפליקציות ל-Android לרכב צריכות בראש ובראשונה למנוע הסחת דעת של הנהג. כדי לצמצם את ההסחות, אפשר לפעול לפי שיטות מומלצות כמו שימוש בפקודות קוליות ועיצוב חזותי פרקטי מאוד. כך, אפליקציית המדיה יכולה להציג לנהג מידע רלוונטי בזמן הנכון, ולהשתמש בדפוסים צפויים למשימות נפוצות.
Android Auto
Android Auto מספקת חוויית שימוש באפליקציה שמותאמת לנהגים, למשתמשים שיש להם טלפון Android עם אפליקציית Android Auto ומערכת סטריאו תואמת במכונית או מערכת סטריאו חלופית. הם יכולים להשתמש באפליקציה שלכם ישירות במסך הרכב על ידי חיבור הטלפון שלהם. כדי לאפשר ל-Android Auto להתחבר לאפליקציה בטלפון, צריך ליצור שירותים ש-Android Auto משתמש בהם כדי להציג לנהג ממשק שמותאם לנהיגה.
Android Automotive OS
Android Automotive OS היא מערכת מידע ובידור מבוססת-Android שמובנית בכלי רכב. המערכת ברכב היא מכשיר עצמאי שמבוסס על Android ומותאם לנהיגה. ב-Android Automotive OS, המשתמשים מתקינים את האפליקציה שלכם ישירות במכונית ולא בטלפון.
קטגוריות אפליקציות נתמכות
אפליקציות מדיה מאפשרות למשתמשים לעיין במוזיקה, ברדיו, בספרי אודיו ובתוכן אודיו אחר ולהפעיל אותם ברכב. מידע נוסף זמין במאמר בנושא פיתוח אפליקציות להפעלת אודיו לרכב. מידע נוסף זמין גם במאמר בנושא פיתוח אפליקציות מדיה לרכב.
אפליקציות מדיה מבוססות על MediaLibraryService ועל MediaSession.
ב-Android Automotive OS, אפשר גם ליצור מסכי כניסה והגדרות (לשימוש בזמן חנייה) באמצעות Views או Compose.
אפליקציות וידאו מאפשרות למשתמשים לצפות בסרטוני סטרימינג כשהמכונית חונה. המטרה העיקרית של האפליקציות האלה היא להציג סרטונים בסטרימינג. האפליקציות האלה מבוססות על Views או על Compose. מידע נוסף זמין במאמר בנושא בניית אפליקציות להפעלת סרטונים ל-Android Automotive OS. מידע נוסף זמין במאמר בנושא בניית אפליקציות של סרטונים עבור Android Automotive OS.
פיתוח אפליקציות להפעלת אודיו ברכבים
במדריך הזה אנחנו יוצאים מנקודת הנחה שכבר יש לכם אפליקציה בסיסית להפעלת מדיה. אם אין לכם, כדאי לעיין במאמר יצירת אפליקציית מדיה פשוטה.
במדריך הזה מוסבר מה צריך לעשות, ויש בו קישורים למשאבים נוספים עם הנחיות ספציפיות.
רכיבי הפעלה
Media3 כולל כמה רכיבים מרכזיים לתרחישי שימוש בהפעלה. אם עבדתם עם ספריות מדיה קודמות של Android, אתם בטח מכירים את המחלקות שמרכיבות את הרכיבים האלה.
בתרשים הבא מוצג אופן השילוב של הרכיבים האלה באפליקציה טיפוסית.
מידע נוסף זמין במאמר בנושא רכיבי הפעלה.
הטמעה של MediaLibraryService ושל MediaLibrarySession
MediaLibraryService מספק API סטנדרטי להצגת ספריית המדיה ולאפשר גישה אליה.
הדרישה הזו חלה כשמוסיפים תמיכה ב-Android Auto או ב-Android Automotive OS לאפליקציית המדיה, כי הפלטפורמות האלה מספקות ממשק משתמש משלהן שמאפשר לנהג להשתמש בספריית המדיה בצורה בטוחה. מידע נוסף על הטמעה ושימוש ב-MediaLibraryService זמין במאמר הצגת תוכן באמצעות MediaLibraryService.
כדי לשלוט בהפעלה, צריך להשתמש בסשן מדיה. MediaSession API מספק דרך אוניברסלית לאינטראקציה עם נגן אודיו או וידאו. ספריית Jetpack Media3 כוללת את MediaLibrarySession, שמרחיב את MediaSession כדי להוסיף ממשקי API לעיון בתוכן.
חיבור של סשן מדיה לנגן מאפשר לאפליקציה לפרסם הפעלת מדיה באופן חיצוני ולקבל פקודות הפעלה ממקורות חיצוניים כמו Android Auto, Android Automotive OS או Google Assistant. מידע נוסף זמין במאמרים שליטה בהפעלה ופרסום שלה באמצעות MediaSession ושימוש ב-MediaLibrarySession.
לפחות, בסשן המדיה צריך להיות מוצהרת תמיכה בפקודות הנגן הבאות:
במדריך הפעלת אמצעי הבקרה להפעלה מוסבר איך אפשר להתאים אישית את אמצעי הבקרה להפעלה ברכבים.
כש-Android Auto או Android Automotive OS מתחברים לאפליקציה, הם מבקשים להציג ספריית תוכן, מה שמפעיל את שיטת הקריאה החוזרת onGetLibraryRoot(). אפשר להחזיר במהירות פריט מדיה ברמת השורש כדי לאפשר גישה לספרייה. השיטה onGetChildren() callback מופעלת כשמנסים לגשת לרמות עמוקות יותר בספריית התוכן ב-Android Auto או ב-Android Automotive OS.
בפלטפורמות האלה יש מגבלות נוספות על המבנה של ספריית התוכן. פרטים על התאמה אישית של אופן ההצגה של ספריית התוכן זמינים במדריך בנושא יצירת שירות דפדפן מדיה.
הצהרה על תמיכה ב-Android Auto
כדי להצהיר שאפליקציית הטלפון תומכת ב-Android Auto, צריך להשתמש ברשומה הבאה במניפסט:
<application>
...
<meta-data android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc"/>
...
</application>
רשומה זו במניפסט מתייחסת לקובץ XML שבו מוצהרות היכולות של האפליקציה בתחום הרכב. כדי לציין שיש לכם אפליקציית מדיה, מוסיפים קובץ XML בשם automotive_app_desc.xml לספרייה res/xml/ בפרויקט. הקובץ הזה צריך לכלול את התוכן הבא:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
הצהרה על תמיכה ב-Android Automotive OS
צריך ליצור מודול לרכב, כי אי אפשר לשתף את כל הלוגיקה באפליקציה עם אפליקציה לרכב. לרכיבים מסוימים של Android Automotive OS, כמו המניפסט, יש דרישות ספציפיות לפלטפורמה. יוצרים מודול שיכול להפריד את הקוד של הרכיבים האלה מקוד אחר בפרויקט, כמו הקוד שמשמש את האפליקציה לנייד.
כדי להוסיף מודול לרכב לפרויקט:
- ב-Android Studio, לוחצים על File > New > New Module (קובץ > חדש > מודול חדש).
- בוחרים באפשרות מודול לרכב ולוחצים על הבא.
- מזינים שם של אפליקציה או ספרייה. זה השם שהמשתמשים רואים לאפליקציה שלכם ב-Android Automotive OS.
- מזינים שם מודול.
- משנים את שם החבילה כך שיתאים לאפליקציה.
בוחרים באפשרות API 28: Android 9.0 (Pie) בשדה Minimum SDK ולוחצים על Next (הבא).
כל המכוניות שתומכות ב-Android Automotive OS פועלות על Android 9 (רמת API 28) או על גרסה מתקדמת יותר, ולכן בחירה בערך הזה תטרגט את כל המכוניות התואמות.
בוחרים באפשרות No Activity (לא להוסיף פעילות) ואז לוחצים על Finish (סיום).
אחרי שיוצרים את המודול ב-Android Studio, פותחים את AndroidManifest.xml במודול החדש לרכב:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.media">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" />
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
</manifest>
רכיב application
כולל מידע סטנדרטי על האפליקציה, וגם רכיב uses-feature
שמצהיר על תמיכה ב-Android Automotive OS. שימו לב שלא הוגדרו פעילויות במניפסט.
אם מטמיעים הגדרות או פעילויות שקשורות לכניסה לחשבון, צריך להוסיף אותן כאן. הפעילויות האלה מופעלות על ידי המערכת באמצעות כוונות מפורשות, והן הפעילויות היחידות שמוצהרות במניפסט של אפליקציית Android Automotive OS.
אחרי שמוסיפים הגדרות או פעילויות כניסה, משלימים את קובץ המניפסט על ידי הגדרת המאפיין android:appCategory="audio" באלמנט application והוספת האלמנטים uses-feature הבאים:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.media"> <application android:allowBackup="true" android:appCategory="audio" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" /> <uses-feature android:name="android.hardware.type.automotive" android:required="true" /> <uses-feature android:name="android.hardware.wifi" android:required="false" /> <uses-feature android:name="android.hardware.screen.portrait" android:required="false" /> <uses-feature android:name="android.hardware.screen.landscape" android:required="false" /> </manifest>
הגדרה מפורשת של התכונות האלה לערך required="false" מבטיחה שלא יהיה ניגוד בין האפליקציה שלכם לבין תכונות חומרה זמינות במכשירי Automotive OS.
כדי להצהיר שהאפליקציה תומכת ב-Android Automotive OS, צריך להשתמש ברשומה הבאה במניפסט:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
רשומה זו במניפסט מתייחסת לקובץ XML שבו מוצהרות היכולות של האפליקציה בתחום הרכב.
כדי לציין שיש לכם אפליקציית מדיה, מוסיפים קובץ XML בשם automotive_app_desc.xml לספרייה res/xml/ בפרויקט. כוללים
את התוכן הבא בקובץ:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
מסנני Intent
Android Automotive OS משתמש ב-Intents מפורשים כדי להפעיל פעילויות באפליקציית המדיה. אל תכללו בקובץ המניפסט מסנני Intent מסוג CATEGORY_LAUNCHER או ACTION_MAIN.
פעילויות כמו זו שבדוגמה הבאה מכוונות בדרך כלל לטלפון או למכשיר נייד אחר. צריך להצהיר על הפעילויות האלה במודול שבונה את אפליקציית הטלפון, ולא במודול שבונה את האפליקציה ל-Android Automotive OS.
<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>
שלבים נוספים
עכשיו שיש לכם אפליקציה ל-Android Auto ול-Android Automotive OS, יכול להיות שתרצו לבצע שלבים נוספים כדי לבצע אופטימיזציה של האפליקציה כך שיהיה בטוח יותר להשתמש בה בזמן הנהיגה. המלצות נוספות שיעזרו לכם להבטיח חוויית משתמש בטוחה ונוחה מופיעות במדריכים הטכניים בנושא פעולות קוליות, אמצעי הגנה מפני הסחות דעת וטיפול בשגיאות.
פיתוח אפליקציות להפעלת סרטונים ל-Android Automotive OS
אפליקציות של סרטונים מסווגות בנפרד מאפליקציות של מדיה במכוניות, ולכן צריך להכיר כמה דרישות ספציפיות לאפליקציות של סרטונים, כפי שמתואר במאמרים פיתוח אפליקציות להפעלה כשהרכב חונה ופיתוח אפליקציות של סרטונים ל-Android Automotive OS. צריך לפעול לפי ההוראות הבאות.
סימון האפליקציה כאפליקציית וידאו
כדי לציין שהאפליקציה תומכת בסרטונים, מוסיפים קובץ XML בשם
automotive_app_desc.xml לתיקייה res/xml/ בפרויקט. בקובץ הזה, כוללים את התוכן הבא:
<automotiveApp>
<uses name="video"/>
</automotiveApp>
לאחר מכן, בתוך רכיב application של המניפסט, מוסיפים את רכיב meta-data הבא שמפנה לקובץ ה-XML:
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>