Özelliklere ve API'lere Genel Bakış

Android 11, geliştiriciler için muhteşem yeni özellikler ve API'ler sunar. Aşağıdaki bölümler, uygulamalarınız için özellikler hakkında bilgi edinmenize ve ilgili API'leri kullanmaya başlamanıza yardımcı olur.

Yeni, değiştirilmiş ve kaldırılmış API'lerin ayrıntılı bir listesi için API farklılıkları 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 vurgulanmıştır. Ayrıca, platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android R ve tüm uygulamaları hedefleyen uygulamalar için Android 11 davranış değişikliklerinin yanı sıra gizlilik değişikliklerine de göz atmayı unutmayın.

Yeni deneyimler

Cihaz kontrolleri

Android 11, bağlı harici cihazlar için kontrolleri kullanıma sunmak üzere kullanabileceğiniz yeni bir ControlsProviderService API içerir. Bu kontroller, Android güç menüsündeki Cihaz kontrolleri altında görünür. Daha fazla bilgi edinmek için Harici cihazları kontrol etme konusuna bakın.

Medya Denetimleri

Android 11, medya denetimlerinin görüntülenme şeklini günceller. Medya denetimleri, Hızlı Ayarlar'ın yakınında görünür. Birden fazla uygulamadan gelen oturumlar, kaydırılabilir bir bantta düzenlenir. Bu bantta, telefonda yerel olarak oynatılan yayınlar, harici cihazlarda veya yayın oturumlarında algılananlar gibi uzak akışları ve önceki devam ettirilebilir oturumları son oynatıldıkları sırayla görebilirsiniz.

Kullanıcılar uygulamayı başlatmak zorunda kalmadan banttan önceki oturumları yeniden başlatabilir. Oynatma başladığında kullanıcı, medya kontrolleriyle her zamanki gibi etkileşimde bulunur.

Daha fazla bilgi için medya denetimlerine bakın.

Ekranlar

Şelale ekranları için daha iyi destek

Android 11, cihazın kenarlarını sarmalayan şelale ekranlarını desteklemek için çeşitli API'ler sunar. Bu ekranlar, ekran kesimlerine sahip ekranların bir varyantı olarak ele alınır. Mevcut DisplayCutout.getSafeInset…() yöntemleri artık şelale alanlarını ve kesintileri önlemek için güvenli eki döndürüyor. Uygulama içeriğinizi şelale alanında oluşturmak için aşağıdakileri yapın:

  • Şelalenin tam boyutlarını almak için DisplayCutout.getWaterfallInsets() çağrısını yapın.

  • Pencerenin, ekranın tüm kenarlarındaki kesim ve şelale alanlarına erişmesine izin vermek için layoutInDisplayCutoutMode pencere düzeni özelliğini LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS olarak ayarlayın. Desen veya şelale alanlarında temel içeriklerin bulunmadığından emin olmalısınız.

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.

Sohbetler

Sohbet iyileştirmeleri

Android 11, ileti dizilerinin işleniş şeklinde çeşitli iyileştirmeler yapar. Sohbetler, iki veya daha fazla kişi arasında gerçek zamanlı, çift yönlü iletişimdir. Bu görüşmelere özel bir önem verilir ve kullanıcılar, onlarla etkileşime geçmek için birçok yeni seçeneğe sahiptir.

Görüşmeler ve uygulamanızın bunları nasıl destekleyebileceği hakkında daha fazla bilgi için Kişiler ve görüşmeler 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. Bubbles Android 10'da bir geliştirici seçeneği ile etkinleştirilen deneysel bir özellikti; Android 11'de bu artık gerekli değil.

Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamaların bildirimleri, yeni görüşme gereksinimlerini karşılamadıkları sürece baloncuk olarak sunulmaz. Daha açık belirtmek gerekirse, bildirimin bir kısayolla ilişkilendirilmesi gerekir.

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 olarak gösterilirse platform, bildirimi otomatik olarak her zaman doküman kullanıcı arayüzü modunda başlatılacak şekilde 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 kullandıklarında bunu bildirme konusuna bakın.

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 edinmek için Gizlilik sayfasına bakın.

