Android 11, geliştiriciler için harika yeni özellikler ve API'ler sunuyor. Aşağıdaki bölümler, uygulamalarınızdaki özellikler hakkında bilgi edinmenize ve ilgili API'leri kullanmaya başlamanıza yardımcı olur.
Yeni, değiştirilmiş ve kaldırılmış API'lerin ayrıntılı listesi için API fark raporunu inceleyin. Yeni API'lerle ilgili ayrıntılar için Android API referansını ziyaret edin. Yeni API'ler görünürlük 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 inceleyin.
Yeni deneyimler
Cihaz kontrolleri
Android 11'de, bağlı harici cihazların denetimlerini kullanıma sunmak için kullanabileceğiniz yeni bir ControlsProviderService
API'si bulunur. Bu kontroller, Android güç menüsündeki Cihaz kontrolleri altında görünür. Daha fazla bilgi için Harici cihazları kontrol etme başlıklı makaleyi inceleyin.
Medya Denetimleri
Android 11, medya kontrollerinin gösterilme şeklini günceller. Medya denetimleri, hızlı ayarların yanında görünür. Birden fazla uygulamadaki oturumlar, kaydırılabilir bir bantta düzenlenir. Bu bantta, telefonda yerel olarak oynatılan yayınlar, harici cihazlarda algılanan veya yayınlanan oturumlar gibi uzaktan yayınlar ve son oynatılma sırasına göre önceki, devam ettirilebilir oturumlar 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şim kurar.
Daha fazla bilgi için Medya kontrolleri başlıklı makaleyi inceleyin.
Ekranlar
Şelale ekranlar için daha iyi destek
Android 11, basamaklı ekranları desteklemek için çeşitli API'ler sağlar. Bu ekranlar, cihazın kenarını sarar. Bu ekranlar, ekran kesikli ekranların bir varyantı olarak kabul edilir. Mevcut DisplayCutout
.getSafeInset…()
yöntemleri artık şelale alanlarının yanı sıra kesiklerin de önüne geçmek için güvenli yerleşimi döndürüyor.
Uygulama içeriğinizi şelale alanında oluşturmak için aşağıdakileri yapın:
Şelale yerleştirme öğesinin tam boyutlarını öğrenmek için
DisplayCutout.getWaterfallInsets()
numaralı telefonu arayın.Pencerenin ekranın tüm kenarlarındaki kesim ve şelale alanlarına uzanmasına izin vermek için pencere düzeni özelliğini
layoutInDisplayCutoutMode
olarak ayarlayın.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
Kesme veya şelale alanlarında önemli içerik olmadığından emin olmanız gerekir.
Menteşe açısı sensörü ve katlanabilir cihazlar
Android 11, menteşeli ekran yapılandırmalarına sahip cihazlarda çalışan uygulamaların menteşe açısını belirlemesini sağlar. Bunun için 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 açıyı derece cinsinden ölçebilen yeni bir SensorEvent
sunar. Kullanıcı cihazı kullanırken ayrıntılı animasyonlar yapmak için bu ham ölçümleri kullanabilirsiniz.
Katlanabilir cihazlar başlıklı makaleyi inceleyin.
Görüşmeler
Sohbet iyileştirmeleri
Android 11, sohbetlerin ele alınma şekliyle ilgili çeşitli iyileştirmeler sunar. Görüşmeler, iki veya daha fazla kişi arasındaki gerçek zamanlı ve iki yönlü iletişimlerdir. Bu görüşmelere özel bir önem verilir ve kullanıcılar, bu görüşmelerle etkileşim kurmak için çeşitli yeni seçeneklere sahiptir.
İleti dizileri ve uygulamanızın bunları nasıl destekleyebileceği hakkında daha fazla bilgi için Kullanıcılar ve ileti dizileri başlıklı makaleyi inceleyin.
Sohbet Balonları
Balonlar, sistemdeki görüşmeleri göstermeye yardımcı olmak için geliştiricilerin kullanımına sunuldu. Balonlar, Android 10'da geliştirici seçeneği üzerinden etkinleştirilen deneysel bir özellikti. Android 11'de bu artık gerekli değildir.
Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamaların bildirimleri, yeni sohbet koşullarını karşılamadıkları sürece balon olarak gösterilmez. Özellikle, bildirimin bir kısayolla ilişkilendirilmesi gerekir.
Android 11'den önce, bir bildirimin balon olarak gösterilmesini 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 balon şeklinde gösteriliyorsa platform, bildirimi otomatik olarak her zaman doküman kullanıcı arayüzü modunda başlatılacak şekilde ayarlar.
Balon performansında çeşitli iyileştirmeler yapıldı. Ayrıca kullanıcılar, balonları her uygulamada daha esnek bir şekilde etkinleştirebilir ve devre dışı bırakabilir. Deneysel desteği uygulayan geliştiriciler için Android 11'deki API'lerde birkaç değişiklik yapıldı:
- Parametresiz
BubbleMetadata.Builder()
oluşturucu kullanımdan kaldırıldı. Bunun yerine, iki yeni oluşturucudan (BubbleMetadata.Builder(PendingIntent, Icon)
veyaBubbleMetadata.Builder(String)
) birini kullanın. BubbleMetadata.Builder(String)
numarasını arayarak kısayol kimliğindenBubbleMetadata
oluşturun. Geçirilen dize,Notification.Builder
'ye sağlanan kısayol kimliğiyle eşleşmelidir.Icon.createWithContentUri()
veya yeni yöntem olancreateWithAdaptiveBitmapContentUri()
ile balon simgeler oluşturun.
5G görsel göstergeleri
Kullanıcıların cihazlarında 5G göstergelerini görüntüleme hakkında bilgi edinmek için Kullanıcılarınıza 5G'ye bağlandıklarını bildirme başlıklı makaleyi inceleyin.
Gizlilik
Android 11, kullanıcı gizliliğini artırmak için çok sayıda değişiklik ve kısıtlama getiriyor. Daha fazla bilgi edinmek için Gizlilik sayfasını inceleyin.
Güvenlik
Biyometrik kimlik doğrulama güncellemeleri
Android 11, uygulamanızın verilerinin güvenlik düzeyini kontrol etmenize yardımcı olmak için biyometrik kimlik doğrulamada çeşitli iyileştirmeler sunar. Bu değişiklikler Jetpack Biometric kitaplığında da görünür.
Kimlik doğrulama türleri
Android 11, BiometricManager.Authenticators
arayüzünü kullanıma sunar. Bu arayüzü kullanarak uygulamanızın desteklediği kimlik doğrulama türlerini bildirebilirsiniz.
Hangi kimlik doğrulama türünün kullanıldığını belirleme
Kullanıcı kimliğini doğruladıktan sonra getAuthenticationType()
işlevini çağırarak kullanıcının cihaz kimlik bilgisi veya biyometrik kimlik bilgisi kullanarak kimliğini doğrulayıp doğrulamadığı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ıyla kimlik doğrulama için daha fazla destek sunar.
Kullanımdan kaldırılan yöntemler
Android 11'de aşağıdaki yöntemlerin desteği sonlandırılıyor:
setDeviceCredentialAllowed()
yöntemi.setUserAuthenticationValidityDurationSeconds()
yöntemi.canAuthenticate()
'nın aşırı yüklenmiş ve bağımsız değişken almayan 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 uygulamayla aynı büyük veri kümesini kullanmak isteyebilir. Android'in önceki sürümlerinde uygulamanız ve başka bir uygulama, aynı veri kümesinin ayrı bir kopyasını indirmek zorundaydı.
Android 11, hem ağ üzerinden hem de diskte veri yedekliliğini azaltmak için bu büyük veri kümelerinin paylaşılan veri blobları 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şma ile ilgili ayrıntılı kılavuzu inceleyin.
OTA yeniden başlatma işleminden sonra kullanıcı kimlik bilgileri olmadan dosya tabanlı şifreleme gerçekleştirme
Cihaz, OTA güncellemesini tamamlayıp yeniden başlatıldıktan sonra, kimlik bilgisi korumalı depolama alanına yerleştirilen Credential Encrypted (CE) anahtarları, File-Based Encryption (FBE) işlemlerinde hemen kullanılabilir. Bu, bir OTA güncellemesinden sonra uygulamanızın, kullanıcı PIN'ini, desenini veya şifresini girmeden önce CE anahtarları gerektiren işlemlere devam edebileceği anlamına gelir.
Performans ve kalite
Kablosuz hata ayıklama
Android 11, Android Debug Bridge (adb) aracılığıyla uygulamanızı iş istasyonunuzdan kablosuz olarak dağıtıp hata ayıklamanızı destekler. Örneğin, cihazınızı USB üzerinden fiziksel olarak bağlamadan ve sürücü yükleme gibi yaygın USB bağlantı sorunlarıyla uğraşmadan hata ayıklanabilir uygulamanızı birden fazla uzak cihaza dağıtabilirsiniz. Daha fazla bilgi için Uygulamaları donanım cihazda çalıştırma başlıklı makaleyi inceleyin.
ADB ile artımlı APK yükleme
Bir uygulamada yalnızca küçük bir değişiklik yapılsa bile büyük (2 GB'tan büyük) APK'ların cihaza yüklenmesi uzun sürebilir. ADB (Android Debug Bridge) Artımlı APK yükleme, kalan verileri arka planda aktarırken uygulamayı başlatmak için yeterli miktarda APK yükleyerek bu süreci hızlandırır. adb install
, cihaz tarafından destekleniyorsa ve en son SDK Platform-Tools sürümü yüklüyse bu özelliği otomatik olarak kullanır. Desteklenmiyorsa varsayılan kurulum 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ılır.
adb install --incremental
ADB artımlı APK yüklemesi çalıştırmadan önce APK'nızı imzalamanız ve 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ırma ö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.
Neural Networks API 1.3
Android 11, Neural Networks API'yi (NNAPI) genişletir ve iyileştirir.
Yeni işlemler
NNAPI 1.3, TensorFlow Lite'ın yeni nicemleme şemasını desteklemek için yeni bir işlenen türü olan TENSOR_QUANT8_ASYMM_SIGNED
'yı kullanıma sunar.
Ayrıca, NNAPI 1.3 aşağıdaki yeni işlemleri kullanıma sunuyor:
QUANTIZED_LSTM
IF
WHILE
ELU
HARD_SWISH
FILL
RANK
Yeni makine öğrenimi denetimleri
NNAPI 1.3, makine öğreniminin sorunsuz çalışmasına yardımcı olacak yeni kontroller sunar:
QoS API: Yeni Hizmet Kalitesi API'si, aşağıdaki yeni işlevlerle NNAPI'de önceliklendirme ve görev son tarihleri desteği içerir:
Bellek alanı girişi/çıkışı: NNAPI 1.3, yürütme için giriş ve çıkış olarak bellek alanlarını destekler. Bu sayede, farklı sistem bileşenleri arasındaki aynı verilerin gereksiz kopyaları kaldırılır ve Android sinir ağlarının çalışma zamanı performansı iyileştirilir. Bu özellik, aşağıdaki işlevler de dahil olmak üzere
ANeuralNetworksMemoryDesc
veANeuralNetworkMemory
nesneleriyle kullanılmak ü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 sinir ağı bellek alanı örneğine bakın.
Bağımlılık API'si ve senkronizasyon sınırı desteği: NNAPI 1.3, bağımlılıklarla eşzamansız hesaplama desteği içerir. Bu sayede, küçük zincirleme modeller çağrılırken ek yük önemli ölçüde azaltılır. Bu özellik aşağıdaki yeni işlevleri ekler:
Kontrol akışı: NNAPI 1.3, yeni grafik işlemleri
ANEURALNETWORKS_IF
veANEURALNETWORKS_WHILE
ile genel kontrol akışı desteği içerir. Bu işlemler, yeniANEURALNETWORKS_MODEL
işlenen türünü kullanarak diğer modelleri bağımsız değişken olarak kabul eder. Ayrıca bu özellik aşağıdaki yeni işlevleri de ekler:
NDK Thermal API
Cihazlar çok ısındığında CPU ve/veya GPU'nun hızını düşürebilir. Bu durum, uygulamaları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun hesaplama veya sürekli ağ etkinliği içeren uygulamalarda ya da oyunlarda sorunlarla 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ın. Ardından, daha düşük güç kullanımı ve daha düşük cihaz sıcaklığı sağlamak için işlem yapın. Bu API, Java Thermal API'ye benzer. Herhangi bir termal durum değişikliğiyle ilgili bildirim almak veya mevcut durumu doğrudan sorgulamak için bu API'yi kullanabilirsiniz.
Metin ve giriş
Geliştirilmiş IME geçişleri
Android 11, ekran klavyeleri gibi giriş yöntemi düzenleyicilerinin (IME) 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 kaybolmasıyla, ayrıca durum ve gezinme çubukları gibi diğer öğelerle senkronize şekilde ayarlamayı kolaylaştırır.
Herhangi bir EditText
odaklanmışken IME'yi göstermek için view.getInsetsController().show(Type.ime())
işlevini çağırın.
(Bu yöntemi, odaklanılan EditText
ile aynı hiyerarşideki herhangi bir görünümde çağırabilirsiniz. Özellikle EditText
üzerinde çağırmanız gerekmez.) IME'yi gizlemek için view.getInsetsController().hide(Type.ime())
işlevini çağırın.
Bir IME'nin şu anda görünür olup olmadığını view.getRootWindowInsets().isVisible(Type.ime())
işlevini çağırarak kontrol edebilirsiniz.
Uygulamanızın görünümlerini IME'nin görünümü ve kaybolmasıyla senkronize etmek için View.setWindowInsetsAnimationCallback()
'a WindowInsetsAnimation.Callback
sağlayarak bir görünümde dinleyici ayarlayın.
(Bu dinleyiciyi herhangi bir görünümde ayarlayabilirsiniz. EditText
olması gerekmez.)
IME, dinleyicinizin onPrepare()
yöntemini çağırır, ardından geçişin başında onStart()
yöntemini çağırır. Ardından, geçişteki her ilerlemede
onProgress()
çağrılır. Geçiş tamamlandığında IME, onEnd()
çağrısı yapar.
Geçişin herhangi bir noktasında WindowInsetsAnimation.getFraction()
işlevini çağırarak geçişin ne kadar ilerlediğ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
IME animasyonunu veya gezinme çubuğu gibi başka bir sistem çubuğunun animasyonunu da kontrol edebilirsiniz. Bunu yapmak için önce setOnApplyWindowInsetsListener()
işlevini çağırarak pencere yerleştirme değişiklikleri için yeni bir dinleyici ayarlayı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'yi veya diğer sistem çubuğunu taşımak için denetleyicinin 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ındaki güncellemeler
Android 11, android.icu
paketini ICU kitaplığının 66. sürümünü kullanacak şekilde günceller. Android 10'da bu sürüm 63'tür. Yeni kitaplık sürümü, güncellenmiş CLDR yerel ayar verilerini ve Android'de uluslararasılaştırma desteğiyle ilgili bir dizi iyileştirmeyi içerir.
Yeni kitaplık sürümlerindeki önemli değişiklikler şunlardır:
- Birçok biçimlendirme API'si artık
FormattedValue
öğesini genişleten yeni bir döndürme nesnesi türünü destekliyor. LocaleMatcher
API, oluşturucu sınıfı,java.util.Locale
türü desteği ve bir maçla ilgili ek veriler içeren bir sonuç sınıfıyla geliştirildi.- Unicode 13 artık destekleniyor.
Medya
MediaCodec arabelleklerini ayırma
Android 11, uygulamalara giriş ve çıkış arabelleklerini ayırırken daha fazla kontrol sağlayan yeni MediaCodec
API'leri içerir. Bu sayede uygulamanız belleği daha verimli bir şekilde yönetebilir.
Yeni sınıflar:
Yeni yöntemler:
MediaCodec.getQueueRequest()
MediaCodec.getOutputFrame()
MediaCodec.LinearBlock.isCodecCopyFreeCompatible()
Ayrıca, MediaCodec.Callback()
içindeki iki yöntemin davranışı değişti:
onInputBufferAvailable()
- Blok Model API'yi kullanacak şekilde yapılandırılmışsa uygulamalar, dizinle
MediaCodec.getInputBuffer()
veMediaCodec.queueInputBuffer()
işlevlerini çağırmak yerine dizinleMediaCodec.getQueueRequest
işlevini çağırmalı ve yuvaya LinearBlock/HardwareBuffer eklemelidir. onOutputBufferAvailable()
- Dizini kullanarak
MediaCodec.getOutputBuffer()
işlevini çağırmak yerine, uygulamalar dizini kullanarakMediaCodec.getOutputFrame()
işlevini çağırabilir ve daha fazla bilgi içerenOutputFrame
nesnesini alabilir. Ayrıca LinearBlock/HardwareBuffer arabelleklerini de alabilir.
MediaCodec'te düşük gecikmeli kod çözme
Android 11, oyunlar ve diğer anlık uygulamalar için düşük gecikmeli kod çözme özelliğini desteklemek üzere
MediaCodec
geliştirir. Bir codec'in düşük gecikmeli kod çözmeyi destekleyip desteklemediğini FEATURE_LowLatency
değerini MediaCodecInfo.CodecCapabilities.isFeatureSupported()
işlevine ileterek kontrol edebilirsiniz.
Düşük gecikmeli kod çözmeyi etkinleştirmek veya devre dışı bırakmak için aşağıdakilerden birini yapın:
MediaCodec.configure()
kullanarak yeni anahtarıKEY_LOW_LATENCY
0 veya 1 olarak ayarlayın.- Yeni parametre anahtarını
PARAMETER_KEY_LOW_LATENCY
MediaCodec.setParameters()
kullanarak 0 veya 1 olarak ayarlayın.
Yeni AAudio işlevi AAudioStream_release()
Bu işlev, ses akışını aynı anda serbest bırakır ve kapatır.AAudioStream_close()
Bu işlem tehlikeli olabilir. Kapatıldıktan sonra başka bir işlem akışa erişmeye çalışırsa işlem çöker.
Yeni işlev
AAudioStream_release()
akışı yayınlar ancak kapatmaz. Bu işlem, kaynaklarını serbest bırakır ve yayını bilinen bir durumda bırakır. Nesne, AAudioStream_close()
işlevini çağırana kadar kalıcı olur.
MediaParser API
MediaParser, medya ayıklama için yeni bir düşük seviyeli API'dir. MediaExtractor'dan daha esnektir ve medya ayıklama işlevi üzerinde ek kontrol sağlar.
USB cihazdan ses yakalama
RECORD_AUDIO
izni olmayan bir uygulama, ses yakalama özelliğine sahip bir USB ses cihazına (ör. USB kulaklık) doğrudan erişim isteğinde bulunmak için UsbManager
kullandığında, kullanıcıdan cihazı kullanma iznini onaylamasını isteyen yeni bir uyarı mesajı gösterilir. Sistem, "her zaman kullan" seçeneğini yoksayar. Bu nedenle, kullanıcının uyarıyı onaylaması ve bir uygulama her erişim isteğinde bulunduğunda izin vermesi gerekir.
Bu davranışın önüne geçmek için uygulamanızın RECORD_AUDIO
iznini istemesi gerekir.
Aynı anda 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ı yakalama özelliğini etkinleştirir ve devre dışı bırakır. Ses Girişini Paylaşma başlıklı makaleyi inceleyin.
Çıkış değiştirici
Android 11, cast ve mediarouter API'lerini kullanan uygulamalar için yeni bir davranış uygular.
Yayınlama seçeneklerine bir uygulamanın içinden erişmenin yanı sıra geçiş seçenekleri sistem medya oynatıcısında da gösterilir. Bu sayede, kullanıcılar izleme ve dinleme bağlamlarını değiştirdiklerinde (ör. mutfakta video izlemek yerine telefonda video izlemek veya evde ses dinlemek yerine arabada ses dinlemek) cihazlar arasında geçiş yaparken sorunsuz bir deneyim yaşar. Çıkış değiştirici başlıklı makaleyi inceleyin.
Bağlantı
Kablosuz Passpoint geliştirmeleri
Android 11'de eklenen Passpoint özellikleri hakkında bilgi edinmek için Passpoint başlıklı makaleyi inceleyin.
Kablosuz Öneri API'si genişletildi
Android 11, uygulamanızın ağ yönetimi özelliklerini artırmak için Wi-Fi Öneri API'sini genişletir. Bu özellikler arasında şunlar yer alır:
- Bağlantı yönetimi uygulamaları, bağlantı kesme isteklerine izin vererek kendi ağlarını yönetebilir.
- Passpoint ağları, Öneri API'sine entegre edilmiştir ve kullanıcıya önerilebilir.
- Analytics API'leri, ağlarınızın kalitesi hakkında bilgi edinmenizi sağlar.
CallScreeningService güncellemeleri
Android 11'den itibaren CallScreeningService, gelen aramalar için STIR/SHAKEN doğrulama durumu (verstat) hakkında bilgi isteğinde bulunabilir. Bu bilgiler, gelen aramalar için arama ayrıntıları kapsamında sağlanır.
Bir CallScreeningService
, READ_CONTACTS
iznine sahipse uygulamaya, kullanıcının kişilerinde bulunan bir numaradan gelen veya bu numaraya giden aramalar olduğunda bildirim gönderilir.
Daha fazla bilgi için Arayan kimliği sahteciliğini önleme başlıklı makaleyi inceleyin.
Open Mobile API güncellemeleri
Android 11 ve sonraki sürümlerde OMAPI desteği hakkında bilgi edinmek için Open Mobile API okuyucu desteği başlıklı makaleyi inceleyin.
Yüksek performanslı VPN'ler
API düzeyi 30 ve üstünü hedefleyen veya API düzeyi 29 ve üstünde kullanıma sunulan cihazlarda çalışan uygulamalar, hem kullanıcı tarafından yapılandırılan hem de uygulama tabanlı VPN'ler için VPN'lere IKEv2/IPsec uygulayabilir.
VPN'ler işletim sisteminde yerel olarak çalışır ve bir uygulamada IKEv2/IPsec VPN bağlantıları oluşturmak için gereken kodu basitleştirir.
İşlem başına ağ erişimi denetimi
Ağ erişimini süreç bazında etkinleştirme hakkında bilgi edinmek için Ağ kullanımını yönetme başlıklı makaleyi inceleyin.
Aynı FQDN'ye sahip birden fazla Passpoint yapılandırmasının yüklenmesine izin ver
Android 11'den itibaren, PasspointConfiguration
nesnesi için benzersiz bir tanımlayıcı almak üzere PasspointConfiguration.getUniqueId()
kullanabilirsiniz. Bu sayede, uygulamanızın kullanıcıları aynı tam nitelikli alan adıyla (FQDN) birden fazla profil yükleyebilir.
Bu işlev, bir operatör ağında birden fazla mobil ülke kodu (MCC) ve mobil ağ kodu (MNC) kombinasyonu dağıttığında ancak tek bir FQDN'ye sahip olduğunda kullanışlıdır. Android 11 ve sonraki sürümlerde, kullanıcının MCC veya MNC içeren bir SIM kartı yüklemesi durumunda ağla eşleşecek aynı FQDN'ye sahip birden fazla profil yüklemek mümkündür.
GNSS anten desteği
Android 11, GnssAntennaInfo
sınıfını kullanıma sunar. Bu sınıf, uygulamanızın Küresel Navigasyon Uydu Sistemi'nin (GNSS) sağlayabileceği santimetre düzeyinde doğru konumlandırmadan daha fazla yararlanmasını sağlar.
Anten kalibrasyonu bilgileri hakkındaki kılavuzdan daha fazla bilgi edinebilirsiniz.
Grafik
NDK görüntü kod çözücüsü
NDK ImageDecoder
API'si, Android C/C++ uygulamalarının görüntüleri doğrudan kodunu çözmesi için standart bir API sağlar. Uygulama geliştiricilerin artık çerçeve API'lerini (JNI aracılığıyla) kullanması veya üçüncü taraf resim kod çözme kitaplıklarını paketlemesi gerekmiyor. Daha fazla bilgi için Image Decoder Geliştirici Kılavuzu'na bakın.
Kare hızı API'si
Android 11, uygulamaların sistemin amaçlanan kare hızını bildirmesini sağlayan bir API sunar. Bu API, birden fazla yenileme hızını destekleyen cihazlarda titremeyi azaltır. Bu API'nin nasıl kullanılacağı hakkında bilgi edinmek için Frame rate guide (Kare hızı kılavuzu) başlıklı makaleyi inceleyin.
Düşük gecikme desteği isteme ve kontrol etme
Bazı harici ekranlar ve TV'ler gibi belirli ekranlar, grafiklerin sonradan işlenmesini gerçekleştirebilir. Bu işleme sonrası özellik, grafikleri iyileştirir ancak gecikmeyi artırabilir. HDMI 2.1'i destekleyen yeni ekranlarda otomatik düşük gecikme modu (ALLM, oyun modu olarak da bilinir) bulunur. Bu mod, son işlemeyi kapatarak gecikmeyi en aza indirir. ALLM hakkında daha fazla bilgi için HDMI 2.1 spesifikasyonuna bakın.
Bir pencere, varsa otomatik düşük gecikme modunun kullanılmasını isteyebilir. ALLM, özellikle oyunlar ve video konferans gibi uygulamalarda faydalıdır. Bu uygulamalarda düşük gecikme süresi, mümkün olan en iyi grafiklere sahip olmaktan daha önemlidir.
Minimum son işlemeyi açmak veya kapatmak için Window.setPreferMinimalPostProcessing()
işlevini çağırın ya da pencerenin preferMinimalPostProcessing
özelliğini true
olarak ayarlayın. Bazı ekranlar minimum son işlemeyi desteklemez. Belirli bir ekranın bu özelliği destekleyip desteklemediğini öğrenmek için yeni yöntemi Display.isMinimalPostProcessingSupported()
çağırın.
Yüksek performanslı grafik hata ayıklama katmanı yerleştirme
Uygulamalar artık aynı işlevselliği hata ayıklanabilir bir uygulama olarak sunmak için harici grafik katmanlarını (GLES, Vulkan) yerel uygulama koduna yükleyebilir ancak performans ek yükü olmadan. Bu özellik, özellikle uygulamanızın profilini GAPID gibi araçlarla oluştururken önemlidir. Uygulamanızda profil oluşturmak için uygulamayı hata ayıklanabilir hale getirmek yerine uygulama manifest dosyanıza aşağıdaki meta veri öğesini ekleyin:
<application ... > <meta-data android:name="com.android.graphics.injectLayers.enable" android:value="true" /> </application>
Resimler ve kamera
Aktif çekim sırasında bildirim seslerini ve titreşimlerini kapatma
Android 11'den itibaren, kamera aktif olarak kullanılırken uygulamanız setCameraAudioRestriction()
kullanarak yalnızca titreşimleri, hem sesleri hem de titreşimleri veya hiçbirini kapatabilir.
Android Emulator'da genişletilmiş kamera desteği
Android 11'den itibaren emülatördeki kameralar için genişletilmiş destek hakkında bilgi edinmek istiyorsanız Kamera desteği başlıklı makaleyi inceleyin.
Birden fazla kameranın eşzamanlı kullanımına destek
Android 11, ön ve arka kamera da 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 eşzamanlı olarak yayın yapabilen ve yayın kombinasyonları garanti edilen kamera kimliği kombinasyonlarınınSet
değerini döndürür.isConcurrentSessionConfigurationSupported()
Kamera cihazlarının ilgili oturum yapılandırmalarını aynı anda destekleyip desteklemediğini sorgular.
Birden fazla kare içeren HEIF resimleri için daha iyi destek
Android 11'den itibaren, ImageDecoder.decodeDrawable()
işlevini çağırıp bir kare dizisi (ör. animasyon veya seri çekim fotoğraf) içeren bir HEIF resmi iletirseniz yöntem, resim dizisinin tamamını içeren bir AnimatedImageDrawable
döndürür. Android'in önceki sürümlerinde yöntem, yalnızca tek bir karelik BitmapDrawable
döndürüyordu.
HEIF grafiği, sıralı olmayan birden fazla çerçeve içeriyorsa MediaMetadataRetriever.getImageAtIndex()
işlevini çağırarak tek bir çerçeve 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ıya yönelik açıklamasına artık düz metne ek olarak HTML ve resimler de eklenebiliyor. Bu esneklik, hizmetinizin ne yaptığını ve kullanıcılara nasıl yardımcı olabileceğini açıklamanızı kolaylaştırır.
contentDescription
yerine bir kullanıcı arayüzü öğesinin durumunu daha anlamlı bir şekilde açıklamak içingetStateDescription()
yöntemini çağırın.- Dokunma etkinliklerinin sistemin dokunma gezginini atlamasını istemek için
setTouchExplorationPassthroughRegion()
işlevini çağırın. Benzer şekilde, hareketlerin sistemin hareket algılayıcısını atlamasını istemek içinsetGestureDetectionPassthroughRegion()
işlevini çağırın. - "Enter" ve "next" gibi IME işlemlerinin yanı sıra
FLAG_SECURE
işaretinin etkinleştirilmediği pencerelerin ekran görüntülerini isteyebilirsiniz.
Ek özellikler
Uygulama sürecinin çıkış nedenleri
Android 11, son işlem sonlandırmalarının nedenlerini bildiren ActivityManager.getHistoricalProcessExitReasons()
yöntemini sunar. Uygulamalar, bu yöntemi kullanarak kilitlenme teşhis bilgileri (ör. bir işlemin sonlandırılmasının ANR'lerden, bellek sorunlarından veya başka nedenlerden kaynaklanıp kaynaklanmadığı) toplayabilir.
Ayrıca, özel durum bilgilerini daha sonra analiz etmek üzere depolamak için yeni setProcessStateSummary()
yöntemini de kullanabilirsiniz.
getHistoricalProcessExitReasons()
yöntemi, bir uygulama sürecinin sonlanmasıyla ilgili bilgileri içeren ApplicationExitInfo
sınıfının örneklerini döndürür. Bu sınıfın bir örneğinde getReason()
işlevini çağırarak uygulamanızın işleminin neden sonlandırıldığını belirleyebilirsiniz. Örneğin, REASON_CRASH
dönüş değeri, uygulamanızda işlenmemiş bir istisna oluştuğunu gösterir. Uygulamanızın çıkış etkinlikleri için benzersizliği sağlaması gerekiyorsa getTimestamp()
yönteminden alınan zaman damgasına dayalı bir karma değer gibi uygulamaya özel bir tanımlayıcıyı koruyabilir.
Ek kaynaklar
Daha fazla bilgi için Medium'daki Android 11'deki yeni araçlarla uygulamaları daha gizli ve kararlı hale getirme başlıklı makaleyi okuyun.
Kaynak yükleyiciler
Android 11, uygulamaların kaynakların nasıl arandığını ve yüklendiğini dinamik olarak genişletmesine olanak tanıyan yeni bir API sunar. Yeni API sınıfları ResourcesLoader
ve ResourcesProvider
, yeni işlevin sağlanmasından öncelikli olarak sorumludur. Bu iki özellik, ek kaynak ve öğe sağlama veya mevcut kaynak ve öğelerin değerlerini değiştirme olanağı sunar.
ResourcesLoader
nesneleri, bir uygulamanın Resources
örneğine ResourcesProvider
nesneleri sağlayan kapsayıcılardır. Buna karşılık, ResourcesProvider
nesneleri, kaynak verilerini APK'lardan ve kaynak tablolarından 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önlendiren bir ResourcesProvider
oluşturmak için loadFromDirectory()
öğesini kullanabilirsiniz. Bu sayede, uygulama APK'sı yerine belirli bir dizinde arama yapılır. Bu öğelere, APK'ya dahil edilen öğelerde olduğu gibi AssetManager
API sınıfının open()
yöntem ailesi aracılığıyla erişebilirsiniz.
APK İmza Şeması v4
Android 11, APK İmza Şeması v4 desteği ekler. Bu şema, ayrı bir dosyada (apk-name.apk.idsig
) yeni bir imza türü oluşturur ancak diğer açılardan v2 ve v3'e benzer. APK'da herhangi bir değişiklik yapılmaz. Bu şema, ADB artımlı APK yüklemesini destekler. Bu özellik, APK yükleme işlemini hızlandırır.
Dinamik amaç filtreleri
Bir uygulamanın amaçları alabilmesi için derleme zamanında, uygulama manifestinde bir amaç filtresi tanımlayarak hangi veri türlerini alabileceğini bildirmesi gerekir. Android 10 ve önceki sürümlerde uygulamaların, çalışma zamanında amaç filtrelerini değiştirme yolu yoktur. Bu durum, sanallaştırma uygulamaları (ör. sanal makineler ve uzak masaüstleri) için sorun teşkil eder. Çünkü bu uygulamalar, kullanıcının içlerine hangi yazılımı yükleyeceğini tam olarak bilemez.
Android 11, bir uygulamanın intent filtresinde dinamik bir MIME türleri grubu bildirmesine ve bunu çalışma zamanında programatik olarak değiştirmesine olanak tanıyan yeni bir manifest öğesi olan MIME gruplarını kullanıma sunar. Bir MIME grubu kullanmak için uygulama manifestinize yeni android:mimeGroup
özelliğini içeren 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 içeriğine, kimliğini PackageManager
API sınıfındaki aşağıdaki yeni yöntemlere ileterek erişebilir ve içeriği güncelleyebilirsiniz:
Bir MIME türünü MIME grubuna programatik olarak eklediğinizde, bu tür tam olarak manifestte açıkça belirtilen statik bir MIME türü gibi çalışır.
Otomatik doldurma geliştirmeleri
Android 11, otomatik doldurma hizmetlerinde iyileştirmeler sunar.
AssistStructure.ViewNode'daki ipucu tanımlayıcıları
Otomatik doldurma hizmetlerinin, görünümün özelliklerine göre görünüm için bir imza karması hesaplaması genellikle yararlıdır. Görüntüleme ipucu, imza karması hesaplanırken özellikle iyi bir özelliktir ancak ipucu dizesi, telefonun yerel ayarına göre değişebilir. Bu sorunu çözmek için Android 11, görünümün ipucu metninin kaynak tanımlayıcısını döndüren yeni bir getHintIdEntry()
yöntemiyle AssistStructure.ViewNode
işlevini genişletir. Bu yöntem, imza karmalarını hesaplamak için kullanabileceğiniz yerel ayardan bağımsız bir değer sağlar.
Veri kümeleri gösterilen etkinlikler
Android 11, otomatik doldurma hizmetlerinin önerilerini iyileştirmesine yardımcı olmak için otomatik doldurma hizmetinin veri kümeleri sunduğu ancak kullanıcının hiçbirini seçmediği durumları belirleme yöntemi sunar. Android 11'de,
FillEventHistory
yeni bir
TYPE_DATASETS_SHOWN
etkinlik türü bildirir. FillEventHistory
, otomatik doldurma hizmeti kullanıcıya bir veya daha fazla veri kümesi sunduğunda 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 artık otomatik doldurma önerilerini açılır menüde değil, satır içinde, öneri şeridinde veya benzer bir arayüzde gösterebilir. Şifreler ve kredi kartı numaraları gibi hassas bilgileri korumak için öneriler kullanıcıya gösterilir ancak kullanıcı birini seçene kadar IME tarafından bilinmez. IME'lerin ve şifre yöneticilerinin bu özelliği nasıl destekleyebileceği hakkında bilgi edinmek için Otomatik doldurmayı klavyelerle entegre etme başlıklı makaleyi inceleyin.
İçerik yakalama hizmetiyle veri paylaşımı
Android 11'den itibaren uygulamanız, cihazın içerik yakalama hizmetiyle veri paylaşabilir. Bu özellik, cihazın bağlama uygun bilgiler sunmasını kolaylaştırır. Örneğin, kullanıcının ortamında çalmakta olan bir şarkının adını gösterebilir.
Uygulamanızdaki verilerin içerik yakalama hizmetinde kullanılabilmesi için 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 için yalnızca yazma erişimine sahip bir dosya tanımlayıcısı alır.