Android 11, geliştiricilere yeni ve harika özellikler ile 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ştirilen ve kaldırılan API'lerin ayrıntılı listesi için API karşılaştırma raporunu okuyun. Yeni API'ler hakkında ayrıntılı bilgi için Android API referansı sayfasını ziyaret edin. Yeni API'ler, görünür olmaları 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şikliklerine göz atın.
Yeni deneyimler
Cihaz kontrolleri
Android 11, bağlı harici cihazların kontrollerini göstermek için kullanabileceğiniz yeni bir ControlsProviderService
API içerir. Bu kontroller, Android güç menüsündeki Cihaz kontrolleri bölümünde görünür. Daha fazla bilgi için Harici cihazları kontrol etme başlıklı makaleyi inceleyin.
Medya Denetimleri
Android 11, medya denetimlerinin gösterilme şeklini güncelledi. Medya denetimleri, hızlı ayarların yanında görünür. Birden fazla uygulamadan gelen oturumlar, telefonda yerel olarak oynatılan akışlar, harici cihazlarda veya yayınlama oturumlarında algılananlar gibi uzak akışlar ve son oynatılma sırasına göre önceki, devam ettirilebilir oturumları içeren kaydırılabilir bir bantta düzenlenir.
Kullanıcılar, uygulamayı başlatmak zorunda kalmadan önceki oturumları banttan yeniden başlatabilir. Oynatma başladığında kullanıcı, medya kontrolleriyle normal şekilde 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, cihazın kenarına sarılmış şelale ekranları desteklemek için çeşitli API'ler sağlar. Bu ekranlar, ekran kesiklerine sahip ekranların bir varyantı olarak değerlendirilir. Mevcut DisplayCutout
.getSafeInset…()
yöntemler artık hem şelale alanlarını hem de kesik alanları önlemek için güvenli içe eklemeyi döndürüyor.
Uygulama içeriğinizi şelale alanında oluşturmak için şunları yapın:
Şelale içe yerleştirilmesinin tam boyutlarını almak için
DisplayCutout.getWaterfallInsets()
numaralı telefonu arayın.Pencerenin ekranın tüm kenarlarındaki kesik ve şelale alanlarına genişlemesine izin vermek için pencere düzeni özelliğini
layoutInDisplayCutoutMode
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
olarak ayarlayın. Kesik veya şelale alanlarında önemli içerik bulunmadığından emin olmanız gerekir.
Menteşe açısı sensörü ve katlanabilir cihazlar
Android 11, menteşe tabanlı ekran yapılandırmalarına sahip cihazlarda çalışan uygulamaların menteşenin açısını belirlemesini sağlar. Bunun için TYPE_HINGE_ANGLE
ile yeni bir sensör ve menteşe açısını izleyip cihazın iki temel parçası arasındaki açıyı derece cinsinden ölçen yeni bir SensorEvent
sağlar. Kullanıcı cihazı kullanırken ayrıntılı animasyonlar gerçekleştirmek için bu ham ölçümleri kullanabilirsiniz.
Katlanabilir cihazlar başlıklı makaleyi inceleyin.
Görüşmeler
Görüşme iyileştirmeleri
Android 11, sohbetlerin ele alınma biçiminde çeşitli iyileştirmeler yapar. Görüşmeler, iki veya daha fazla kişi arasında gerçek zamanlı, iki yönlü iletişimlerdir. Bu ileti dizileri özel olarak öne çıkarılır ve kullanıcılar bu ileti dizileriyle etkileşime geçmek için çeşitli yeni seçeneklere sahip olur.
İleti dizileri ve uygulamanızın bunları nasıl destekleyebileceği hakkında daha fazla bilgi için Kişiler ve ileti dizileri bölümüne bakın.
Sohbet balonları
Balonlar, geliştiricilerin sistem genelindeki görüşmeleri göstermesine yardımcı olmak için artık kullanılabilir. Android 10'daki deneysel bir özellik olan Bubbles, geliştirici seçeneği aracılığıyla etkinleştiriliyordu. Android 11'de bu artık gerekli değildir.
Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen bir uygulamanın bildirimleri, yeni ileti dizisi şartlarını karşılamadığı sürece baloncuk olarak gösterilmez. Daha açık belirtmek gerekirse, bildirim bir kısayolla ilişkilendirilmelidir.
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 baloncuk şeklindeyse platform, bildirimi her zaman doküman kullanıcı arayüzü modunda açacak şekilde otomatik olarak ayarlar.
Balon performansında bir dizi iyileştirme yapıldı ve kullanıcılar her uygulamada balonları etkinleştirme ve devre dışı bırakma konusunda daha fazla esnekliğe sahip oldu. Deneysel desteği uygulayan geliştiriciler için Android 11'deki API'lerde birkaç değişiklik yapıldı:
- Parametre içermeyen
BubbleMetadata.Builder()
yapıcısının desteği sonlandırıldı. Bunun yerine, iki yeni kurucudanBubbleMetadata.Builder(PendingIntent, Icon)
veyaBubbleMetadata.Builder(String)
birini kullanın. BubbleMetadata.Builder(String)
işlevini çağırarak kısayol kimliğindenBubbleMetadata
oluşturun. İletilen dize,Notification.Builder
için sağlanan kısayol kimliğiyle eşleşmelidir.Icon.createWithContentUri()
veya yeni yöntemcreateWithAdaptiveBitmapContentUri()
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'de olduklarını bildirme başlıklı makaleyi inceleyin.
Gizlilik
Android 11, kullanıcı gizliliğini iyileştirmek için çok sayıda değişiklik ve kısıtlama sunar. Daha fazla bilgi 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 biyometri kimlik doğrulamasında ç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, uygulamanızın desteklediği kimlik doğrulama türlerini beyan etmek için kullanabileceğiniz BiometricManager.Authenticators
arayüzünü kullanıma sunar.
Hangi kimlik doğrulama türünün kullanıldığını belirleme
Kullanıcı kimliğini doğruladıktan sonra getAuthenticationType()
çağrısını yaparak kullanıcının cihaz kimlik bilgisini mi yoksa biyometrik kimlik bilgisini mi kullanarak kimlik doğruladığı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ı kullanılarak 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ıldı:
setDeviceCredentialAllowed()
yöntemi.setUserAuthenticationValidityDurationSeconds()
yöntemi.canAuthenticate()
işlevinin bağımsız değişken almayan aşırı yüklenmiş 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ın ve başka bir uygulamanın her birinin aynı veri kümesinin ayrı bir kopyasını indirmesi gerekirdi.
Android 11, hem ağda hem de diskte veri yedekliğini azaltmak için bu büyük veri kümelerinin paylaşılan veri topakları kullanılarak cihazda önbelleğe alınmasına olanak tanır. Veri kümesi paylaşma hakkında daha fazla bilgi edinmek için büyük veri kümelerini paylaşma hakkındaki ayrıntılı kılavuzu inceleyin.
OTA yeniden başlatma işleminden sonra kullanıcı kimlik bilgileri olmadan dosya tabanlı şifreleme yapma
Cihaz bir OTA güncellemesini tamamlayıp yeniden başlatıldıktan sonra, kimlik bilgisi korumalı depolama alanına yerleştirilen kimlik bilgisi şifrelenmiş anahtarlar (CE), dosya tabanlı şifreleme (FBE) işlemleri için hemen kullanılabilir. Bu, bir OTA güncellemesinden sonra uygulamanızın, kullanıcı PIN'ini, desenini veya şifresini girmeden önce CE anahtarlarını gerektiren işlemleri devam ettirebileceğ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ğıtmayı ve uygulamanızda hata ayıklamayı destekler. Örneğin, hata ayıklama yapılabilir uygulamanızı USB üzerinden fiziksel olarak bağlamadan ve sürücü yükleme gibi yaygın USB bağlantı sorunlarıyla uğraşmadan birden fazla uzak cihaza dağıtabilirsiniz. Daha fazla bilgi için Donanım cihazında uygulama çalıştırma başlıklı makaleyi inceleyin.
ADB artımlı APK yükleme
Bir uygulamada yalnızca küçük bir değişiklik yapılmış olsa bile büyük (2 GB ve üzeri) APK'ların cihaza yüklenmesi uzun sürebilir. ADB (Android Hata Ayıklama Köprüsü) Artımlı APK yükleme, uygulamayı başlatmak için APK'nın yeterli kısmını yükleyip kalan verileri arka planda aktararak bu süreci hızlandırır. adb install
, cihaz tarafından destekleniyorsa ve en son SDK Platform-Tools 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 bir APK İmza Şeması v4 dosyası oluşturmanız gerekir. Bu özelliğin çalışması için v4 imza dosyasının APK'nın yanına yerleştirilmesi gerekir.
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 süreçleri için etkinleştirebilirsiniz. Daha fazla bilgi için GWP-Asan kılavuzuna bakın.
Neural Networks API 1.3
Android 11, Nöral Ağlar API'sini (NNAPI) genişletir ve iyileştirir.
Yeni işlemler
NNAPI 1.3, TensorFlow Lite'ın yeni kesme şemasını desteklemek için TENSOR_QUANT8_ASYMM_SIGNED
adlı yeni bir operant türü sunar.
Ayrıca NNAPI 1.3, aşağıdaki yeni işlemleri kullanıma sunar:
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 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 sayede, farklı sistem bileşenleri arasında aynı verilerin gereksiz kopyaları kaldırılır ve Android sinir ağlarının çalışma zamanındaki performansı iyileşir. Bu özellik, aşağıdaki işlevler 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.
Dependency API ve senkronize çit desteği: NNAPI 1.3, bağımlılıklarla birlikte asenkron hesaplama desteği içerir. Bu sayede, küçük zincirlenmiş modeller çağırırken ek maliyet önemli ölçüde azaltılır. Bu özellik aşağıdaki yeni işlevleri ekler:
Kontrol akışı: NNAPI 1.3, yeni
ANEURALNETWORKS_MODEL
operanı türünü kullanarak diğer modelleri bağımsız değişken olarak kabul eden yeni grafik işlemleriANEURALNETWORKS_IF
veANEURALNETWORKS_WHILE
ile genel kontrol akışı desteği içerir. Ayrıca bu özellik aşağıdaki yeni işlevleri de ekler:
NDK Thermal API
Cihazlar çok ısındığında CPU ve/veya GPU'yu kısıtlayabilir. Bu da uygulamaları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun bilgi işlem veya sürekli ağ etkinliği içeren uygulama ya da oyunlarda 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ın ve ardından daha düşük güç kullanımı ve daha serin cihaz sıcaklığı sağlamak için işlem yapın. Bu API, Java Thermal API'ye benzer. Termal durum değişikliğiyle ilgili bildirim almak veya mevcut durumu doğrudan sorgulamak için bu API'yi kullanabilirsiniz.
Metin ve giriş
İyileştirilmiş IME geçişleri
Android 11, ekran klavyeleri gibi giriş yöntemi düzenleyicileri (IME'ler) için geçişleri iyileştirmeye yönelik yeni API'ler sunar. Bu API'ler, uygulamanızın içeriğini IME'nin görünmesi ve kaybolması ile senkronize olarak, ayrıca durum ve gezinme çubukları gibi diğer öğelerle uyumlu şekilde ayarlamanızı kolaylaştırır.
Odak herhangi bir EditText
üzerindeyken bir IME göstermek için view.getInsetsController().show(Type.ime())
işlevini çağırın.
(Bu yöntemi, odaklanan EditText
ile aynı hiyerarşide bulunan herhangi bir görünümde çağırabilirsiniz. Özellikle EditText
'te çağırmanız gerekmez.) IME'yi gizlemek için view.getInsetsController().hide(Type.ime())
işlevini çağırın.
view.getRootWindowInsets().isVisible(Type.ime())
çağrısını yaparak 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ünmesi ve kaybolmasıyla senkronize etmek için View.setWindowInsetsAnimationCallback()
'e bir WindowInsetsAnimation.Callback
sağlayarak görünümde bir 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 ilerleme aşamasında onProgress()
işlevini çağırır. Geçiş tamamlandığında IME onEnd()
çağrısını yapar.
Geçişin herhangi bir aşamasında WindowInsetsAnimation.getFraction()
işlevini çağırarak geçişin ne kadar ilerlediğini öğrenebilirsiniz.
Bu API'lerin nasıl kullanılacağına dair örnek için yeni WindowInsetsAnimation kod örneğine bakın.
IME animasyonunu kontrol etme
Ayrıca, IME animasyonunu veya gezinme çubuğu gibi başka bir sistem çubuğunun animasyonunu da kontrol edebilirsiniz. Bunu yapmak için önce, pencere içe yerleştirilme değişiklikleri için yeni bir dinleyici ayarlamak üzere setOnApplyWindowInsetsListener()
işlevini çağırı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ında yapılan güncellemeler
Android 11, android.icu
paketini Android 10'daki 63 sürümüne 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 bir dizi iyileştirmeyi içerir.
Yeni kitaplık sürümlerindeki önemli değişikliklerden bazıları şunlardır:
- Birçok biçimlendirme API'si artık
FormattedValue
'yi genişleten yeni bir döndürülen nesne türünü destekliyor. LocaleMatcher
API, bir oluşturucu sınıfı,java.util.Locale
türü için destek ve bir eşleşmeyle ilgili ek veriler içeren bir sonuç sınıfıyla geliştirildi.- Unicode 13 artık desteklenmektedir.
Medya
MediaCodec arabellekleri ayırma
Android 11, giriş ve çıkış arabelleklerini ayırırken uygulamalara daha fazla kontrol sağlayan yeni MediaCodec
API'leri içerir. Bu sayede uygulamanız hafızayı daha verimli bir şekilde yönetebilir.
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, BlockModel API'yi kullanacak şekilde yapılandırılmışsa dizinle
MediaCodec.getInputBuffer()
veMediaCodec.queueInputBuffer()
yerineMediaCodec.getQueueRequest
'ı kullanmalı ve yuvaya bir LinearBlock/HardwareBuffer eklemelidir. onOutputBufferAvailable()
- Uygulamalar, dizinle
MediaCodec.getOutputBuffer()
yerine dizinleMediaCodec.getOutputFrame()
kullanarakOutputFrame
nesnesi için daha fazla bilgi ve LinearBlock/HardwareBuffer arabellekleri alabilir.
MediaCodec'te düşük gecikmeli kod çözme
Android 11, oyunlar ve diğer gerçek zamanlı uygulamalar için düşük gecikmeli kod çözmeyi desteklemek amacıyla MediaCodec
geliştirildi. Bir codec'in düşük gecikmeli kod çözmeyi destekleyip desteklemediğini kontrol etmek için FEATURE_LowLatency
değerini MediaCodecInfo.CodecCapabilities.isFeatureSupported()
değerine iletebilirsiniz.
Düşük gecikmeli kod çözmeyi etkinleştirmek veya devre dışı bırakmak için aşağıdakilerden birini yapın:
MediaCodec.configure()
düğmesini kullanarak yeni anahtarıKEY_LOW_LATENCY
0 veya 1 olarak ayarlayın.MediaCodec.setParameters()
kullanarak yeni parametre anahtarınıPARAMETER_KEY_LOW_LATENCY
0 veya 1 olarak ayarlayın.
Yeni AAudio işlevi AAudioStream_release()
AAudioStream_close()
işlevi, ses akışını aynı anda bırakır ve kapatır. Bu işlem tehlikeli olabilir. Kapatıldıktan sonra başka bir işlem akışa erişmeye çalışırsa işlem kilitlenir.
Yeni işlev AAudioStream_release()
, akışı serbest bırakır ancak kapatmaz. Bu işlem, kaynakların serbest bırakılmasını sağlar ve yayını bilinen bir durumda bırakır. Nesne, AAudioStream_close()
çağrısı yapılana kadar varlığını korur.
MediaParser API
MediaParser, medya ayıklama için yeni bir düşük düzey 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
kullanıldığı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 bir uygulama erişim istediğinde her seferinde 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 aynı anda çekim yapma özelliğini etkinleştirir ve devre dışı bırakır. Ses Girişi Paylaşımı 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 uygulamadan erişmenin yanı sıra geçiş seçenekleri sistem medya oynatıcısında da gösterilir. Bu, kullanıcının izleme ve dinleme bağlamlarını değiştirirken (ör. mutfakta video izlemek yerine telefonda izlemek veya evde ya da arabada ses dinlemek) cihazlar arasında geçiş yaparken sorunsuz bir deneyim yaşamasını sağlar. Çıkış değiştiriciye bakın.
Bağlantı
Kablosuz Passpoint iyileştirmeleri
Android 11'e eklenen Passpoint özellikleri hakkında bilgi edinmek için Passpoint başlıklı makaleyi inceleyin.
Kablosuz Ağ Önerisi API'si genişletildi
Android 11, uygulamanızın ağ yönetimi özelliklerini artırmak için Kablosuz Ağ Önerisi API'sini genişleterek aşağıdakileri sağlar:
- Bağlantı yönetimi uygulamaları, bağlantı kesme isteklerine izin vererek kendi ağlarını yönetebilir.
- Passpoint ağları, Suggestion API'ye entegre edilir 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 isteyebilir. Bu bilgiler, gelen aramalar için arama ayrıntıları kapsamında sağlanır.
Bir CallScreeningService
, READ_CONTACTS
iznine sahipse kullanıcının kişilerindeki bir numaradan gelen veya bu numaraya yapılan aramalar olduğunda uygulamaya bildirim gönderilir.
Daha fazla bilgi için Arama 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.
Performanslı VPN'ler
API düzeyi 30 ve sonraki sürümleri hedefleyen veya API düzeyi 29 ve sonraki sürümlerde kullanıma sunulan cihazlarda çalışan uygulamalar, hem kullanıcı tarafından yapılandırılmış hem de uygulama tabanlı VPN'ler için VPN'lere IKEv2/IPsec uygulayabilir.
VPN'ler işletim sistemine özgü olarak çalışır ve bir uygulamada IKEv2/IPsec VPN bağlantıları kurmak için gereken kodu basitleştirir.
İşlem başına ağ erişim denetimi
Ağ erişimini işlem bazında etkinleştirme hakkında bilgi edinmek için Ağ kullanımını yönetme başlıklı makaleyi inceleyin.
Aynı FQDN ile birden fazla Passpoint yapılandırmasının yüklenmesine izin verme
Android 11'den itibaren, PasspointConfiguration
nesnesi için benzersiz bir tanımlayıcı almak üzere PasspointConfiguration.getUniqueId()
kullanabilirsiniz. Bu, uygulamanızın kullanıcılarının aynı tam nitelikli alan adıyla (FQDN) birden fazla profil yüklemesine olanak tanır.
Bu işlev, bir operatör ağında birden fazla Mobil Ülke Kodu (MCC) 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ı MCC veya MNC içeren bir SIM yüklediğinde Home sağlayıcısıyla aynı ağla eşleşen aynı FQDN'ye sahip birden fazla profil yükleyebilirsiniz.
GNSS anteni desteği
Android 11'de, uygulamanızın Global Navigasyon Uydu Sistemi'nin (GNSS) sağlayabileceği santimetre hassasiyetinde konumlandırmadan daha fazla yararlanmasını sağlayan GnssAntennaInfo
sınıfı kullanıma sunulmuştur.
Antena kalibrasyon bilgileri kılavuzundan daha fazla bilgi edinebilirsiniz.
Grafik
NDK resim kod çözücü
NDK ImageDecoder
API'si, Android C/C++ uygulamalarının resimlerin 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ı veya üçüncü taraf resim kod çözme kitaplıklarını paketlemesi gerekmiyor. Daha fazla bilgi için Resim 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 sistemle hedefledikleri kare hızını paylaşmasını sağlayan bir API sağlar. Bu API'nin nasıl kullanılacağı hakkında bilgi edinmek için kare hızı kılavuzuna bakın.
Düşük gecikmeli destek isteme ve kontrol etme
Bazı harici ekranlar ve TV'ler gibi belirli ekranlar grafik son işleme gerçekleştirebilir. Bu işlem sonrası işleme, grafikleri iyileştirir ancak gecikmeyi artırabilir. HDMI 2.1'i destekleyen yeni ekranlarda, bu son işleme işlemini kapatarak gecikmeyi en aza indiren bir otomatik düşük gecikme modu (oyun modu olarak da bilinen ALLM) bulunur. ALLM hakkında daha fazla bilgi için HDMI 2.1 spesifikasyonuna bakın.
Bir pencere, varsa otomatik düşük gecikmeli modun kullanılmasını isteyebilir. ALLM, özellikle düşük gecikmenin mümkün olan en iyi grafiklere sahip olmaktan daha önemli olduğu oyun ve video konferansı gibi uygulamalar için kullanışlıdır.
Minimum son işleme özelliğini etkinleştirmek veya devre dışı bırakmak için Window.setPreferMinimalPostProcessing()
işlevini çağırın veya pencerenin preferMinimalPostProcessing
özelliğini true
olarak ayarlayın. Tüm ekranlar minimum son işleme özelliğini desteklemez. Belirli bir ekranın bu özelliği destekleyip desteklemediğini öğrenmek için yeni yöntemi Display.isMinimalPostProcessingSupported()
çağırın.
Performanslı grafik hata ayıklama katmanı ekleme
Uygulamalar artık hata ayıklama yapılabilir bir uygulamayla aynı işlevleri sunmak için harici grafik katmanlarını (GLES, Vulkan) yerel uygulama koduna yükleyebilir ancak performans yükü oluşturmaz. Bu özellik, özellikle GAPID gibi araçlarla uygulamanızın profilini oluştururken önemlidir. Uygulamanızın profilini oluşturmak için uygulamayı hata ayıklamaya açık 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
Etkin çekim sırasında bildirim seslerini ve titreşimleri 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 emulatöründe genişletilmiş kamera desteği
Android 11'den itibaren emülatörde kameralar için sunulan genişletilmiş destek hakkında bilgi edinmek istiyorsanız Kamera desteği başlıklı makaleyi inceleyin.
Birden fazla kameranın aynı anda kullanılması 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 işlemi tarafından yapılandırıldığında, garantili akış kombinasyonlarıyla eşzamanlı olarak akış yapabilen kamera kimliği kombinasyonlarının birSet
döndürür.isConcurrentSessionConfigurationSupported()
, kamera cihazlarının ilgili oturum yapılandırmalarını eşzamanlı olarak destekleyip destekleyemediğini sorar.
Birden çok kare içeren HEIF resimler için daha iyi destek
Android 11'den itibaren ImageDecoder.decodeDrawable()
işlevini çağırır ve bir kare dizisi içeren bir HEIF resmi (ör. animasyon veya seri fotoğraf) iletirseniz yöntem, resim dizisinin tamamını içeren bir AnimatedImageDrawable
döndürür. Android'in önceki sürümlerinde bu yöntem yalnızca tek bir karelik bir BitmapDrawable
döndürüyordu.
HEIF grafiği, sıralı olmayan birden fazla kare içeriyorsa MediaMetadataRetriever.getImageAtIndex()
çağrısını yaparak 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 metne ek olarak HTML ve resimler de kullanılabilir. Bu esneklik, son kullanıcılara hizmetinizin ne yaptığını ve onlara nasıl yardımcı olabileceğini açıklamayı kolaylaştırır.
- Kullanıcı arayüzü öğesinin durumunun
contentDescription
değerinden daha anlamlı bir açıklamasıyla çalışmak 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 "sonraki" gibi IME işlemlerinin yanı sıra
FLAG_SECURE
işaretini etkinleştirmeyen pencerelerin ekran görüntülerini isteyebilirsiniz.
Ek özellikler
Uygulama işleminin çıkma nedenleri
Android 11, son işlem sonlandırmalarının nedenlerini bildiren ActivityManager.getHistoricalProcessExitReasons()
yöntemini kullanıma sunar. Uygulamalar, bir işlemin sonlandırılmasının 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, özel durum bilgilerini daha sonra analiz etmek için yeni setProcessStateSummary()
yöntemini kullanabilirsiniz.
getHistoricalProcessExitReasons()
yöntemi, bir uygulama sürecinin sonlandırılması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()
çağrısını yaparak uygulamanızın işleminin neden sonlandırıldığını belirleyebilirsiniz. Örneğin, REASON_CRASH
döndürülen değer, 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öntemindeki zaman damgasına dayalı bir karma oluşturma değeri gibi uygulamaya özgü bir tanımlayıcı tutabilir.
Ek kaynaklar
Daha fazla bilgi için Medium'da uygulamaları daha gizli ve kararlı hale getirecek yeni Android 11 araçları başlıklı 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 sunar. Yeni işlevleri sağlamaktan birincil olarak yeni API sınıfları ResourcesLoader
ve ResourcesProvider
sorumludur. Bu iki işlev birlikte, ek kaynak ve öğe sağlama veya mevcut kaynakların ve öğelerin değerlerini değiştirme olanağı sunar.
ResourcesLoader
nesneleri, bir uygulamanın Resources
örneğine ResourcesProvider
nesneleri sağlayan kapsayıcılarıdır. ResourcesProvider
nesneleri ise 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önlendiren bir ResourcesProvider
oluşturmak için loadFromDirectory()
kullanabilirsiniz. Bu, uygulama APK'sı yerine belirli bir dizini aramasına neden olur. Bu öğelere, APK'da paketlenmiş öğelerde olduğu gibi AssetManager
API sınıfındaki open()
yöntem ailesi aracılığıyla erişebilirsiniz.
APK imza şeması v4
Android 11, APK İmza Şeması v4 desteği ekler. Bu şema, ayrı bir dosyada (apk-name.apk.idsig
) yeni bir tür imza oluşturur ancak diğer açılardan v2 ve v3'e benzer. APK'da herhangi bir değişiklik yapılmaz. Bu şema, APK yüklemeyi hızlandıran ADB artımlı APK yüklemesini destekler.
Dinamik intent filtreleri
Bir uygulamanın intent alabilmesi için derleme zamanında, uygulama manifest dosyasında bir intent filtresi tanımlayarak hangi veri türlerini alabileceğini belirtmesi gerekir. Android 10 ve önceki sürümlerde, uygulamaların çalışma zamanında intent filtrelerini değiştirmesi mümkün değildir. Kullanıcının içine ne tür yazılım yükleyeceğini tam olarak bilemedikleri için bu, sanallaştırma uygulamaları (ör. sanal makineler ve uzak masaüstü bilgisayarlar) için bir sorundur.
Android 11, bir uygulamanın intent filtresinde dinamik bir MIME türü grubu 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 sunar. MIME grubu kullanmak için uygulama manifest dosyanıza 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 kimliğini PackageManager
API sınıfındaki aşağıdaki yeni yöntemlere ileterek gruba erişebilir ve içeriğini güncelleyebilirsiniz:
Bir MIME grubuna programatik olarak eklediğiniz MIME türü, manifest dosyasında açıkça tanımlanan statik MIME türüyle tam olarak aynı şekilde çalışır.
Otomatik doldurma iyileştirmeleri
Android 11, otomatik doldurma hizmetleri için iyileştirmeler sunar.
AssistStructure.ViewNode'daki ipucu tanımlayıcıları
Otomatik doldurma hizmetlerinin, görünümün özelliklerine göre bir görünüm için imza karması hesaplaması genellikle yararlıdır. Görüntüleme ipucu, özellikle imza karması hesaplanırken dahil edilmesi gereken iyi bir özelliktir ancak ipucu dizesi telefonun yerel ayarlarına göre değişebilir. Android 11, bu sorunu çözmek için AssistStructure.ViewNode
öğesini, bir görünümün ipucu metninin kaynak tanımlayıcısını döndüren yeni bir getHintIdEntry()
yöntemiyle genişletir. Bu yöntem, imza karmalarını hesaplamak için kullanabileceğiniz yerel ayara bağlı olmayan bir değer sağlar.
Veri kümelerinde gösterilen etkinlikler
Android 11, otomatik doldurma hizmetlerinin önerilerini iyileştirmesine yardımcı olmak için bir otomatik doldurma hizmetinin veri kümeleri sunduğu ancak kullanıcının hiçbirini seçmediği durumları belirlemenin bir yolunu sunar. Android 11'de FillEventHistory
, yeni bir TYPE_DATASETS_SHOWN
etkinlik türünü bildirir. FillEventHistory
, otomatik doldurma hizmeti kullanıcıya bir veya daha fazla veri kümesi sunduğunda bu tür bir etkinlik 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ü yerine satır içi bir öneri şeridinde veya benzer bir arayüzde gösterebilir. Şifre ve kredi kartı numarası gibi hassas bilgileri korumak için öneriler kullanıcıya gösterilir ancak kullanıcı bir öneriyi 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 doldurma özelliğini 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 dayalı zeka sunmasını (ör. kullanıcının ortamında çalınan bir şarkının adını gösterme) kolaylaştırır.
Uygulamanızdaki verileri içerik yakalama hizmetinin kullanımına sunmak 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şacağı salt yazma özellikli bir dosya tanımlayıcısı alır.