Güvenlik

Biyometrik kimlik doğrulama güncellemeleri

Android 11, uygulama verilerinizin güvenlik düzeyini kontrol etmenize yardımcı olmak için biyometrik kimlik doğrulamayla ilgili ç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 bildirmek 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ğırarak kullanıcının kimliğinin cihaz kimlik bilgisi veya biyometrik kimlik bilgisiyle doğrulanıp doğrulanmadığını kontrol edebilirsiniz.

Kullanım başına kimlik doğrulama anahtarları için ek destek

Android 11, kullanım başına kimlik doğrulama anahtarlarını kullanarak kimlik doğrulama için daha fazla destek sağlar.

Desteği sonlandırılan yöntemler

Android 11, aşağıdaki yöntemleri kullanımdan kaldırır:

  • setDeviceCredentialAllowed() yöntemi.
  • setUserAuthenticationValidityDurationSeconds() yöntemi.
  • canAuthenticate() ürününün, bağımsız değişken kabul etmeyen aşırı yüklenmiş sürümü.

Büyük veri kümelerinin güvenli paylaşımı

Makine öğrenimini veya medya oynatma içerenler gibi bazı durumlarda uygulamanız, başka bir uygulamayla aynı büyük veri kümesini kullanmak isteyebilir. Android'in önceki sürümlerinde, sizin uygulamanızın ve başka bir uygulamanın aynı veri kümesinin ayrı bir kopyasını indirmesi gerekir.

Android 11, hem ağ hem de disk üzerinde veri yedekliliğini azaltmaya yardımcı olmak için bu büyük veri kümelerinin paylaşılan veri blob'ları kullanılarak cihazda önbelleğe alınmasına olanak tanır. Veri kümelerini paylaşma hakkında daha fazla bilgi edinmek için büyük veri kümelerini paylaşma ile ilgili ayrıntılı kılavuza göz atın.

OTA yeniden başlatıldıktan sonra kullanıcı kimlik bilgileri olmadan dosya tabanlı şifreleme gerçekleştir

Cihaz bir OTA güncellemesi tamamlandıktan ve yeniden başlatıldıktan sonra, kimlik bilgileri korumalı depolama alanına yerleştirilen Kimlik Bilgisi Şifrelenmiş anahtarlar (CE) Dosya Tabanlı Şifreleme (FBE) işlemleri için hemen kullanılabilir. Böylece 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ın iş istasyonunuzdan kablosuz olarak dağıtılmasını ve hata ayıklamasını destekler. Örneğin, cihazınızı USB ile fiziksel olarak bağlamadan ve sürücü yüklemesi gibi sık karşılaşılan USB bağlantı sorunlarıyla mücadele etmeden hata ayıklama uygulamanızı birden fazla uzak cihaza dağıtabilirsiniz. Daha fazla bilgi için Uygulamaları donanım cihazında çalıştırma konusuna bakın.

ADB Artımlı APK yükleme

Bir cihaza büyük (2 GB+) APK'ların yüklenmesi, uygulamada küçük bir değişiklik yapılsa bile uzun zaman alabilir. ADB (Android Debug Bridge) Artımlı APK yüklemesi, uygulamayı başlatacak kadar APK'yı yükleyerek bu işlemi hızlandırır ve kalan verilerin arka planda akışını sağlar. Cihaz tarafından destekleniyorsa ve en son SDK Platform Araçları'nın yüklü olması durumunda adb install bu özelliği otomatik olarak kullanır. Bu özellik desteklenmiyorsa varsayılan yükleme yöntemi sessizce kullanılır.

Özelliği kullanmak için aşağıdaki adb komutunu kullanın. Cihaz artımlı yüklemeyi desteklemiyorsa komut başarısız olur ve ayrıntılı bir açıklama yazdırır.

adb install --incremental

Bir ADB artımlı APK yüklemesi çalıştırmadan önce APK'nızı imzalamanız ve bir APK İmza Şeması v4 dosyası oluşturmanız gerekir. Bu özelliğin çalışması için v4 imza dosyası APK'nın yanına yerleştirilmelidir.

