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'lerle ilgili ayrıntılar için Android API referansı sayfasını ziyaret edin. Yeni API'ler, görünürlük için vurgulanmaktadı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 denetimlerini 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, TYPE_HINGE_ANGLE
içeren yeni bir sensör ve menteşe açısını izleyebilen ve cihazın iki ayrılmaz parçası arasında derece cinsinden ölçüm sağlayan yeni bir SensorEvent
sağlayarak menteşenin açısını belirlemesini sağlar. Kullanıcı cihazı değiştirirken 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 nasıl etkileşime geçecekleri konusunda ç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ı
Sistem genelinde görüşmeleri yüzeye çıkarmaya yardımcı olmaları için geliştiricilerin artık Baloncuklar'ı kullanabilirler. 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 baloncuk olarak gönderilmesini isterseniz 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.
Baloncuk performansında çeşitli iyileştirmeler vardır ve kullanıcılar her uygulamadaki baloncukların etkinleştirilmesi ve devre dışı bırakılması konusunda daha fazla esnekliğe sahip olur. Deneysel desteği uygulayan geliştiriciler için Android 11'deki API'lerde birkaç değişiklik yapılacak:
- Parametresi olmayan
BubbleMetadata.Builder()
kurucusu kullanımdan kaldırıldı. Bunun yerine, iki yeni kurucudanBubbleMetadata.Builder(PendingIntent, Icon)
veyaBubbleMetadata.Builder(String)
birini kullanın. BubbleMetadata.Builder(String)
numaralı telefonu arayarak kısayol kimliğindenBubbleMetadata
oluşturun. İletilen dize,Notification.Builder
için sağlanan kısayol kimliğiyle eşleşmelidir.- Balon simgeleri oluşturmak için
Icon.createWithContentUri()
veya yenicreateWithAdaptiveBitmapContentUri()
yöntemini kullanın.
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 Biometrik kitaplığında da görünür.
Kimlik doğrulama türleri
Android 11'de, uygulamanızın desteklediği kimlik doğrulama türlerini beyan etmek 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ı 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ş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 bilgisi korumalı depolama alanına yerleştirilen kimlik bilgisi şifrelenmiş anahtarlar (CE), dosya tabanlı şifreleme (FBE) işlemleri için hemen kullanılabilir. Yani uygulamanız, bir OTA güncellemesinden sonra kullanıcı PIN'ini, desenini veya şifresini girmeden önce CE anahtarları gerektiren işlemleri devam ettirebilir.
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 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ısını kullanarak hata algılama
GWP-ASan, boşaltıldıktan sonra kullanım ve yığın arabellek taşması hatalarını bulmaya yardımcı olan bir yerel 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 niceleme şemasını desteklemek için yeni bir işlem gören türünü (TENSOR_QUANT8_ASYMM_SIGNED
) kullanıma sunuyor.
Ayrıca, NNAPI 1.3 aşağıdaki yeni işlemleri kullanıma sundu:
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, aynı verilerin farklı sistem bileşenleri arasında gereksiz kopyalarını kaldırır ve Android nöral ağlarının çalışma zamanı performansını artırır. Bu özellik, aşağıdaki işlevler de dahil olmak üzere
ANeuralNetworksMemoryDesc
veANeuralNetworkMemory
nesneleriyle kullanılacak 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ısabilirler ve bu durum uygulamaları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun işlem gücü veya sürekli ağ etkinliği içeren uygulamaların ya da oyunların sorunlarla karşılaşma olasılığı daha yüksektir.
Android 11'de NDK Thermal API'yi kullanarak cihazdaki sıcaklık değişikliklerini izleyin, ardından güç kullanımını ve cihaz sıcaklığını düşük tutmak için harekete geçin. Bu API, Java Thermal API'ye benzer. API'yi herhangi bir termal durum değişikliğiyle ilgili bildirim almak veya geçerli durumu doğrudan yoklamak için 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, uygulama içeriğinizi IME'nin görünümü ve ortadan kaybolmasının yanı sıra durum ve gezinme çubukları gibi diğer öğelerle senkronize bir ş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ünümü ve kaybolmasıyla senkronize etmek için View.setWindowInsetsAnimationCallback()
öğesine WindowInsetsAnimation.Callback
sağlayarak bir görünümde işleyici 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()
çağrılır. Geçiş tamamlandığında IME, onEnd()
yöntemini çağırır.
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 ilişkin bir ö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 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 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
'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, 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()
'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()
işlevini çağırmak yerine, daha fazla bilgi içerenOutputFrame
nesnesini ve DoğrusalBlock/DonanımBuffer arabelleklerini almak için dizinleMediaCodec.getOutputFrame()
birlikte kullanabilir.
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 olan 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'sı
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 yok sayar. Bu nedenle, 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 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ış yatıyor.
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, izleme ve dinleme ortamlarını değiştiren (ör. mutfakta veya telefonda video izlerken ya da evde veya arabada ses dinlerken) kullanıcıya cihazlar arasında geçiş yaparken sorunsuz bir yolculuk sağlamaya yardımcı olur. Çı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.
Wi-Fi Suggestion API'si genişletildi
Android 11, uygulamanızın ağ yönetimi özelliklerini artırmak için Kablosuz Ağ Önerisi API'sini genişletti. Bu özelliklerden bazıları şunlardır:
- 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.
CallScreeningService
READ_CONTACTS
iznini kullanıyorsa kullanıcının kişiler listesindeki bir numaradan gelen veya bu numaraya giden aramalar olduğunda uygulama bilgilendirilir.
Daha fazla bilgi için Arayan kimliği adres sahteciliğini önleme bölümüne bakın.
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ğ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şimi denetimi
Ağ erişimini işlem bazında etkinleştirme hakkında bilgi için Ağ kullanımını yönetme bölümüne bakın.
Aynı FQDN ile birden fazla Passpoint yapılandırmasının yüklenmesine izin verme
Android 11'den itibaren, bir PasspointConfiguration
nesnesi için benzersiz tanımlayıcı almak üzere PasspointConfiguration.getUniqueId()
aracını kullanabilirsiniz. Bu tanımlayıcı, uygulama kullanıcılarının aynı tam alan adına (FQDN) sahip 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 kullanırken 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.
Anten kalibrasyon bilgileri kılavuzunda 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'yi nasıl kullanacağınız 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, otomatik düşük gecikme modunun (varsa) 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 işleme sonrası süreci etkinleştirmek veya devre dışı bırakmak için Window.setPreferMinimalPostProcessing()
yöntemini çağırın ya da 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 çıkarırken ö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şimlerini kapat
Android 11'den itibaren, uygulamanız kamerayı aktif olarak kullanırken yalnızca titreşimleri (hem sesleri hem de titreşimleri) kapatabilir veya setCameraAudioRestriction()
özelliğini kullanarak ikisini de 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.
Aynı anda birden fazla kamera kullanımı desteği
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ğinde sıralı olmayan birden fazla kare varsa MediaMetadataRetriever.getImageAtIndex()
komutunu ç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 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 getiren 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 API sınıfları
ResourcesLoader
ve
ResourcesProvider
birincil olarak yeni işlevi sağlamaktan sorumludur. Bu iki özellik 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
nesne sağlayan container'lardır. Buna karşılık ResourcesProvider
nesneleri, APK'lardan ve kaynak tablolarından kaynak verilerini yüklemek için yöntemler 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 ailesini kullanarak erişebilirsiniz.
APK imza şeması v4
Android 11'e APK İmza Şeması v4 için destek eklendi. 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'nın yüklenmesini hızlandıran ADB artımlı APK yüklemesini destekler.
Dinamik amaç filtreleri
Amaç almak için bir uygulamanın, derleme sırasında uygulama manifestinde bir amaç filtresi tanımlayarak hangi tür verileri alabileceğini beyan etmesi 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'de, uygulamaların bir 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ı kullanıma sunuluyor. 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 içindeki 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 ayarına göre değişebilir. Android 11, bu sorunu çözmek için AssistStructure.ViewNode
yeni bir getHintIdEntry()
yöntemiyle genişletilir. Bu yöntem, görünümün ipucu metni için 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 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. Şifreler ve kredi kartı numaraları gibi hassas bilgileri korumak için öneriler kullanıcıya gösterilir, ancak kullanıcı bir seçim yapana 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şmak üzere bir salt okunur dosya tanımlayıcısı alır.