Android 11, geliştiriciler için harika yeni özellikler ve API'ler sunuyor. Aşağıdaki bölümler, uygulamalarınızın özellikleri hakkında bilgi edinmenize ve ilgili API'leri kullanmaya başlamanıza yardımcı olur.
Yeni, değiştirilmiş ve kaldırılan API'lerin ayrıntılı listesi için API fark raporunu okuyun. Yeni API'lerle ilgili ayrıntılar için Android API referansını ziyaret edin. Yeni API'ler, görünürlük sağlamak için vurgulanmıştır. Ayrıca, platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android R'yi hedefleyen uygulamalar ve tüm uygulamalar için Android 11 davranış değişikliklerinin yanı sıra gizlilik değişikliklerini incelediğinizden emin olun.
Yeni deneyimler
Cihaz kontrolleri
Android 11, bağlı, harici cihazların kontrollerini açığa çıkarmak için kullanabileceğiniz yeni bir
ControlsProviderService API içerir. Bu kontroller, Android güç menüsündeki Cihaz denetimleri altında görünür. Daha fazla bilgi edinmek için Harici cihazları kontrol etme başlıklı makaleye göz atın.
Medya Denetimleri
Android 11, medya kontrollerinin görüntülenme şeklini günceller. Hızlı ayarların yakınında medya kontrolleri görünür. Birden fazla uygulamadan gelen oturumlar kaydırılabilir bir bantta düzenlenir. Bu bantta, telefonda yerel olarak oynatılan akışlar, harici cihazlarda veya yayınlama oturumlarında algılananlar gibi uzak akışlar ve önceki devam ettirilebilir oturumlar son oynatıldıkları sırayla yer alır.
Kullanıcılar uygulamayı başlatmak zorunda kalmadan önceki oturumları banttan yeniden başlatabilir. Oynatma başladığında kullanıcı medya kontrolleriyle her zamanki gibi etkileşimde bulunur.
Daha fazla bilgi için medya denetimleri konusuna bakın.
Ekranlar
Şelale ekranları için daha iyi destek
Android 11, şelale ekranlarını desteklemek için
cihazın kenarını sarmalayan ekranlar olan
çeşitli API'ler sağlar. Bu ekranlar, ekran kesimleri olan ekranların bir varyantı olarak değerlendirilir. Mevcut
DisplayCutout
.getSafeInset…() yöntemleri artık şelale alanlarından ve kesiklerden kaçınmak için güvenli bölümü döndürüyor.
Uygulamanızın içeriğini şelale alanında oluşturmak için şunları yapın:
Şelale kümesinin tam boyutlarını öğrenmek için
DisplayCutout.getWaterfallInsets()numaralı telefonu arayın.
Pencerenin, ekranın tüm kenarlarındaki kesim ve şelale alanlarına genişlemesine izin vermek için
layoutInDisplayCutoutModepencere düzeni özelliğini
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYSolarak ayarlayın. Kesit veya şelale alanlarında önemli hiçbir içeriğin bulunmadığından emin olmalısınız.
Menteşe açısı sensörü ve katlanabilir
Android 11, menteşe tabanlı ekran yapılandırmalarına sahip cihazlarda çalışan uygulamaların,
TYPE_HINGE_ANGLE ile yeni bir sensör ve menteşe açısını izleyebilen ve cihazın iki ayrılmaz parçası arasındaki derece cinsinden ölçüm sağlayan yeni
SensorEvent adlı yeni bir sensör sağlayarak menteşenin açısını belirlemesini sağlar. Kullanıcı cihazı kullanırken ayrıntılı animasyonlar gerçekleştirmek için bu ham ölçümleri kullanabilirsiniz.
Katlanabilir cihazlar bölümüne göz atın.
Sohbetler
Görüşme iyileştirmeleri
Android 11, ileti dizilerinin işlenme biçiminde çeşitli iyileştirmeler yapar. Sohbetler, iki veya daha fazla kişi arasındaki gerçek zamanlı, çift yönlü iletişimdir. Bu görüşmeler özel olarak öne çıkarılmıştır ve kullanıcılara bunlarla etkileşim kurma konusunda yeni seçenekler sunulur.
Görüşmeler ve uygulamanızın bunları nasıl destekleyebileceği hakkında daha fazla bilgi edinmek için Kişiler ve görüşmeler bölümüne bakın.
Sohbet Balonları
Baloncuklar artık geliştiricilerin sistem genelinde görüşmelerin gösterilmesine yardımcı olmak için kullanılabilir. Baloncuklar, Android 10'da bir geliştirici seçeneği üzerinden etkinleştirilen deneysel bir özelliktir. Android 11'de buna artık gerek yoktur.
Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamaların bildirimleri, yeni görüşme gereksinimlerini karşılamadıkları sürece baloncuk olarak sunulmaz. Özellikle, bildirimin bir kısayolla ilişkilendirilmesi gerekir.
Android 11'den önce, bildirimin baloncuk olarak gönderilmesini istiyorsanız bildirimin her zaman doküman kullanıcı arayüzü modunda başlatılacak şekilde ayarlandığını açıkça belirtmeniz gerekiyordu. Android 11'den itibaren bu ayarı açıkça yapmanız gerekmez. Bildirim baloncuk olarak gösterilirse platform, bildirimi otomatik olarak her zaman doküman kullanıcı arayüzü modunda başlayacak şekilde ayarlar.
Balon performansında çok sayıda iyileştirme yapılmıştır ve kullanıcılar her uygulamada balonları etkinleştirme ve devre dışı bırakma konusunda daha fazla esnekliğe sahiptir. Deneysel destek uygulayan geliştiriciler için Android 11'deki API'lerde birkaç değişiklik yapılmıştır:
- Parametresi olmayan
BubbleMetadata.Builder()oluşturucunun desteği sonlandırıldı. Bunun yerine, şu iki yeni oluşturucudan birini kullanın:
BubbleMetadata.Builder(PendingIntent, Icon)veya
BubbleMetadata.Builder(String).
BubbleMetadata.Builder(String)yöntemini çağırarak kısayol kimliğinden
BubbleMetadataoluşturun. İletilen dize,
Notification.Builderiçin sağlanan kısayol kimliğiyle eşleşmelidir.
- Balon simgelerini
Icon.createWithContentUri()ile veya yeni
createWithAdaptiveBitmapContentUri()yöntemiyle oluşturun.
5G görsel göstergeleri
Kullanıcıların cihazlarında 5G göstergeleri görüntüleme hakkında bilgi edinmek için Kullanıcılarınıza 5G kullandıklarında bunu bildirme başlıklı makaleye bakın.
Gizlilik
Android 11, kullanıcı gizliliğini iyileştirmek için çok sayıda değişiklik ve kısıtlama uygular. Daha fazla bilgi edinmek için Gizlilik sayfasını inceleyin.
Güvenlik
Biyometrik kimlik doğrulama güncellemeleri
Android 11, uygulama verilerinizin güvenlik düzeyini kontrol etmenize yardımcı olmak için biyometrik kimlik doğrulama ile ilgili çeşitli iyileştirmeler sunar. Bu değişiklikler Jetpack Biometric kitaplığında da gösterilir.
Kimlik doğrulama türleri
Android 11'de uygulamanızın desteklediği kimlik doğrulama türlerini belirtmek için kullanabileceğiniz
BiometricManager.Authenticators arayüzü kullanıma sunulmuştur.
Hangi kimlik doğrulama türünün kullanıldığını belirleme
Kullanıcı kimlik doğrulaması yaptıktan sonra,
getAuthenticationType() çağrısı yaparak kullanıcının kimliğinin cihaz kimlik bilgisi veya biyometrik kimlik bilgisi kullanılarak doğrulanıp doğrulanmadığını kontrol edebilirsiniz.
Kullanım başına kimlik doğrulama anahtarları için ek destek
Android 11, kullanım başına kimlik doğrulama anahtarlarını kullanarak kimlik doğrulama için daha fazla destek sağlar.
Kullanımdan kaldırılan yöntemler
Android 11, aşağıdaki yöntemleri kullanımdan kaldırır:
setDeviceCredentialAllowed()yöntemi.
setUserAuthenticationValidityDurationSeconds()yöntemi.
- Bağımsız değişken almayan, aşırı yüklenmiş
canAuthenticate()sürümü.
Büyük veri kümelerinin güvenli paylaşımı
Makine öğrenimi veya medya oynatma gibi bazı durumlarda, uygulamanız başka bir uygulama ile aynı büyük veri kümesini kullanmak isteyebilir. Önceki Android sürümlerinde, uygulamanızın ve başka bir uygulamanın aynı veri kümesinin ayrı bir kopyasını indirmesi gerekir.
Android 11, hem ağ üzerinde hem de disk üzerinde veri yedekliliğinin azaltılmasına yardımcı olmak için bu büyük veri kümelerinin paylaşılan veri blob'ları kullanılarak cihazda önbelleğe alınmasına olanak tanır. Veri kümelerini paylaşma hakkında daha fazla bilgi edinmek için büyük veri kümelerini paylaşmayla ilgili ayrıntılı kılavuza bakın.
OTA yeniden başlatıldıktan sonra kullanıcı kimlik bilgileri olmadan dosya tabanlı şifreleme gerçekleştir
Cihaz bir OTA güncellemesini tamamlayıp yeniden başlatıldıktan sonra, kimlik bilgileriyle korunan depolamaya yerleştirilen Kimlik Bilgisi Şifrelenmiş anahtarlar (CE) Dosya Tabanlı Şifreleme (FBE) işlemleri için hemen kullanılabilir hale gelir. Bu, OTA güncellemesinden sonra uygulamanızın, kullanıcı PIN'ini, desenini veya şifresini girmeden önce CE anahtarı gerektiren işlemleri sürdürebileceği anlamına gelir.
Performans ve kalite
Kablosuz hata ayıklama
Android 11, Android Debug Bridge (adb) aracılığıyla kablosuz olarak uygulamanızın iş istasyonunuzdan dağıtılmasını ve hata ayıklamasını destekler. Örneğin, hata ayıklaması yapılabilir uygulamanızı, cihazınızı USB ile fiziksel olarak bağlamaya ve sürücü kurulumu gibi yaygın USB bağlantısı sorunlarıyla uğraşmadan uzaktaki birden fazla cihaza dağıtabilirsiniz. Daha fazla bilgi için Uygulamaları donanım cihazında çalıştırma başlıklı makaleye göz atın.
ADB Artımlı APK yükleme
Uygulamada yalnızca küçük bir değişiklik yapılsa bile büyük (2 GB'tan fazla) APK'ların yüklenmesi uzun sürebilir. ADB (Android Debug Bridge) Artımlı APK yüklemesi, kalan verilerin arka planda akışını sağlarken uygulamayı başlatmaya yetecek kadar APK yükleyerek bu süreci hızlandırır. Cihazınız bu özelliği destekliyorsa ve SDK Platform Araçları'nın son sürümü yüklüyse
adb install bu özelliği otomatik olarak kullanır. Desteklenmiyorsa varsayılan yükleme yöntemi sessizce kullanılır.
Özelliği kullanmak için aşağıdaki adb komutunu kullanın. Cihaz, artımlı yüklemeyi desteklemiyorsa komut başarısız olur ve ayrıntılı bir açıklama yazdırır.
adb install --incremental
Bir ADB artımlı APK yüklemesi çalıştırmadan önce APK'nızı imzalamanız ve bir APK İmza Şeması v4 dosyası oluşturmanız gerekir. Bu özelliğin çalışması için v4 imza dosyası APK'nın yanına yerleştirilmelidir.
Yerel bellek ayırıcı kullanılarak hata algılama
GWP-ASan, boşaltıldıktan sonra kullanım ve yığın arabellek taşması hatalarını bulmaya yardımcı olan yerel bir bellek ayırıcı özelliğidir. Bu özelliği genel olarak veya uygulamanızın belirli alt işlemleri için etkinleştirebilirsiniz. Daha fazla bilgi edinmek için GWP-Asan kılavuzuna bakın.
Sinir Ağları API'sı 1.3
Android 11, Nöral Ağlar API'sini (NNAPI) genişletip iyileştirir.
Yeni işlemler
NNAPI 1.3, TensorFlow Lite'ın yeni niceleme şemasını desteklemek için yeni bir işlenen türü olan
TENSOR_QUANT8_ASYMM_SIGNED'i kullanıma sunar.
Ayrıca, NNAPI 1.3 aşağıdaki yeni işlemleri sunar:
QUANTIZED_LSTM
IF
WHILE
ELU
HARD_SWISH
FILL
RANK
Yeni makine öğrenimi denetimleri
NNAPI 1.3, makine öğreniminin sorunsuz şekilde çalışmasına yardımcı olacak yeni kontroller sunar:
QoS API: Yeni Quality of Service API, aşağıdaki yeni işlevlerle NNAPI'de önceliklendirme ve görev son tarihleri için destek içerir:
Bellek alanı giriş/çıkışı: NNAPI 1.3, yürütme için giriş ve çıkış olarak bellek alanları için destek içerir. Bu, aynı verilerin gereksiz kopyalarını farklı sistem bileşenleri arasında kaldırarak Android nöral ağlarının çalışma zamanı performansını iyileştirir. Bu özellik,
ANeuralNetworksMemoryDescve
ANeuralNetworkMemorynesneleriyle kullanılmak üzere aşağıdaki işlevler de dahil olmak üzere bir dizi yeni NDK API'si ekler:
ANeuralNetworksMemoryDesc_create()
ANeuralNetworksMemoryDesc_free()
ANeuralNetworksMemoryDesc_addInputRole()
ANeuralNetworksMemoryDesc_addOutputRole()
ANeuralNetworksMemoryDesc_setDimensions()
ANeuralNetworksMemoryDesc_finish()
ANeuralNetworksMemory_createFromDesc()
ANeuralNetworksMemory_copy()
Daha fazla bilgi edinmek için nöral ağ belleği alan örneğine bakın.
-
Dependency API ve senkronizasyon sınırı desteği: NNAPI 1.3, bağımlılıklarla birlikte eşzamansız bilgi işlem için destek içerir. Bu sayede, küçük zincirli modeller çağrılırken ek yük büyük ölçüde azaltılır. Bu özellik aşağıdaki yeni işlevleri ekler:
Kontrol akışı: NNAPI 1.3, yeni
ANEURALNETWORKS_MODELişlenen türünü kullanan diğer modelleri bağımsız değişken olarak kabul eden yeni
ANEURALNETWORKS_IFve
ANEURALNETWORKS_WHILEgrafik işlemleriyle genel kontrol akışını destekler. Ayrıca bu özellik aşağıdaki yeni işlevleri ekler:
NDK Thermal API'si
Cihazlar aşırı ısındığında CPU ve/veya GPU'yu daraltabilirler ve bu da uygulamaları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun hesaplamalar veya sürekli ağ etkinliği içeren uygulama veya oyunların sorunla karşılaşma olasılığı daha yüksektir.
Cihazdaki sıcaklık değişikliklerini izlemek için Android 11'de NDK Thermal API'yi kullanıp ardından daha düşük güç kullanımını ve daha düşük cihaz sıcaklığını korumak için gereken işlemleri yapın. Bu API, Java Thermal API'ye benzer. Termal durum değişiklikleriyle ilgili bildirim almak veya mevcut durumu doğrudan sorgulamak için kullanabilirsiniz.
Metin ve giriş
İyileştirilmiş IME geçişleri
Android 11, dokunmatik klavyeler gibi giriş yöntemi düzenleyicilerinin (IME'ler) geçişlerini iyileştirmek için yeni API'ler sunar. Bu API'ler uygulamanızın içeriğini, IME'nin görünümü ve kaybolduğu noktalarla ve durum, gezinme çubukları gibi diğer öğelerle senkronize bir şekilde ayarlamanızı kolaylaştırır.
Odak
EditTextdayken IME'nin gösterilmesi için
view.getInsetsController().show(Type.ime()) numaralı telefonu arayın.
(Bu yöntemi, odaklanılan
EditText ile aynı hiyerarşideki herhangi bir görünümde çağırabilirsiniz. Özel olarak
EditText üzerinde çağırmanız gerekmez.) IME'yi gizlemek için
view.getInsetsController().hide(Type.ime()) numaralı telefonu arayın.
view.getRootWindowInsets().isVisible(Type.ime()) numaralı telefonu arayarak bir IME'nin şu anda görünür olup olmadığını kontrol edebilirsiniz.
Uygulamanızın görünümlerini, IME'nin görünümü ve ekrandan kaybolarak senkronize etmek için
View.setWindowInsetsAnimationCallback()'e
WindowInsetsAnimation.Callback sağlayarak bir görünümdeki dinleyiciyi ayarlayın.
(Bu işleyiciyi herhangi bir görünümde ayarlayabilirsiniz,
EditText olması gerekmez.)
IME, dinleyicinizin
onPrepare() yöntemini, ardından geçişin başında
onStart() yöntemini çağırır. Daha sonra geçişteki her ilerlemede
onProgress() çağrısı yapar. Geçiş tamamlandığında IME
onEnd() numarasını çağırır.
Geçişin herhangi bir noktasında,
WindowInsetsAnimation.getFraction() numaralı telefonu arayarak geçişin ne kadar ilerleme kaydettiğini öğrenebilirsiniz.
Bu API'lerin nasıl kullanılacağına dair bir örnek için yeni WindowInsetsAnimation kod örneğine bakın.
IME animasyonunu kontrol etme
Ayrıca, IME animasyonunun veya gezinme çubuğu gibi başka bir sistem çubuğunun animasyonunun kontrolünü de elinize alabilirsiniz. Bunu yapmak için ilk olarak pencere içerideki değişiklikler için yeni bir işleyici ayarlamak üzere
setOnApplyWindowInsetsListener() çağrısı yapın:
Kotlin
rootView.setOnApplyWindowInsetsListener { rootView, windowInsets -> val barsIme = windowInsets.getInsets(Type.systemBars() or Type.ime()) rootView.setPadding(barsIme.left, barsIme.top, barsIme.right, barsIme.bottom) // We return the new WindowInsets.CONSUMED to stop the insets being // dispatched any further into the view hierarchy. This replaces the // deprecated WindowInsets.consumeSystemWindowInsets() and related // functions. WindowInsets.CONSUMED }
Java
mRoot.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() { @Override public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) { Insets barsIME = insets.getInsets(Type.systemBars() | Type.ime()); mRootView.setPadding(barsIme.left, barsIme.top, barsIme.right, barsIme.bottom); // We return the new WindowInsets.CONSUMED to stop the insets being // dispatched any further into the view hierarchy. This replaces the // deprecated WindowInsets.consumeSystemWindowInsets() and related // functions. return WindowInsets.CONSUMED; } });
IME veya diğer sistem çubuğunu taşımak için kumandanın
controlWindowInsetsAnimation() yöntemini çağırın:
Kotlin
view.windowInsetsController.controlWindowInsetsAnimation( Type.ime(), 1000, LinearInterpolator(), cancellationSignal, object : WindowInsetsAnimationControlListener() { fun onReady(controller: WindowInsetsAnimationController, types: Int) { // update IME inset controller.setInsetsAndAlpha(Insets.of(0, 0, 0, inset), 1f /* alpha */, 0.1 /* fraction progress */) } } );
Java
mRoot.getWindowInsetsController().controlWindowInsetsAnimation( Type.ime(), 1000, new LinearInterpolator(), cancellationSignal, new WindowInsetsAnimationControlListener() { @Override public void onReady( @NonNull WindowInsetsAnimationController controller, int types ) { // update IME inset controller.setInsetsAndAlpha(Insets.of(0, 0, 0, inset), 1f /* alpha */, 0.1 /* fraction progress */); } @Override public void onCancelled() {} });
ICU kitaplıklarıyla ilgili güncellemeler
Android 11,
android.icu paketini Android 10'daki sürüm 63'e kıyasla ICU kitaplığının 66 sürümünü kullanacak şekilde günceller. Yeni kitaplık sürümü, güncellenmiş CLDR yerel ayar verilerini ve Android'deki uluslararasılaştırma desteğinde yapılan çeşitli geliştirmeleri içerir.
Yeni kitaplık sürümlerindeki önemli değişiklikler şunlardır:
- Birçok biçimlendirme API'si artık
FormattedValuearalığını genişleten yeni bir döndürme nesnesi türünü destekliyor.
LocaleMatcherAPI; bir oluşturucu sınıfı,
java.util.Localetürü desteği ve eşleşme hakkında ek veriler içeren bir sonuç sınıfıyla geliştirilmiştir.
- Unicode 13 artık desteklenmektedir.
Medya
MediaCodec arabelleklerini ayırma
Android 11, giriş ve çıkış arabelleklerini dağıtırken uygulamalara daha fazla kontrol sağlayan yeni bir
MediaCodec API'si içerir. Bu, uygulamanızın belleği daha verimli bir şekilde yönetmesini sağlar.
Yeni sınıflar:
Yeni yöntemler:
MediaCodec.getQueueRequest()
MediaCodec.getOutputFrame()
MediaCodec.LinearBlock.isCodecCopyFreeCompatible()
Ayrıca,
MediaCodec.Callback()'teki iki yöntemin davranışı değişti:
onInputBufferAvailable()
- Uygulamalar, dizinle
MediaCodec.getInputBuffer()ve
MediaCodec.queueInputBuffer()çağrıları yapmak yerine, Block Model API'yi kullanacak şekilde yapılandırılmışsa dizinle
MediaCodec.getQueueRequestkullanmalıdır ve yuvaya bir DoğrusalBlock/DonanımBuffer eklemelidir.
onOutputBufferAvailable()
- Uygulamalar, dizinle
MediaCodec.getOutputBuffer()çağrısı yapmak yerine daha fazla bilgi içeren
OutputFramenesnesini ve DoğrusalBlock/DonanımBuffer arabelleklerini almak için dizinle
MediaCodec.getOutputFrame()kullanabilir.
MediaCodec'de düşük gecikmeli kod çözme
Android 11,
MediaCodec özelliğini oyunlar ve diğer gerçek zamanlı uygulamalar için düşük gecikmeli kod çözmeyi destekleyecek şekilde geliştirdi.
FEATURE_LowLatency öğesini
MediaCodecInfo.CodecCapabilities.isFeatureSupported()'e geçirerek codec'in düşük gecikmeli kod çözmeyi destekleyip desteklemediğini kontrol edebilirsiniz.
Düşük gecikmeli kod çözmeyi açmak veya kapatmak için aşağıdakilerden birini yapın:
MediaCodec.configure()kullanarak yeni anahtarı
KEY_LOW_LATENCY0 veya 1 olarak ayarlayın.
MediaCodec.setParameters()kullanarak yeni parametre anahtarını
PARAMETER_KEY_LOW_LATENCY0 veya 1 olarak ayarlayın.
Yeni AAudio işlevi AAudioStream_release()
AAudioStream_close() işlevi, bir ses akışını aynı anda yayınlayıp kapatır. Bu tehlikeli olabilir. Kapatıldıktan sonra akışa başka bir işlem erişmeye çalışırsa işlem çöker.
Yeni
AAudioStream_release() işlevi, akışı serbest bırakır ancak kapatmaz. Bu işlem, kaynaklarını serbest bırakır ve akışı bilinen bir durumda bırakır. Nesne, siz
AAudioStream_close() çağrısı yapana kadar varlığını sürdürür.
MediaParser API'sı
USB cihazından ses kaydı
RECORD_AUDIO izni olmayan bir uygulama, ses yakalama özelliğine sahip bir USB ses cihazına (ör. USB mikrofonlu kulaklık) doğrudan erişim isteğinde
UsbManager kullandığında, kullanıcıdan cihazı kullanma iznini onaylamasını isteyen yeni bir uyarı mesajı görüntülenir. Sistem, tüm "her zaman kullan" seçeneğini yok sayar. Bu yüzden, bir uygulama her erişim isteğinde bulunduğunda kullanıcının uyarıyı kabul etmesi ve izin vermesi gerekir.
Bu davranışı önlemek için uygulamanızın
RECORD_AUDIO iznini istemesi gerekir.
Eşzamanlı mikrofon erişimi
Android 11;
AudioRecord,
MediaRecorder ve
AAudioStream API'lerine yeni yöntemler ekler. Bu yöntemler, seçilen kullanım alanından bağımsız olarak eşzamanlı olarak görüntü yakalama özelliğini etkinleştirir ve devre dışı bırakır. Bkz. Ses Girişi Paylaşma.
Çıkış değiştirici
Android 11, Cast ve Mediarouter API'lerini kullanan uygulamalar için yeni davranış uyguluyor.
Yayınlama seçeneklerine uygulamanın içinden erişmenin yanı sıra geçiş seçenekleri de sistem medya oynatıcısında görünür. Bu yaklaşım, izleme ve dinleme bağlamını (ör. mutfakta veya telefonda video izleme ya da evde veya arabada ses dinleme gibi) değiştirirken kullanıcılara cihazlar arasında geçiş yaparken sorunsuz bir yolculuk yapmaya yardımcı olur. Çıkış değiştiriciye bakın.
Bağlantı
Kablosuz geçiş noktası geliştirmeleri
Android 11'de eklenen Passpoint özellikleri hakkında bilgi için Passpoint sayfasını inceleyin.
Wi-Fi Suggestion API genişletildi
Android 11, aşağıdakiler de dahil olmak üzere uygulamanızın ağ yönetimi özelliklerini artırmak için Wi-Fi Suggestion API'yi genişletir:
- Bağlantı yönetimi uygulamaları, bağlantı kesilmesi isteklerine izin vererek kendi ağlarını yönetebilir.
- Passpoint ağları Suggestion API'ye entegre edilmiştir ve kullanıcıya önerilebilir.
- Analytics API'leri ağlarınızın kalitesi hakkında bilgi edinmenizi sağlar.
Arama Filtreleme Hizmeti güncellemeleri
Android 11'den itibaren AramaFiltreleme Hizmeti, gelen aramalar için STIR/SHAKEN doğrulama durumu (verstat) hakkında bilgi isteyebilir. Bu bilgiler, gelen aramalar için arama ayrıntıları kapsamında sağlanır.
Bir
CallScreeningService,
READ_CONTACTS iznini elinde bulunduruyorsa kullanıcının kişilerindeki bir numaradan gelen veya bu numaraya arama yapıldığında uygulama bilgilendirilir.
Daha fazla bilgi edinmek için Arayan kimliği adres sahteciliğini önleme başlıklı makaleyi inceleyin.
Mobile API güncellemelerini aç
Android 11 ve sonraki sürümlerde OMAPI desteği hakkında bilgi edinmek için Open Mobile API okuyucu desteğini inceleyin.
Etkili VPN'ler
API düzeyi 30 ve üstünü hedefleyen ya da API düzeyi 29 ve sonraki sürümlerde başlatılan cihazlarda çalışan uygulamalar, hem kullanıcı tarafından yapılandırılmış hem de uygulama tabanlı VPN'lere IKEv2/IPsec'i uygulayabilir.
VPN'ler işletim sisteminin yerel olarak çalışır ve bir uygulamada IKEv2/IPsec VPN bağlantıları kurmak için gereken kodu basitleştirir.
İşlem başına ağ erişimi denetimi
Ağ erişimini işlem bazında etkinleştirme hakkında bilgi edinmek için Ağ kullanımını yönetme sayfasını inceleyin.
Aynı FQDN'ye sahip birden fazla yüklü Passpoint yapılandırmasına izin ver
Android 11'den itibaren, bir
PasspointConfiguration nesnesi için benzersiz tanımlayıcı almak üzere
PasspointConfiguration.getUniqueId() kullanabilirsiniz. Bu tanımlayıcı, uygulama kullanıcılarının aynı tam nitelikli alan adına (FQDN) sahip birden çok profil yüklemesine olanak tanır.
Bu işlev, bir operatör kendi ağında birden fazla Mobil Ülke Kodu (MM) ve Mobil Ağ Kodu (MNC) kombinasyonu dağıttığında ancak yalnızca tek bir FQDN'ye sahip olduğunda faydalıdır. Android 11 ve sonraki sürümlerde, kullanıcı MM veya MNC ile bir SIM taktığında ağ ile Ev sağlayıcı olarak eşleşecek, aynı FQDN'ye sahip birden fazla profil yüklenebilir.
GNSS anten desteği
Android 11,
GnssAntennaInfo sınıfını kullanıma sunuyor. Bu sayede uygulamanız, Küresel Navigasyon Uydu Sistemi'nin (GNSS) sunabileceği santimetre doğruluk konumlandırmasını daha fazla kullanabiliyor.
Anten kalibrasyon bilgileri ile ilgili kılavuzdan daha fazla bilgi edinin.
Grafik
NDK resim kod çözücü
NDK
ImageDecoder API, Android C/C++ uygulamalarının görüntülerin kodunu doğrudan çözmesi için standart bir API sağlar. Uygulama geliştiricilerin artık çerçeve API'lerini (JNI aracılığıyla) kullanmasına veya üçüncü taraf görüntü kodu çözme kitaplıklarını paketlemesine gerek yoktur. Daha fazla bilgi için Görüntü kod çözücü geliştirici kılavuzuna bakın.
Kare hızı API'si
Android 11, uygulamaların birden fazla yenileme hızını destekleyen cihazlarda titremeyi azaltmak için sistemi istedikleri kare hızı konusunda bilgilendirmesini sağlayan bir API sunar. Bu API'nin nasıl kullanılacağı hakkında bilgi için Kare hızı rehberine bakın.
Düşük gecikme desteği isteme ve kontrol etme
Bazı harici ekranlar ve TV'ler gibi belirli ekranlarda grafik işleme sonrası süreci yapılabilir. Bu işlem sonrası işlem grafikleri iyileştirir ancak gecikmeyi artırabilir. HDMI 2.1'i destekleyen daha yeni ekranlarda, bu son işlemeyi kapatarak gecikmeyi en aza indiren otomatik düşük gecikme modu (ALLM, oyun modu olarak da bilinir) bulunur. ALLM hakkında daha fazla bilgi için HDMI 2.1 spesifikasyonuna bakın.
Bir pencere, otomatik düşük gecikme modunun (varsa) kullanılmasını isteyebilir. ALLM, özellikle oyun ve video konferans gibi uygulamalarda düşük gecikmenin mümkün olan en iyi grafiğe sahip olmaktan daha önemli olduğu uygulamalar için kullanışlıdır.
Minimum işleme sonrası sürecini etkinleştirmek veya devre dışı bırakmak için
Window.setPreferMinimalPostProcessing() yöntemini çağırın veya pencerenin
preferMinimalPostProcessing özelliğini
true olarak ayarlayın. Tüm ekranlar minimum sonra işlemeyi desteklemez. Belirli bir ekranın bunu destekleyip desteklemediğini öğrenmek için yeni yöntemi
Display.isMinimalPostProcessingSupported() çağırın.
Etkili grafik hata ayıklama katmanı yerleştirme
Uygulamalar artık hata ayıklaması yapılabilir bir uygulamayla aynı işlevselliği sunmak için harici grafik katmanlarını (GLES, Vulkan) yerel uygulama koduna yükleyebilir ancak performans ek yüküne neden olmaz. Bu özellik, GAPID gibi araçlarla uygulamanızın profilini oluştururken özellikle önemlidir. Uygulamanızın profilini çıkarmak için, uygulamayı hata ayıklaması yapılabilir hale getirmek yerine, uygulama manifest dosyanıza aşağıdaki meta-data öğesini ekleyin:
<application ... > <meta-data android:name="com.android.graphics.injectLayers.enable" android:value="true" /> </application>
Resimler ve kamera
Etkin çekim sırasında bildirim seslerini ve titreşimlerini kapat
Uygulamanız, Android 11'den itibaren kamerayı aktif olarak kullanırken yalnızca titreşimleri, hem sesleri hem de titreşimleri kapatabilir veya
setCameraAudioRestriction() kullanmadan bunların ikisini de kapatabilir.
Android Emülatör'de genişletilmiş kamera desteği
Android 11'den itibaren emülatörde kameralara yönelik genişletilmiş destek hakkında bilgi edinmek için Kamera desteği sayfasına bakın.
Birden fazla kameranın eşzamanlı kullanımı için destek
Android 11, hem ön hem de arka kamera dahil olmak üzere aynı anda birden fazla kamera kullanma desteğini sorgulamak için API'ler ekler.
Uygulamanızın çalıştığı cihazda destek olup olmadığını kontrol etmek için aşağıdaki yöntemleri kullanın:
getConcurrentCameraIds(), aynı uygulama süreci tarafından yapılandırıldığında garantili akış kombinasyonlarıyla eşzamanlı olarak akış yapabilen
Setkamera kimliği kombinasyonları döndürür.
isConcurrentSessionConfigurationSupported(), kamera cihazlarının ilgili oturum yapılandırmalarını eşzamanlı olarak destekleyip destekleyemeyeceğini sorgular.
Birden çok kareye sahip HEIF görüntüleri için daha iyi destek
Android 11'den itibaren
ImageDecoder.decodeDrawable()'i çağırır ve bir kare dizisi (animasyon veya seri çekim fotoğraf gibi) içeren bir HEIF resmini iletirseniz yöntem, tüm resim dizisini içeren bir
AnimatedImageDrawable döndürür. Android'in önceki sürümlerinde, yöntem yalnızca tek bir karenin
BitmapDrawable değerini döndürdü.
HEIF grafiği belli bir sırada olmayan birden çok kare içeriyorsa
MediaMetadataRetriever.getImageAtIndex() yöntemini çağırarak tek bir kareyi alabilirsiniz.
Erişilebilirlik
Erişilebilirlik hizmeti geliştiricileri için güncellemeler
Özel bir erişilebilirlik hizmeti oluşturursanız Android 11'de aşağıdaki özellikleri kullanabilirsiniz:
- Erişilebilirlik hizmetinin kullanıcılara yönelik açıklamasında artık düz metnin yanı sıra HTML ve resimlere de izin veriliyor. Bu esneklik, hizmetinizin ne yaptığını ve onlara nasıl yardımcı olabileceğini son kullanıcılara daha kolay açıklamanızı sağlar.
- Bir kullanıcı arayüzü öğesinin,
contentDescription'dan daha semantik olarak daha anlamlı olan bir açıklamasıyla çalışmak için
getStateDescription()yöntemini çağırın.
- Dokunma etkinliklerinin sistemin dokunma gezginini atlamasını istemek için
setTouchExplorationPassthroughRegion()numaralı telefonu arayın. Benzer şekilde, hareketlerin sistemin hareket algılayıcısını atlamasını istemek için
setGestureDetectionPassthroughRegion()çağrısı yapın.
- "Enter" ve "next" gibi IME işlemlerinin yanı sıra
FLAG_SECUREişaretini etkinleştirmeyen pencerelerin ekran görüntülerini isteyebilirsiniz.
Ek özellikler
Uygulama işleminden çıkış nedenleri
Android 11, yakın zamanda gerçekleşen işlem fesihlerinin nedenlerini bildiren
ActivityManager.getHistoricalProcessExitReasons() yöntemini kullanıma sunuyor. Uygulamalar, işlemin sonlandırma işleminin ANR'ler, bellek sorunları veya başka nedenlerden kaynaklanıp kaynaklanmadığı gibi kilitlenme teşhis bilgilerini toplamak için bu yöntemi kullanabilir.
Ayrıca, daha sonra analiz etmek üzere özel durum bilgilerini depolamak için yeni
setProcessStateSummary() yöntemini kullanabilirsiniz.
numaralı telefonu arayın.
getHistoricalProcessExitReasons() yöntemi, bir uygulama işleminin ölümüyle ilgili bilgileri içeren
ApplicationExitInfo sınıfının örneklerini döndürür. Bu sınıfın bir örneğinde
getReason() çağrısı yaparak uygulama sürecinizin neden sonlandırıldığını belirleyebilirsiniz. Örneğin,
REASON_CRASH döndürülen değeri, uygulamanızda işlenmemiş bir istisna oluştuğunu belirtir. Uygulamanızın, çıkış etkinlikleri için benzersiz olması gerekiyorsa
getTimestamp() yöntemindeki zaman damgasına dayanan bir karma değeri gibi uygulamaya özgü bir tanımlayıcı sağlayabilir.
Ek kaynaklar
Daha fazla bilgi için Medium'da uygulamaları daha gizli ve kararlı hale getirecek yeni Android 11 araçları ile ilgili makaleyi okuyun.
Kaynak yükleyiciler
Android 11, uygulamaların kaynakların aranma ve yüklenme şeklini dinamik olarak genişletmesine olanak tanıyan yeni bir API'yi kullanıma sunuyor. Yeni işlevin sağlanmasında birincil sorumluluk yeni
ResourcesLoader ve
ResourcesProvider API sınıflarıdır. Birlikte, ek kaynak ve öğeler sağlama veya mevcut kaynak ve varlıkların değerlerini değiştirme olanağı sunarlar.
ResourcesLoader nesneleri, bir uygulamanın
Resources örneğine
ResourcesProvider nesne sağlayan kapsayıcılardır. Buna karşılık
ResourcesProvider nesneleri, APK'lardan ve kaynak tablolarından kaynak verilerini yükleme yöntemleri sağlar.
Bu API'nin birincil kullanım alanlarından biri özel öğe yüklemedir. Dosya tabanlı kaynakların ve öğelerin çözünürlüğünü yönlendirerek uygulama APK'sı yerine belirli bir dizinde arama yapmasına neden olan bir
ResourcesProvider oluşturmak için
loadFromDirectory() kullanabilirsiniz. Bu öğelere, APK'da paketlenmiş öğelerle olduğu gibi
AssetManager API sınıfındaki
open() yöntem ailesi üzerinden erişebilirsiniz.
APK imza şeması v4
Android 11'e APK İmza Şeması v4 desteği eklendi. Bu şema, ayrı bir dosyada (
apk-name.apk.idsig) yeni bir imza türü oluşturur ancak v2 ve v3'e benzerdir. APK'da hiçbir değişiklik yapılmaz. Bu şema, APK'nın yüklenmesini hızlandıran ADB artımlı APK yüklemesini destekler.
Dinamik intent filtreleri
Bir uygulamanın niyet almak için uygulama manifestinde bir amaç filtresi tanımlayarak derleme sırasında ne tür verileri alabileceğini tanımlaması gerekir. Android 10 ve önceki sürümlerde, uygulamaların çalışma zamanında amaç filtrelerini hiçbir şekilde değiştirmesi mümkün değildir. Kullanıcının içine tam olarak hangi yazılımı yükleyeceğini bilmenin bir yolu olmadığından, sanallaştırma uygulamaları (ör. sanal makineler ve uzak masaüstleri) açısından bu sorun teşkil eder.
Android 11, bir uygulamanın intent filtresindeki dinamik MIME türleri kümesini tanımlamasına ve çalışma zamanında programatik olarak değiştirmesine olanak tanıyan yeni bir manifest öğesi olan MIME gruplarını kullanıma sunuyor. MIME grubu kullanmak için uygulama manifestinize yeni
android:mimeGroup özelliğiyle bir veri öğesi ekleyin:
<intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeGroup="myMimeGroup"/> </intent-filter>
android:mimeGroup özelliğinin değeri, çalışma zamanında MIME grubunu tanımlayan rastgele bir dize kimliğidir. Bir MIME grubunun kimliğini
PackageManager API sınıfında aşağıdaki yeni yöntemlere ileterek bu grubun içeriğine erişebilir ve bu grubu güncelleyebilirsiniz:
Bir MIME grubuna programatik olarak bir MIME türü eklediğinizde, bu tür, manifest'te açıkça tanımlanan bir statik MIME türüyle tam olarak aynı şekilde çalışır.
Otomatik doldurma geliştirmeleri
Android 11, otomatik doldurma hizmetleriyle ilgili iyileştirmeler sunuyor.
AssistStructure.ViewNode'daki ipucu tanımlayıcıları
Otomatik doldurma hizmetlerinin, görünümün özelliklerine dayanarak bir görünüm için imza karmasını hesaplaması genellikle yararlıdır. Görünüm ipucu, bir imza karmasını hesaplarken eklenmesi için özellikle iyi bir özelliktir, ancak ipucu dizesi telefonun yerel ayarıyla değişebilir. Android 11, bu sorunu çözmek için
AssistStructure.ViewNode alanını yeni bir
getHintIdEntry() yöntemiyle genişletir. Bu yöntem, görünümün ipucu metninin kaynak tanımlayıcısını döndürür. Bu yöntem, imza karmalarını hesaplamak için kullanabileceğiniz yerel ayardan bağımsız bir değer sağlar.
Veri kümelerinde etkinlikler gösteriliyor
Android 11, otomatik doldurma hizmetlerinin önerilerini iyileştirmek için otomatik doldurma hizmetinin veri kümeleri sunduğu ancak kullanıcının hiçbir veri kümesini seçmediği durumları tanımlamanın bir yolunu sunar. Android 11'de,
FillEventHistory yeni bir
TYPE_DATASETS_SHOWN etkinlik türünü bildirir. Otomatik doldurma hizmeti, kullanıcıya bir veya daha fazla veri kümesi sunduğunda
FillEventHistory, bu tür bir etkinliği günlüğe kaydeder. Otomatik doldurma hizmetleri, kullanıcının sağlanan otomatik doldurma seçeneklerinden herhangi birini seçip seçmediğini belirlemek için bu etkinlikleri mevcut
TYPE_DATASET_SELECTED etkinliğiyle birlikte kullanabilir.
IME entegrasyonu
Klavyeler ve diğer IME'ler otomatik doldurma önerilerini artık açılır menü yerine satır içinde, öneri şeridinde veya benzer bir arayüzde görüntüleyebilir. Şifreler ve kredi kartı numaraları gibi hassas bilgilerin korunması için öneriler kullanıcıya gösterilir, ancak kullanıcı bir seçim yapana kadar IME tarafından tanınmaz. IME'ler ve şifre yöneticilerinin bu özelliği nasıl destekleyebileceği hakkında bilgi için Otomatik doldurmayı klavyelerle entegre etme bölümüne bakın.
İçerik yakalama hizmetiyle veri paylaşımı
Android 11'den itibaren uygulamanız, cihazın içerik yakalama hizmetiyle veri paylaşabilir. Bu özellik, bir cihazın bağlam bilgisi sunmasını (ör. kullanıcının ortamında çalmakta olan bir şarkının adını göstermek) kolaylaştırır.
Uygulamanızdaki verileri içerik yakalama hizmetinin kullanımına sunmak için bir
ContentCaptureManager örneğinde
shareData() yöntemini çağırın. Sistem, veri paylaşımı isteğini kabul ederse uygulamanız içerik yakalama hizmetiyle paylaşmak üzere salt okunur bir dosya tanımlayıcısı alır.