Yerel bellek ayırıcı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 tüm dünyada veya uygulamanızın belirli alt işlemleri için etkinleştirebilirsiniz. Daha fazla bilgi edinmek için GWP-Asan kılavuzuna bakın.

Neural Networks API 1.3

Android 11, Neural Networks API'yi (NNAPI) genişletip iyileştiriyor.

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 ML denetimleri

NNAPI 1.3, makine öğreniminin sorunsuz şekilde çalışmasına yardımcı olacak yeni kontroller sunar:

NDK Thermal API'sı

Cihazlar çok ısındığında CPU ve/veya GPU'yu daraltabilir 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, dokunmatik klavye gibi giriş yöntemi düzenleyicileri (IME'ler) için geçişleri iyileştirecek yeni API'ler sunuyor. 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.

Odaklanılan herhangi bir EditText olduğunda IME'yi görüntülemek için view.getInsetsController().show(Type.ime()) numaralı telefonu arayın. (Bu yöntemi, odaklanılan EditText ile aynı hiyerarşideki herhangi bir görünümde çağırabilirsiniz. Bu yöntemi özel olarak EditText öğesinde çağırmanız gerekmez.) IME'yi gizlemek için view.getInsetsController().hide(Type.ime()) numaralı telefonu arayın. Bir IME'nin görünür olup olmadığını kontrol etmek için view.getRootWindowInsets().isVisible(Type.ime()) numaralı telefonu arayabilirsiniz.

Uygulamanızın görünümlerini IME'nin görünümü ve ortadan kalkmasıyla senkronize etmek için View.setWindowInsetsAnimationCallback() öğesine WindowInsetsAnimation.Callback sağlayarak bir görünümde işleyici ayarlayın. (Bu işleyiciyi 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. Daha sonra, geçişteki her ilerlemede onProgress() yöntemini çağırır. Geçiş tamamlandığında IME, onEnd() yöntemini çağırır. Geçiş sürecinin herhangi bir aşamasında WindowInsetsAnimation.getFraction() numaralı telefonu arayarak geçişin ne kadar ilerleme kaydettiğ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

IME animasyonunun veya gezinme çubuğu gibi başka bir sistem çubuğunun animasyonunun da kontrolünü elinize alabilirsiniz. Bunu yapmak için önce setOnApplyWindowInsetsListener() yöntemini çağırarak pencere içindeki değişiklikler için yeni bir işleyici ayarlayın:

Kotlin

rootView.setOnApplyWindowInsetsListener { rootView, windowInsets ->
    val barsIme = windowInsets.getInsets(Type.systemBars() or Type.ime())
    rootView.setPadding(barsIme.left, barsIme.top, barsIme.right, 
                          barsIme.bottom)

      // We return the new WindowInsets.CONSUMED to stop the insets being
      // dispatched any further into the view hierarchy. This replaces the
      // deprecated WindowInsets.consumeSystemWindowInsets() and related
      // functions.
    WindowInsets.CONSUMED
}

Java

mRoot.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
   @Override
   public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {

       Insets barsIME = insets.getInsets(Type.systemBars() | Type.ime());
       mRootView.setPadding(barsIme.left, barsIme.top, barsIme.right,
                             barsIme.bottom);

      // We return the new WindowInsets.CONSUMED to stop the insets being
      // dispatched any further into the view hierarchy. This replaces the
      // deprecated WindowInsets.consumeSystemWindowInsets() and related
      // functions.
       return WindowInsets.CONSUMED;
   }
});

IME'yi veya diğer sistem çubuğunu taşımak için kumandanın controlWindowInsetsAnimation() yöntemini çağırın:

Kotlin

view.windowInsetsController.controlWindowInsetsAnimation(
       Type.ime(),
       1000,
       LinearInterpolator(),
       cancellationSignal,
       object : WindowInsetsAnimationControlListener() {
           fun onReady(controller: WindowInsetsAnimationController,
                         types: Int) {
               // update IME inset
             controller.setInsetsAndAlpha(Insets.of(0, 0, 0, inset),
                           1f /* alpha */, 0.1 /* fraction progress */)
           }
       }
);

