Komik bir resim, bilgilendirici bir video veya ilgi çekici bir ses klibi olsun, kullanıcıların içerik paylaşmalarına olanak tanıyarak deneyimlerini zenginleştirebilir ve etkileşimi artırabilirsiniz. Bu belgede, Android, iOS, Android ve iOS'te ihtiyacınız olan API'ler ve teknikler de dahil.
Paylaşım için tasarlandı
Android'in tasarımı Amaçlar. Intent, yapılacak işlemin soyut bir açıklamasıdır. Intent'ler, uygulamaların birbirlerinin ayrıntılarını bilmek zorunda kalmadan birbirleriyle iletişim kurmasına olanak tanır.
Bir uygulama veri paylaşmak veya işlem başlatmak istediğinde içeriğin ve işlemin türünü belirtir. Android sistemi, bu Intent'i işleyebilecek alakalı uygulamaların listesini sunarak kullanıcının hangi uygulamayı kullanacağını seçmesine olanak tanır. Bu yaklaşım, iş birliğine dayalı bir ekosistemi teşvik eder.
Metin paylaşmak yalnızca birkaç satır koddan oluşur:
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 satırında Android Sharesheet kullanıcı arayüzü görüntülenir.
kullanıcıların, alakalı uygulama önerileri de dahil olmak üzere bilgileri insanlarla paylaşmasına olanak tanır
tek bir dokunuşla. Android paylaşım sayfasıyla yapabileceğiniz diğer işlemler şunlardır:
- Kullanıcılarınızın bir paylaşımı ne zaman ve nereye tamamlayacaklarını öğrenme
- Android 10 (API düzeyi 29) ve sonraki sürümlerde zengin metin içerik önizlemeleri sağlama
Android paylaşım sayfaları ve bunların nasıl kullanılacağı hakkında daha fazla bilgi için Diğer uygulamalara basit veriler gönderme başlıklı makaleyi inceleyin.
alan adının kullanıcıları için daha kolay ve hızlı hale getirmek üzere Doğrudan Paylaşım hedefleri sağlayın diğer uygulamaları kullanarak URL'leri, resimleri veya başka tür verileri uygulamanızla paylaşın. Doğrudan Paylaş, mesajlaşmadaki ve sosyal uygulamalardaki kişileri doğrudan sunarak çalışır Android Sharesheet üzerinden, kullanıcıların uygulamayı seçmesine ve kişiyi arayın.
OnReceiveContentListener aracılığıyla zengin içerik alma özelliğini destekleyin. Bu API ile
Düz ve stil özellikleri ayarlanmış metinden işaretlemeye kadar tüm içeriği almada kullanılacak kod
resimler, videolar, ses dosyaları ve diğerleri. İçerik, resimden gelebilir.
veya panoyu kullanabilirsiniz.
Medya dosyalarını paylaşma
Intent'ler az miktarda veri içerebildiğinden Android Dosyalar için güvenli bir herkese açık kullanıcı adı içerme amaçları. Medya dosyaları şuradan güvenli bir şekilde paylaşılıyor: Uygulamanız aşağıdakileri içeriyor:
- Android
FileProviderbileşenini kullanarak uygulamanızı, dosyaya güvenli bir herkese açık kimlik (içerik URI'si biçiminde) sunacak şekilde yapılandırın. - Manifest'inizde paylaşılabilir dizinleri belirtin.
- Güvenli bir içerik URL'si işlevi gören bir içerik URL'si oluşturmak için
getUriForFilekullanın herkese açık kullanıcı adını seçer. - Dosyaya izin veren bir Intent oluşturun.
Güvenli bir şekilde nasıl paylaşacağınız hakkında daha fazla bilgi için Dosya paylaşma hakkında başlıklı makaleyi inceleyin. dosyası olarak da kaydedebilir.
Medyayı paylaşım için optimize etme
Uygulamanızdaki diğer kullanıcılarla veya başka bir uygulamada kullanmak istiyorsanız, yüksek kaliteli paylaşmaya istekli olmalıdır.
Kalite ve boyut arasında denge kurma
Büyük medya dosyaları, bant genişliği ve depolama alanını hızlı bir şekilde tüketerek can sıkıcı gecikmeler ve kullanıcılarınızdan gelebilecek olası veri aşımları ücretiyle ilgili sorunlarınız olduğu anlamına gelir. Burada en iyi arkadaşınız kompresyondur.
- Resim sıkıştırma: Aşağıdaki gibi modern resim sıkıştırma biçimlerinden yararlanın Geleneksele kıyasla daha üstün sıkıştırma oranları sunan WebP ve AVIF Önemli kalite kaybı olmayan JPEG'ler. Farklı kalitelerle denemeler yapın ayarları gözden geçirin.
- Video sıkıştırma: Mükemmel görsel kaliteyi korurken daha iyi sıkıştırma verimliliği sağlamak için AV1 veya H.265 (HEVC) video sıkıştırma teknolojisinden yararlanın. Android 10 ve sonraki sürümleri çalıştıran cihazlarda donanım kodlamanın olup olmadığını kontrol edebilir, ayrıca cihazınızın en iyi şekilde neyi destekleyebileceğini belirlemek için
mediaPerformanceClassdeğerini kontrol edebilirsiniz. Farklı ürünler sunmayı deneyin Çeşitli kullanıcı tercihlerine ve ağlara uyum sağlamak için çözüm seçenekleri koşullar.
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")
Medyayı uyarlama
Sosyal medya platformları genellikle görüntülü reklamlar için belirli boyutlar ve en boy oranları uygular. paylaşılan medya. Medya dosyalarını önceden yeniden boyutlandırıp paylaştığınızda, beklenmedik bir sorun yaşamadan veya en beğendikleri platformlarda paylaşım yapan kullanıcılara ulaşmasına yardımcı olur.
Kullanıcıların medya içeriklerini paylaşmadan önce nasıl optimize edebileceklerine dair net talimatlar ve rehberlik sağlayın. Kodlama bit hızlarını ayarlama, örnekleme parametrelerini belirleme, video biçimini seçme, uygun dosya boyutlarını seçme veya farklı paylaşım seçeneklerinin etkisini anlama ile ilgili ipuçları bulabilirsiniz.
Medyanın bulunabilirliğini artırma
Medya dosyalarınıza başlık, açıklama ve etiket gibi alakalı meta veriler eklemek, dosyalarınızın bulunabilirliğini artırabilir. Kullanıcıları kendi deneyimi daha da kişiselleştirmek için uygulamamı paylaşırken açıklamalar ve altyazılar kullanıyor.
Resimlere meta veri ekleme
Jetpack ExifInterface sınıfı JPEG, PNG ve WebP biçimlerinde meta veriler yazar. resim olarak ekleyebilirsiniz.
// 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()