درباره اشتراک گذاری رسانه ها

خواه یک تصویر خنده دار، یک ویدیوی آموزنده یا یک کلیپ صوتی جذاب باشد، این امکان را به کاربران می دهد که محتوا را به اشتراک بگذارند، تجربه آنها را غنی می کند و تعامل را افزایش می دهد. این سند به بررسی ملزومات اشتراک‌گذاری رسانه در اندروید، از جمله APIها و تکنیک‌هایی که برای ادغام این قابلیت نیاز دارید، می‌پردازد.

برای اشتراک گذاری طراحی شده است

طراحی Android قابلیت همکاری بین برنامه‌ها را با استفاده از سیستم مبتنی بر Intent ارتقا می‌دهد. Intent یک توصیف انتزاعی از عملیاتی است که باید انجام شود. Intent به برنامه ها اجازه می دهد تا بدون نیاز به دانستن جزئیات در مورد یکدیگر با یکدیگر ارتباط برقرار کنند.

هنگامی که یک برنامه می خواهد داده ها را به اشتراک بگذارد یا اقدامی را آغاز کند، یک Intent ایجاد می کند که نوع محتوا و عملیات را مشخص می کند. سیستم اندروید فهرستی از برنامه‌های مرتبط را ارائه می‌کند که می‌توانند آن 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 را نمایش می‌دهد، که به کاربران امکان می‌دهد اطلاعات را با افراد - از جمله پیشنهادهای برنامه مرتبط - با یک ضربه به اشتراک بگذارند. کارهای دیگری که می‌توانید با اشتراک‌گذاری Android انجام دهید عبارتند از:

برای اطلاعات بیشتر درباره اشتراک‌گذاری‌های Android و نحوه استفاده از آن‌ها ، به ارسال داده‌های ساده به برنامه‌های دیگر مراجعه کنید.

اهداف اشتراک‌گذاری مستقیم را ارائه کنید تا کاربران سایر برنامه‌ها بتوانند آدرس‌های اینترنتی، تصاویر یا انواع دیگر داده‌ها را با برنامه شما به اشتراک بگذارند. Direct Share با ارائه مخاطبین از برنامه‌های پیام‌رسان و اجتماعی به‌طور مستقیم در اشتراک‌گذاری Android، بدون اینکه کاربران مجبور باشند برنامه را انتخاب کنند و سپس مخاطب را جستجو کنند، کار می‌کند.

از دریافت محتوای غنی از طریق OnReceiveContentListener پشتیبانی کنید. این API یک مکان واحد برای کد شما فراهم می‌کند تا بتواند تمام محتوا را دریافت کند، از متن ساده و سبک گرفته تا نشانه‌گذاری، تصاویر، ویدئوها، فایل‌های صوتی و موارد دیگر. محتوا می تواند از صفحه کلیدهای تصویر، کشیدن و رها کردن، یا کلیپ بورد باشد.

فایل های رسانه ای را به اشتراک بگذارید

Intent ها فقط می توانند حاوی مقدار کمی داده باشند، بنابراین Android راهی را برای Intent فراهم می کند تا یک دسته امن برای فایل ها داشته باشد. اشتراک گذاری ایمن فایل های رسانه ای از برنامه شامل موارد زیر است:

برای اطلاعات بیشتر در مورد نحوه اشتراک‌گذاری ایمن فایل‌ها، به «درباره اشتراک‌گذاری فایل‌ها» مراجعه کنید.

بهینه سازی رسانه برای اشتراک گذاری

چه در حال اشتراک گذاری رسانه با سایر کاربران در برنامه خود باشید، چه رسانه ها را با برنامه دیگری به اشتراک بگذارید، می خواهید مطمئن شوید که رسانه ای را به اشتراک می گذارید که تجربه اشتراک گذاری با کیفیت بالایی را ارائه می دهد.

ایجاد تعادل بین کیفیت و اندازه

فایل‌های رسانه‌ای بزرگ می‌توانند به سرعت پهنای باند و فضای ذخیره‌سازی را مصرف کنند، که منجر به تاخیرهای خسته‌کننده و هزینه‌های بالقوه بیش از حد داده برای کاربران شما می‌شود. فشرده سازی بهترین دوست شما در اینجا است.

  • فشرده‌سازی تصویر : از فرمت‌های فشرده‌سازی تصویر مدرن مانند 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()