Java

mRoot.getWindowInsetsController().controlWindowInsetsAnimation(
       Type.ime(), 1000, new LinearInterpolator(), cancellationSignal,
       new WindowInsetsAnimationControlListener() {
           @Override
           public void onReady(
                   @NonNull WindowInsetsAnimationController controller,
                   int types
                   ) {
                   // update IME inset
                   controller.setInsetsAndAlpha(Insets.of(0, 0, 0, inset),
                           1f /* alpha */, 0.1 /* fraction progress */);
           }

           @Override
           public void onCancelled() {}
       });

ICU kitaplıklarıyla ilgili güncellemeler

Android 11, android.icu paketini Android 10'daki sürüm 63'e kıyasla ICU kitaplığının 66 sürümünü kullanacak şekilde günceller. Yeni kitaplık sürümü, güncellenmiş CLDR yerel ayar verilerini ve Android'deki uluslararasılaştırma desteği için çeşitli geliştirmeleri içerir.

Yeni kitaplık sürümlerindeki önemli değişiklikler şunlardır:

  • Birçok biçimlendirme API'si artık FormattedValue öğesini genişleten yeni bir döndürme nesne türünü destekliyor.
  • LocaleMatcher API; oluşturucu sınıfı, java.util.Locale türü desteği ve eşleşme hakkında ek veriler içeren bir sonuç sınıfıyla geliştirilmiştir.
  • Unicode 13 artık desteklenmektedir.

Medya

MediaCodec arabellekleri ayırma

Android 11, giriş ve çıkış arabelleklerini ayırırken uygulamalara daha fazla kontrol sağlayan yeni bir 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() kapsamındaki iki yöntemin davranışı değişti:

onInputBufferAvailable()
Uygulamalar, Endeks Model API'yi kullanacak şekilde yapılandırıldıysa, dizinle MediaCodec.getInputBuffer() ve MediaCodec.queueInputBuffer() çağrılarını çağırmak yerine, yuvaya bir DoğrusalBlock/DonanımBuffer ekleyerek dizinde MediaCodec.getQueueRequest kullanmalıdır.
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'de MediaCodec özelliği, oyunlar ve diğer gerçek zamanlı uygulamalar için düşük gecikmeli kod çözmeyi destekleyecek şekilde tasarlanmıştır. Bir codec'in düşük gecikmeli kod çözmeyi destekleyip desteklemediğini kontrol etmek için FEATURE_LowLatency öğesini MediaCodecInfo.CodecCapabilities.isFeatureSupported()'e iletebilirsiniz.

Düşük gecikmeli kod çözmeyi açmak veya kapatmak için aşağıdakilerden birini yapın:

Yeni AAudio işlevi olan AAudioStream_release()

AAudioStream_close() işlevi aynı anda ses akışını serbest bırakır ve kapatır. Bu tehlikeli olabilir. Başka bir işlem kapatıldıktan sonra akışa erişmeye çalışırsa işlem kilitlenir.

Yeni AAudioStream_release() işlevi akışı serbest bırakır ancak kapatmaz. Bu işlem, kaynaklarını serbest bırakır ve akışı bilinen bir durumda bırakır. Nesne, siz AAudioStream_close() çağrısı yapana kadar devam eder.

MediaParser API'sı

MediaParser, medya ayıklama için yeni alt düzey bir API'dir. MediaExtractor'dan daha esnektir ve medya ayıklama işlevi üzerinde ek kontrol sağlar.

USB cihazından ses yakalama

RECORD_AUDIO izni olmayan bir uygulama, ses yakalama kabiliyeti olan bir USB ses cihazına (USB mikrofonlu kulaklık gibi) doğrudan erişim isteğinde bulunmak için UsbManager özelliğini kullandığı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 eşzamanlı olarak yakalama özelliğini etkinleştirir ve devre dışı bırakır. Bkz. Ses Girişi Paylaşımı.

Çıkış değiştirici

