מידע על שיתוף מדיה

בין אם מדובר בתמונה מצחיקה, בסרטון אינפורמטיבי או בקטע אודיו מרתק, מתן אפשרות למשתמשים לשתף תוכן מעשיר את החוויה שלהם ומעודד את המעורבות שלהם. במסמך הזה נסביר את היסודות של שיתוף מדיה ב-Android, כולל ממשקי ה-API והשיטות הדרושות לשילוב היכולת הזו.

מתוכנן לשיתוף

העיצוב של Android מעודד יכולת פעולה הדדית בין אפליקציות באמצעות מערכת שמבוססת על Intents. Intent הוא תיאור מופשט של פעולה שצריך לבצע. כוונות מאפשרות לאפליקציות לתקשר זו עם זו בלי לדעת פרטים ספציפיים זו על זו.

כשאפליקציה רוצה לשתף נתונים או ליזום פעולה, היא יוצרת Intent מציין את סוג התוכן והפעולה. מערכת Android מציגה רשימה של אפליקציות רלוונטיות שיכולות לטפל ב-Intent הזה, ולאפשר למשתמשים לבחור שבו צריך להשתמש. הגישה הזו מעודדת יצירת סביבה שיתופית.

שיתוף טקסט כולל רק כמה שורות קוד:

val sendIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "This is my text to share.")
    type = "text/plain"
}

val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)

בשורה createChooser מוצג ממשק המשתמש של Android Sharesheet, שמאפשר למשתמשים לשתף מידע עם אנשים – כולל הצעות לאפליקציות רלוונטיות – בלחיצה אחת. דברים נוספים שאפשר לעשות באמצעות ה-Sharesheet של Android:

מידע נוסף על דפי שיתוף ב-Android ועל אופן השימוש בהם זמין במאמר שליחת נתונים פשוטים לאפליקציות אחרות.

מתן יעדים של שיתוף ישיר כדי שלמשתמשים יהיה קל ומהיר יותר אפליקציות אחרות כדי לשתף עם האפליקציה כתובות URL, תמונות או סוגים אחרים של נתונים. ישיר שיתוף פועל על ידי הצגת אנשי קשר ישירות מאפליקציות של העברת הודעות ואפליקציות של רשתות חברתיות. בדף השיתוף של Android, בלי שהמשתמשים יצטרכו לבחור את האפליקציה ולאחר מכן מחפשים את איש הקשר.

תמיכה בקבלת תוכן עשיר באמצעות OnReceiveContentListener. ה-API הזה מספק מקום אחד שבו הקוד שלכם יכול לטפל בקבלת כל התוכן, מטקסט פשוט ועד טקסט עם עיצוב, מסמלי תיוג, תמונות, סרטונים, קובצי אודיו ועוד. התוכן יכול להגיע מהתמונה מקלדות, גרירה ושחרור, או הלוח.

שיתוף קובצי מדיה

כוונות יכולות להכיל רק כמות קטנה של נתונים, לכן מערכת Android מספקת דרך לכוונות להכיל כתובת מאובטחת לקבצים. שיתוף קובצי מדיה באופן מאובטח מ- באפליקציה שלכם:

מידע נוסף על שיתוף מאובטח זמין במאמר מידע על שיתוף קבצים .

אופטימיזציה של מדיה לשיתוף

האם אתם משתפים מדיה עם משתמשים אחרים באפליקציה שלכם, או משתפים מדיה עם אפליקציה אחרת, כדאי לוודא שאתם משתפים מדיה שמציעה איכות גבוהה חוויית השיתוף.

איך מוצאים את האיזון בין איכות לגודל

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

  • דחיסת תמונות: שימוש בפורמטים מודרניים לדחיסת תמונות כמו WebP ו-AVIF, שמציעים יחסי דחיסה טובים יותר בהשוואה לתמונות JPEG רגילות, בלי פגיעה משמעותית באיכות. כדאי לנסות הגדרות איכות שונות כדי למצוא את ההגדרה המתאימה.
  • דחיסת וידאו: ניצול העוצמה של וידאו ב-AV1 או H.265 (HEVC) דחיסת נתונים כדי לספק יעילות דחיסה טובה יותר תוך שמירה על איכות ויזואלית מצוינת. ניתן לבדוק את הנוכחות של קידוד חומרה במכשירי Android 10 ואילך, וגם ב-mediaPerformanceClass כדי לעזור כדי לקבוע במה המכשיר שלכם יכול לתמוך בצורה הטובה ביותר. מומלץ להציע אחר לטיפול בהעדפות משתמשים שונות וברשתות שונות את התנאים וההגבלות.
fun hasHardwareEncodingSupportFor(mimeType: String): Boolean {
    val codecList = MediaCodecList(REGULAR_CODECS)
    val codecInfos = codecList.codecInfos
    for ( codecInfo in codecInfos ) {
        if (!codecInfo.isEncoder()) {
            continue;
        }
        if (!codecInfo.isHardwareAccelerated()) {
            continue;
        }
        val types: Array<String> = codecInfo.getSupportedTypes()
        for (j in types.indices) {
            if (types[j].equals(mimeType, ignoreCase = true)) {
                return true
            }
        }
    }
    return false
}
// test for AV1 hardware encoding support
val hasAV1 = hasHardwareEncodingSupportFor("video/av01")

התאמת המדיה

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

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

שיפור יכולת הגילוי של המדיה

הוספת מטא-נתונים רלוונטיים למדיה, כמו שמות, תיאורים ותגים יכולים לשפר את יכולת הגילוי שלהם. עידוד המשתמשים להוסיף כתובות אימייל משלהם תיאורים וכתוביות בזמן השיתוף, כדי להעניק חוויה אישית עוד יותר.

הוספת מטא-נתונים לתמונות

הכיתה Jetpack ExifInterface כותבת מטא-נתונים בתמונות JPEG,‏ PNG ו-WebP בצורת תגי Exif.

// sets the title of the image in the form of Exif data
val exif = ExifInterface(imageFile)
exif.setAttribute(ExifInterface.TAG_IMAGE_DESCRIPTION, "Beautiful sunset")
exif.saveAttributes()