चाहे वह कोई मज़ेदार इमेज हो, जानकारी देने वाला कोई वीडियो हो या कोई दिलचस्प ऑडियो क्लिप हो, उपयोगकर्ताओं को कॉन्टेंट शेयर करने की सुविधा देने से, उन्हें बेहतर अनुभव मिलता है. साथ ही, दिलचस्पी है. यह दस्तावेज़ Android पर मीडिया शेयर करने के बारे में ज़रूरी बातें बताता है. साथ ही, इस सुविधा को इंटिग्रेट करने के लिए आपको ज़रूरी एपीआई और तकनीकें भी शामिल करनी होंगी.
शेयर करने के लिए डिज़ाइन किया गया
Android के डिज़ाइन में, इंटेंट पर आधारित सिस्टम का इस्तेमाल करके, ऐप्लिकेशन के बीच इंटरऑपरेबिलिटी को बढ़ावा दिया जाता है. इंटेंट, किसी कार्रवाई के बारे में ऐब्स्ट्रैक्ट जानकारी होती है. इंटेंट, ऐप्लिकेशन को एक-दूसरे से बातचीत करने की सुविधा देते हैं. इस बात से कोई फ़र्क़ नहीं पड़ता है कि एक-दूसरे के बारे में खास जानकारी देते हैं.
जब कोई ऐप्लिकेशन डेटा शेयर करना चाहता है या कोई कार्रवाई शुरू करना चाहता है, तो यह एक ऐसा इंटेंट बनाता है जो कॉन्टेंट और कार्रवाई के टाइप के बारे में बताता है. Android सिस्टम, कॉन्टेंट की सूची दिखाता है ऐसे ऐप्लिकेशन भी हो सकते हैं जो उस इंटेंट को हैंडल कर सकें. इससे उपयोगकर्ता यह चुन सकता है कि इस्तेमाल करना है. इस तरीके से, साथ मिलकर काम करने को बढ़ावा मिलता है.
टेक्स्ट शेयर करने के लिए, कोड की सिर्फ़ कुछ लाइनें डालनी होती हैं:
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 का यूज़र इंटरफ़ेस (यूआई) दिखता है. इसकी मदद से, उपयोगकर्ता एक ही टैप में लोगों के साथ जानकारी शेयर कर सकते हैं. इसमें, काम के ऐप्लिकेशन के सुझाव भी शामिल हैं. Android Sharesheet की मदद से ये काम भी किए जा सकते हैं:
- जानें कि उपयोगकर्ता कब शेयर कर सकते हैं और कहां तक शेयर कर सकते हैं
- Android 10 (एपीआई लेवल 29) और इसके बाद के वर्शन में रिच टेक्स्ट कॉन्टेंट की झलक दिखाना
Android शेयरशीट और उनका इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, दूसरे ऐप्लिकेशन को आसान डेटा भेजना लेख पढ़ें.
सीधे तौर पर शेयर करने के टारगेट उपलब्ध कराएं, ताकि इनका इस्तेमाल करने वाले लोगों के लिए यह काम आसान और तेज़ हो जाए आपके ऐप्लिकेशन के साथ यूआरएल, इमेज या दूसरी तरह का डेटा शेयर करने के लिए. सीधे तौर पर जवाब देना Share पर, अपने संपर्कों को सीधे मैसेज सेवा और सोशल मीडिया ऐप्लिकेशन के ज़रिए प्रज़ेंट किया जा सकता है उपयोगकर्ता को ऐप्लिकेशन चुनने की ज़रूरत नहीं है और फिर उस संपर्क को खोजो.
रिच कॉन्टेंट हासिल करने में मदद करने के लिए,
OnReceiveContentListener
. यह एपीआई आपके
सामान्य और स्टाइल वाले टेक्स्ट से लेकर मार्कअप तक, सारा कॉन्टेंट पाने के लिए कोड
इमेज, वीडियो, ऑडियो फ़ाइलें वगैरह. कॉन्टेंट, इमेज से लिया जा सकता है
जैसे, कीबोर्ड, खींचें और छोड़ें या क्लिपबोर्ड पर.
मीडिया फ़ाइलें शेयर करें
इंटेंट में बहुत कम डेटा हो सकता है, इसलिए Android इसमें फ़ाइलों के लिए सुरक्षित हैंडल शामिल होता है. इनके डिवाइस से मीडिया फ़ाइलें सुरक्षित रूप से शेयर की जा रही हैं आपके ऐप्लिकेशन में ये शामिल हैं:
- Android
FileProvider
कॉम्पोनेंट का इस्तेमाल करके, अपने ऐप्लिकेशन को कॉन्टेंट यूआरआई के तौर पर, फ़ाइल का सुरक्षित हैंडल देने के लिए कॉन्फ़िगर करें. - अपने मेनिफ़ेस्ट में शेयर की जा सकने वाली डायरेक्ट्री तय करें.
getUriForFile
का इस्तेमाल करके, कॉन्टेंट का ऐसा यूआरएल बनाएं जो सुरक्षित हो हैंडल से भी जोड़ सकते हैं.- ऐसा इंटेंट बनाएं जो फ़ाइल को अनुमतियां देता हो.
सुरक्षित तरीके से शेयर करने के बारे में ज़्यादा जानकारी के लिए, फ़ाइलें शेयर करने के बारे में जानकारी देखें फ़ाइलें.
शेयर करने के लिए मीडिया को ऑप्टिमाइज़ करना
मीडिया को अपने ऐप्लिकेशन में दूसरे लोगों के साथ शेयर किया जा रहा है या इनके साथ मीडिया शेयर किया जा रहा है तो आपको यह पक्का करना होगा कि अच्छी क्वालिटी वाला मीडिया शेयर किया जाए अनुभव शेयर करना.
क्वालिटी और साइज़ के बीच संतुलन बनाना
बड़ी मीडिया फ़ाइलें तेज़ी से बैंडविथ और स्टोरेज का इस्तेमाल कर सकती हैं. इससे इससे आपके उपयोगकर्ताओं को परेशानी हो सकती है. साथ ही, ज़्यादा डेटा इस्तेमाल होने पर शुल्क भी लग सकता है. यहां कंप्रेस करना आपकी सबसे अच्छी दोस्त है.
- इमेज कंप्रेस करना: मॉडर्न इमेज कंप्रेशन फ़ॉर्मैट का इस्तेमाल करें जैसे WebP और AVIF, जो पारंपरिक कुकी की तुलना में बेहतर कंप्रेशन रेशियो की सुविधा देते हैं ऐसे JPEG जिनका क्वालिटी में ज़्यादा नुकसान नहीं होता. अलग-अलग क्वालिटी आज़माकर देखें बेहतर विकल्प खोजने के लिए सेटिंग.
- वीडियो कंप्रेस करना: AV1 या H.265 (HEVC) वीडियो का फ़ायदा पाएं
कंप्रेशन की, बेहतर कंप्रेशन दक्षता देने के लिए,
बेहतरीन विज़ुअल क्वालिटी. हार्डवेयर की मदद से कोड में बदलने के तरीके की जांच की जा सकती है
mediaPerformanceClass
और Android 10 और इसके बाद के वर्शन वाले डिवाइसों पर तय करें कि आपका डिवाइस किस चीज़ का सबसे अच्छा समर्थन कर सकता है. अलग-अलग तरह का ऑफ़र देने के बारे में सोचें उपयोगकर्ताओं की अलग-अलग प्राथमिकताओं और नेटवर्क के हिसाब से समाधान के विकल्प शर्तें.
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()