Android 11, Cast ve mediarouter API'lerini kullanan uygulamalar için yeni bir davranış yatıyor.

Bir uygulamadan yayınlama seçeneklerine erişmenin yanı sıra sistem medya oynatıcısında da geçiş seçenekleri görünür. 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 geliştirmeleri

Android 11'de eklenen Passpoint özellikleri hakkında bilgi edinmek için Passpoint bölümünü inceleyin.

Wi-Fi Suggestion API'si genişletildi

Android 11, uygulamanızın ağ yönetimi özelliklerini artırmak için aşağıdakiler de dahil olmak üzere Wi-Fi Suggestion API'yi genişletir:

  • Bağlantı yönetimi uygulamaları, bağlantı kesme isteklerine izin vererek kendi ağlarını yönetebilir.
  • Passpoint ağları Suggestion API'ye entegre edilmiştir ve kullanıcıya önerilebilir.
  • Analytics API'leri, ağlarınızın kalitesi hakkında bilgi edinmenizi sağlar.

CallScreeningService güncellemeleri

CallScreeningService, Android 11'den itibaren gelen aramalar için STIR/SHAKEN doğrulama durumu (verstat) hakkında bilgi isteyebilir. Bu bilgiler, gelen aramalarla ilgili arama ayrıntılarının bir parçası olarak sağlanır.

Bir CallScreeningService READ_CONTACTS iznine sahipse kullanıcının kişiler listesindeki bir numaradan gelen veya bu numaraya arama geldiğinde 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ğini inceleyin.

Etkili VPN'ler

API düzeyi 30 ve üstünü hedefleyen ya da API düzeyi 29 ve sonraki sürümlerde başlatılan cihazlarda çalışan uygulamalar, hem kullanıcı tarafından yapılandırılmış hem de uygulama tabanlı VPN'ler için VPN'lere IKEv2/IPsec uygulayabilir.

VPN'ler işletim sisteminde yerel olarak çalışarak 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'ye sahip birden fazla yüklü Passpoint yapılandırmasına izin ver

Android 11'den itibaren, bir PasspointConfiguration nesnesi için benzersiz tanımlayıcı almak üzere PasspointConfiguration.getUniqueId() 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ün ağında birden fazla Mobil Ülke Kodu (MCC) ve Mobil Ağ Kodu (MNC) kombinasyonu dağıttığı, ancak yalnızca tek bir FQDN'ye sahip olduğu durumlarda yararlıdır. Android 11 ve sonraki sürümlerde, kullanıcı MM veya MNC ile bir SIM taktığında Ev sağlayıcısıyla eşleşen aynı FQDN'ye sahip birden fazla profil yüklenebilir.

GNSS anten desteği

Android 11'de GnssAntennaInfo sınıfı kullanıma sunuluyor. Bu sayede uygulamanız, Küresel Navigasyon Uydu Sistemi'nin (GNSS) sağlayabileceği santimetre doğruluklu konumlandırmadan daha fazla yararlanabilir.

Anten kalibrasyon bilgileri kılavuzunda daha fazla bilgi edinebilirsiniz.

Grafik

NDK resim kod çözücü

NDK ImageDecoder API, Android C/C++ uygulamalarının görüntülerin kodunu doğrudan çözmesi için standart bir API sağlar. Uygulama geliştiricilerin artık çerçeve API'lerini (JNI aracılığıyla) kullanmasına veya üçüncü taraf görüntü kodu çözme kitaplıklarını paketlemelerine gerek yoktur. Daha fazla bilgi için Resim kod çözücü geliştirici kılavuzuna bakın.

Kare hızı API'si

Android 11, uygulamaların sisteme hedeflenen kare hızı hakkında bilgi vermesini sağlayan bir API sunar. Böylece birden fazla yenileme hızını destekleyen cihazlarda titreme azalmış olur. 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 bazı ekranlar, grafik işleme sonrası süreci gerçekleştirebilir. Bu son işleme, grafikleri iyileştirir ancak gecikmeyi artırabilir. HDMI 2.1'i destekleyen yeni ekranlarda otomatik düşük gecikme modu (oyun modu olarak da bilinen ALLM) bulunur. Bu mod, son işleme modunu kapatarak gecikmeyi en aza indirir. ALLM hakkında daha fazla bilgi için HDMI 2.1 özelliklerine 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 grafiğe 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 işleme sürecini desteklemez. Belirli bir ekranın destekleyip desteklemediğini öğrenmek için yeni yöntemi Display.isMinimalPostProcessingSupported() çağırın.

