Özelliklere ve API'lere Genel Bakış

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:

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:

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:

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() ve MediaCodec.queueInputBuffer() yerine MediaCodec.getQueueRequest'ı kullanmalı ve yuvaya bir LinearBlock/HardwareBuffer eklemelidir.
onOutputBufferAvailable()
Uygulamalar, dizinle MediaCodec.getOutputBuffer() işlevini çağırmak yerine, daha fazla bilgi içeren OutputFrame nesnesini ve DoğrusalBlock/DonanımBuffer arabelleklerini almak için dizinle MediaCodec.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:

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 bir Set 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çin getStateDescription() 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çin setGestureDetectionPassthroughRegion() 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.