Etkili grafik hata ayıklama katmanı yerleştirme

Uygulamalar artık harici grafik katmanlarını (GLES ve Vulkan) yerel uygulama koduna yükleyerek hata ayıklaması yapılabilir bir uygulamayla aynı işlevleri sunabilir, ancak bunu yaparken performans ek yüküne yol açmaz. Bu özellik özellikle GAPID gibi araçlarla uygulamanızın profilini çıkarırken önemlidir. Uygulamanızın profilini çıkarmak için uygulamayı hata ayıklaması yapılabilir hale getirmek yerine uygulama manifest dosyanıza aşağıdaki meta 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 emülatörde genişletilmiş kamera desteği

Android 11'den itibaren emülatördeki kameralara yönelik genişletilmiş destek hakkında bilgi için Kamera desteği sayfasına bakın.

Aynı anda birden fazla kamera kullanımı desteği

Android 11, aynı anda birden fazla kamera kullanma (hem ön hem arka kamera dahil) sorgu desteğine API'ler ekler.

Uygulamanızın çalıştığı cihazda desteklenip desteklenmediğini kontrol etmek için aşağıdaki yöntemleri kullanın:

  • getConcurrentCameraIds(), aynı uygulama işlemi tarafından yapılandırıldığında garantili yayın kombinasyonlarıyla eş zamanlı olarak yayın yapabilen Set kamera kimliği kombinasyonu döndürür.
  • isConcurrentSessionConfigurationSupported(), kamera cihazlarının ilgili oturum yapılandırmalarını eşzamanlı olarak destekleyip desteklemediğini sorgular.

Birden fazla kareye sahip HEIF resimleri için daha iyi destek

Android 11'den itibaren, ImageDecoder.decodeDrawable() yöntemini çağırıp bir dizi kare (ör. animasyon veya seri çekim fotoğraf) içeren bir HEIF resmi iletirseniz yöntem, resim dizisinin tamamını içeren bir AnimatedImageDrawable döndürür. Android'in önceki sürümlerinde bu yöntem yalnızca tek bir karenin BitmapDrawable değerini döndürdü.

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:

  • Bir erişilebilirlik hizmetinin kullanıcılara yönelik açıklaması artık düz metne ek olarak HTML ve resimlere de izin veriyor. Bu esneklik, son kullanıcılara hizmetinizin ne yaptığını ve nasıl yardımcı olabileceğini açıklamanızı kolaylaştırır.
  • contentDescription öğesinden daha anlamsal olarak daha anlamlı bir kullanıcı arayüzü öğesi durumunun açıklamasıyla çalışmak için getStateDescription() yöntemini çağırın.
  • Dokunma etkinliklerinin sistemin dokunma gezginini atlamasını istemek için setTouchExplorationPassthroughRegion() numaralı telefonu arayın. Benzer şekilde, hareketlerin sistemin hareket algılayıcısını atlamasını istemek için setGestureDetectionPassthroughRegion() çağrısı yapın.
  • "Enter" ve "next" gibi IME işlemleri ile FLAG_SECURE işaretinin etkinleştirilmediği pencerelerin ekran görüntülerini isteyebilirsiniz.

Ek özellikler

Uygulama işleminden çıkış nedenleri

Android 11'de, yakın zamanda işlem fesihlerinin nedenlerini bildiren ActivityManager.getHistoricalProcessExitReasons() yöntemi kullanıma sunulmuştur. Uygulamalar, işlem sonlandırma işleminin ANR'lerden, bellek sorunlarından veya başka nedenlerden kaynaklanıp kaynaklanmadığı gibi kilitlenme teşhis bilgilerini toplamak için bu yöntemi kullanabilir. Ayrıca, daha sonra analiz etmek üzere özel durum bilgilerini depolamak için yeni setProcessStateSummary() yöntemini kullanabilirsiniz.

getHistoricalProcessExitReasons() yöntemi, bir uygulama işleminin ölümüyle ilgili bilgileri içeren ApplicationExitInfo sınıfının örneklerini döndürür. Bu sınıfın bir örneğinde getReason() çağrısı yaparak uygulamanızın neden sonlandırıldığını belirleyebilirsiniz. Örneğin, REASON_CRASH dönüş değeri, uygulamanızda işlenmemiş bir istisna oluştuğunu belirtir. Uygulamanızın, çıkış etkinlikleri için benzersiz olmasını sağlaması gerekiyorsa uygulamaya özel bir tanımlayıcı (ör. getTimestamp() yöntemindeki zaman damgasına dayanan bir karma değeri) koruyabilir.

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. Birlikte ek kaynaklar ve öğeler sağlama veya mevcut kaynakların ve varlıkların değerlerini değiştirme imkanı sağlarlar.

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 başlıca kullanım alanlarından biri özel öğe yüklemedir. Dosya tabanlı kaynakların ve öğelerin çözünürlüğünü yönlendirerek uygulama APK'sı yerine belirli bir dizinde arama yapmasına neden olan bir ResourcesProvider oluşturmak için loadFromDirectory() kullanabilirsiniz. Bu öğelere, APK'da paketlenmiş öğ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 imza türü oluşturur ancak 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ştirmeleri mümkün değildir. Bu, sanal makineler ve uzak masaüstleri gibi sanallaştırma uygulamaları açısından bir sorundur. Çünkü bu uygulamalar, kullanıcının içine tam olarak hangi yazılımın yükleneceğini bilemez.

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 manifestinize yeni android:mimeGroup özelliğiyle bir veri öğesi ekleyin:

<intent-filter>
  <action android:name="android.intent.action.SEND"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:mimeGroup="myMimeGroup"/>
</intent-filter>

android:mimeGroup özelliğinin değeri, çalışma zamanında MIME grubunu tanımlayan rastgele bir dize kimliğidir. Bir MIME grubunun kimliğini PackageManager API sınıfında aşağıdaki yeni yöntemlere geçirerek grubun içeriğine erişebilir ve bu içeriği güncelleyebilirsiniz:

Bir MIME grubuna programatik olarak bir MIME türü eklediğinizde, bu MIME türü, manifest'te açıkça bildirilen statik bir MIME türüyle tam olarak aynı şekilde çalışır.

Otomatik doldurmayla ilgili iyileştirmeler

Android 11, otomatik doldurma hizmetleriyle ilgili 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ını hesaplaması genellikle kullanışlıdır. Görünüm ipucu, özellikle bir imza karması hesaplanırken dahil edilebilecek 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.

Etkinlikleri gösteren veri kümeleri

Android 11, otomatik doldurma hizmetlerinin önerilerini iyileştirmesine yardımcı olmak amacıyla, bir otomatik doldurma hizmetinin veri kümeleri sunduğu ancak kullanıcının bunları seçmediği durumları tespit etme olanağı sunar. Android 11'de FillEventHistory yeni bir TYPE_DATASETS_SHOWN etkinlik türü bildirir. Otomatik doldurma hizmeti kullanıcıya bir veya daha fazla veri kümesi sunduğunda FillEventHistory, bu türde bir etkinlik kaydeder. Otomatik doldurma hizmetleri, kullanıcının sağlanan otomatik doldurma seçeneklerinden herhangi birini belirleyip belirlemediğ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çinde, öneri şeridinde veya benzer bir arayüzde gösterebilir. Şifreler ve kredi kartı numaraları gibi hassas bilgileri korumak için öneriler kullanıcıya gösterilir, ancak kullanıcı 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 doldurmayı klavyelerle entegre etme bölümünü 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ğlam içi bilgiler (ör. kullanıcının ortamında çalan bir şarkının adını göstermek) sunmasını 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 yazılır dosya açıklayıcısı alır.