Ö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'ler hakkında ayrıntılı bilgi için Android API referansı sayfasını ziyaret edin. Yeni API'ler, görünür olmaları için vurgulanmıştır. Ayrıca, platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android R'yi hedefleyen uygulamalar ve tüm uygulamalar için Android 11 davranış değişikliklerinin yanı sıra gizlilik değişikliklerine göz atın.

Yeni deneyimler

Cihaz kontrolleri

Android 11, bağlı harici cihazların kontrollerini göstermek için kullanabileceğiniz yeni bir ControlsProviderService API içerir. Bu kontroller, Android güç menüsündeki Cihaz kontrolleri bölümünde görünür. Daha fazla bilgi için Harici cihazları kontrol etme başlıklı makaleyi inceleyin.

Medya Denetimleri

Android 11, medya denetimlerinin gösterilme şeklini güncelledi. Medya denetimleri, hızlı ayarların yanında görünür. Birden fazla uygulamadan gelen oturumlar, telefonda yerel olarak oynatılan akışlar, harici cihazlarda veya yayınlama oturumlarında algılananlar gibi uzak akışlar ve son oynatılma sırasına göre önceki, devam ettirilebilir oturumları içeren kaydırılabilir bir bantta düzenlenir.

Kullanıcılar, uygulamayı başlatmak zorunda kalmadan önceki oturumları banttan yeniden başlatabilir. Oynatma başladığında kullanıcı, medya kontrolleriyle normal şekilde etkileşim kurar.

Daha fazla bilgi için medya kontrolleri başlıklı makaleyi inceleyin.

Ekranlar

Şelale ekranlar için daha iyi destek

Android 11, cihazın kenarına sarılmış şelale ekranları desteklemek için çeşitli API'ler sağlar. Bu ekranlar, ekran kesiklerine sahip ekranların bir varyantı olarak değerlendirilir. Mevcut DisplayCutout.getSafeInset…() yöntemler artık hem şelale alanlarını hem de kesik alanları önlemek için güvenli içe eklemeyi döndürüyor. Uygulama içeriğinizi şelale alanında oluşturmak için şunları yapın:

  • Şelale içe yerleştirilmesinin tam boyutlarını almak için DisplayCutout.getWaterfallInsets() numaralı telefonu arayın.

  • Pencerenin ekranın tüm kenarlarındaki kesik ve şelale alanlarına genişlemesine izin vermek için pencere düzeni özelliğini layoutInDisplayCutoutMode LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS olarak ayarlayın. Kesik veya şelale alanlarında önemli içerik bulunmadığından emin olmanız gerekir.

Menteşe açısı sensörü ve katlanabilir cihazlar

Android 11, menteşe tabanlı ekran yapılandırmalarına sahip cihazlarda çalışan uygulamaların menteşenin açısını belirlemesini sağlar. Bunun için TYPE_HINGE_ANGLE ile yeni bir sensör ve menteşe açısını izleyip cihazın iki temel parçası arasındaki açıyı derece cinsinden ölçen yeni bir SensorEvent sağlar. Kullanıcı cihazı kullanırken ayrıntılı animasyonlar gerçekleştirmek için bu ham ölçümleri kullanabilirsiniz.

Katlanabilir cihazlar başlıklı makaleyi inceleyin.

Görüşmeler

Görüşme iyileştirmeleri

Android 11, sohbetlerin ele alınma biçiminde çeşitli iyileştirmeler yapar. Görüşmeler, iki veya daha fazla kişi arasında gerçek zamanlı, iki yönlü iletişimlerdir. Bu ileti dizileri özel olarak öne çıkarılır ve kullanıcılar bu ileti dizileriyle etkileşime geçmek için çeşitli yeni seçeneklere sahip olur.

İleti dizileri ve uygulamanızın bunları nasıl destekleyebileceği hakkında daha fazla bilgi için Kişiler ve ileti dizileri bölümüne bakın.

Sohbet balonları

Balonlar, geliştiricilerin sistem genelindeki görüşmeleri göstermesine yardımcı olmak için artık kullanılabilir. Android 10'daki deneysel bir özellik olan Bubbles, geliştirici seçeneği aracılığıyla etkinleştiriliyordu. Android 11'de bu artık gerekli değildir.

Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen bir uygulamanın bildirimleri, yeni ileti dizisi şartlarını karşılamadığı sürece baloncuk olarak gösterilmez. Daha açık belirtmek gerekirse, bildirim bir kısayolla ilişkilendirilmelidir.

Android 11'den önce, bir bildirimin balon olarak gösterilmesini istiyorsanız bildirimin her zaman doküman kullanıcı arayüzü modunda başlatılacak şekilde ayarlandığını açıkça belirtmeniz gerekiyordu. Android 11'den itibaren bu ayarı açıkça yapmanız gerekmez. Bildirim baloncuk şeklindeyse platform, bildirimi her zaman doküman kullanıcı arayüzü modunda açacak şekilde otomatik olarak ayarlar.

Balon performansında bir dizi iyileştirme yapıldı ve kullanıcılar her uygulamada balonları etkinleştirme ve devre dışı bırakma konusunda daha fazla esnekliğe sahip oldu. Deneysel desteği uygulayan geliştiriciler için Android 11'deki API'lerde birkaç değişiklik yapıldı:

5G görsel göstergeleri

Kullanıcıların cihazlarında 5G göstergelerini görüntüleme hakkında bilgi edinmek için Kullanıcılarınıza 5G'de olduklarını bildirme başlıklı makaleyi inceleyin.

Gizlilik

Android 11, kullanıcı gizliliğini iyileştirmek için çok sayıda değişiklik ve kısıtlama sunar. Daha fazla bilgi için Gizlilik sayfasını inceleyin.

Güvenlik

Biyometrik kimlik doğrulama güncellemeleri

Android 11, uygulamanızın verilerinin güvenlik düzeyini kontrol etmenize yardımcı olmak için biyometri kimlik doğrulamasında çeşitli iyileştirmeler sunar. Bu değişiklikler Jetpack Biometric kitaplığında da görünür.

Kimlik doğrulama türleri

Android 11, uygulamanızın desteklediği kimlik doğrulama türlerini beyan etmek için kullanabileceğiniz BiometricManager.Authenticators arayüzünü kullanıma sunar.

Hangi kimlik doğrulama türünün kullanıldığını belirleme

Kullanıcı kimliğini doğruladıktan sonra getAuthenticationType() çağrısını yaparak kullanıcının cihaz kimlik bilgisini mi yoksa biyometrik kimlik bilgisini mi kullanarak kimlik doğruladığını kontrol edebilirsiniz.

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

Android 11, kullanım başına kimlik doğrulama anahtarları kullanılarak kimlik doğrulama için daha fazla destek sunar.

Kullanımdan kaldırılan yöntemler

Android 11'de aşağıdaki yöntemlerin desteği sonlandırıldı:

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

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

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

Android 11, hem ağda hem de diskte veri yedekliğini azaltmak için bu büyük veri kümelerinin paylaşılan veri topakları kullanılarak cihazda önbelleğe alınmasına olanak tanır. Veri kümesi paylaşma hakkında daha fazla bilgi edinmek için büyük veri kümelerini paylaşma hakkındaki ayrıntılı kılavuzu inceleyin.

OTA yeniden başlatma işleminden sonra kullanıcı kimlik bilgileri olmadan dosya tabanlı şifreleme yapma

Cihaz bir OTA güncellemesini tamamlayıp yeniden başlatıldıktan sonra, kimlik bilgisi korumalı depolama alanına yerleştirilen kimlik bilgisi şifrelenmiş anahtarlar (CE), dosya tabanlı şifreleme (FBE) işlemleri için hemen kullanılabilir. Bu, bir OTA güncellemesinden sonra uygulamanızın, kullanıcı PIN'ini, desenini veya şifresini girmeden önce CE anahtarlarını gerektiren işlemleri devam ettirebileceği anlamına gelir.

Performans ve kalite

Kablosuz hata ayıklama

Android 11, Android Debug Bridge (adb) aracılığıyla uygulamanızı iş istasyonunuzdan kablosuz olarak dağıtmayı ve uygulamanızda hata ayıklamayı destekler. Örneğin, hata ayıklama yapılabilir uygulamanızı USB üzerinden fiziksel olarak bağlamadan ve sürücü yükleme gibi yaygın USB bağlantı sorunlarıyla uğraşmadan birden fazla uzak cihaza dağıtabilirsiniz. Daha fazla bilgi için Donanım cihazında uygulama çalıştırma başlıklı makaleyi inceleyin.

ADB artımlı APK yükleme

Bir uygulamada yalnızca küçük bir değişiklik yapılmış olsa bile büyük (2 GB ve üzeri) APK'ların cihaza yüklenmesi uzun sürebilir. ADB (Android Hata Ayıklama Köprüsü) Artımlı APK yükleme, uygulamayı başlatmak için APK'nın yeterli kısmını yükleyip kalan verileri arka planda aktararak bu süreci hızlandırır. adb install, cihaz tarafından destekleniyorsa ve en son SDK Platform-Tools yüklüyse bu özelliği otomatik olarak kullanır. Desteklenmiyorsa varsayılan kurulum yöntemi sessizce kullanılır.

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

adb install --incremental

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

Yerel bellek ayırıcı kullanılarak hata algılama

GWP-ASan, boşaltıldıktan sonra kullanım ve yığın arabellek taşması hatalarını bulmaya yardımcı olan yerel bir bellek ayırıcı özelliğidir. Bu özelliği genel olarak veya uygulamanızın belirli alt süreçleri için etkinleştirebilirsiniz. Daha fazla bilgi için GWP-Asan kılavuzuna bakın.

Neural Networks API 1.3

Android 11, Nöral Ağlar API'sini (NNAPI) genişletir ve iyileştirir.

Yeni işlemler

NNAPI 1.3, TensorFlow Lite'ın yeni kesme şemasını desteklemek için TENSOR_QUANT8_ASYMM_SIGNED adlı yeni bir operant türü sunar.

Ayrıca NNAPI 1.3, aşağıdaki yeni işlemleri kullanıma sunar:

  • QUANTIZED_LSTM
  • IF
  • WHILE
  • ELU
  • HARD_SWISH
  • FILL
  • RANK

Yeni makine öğrenimi denetimleri

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

NDK Thermal API

Cihazlar çok ısındığında CPU ve/veya GPU'yu kısıtlayabilir. Bu da uygulamaları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun bilgi işlem veya sürekli ağ etkinliği içeren uygulama ya da oyunlarda sorunla karşılaşma olasılığı daha yüksektir.

Cihazdaki sıcaklık değişikliklerini izlemek için Android 11'de NDK Thermal API'yi kullanın ve ardından daha düşük güç kullanımı ve daha serin cihaz sıcaklığı sağlamak için işlem yapın. Bu API, Java Thermal API'ye benzer. Termal durum değişikliğiyle ilgili bildirim almak veya mevcut durumu doğrudan sorgulamak için bu API'yi kullanabilirsiniz.

Metin ve giriş

İyileştirilmiş IME geçişleri

Android 11, ekran klavyeleri gibi giriş yöntemi düzenleyicileri (IME'ler) için geçişleri iyileştirmeye yönelik yeni API'ler sunar. Bu API'ler, uygulamanızın içeriğini IME'nin görünmesi ve kaybolması ile senkronize olarak, ayrıca durum ve gezinme çubukları gibi diğer öğelerle uyumlu şekilde ayarlamanızı kolaylaştırır.

Odak herhangi bir EditText üzerindeyken bir IME göstermek için view.getInsetsController().show(Type.ime()) işlevini çağırın. (Bu yöntemi, odaklanan EditText ile aynı hiyerarşide bulunan herhangi bir görünümde çağırabilirsiniz. Özellikle EditText'te çağırmanız gerekmez.) IME'yi gizlemek için view.getInsetsController().hide(Type.ime()) işlevini çağırın. view.getRootWindowInsets().isVisible(Type.ime()) çağrısını yaparak bir IME'nin şu anda görünür olup olmadığını kontrol edebilirsiniz.

Uygulamanızın görünümlerini IME'nin görünmesi ve kaybolmasıyla senkronize etmek için View.setWindowInsetsAnimationCallback()'e bir WindowInsetsAnimation.Callback sağlayarak görünümde bir dinleyici ayarlayın. (Bu dinleyiciyi herhangi bir görünümde ayarlayabilirsiniz. EditText olması gerekmez.) IME, dinleyicinizin onPrepare() yöntemini çağırır, ardından geçişin başında onStart() yöntemini çağırır. Ardından, geçişteki her ilerleme aşamasında onProgress() işlevini çağırır. Geçiş tamamlandığında IME onEnd() çağrısını yapar. Geçişin herhangi bir aşamasında WindowInsetsAnimation.getFraction() işlevini çağırarak geçişin ne kadar ilerlediğini öğrenebilirsiniz.

Bu API'lerin nasıl kullanılacağına dair örnek için yeni WindowInsetsAnimation kod örneğine bakın.

IME animasyonunu kontrol etme

Ayrıca, IME animasyonunu veya gezinme çubuğu gibi başka bir sistem çubuğunun animasyonunu da kontrol edebilirsiniz. Bunu yapmak için önce, pencere içe yerleştirilme değişiklikleri için yeni bir dinleyici ayarlamak üzere setOnApplyWindowInsetsListener() işlevini çağırın:

Kotlin

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

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

Java

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

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

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

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

Kotlin

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

Java

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

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

ICU kitaplıklarında yapılan güncellemeler

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

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

  • Birçok biçimlendirme API'si artık FormattedValue'yi genişleten yeni bir döndürülen nesne türünü destekliyor.
  • LocaleMatcher API, bir oluşturucu sınıfı, java.util.Locale türü için destek ve bir eşleşmeyle ilgili ek veriler içeren bir sonuç sınıfıyla geliştirildi.
  • Unicode 13 artık desteklenmektedir.

Medya

MediaCodec arabellekleri ayırma

Android 11, giriş ve çıkış arabelleklerini ayırırken uygulamalara daha fazla kontrol sağlayan yeni MediaCodec API'leri içerir. Bu sayede uygulamanız hafızayı daha verimli bir şekilde yönetebilir.

Yeni sınıflar:
Yeni yöntemler:

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() yerine dizinle MediaCodec.getOutputFrame() kullanarak OutputFramenesnesi için daha fazla bilgi ve LinearBlock/HardwareBuffer arabellekleri alabilir.

MediaCodec'te düşük gecikmeli kod çözme

Android 11, oyunlar ve diğer gerçek zamanlı uygulamalar için düşük gecikmeli kod çözmeyi desteklemek amacıyla MediaCodec geliştirildi. Bir codec'in düşük gecikmeli kod çözmeyi destekleyip desteklemediğini kontrol etmek için FEATURE_LowLatency değerini MediaCodecInfo.CodecCapabilities.isFeatureSupported() değerine iletebilirsiniz.

Düşük gecikmeli kod çözmeyi etkinleştirmek veya devre dışı bırakmak için aşağıdakilerden birini yapın:

Yeni AAudio işlevi AAudioStream_release()

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

Yeni işlev AAudioStream_release(), akışı serbest bırakır ancak kapatmaz. Bu işlem, kaynakların serbest bırakılmasını sağlar ve yayını bilinen bir durumda bırakır. Nesne, AAudioStream_close() çağrısı yapılana kadar varlığını korur.

MediaParser API

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

USB cihazdan ses yakalama

RECORD_AUDIO izni olmayan bir uygulama, ses yakalama özelliğine sahip bir USB ses cihazına (ör. USB kulaklık) doğrudan erişim isteğinde bulunmak için UsbManager kullanıldığında kullanıcıdan cihazı kullanma iznini onaylamasını isteyen yeni bir uyarı mesajı gösterilir. Sistem, "her zaman kullan" seçeneğini yoksayar. Bu nedenle, kullanıcının bir uygulama erişim istediğinde her seferinde uyarıyı kabul etmesi ve izin vermesi gerekir.

Bu davranışı önlemek için uygulamanızın RECORD_AUDIO iznini istemesi gerekir.

Eşzamanlı mikrofon erişimi

Android 11, AudioRecord, MediaRecorder ve AAudioStream API'lerine yeni yöntemler ekler. Bu yöntemler, seçilen kullanım alanından bağımsız olarak aynı anda çekim yapma özelliğini etkinleştirir ve devre dışı bırakır. Ses Girişi Paylaşımı başlıklı makaleyi inceleyin.

Çıkış değiştirici

Android 11, cast ve mediarouter API'lerini kullanan uygulamalar için yeni bir davranış uygular.

Yayınlama seçeneklerine bir uygulamadan erişmenin yanı sıra geçiş seçenekleri sistem medya oynatıcısında da gösterilir. Bu, kullanıcının izleme ve dinleme bağlamlarını değiştirirken (ör. mutfakta video izlemek yerine telefonda izlemek veya evde ya da arabada ses dinlemek) cihazlar arasında geçiş yaparken sorunsuz bir deneyim yaşamasını sağlar. Çıkış değiştiriciye bakın.

Bağlantı

Kablosuz Passpoint iyileştirmeleri

Android 11'e eklenen Passpoint özellikleri hakkında bilgi edinmek için Passpoint başlıklı makaleyi inceleyin.

Kablosuz Ağ Önerisi API'si genişletildi

Android 11, uygulamanızın ağ yönetimi özelliklerini artırmak için Kablosuz Ağ Önerisi API'sini genişleterek aşağıdakileri sağlar:

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

CallScreeningService güncellemeleri

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

Bir CallScreeningService, READ_CONTACTS iznine sahipse kullanıcının kişilerindeki bir numaradan gelen veya bu numaraya yapılan aramalar olduğunda uygulamaya bildirim gönderilir.

Daha fazla bilgi için Arama kimliği sahteciliğini önleme başlıklı makaleyi inceleyin.

Open Mobile API güncellemeleri

Android 11 ve sonraki sürümlerde OMAPI desteği hakkında bilgi edinmek için Open Mobile API okuyucu desteği başlıklı makaleyi inceleyin.

Performanslı VPN'ler

API düzeyi 30 ve sonraki sürümleri hedefleyen veya API düzeyi 29 ve sonraki sürümlerde kullanıma sunulan cihazlarda çalışan uygulamalar, hem kullanıcı tarafından yapılandırılmış hem de uygulama tabanlı VPN'ler için VPN'lere IKEv2/IPsec uygulayabilir.

VPN'ler işletim sistemine özgü olarak çalışır ve bir uygulamada IKEv2/IPsec VPN bağlantıları kurmak için gereken kodu basitleştirir.

İşlem başına ağ erişim denetimi

Ağ erişimini işlem bazında etkinleştirme hakkında bilgi edinmek için Ağ kullanımını yönetme başlıklı makaleyi inceleyin.

Aynı FQDN ile birden fazla Passpoint yapılandırmasının yüklenmesine izin verme

Android 11'den itibaren, PasspointConfiguration nesnesi için benzersiz bir tanımlayıcı almak üzere PasspointConfiguration.getUniqueId() kullanabilirsiniz. Bu, uygulamanızın kullanıcılarının aynı tam nitelikli alan adıyla (FQDN) birden fazla profil yüklemesine olanak tanır.

Bu işlev, bir operatör ağında birden fazla Mobil Ülke Kodu (MCC) ve Mobil Ağ Kodu (MNC) kombinasyonu dağıttığında ancak yalnızca tek bir FQDN'ye sahip olduğunda faydalıdır. Android 11 ve sonraki sürümlerde, kullanıcı MCC veya MNC içeren bir SIM yüklediğinde Home sağlayıcısıyla aynı ağla eşleşen aynı FQDN'ye sahip birden fazla profil yükleyebilirsiniz.

GNSS anteni desteği

Android 11'de, uygulamanızın Global Navigasyon Uydu Sistemi'nin (GNSS) sağlayabileceği santimetre hassasiyetinde konumlandırmadan daha fazla yararlanmasını sağlayan GnssAntennaInfo sınıfı kullanıma sunulmuştur.

Antena kalibrasyon bilgileri kılavuzundan daha fazla bilgi edinebilirsiniz.

Grafik

NDK resim kod çözücü

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

Kare hızı API'si

Android 11, uygulamaların birden fazla yenileme hızını destekleyen cihazlarda titremeyi azaltmak için sistemle hedefledikleri kare hızını paylaşmasını sağlayan bir API sağlar. Bu API'nin nasıl kullanılacağı hakkında bilgi edinmek için kare hızı kılavuzuna bakın.

Düşük gecikmeli destek isteme ve kontrol etme

Bazı harici ekranlar ve TV'ler gibi belirli ekranlar grafik son işleme gerçekleştirebilir. Bu işlem sonrası işleme, grafikleri iyileştirir ancak gecikmeyi artırabilir. HDMI 2.1'i destekleyen yeni ekranlarda, bu son işleme işlemini kapatarak gecikmeyi en aza indiren bir otomatik düşük gecikme modu (oyun modu olarak da bilinen ALLM) bulunur. ALLM hakkında daha fazla bilgi için HDMI 2.1 spesifikasyonuna bakın.

Bir pencere, varsa otomatik düşük gecikmeli modun kullanılmasını isteyebilir. ALLM, özellikle düşük gecikmenin mümkün olan en iyi grafiklere sahip olmaktan daha önemli olduğu oyun ve video konferansı gibi uygulamalar için kullanışlıdır.

Minimum son işleme özelliğini etkinleştirmek veya devre dışı bırakmak için Window.setPreferMinimalPostProcessing() işlevini çağırın veya pencerenin preferMinimalPostProcessing özelliğini true olarak ayarlayın. Tüm ekranlar minimum son işleme özelliğini desteklemez. Belirli bir ekranın bu özelliği destekleyip desteklemediğini öğrenmek için yeni yöntemi Display.isMinimalPostProcessingSupported() çağırın.

Performanslı grafik hata ayıklama katmanı ekleme

Uygulamalar artık hata ayıklama yapılabilir bir uygulamayla aynı işlevleri sunmak için harici grafik katmanlarını (GLES, Vulkan) yerel uygulama koduna yükleyebilir ancak performans yükü oluşturmaz. Bu özellik, özellikle GAPID gibi araçlarla uygulamanızın profilini oluştururken önemlidir. Uygulamanızın profilini oluşturmak için uygulamayı hata ayıklamaya açık hale getirmek yerine uygulama manifest dosyanıza aşağıdaki meta veri öğesini ekleyin:

<application ... >
    <meta-data android:name="com.android.graphics.injectLayers.enable"
                  android:value="true" />
</application>

Resimler ve kamera

Etkin çekim sırasında bildirim seslerini ve titreşimleri kapatma

Android 11'den itibaren, kamera aktif olarak kullanılırken uygulamanız setCameraAudioRestriction() kullanarak yalnızca titreşimleri, hem sesleri hem de titreşimleri veya hiçbirini kapatabilir.

Android emulatöründe genişletilmiş kamera desteği

Android 11'den itibaren emülatörde kameralar için sunulan genişletilmiş destek hakkında bilgi edinmek istiyorsanız Kamera desteği başlıklı makaleyi inceleyin.

Birden fazla kameranın aynı anda kullanılması için destek

Android 11, hem ön hem de arka kamera dahil olmak üzere aynı anda birden fazla kamera kullanma desteğini sorgulamak için API'ler ekler.

Uygulamanızın çalıştığı cihazda destek olup olmadığını kontrol etmek için aşağıdaki yöntemleri kullanın:

  • getConcurrentCameraIds() aynı uygulama işlemi tarafından yapılandırıldığında, garantili akış kombinasyonlarıyla eşzamanlı olarak akış yapabilen kamera kimliği kombinasyonlarının 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ği, sıralı olmayan birden fazla kare içeriyorsa MediaMetadataRetriever.getImageAtIndex() çağrısını yaparak tek bir kareyi alabilirsiniz.

Erişilebilirlik

Erişilebilirlik hizmeti geliştiricileri için güncellemeler

Özel bir erişilebilirlik hizmeti oluşturursanız Android 11'de aşağıdaki özellikleri kullanabilirsiniz:

  • Erişilebilirlik hizmetinin kullanıcılara yönelik açıklamasında artık düz metne ek olarak HTML ve resimler de kullanılabilir. Bu esneklik, son kullanıcılara hizmetinizin ne yaptığını ve onlara nasıl yardımcı olabileceğini açıklamayı kolaylaştırır.
  • Kullanıcı arayüzü öğesinin durumunun contentDescription değerinden daha anlamlı bir açıklamasıyla çalışmak iç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 getirecek yeni Android 11 araçları başlıklı makaleyi okuyun.

Kaynak yükleyiciler

Android 11, uygulamaların kaynakların aranma ve yüklenme şeklini dinamik olarak genişletmesine olanak tanıyan yeni bir API'yi kullanıma sunar. Yeni işlevleri sağlamaktan birincil olarak yeni API sınıfları ResourcesLoader ve ResourcesProvider sorumludur. Bu iki işlev birlikte, ek kaynak ve öğe sağlama veya mevcut kaynakların ve öğelerin değerlerini değiştirme olanağı sunar.

ResourcesLoader nesneleri, bir uygulamanın Resources örneğine ResourcesProvider nesneleri sağlayan kapsayıcılarıdır. ResourcesProvider nesneleri ise APK'lardan ve kaynak tablolarından kaynak verilerini yükleme yöntemleri sağlar.

Bu API'nin birincil kullanım alanlarından biri özel öğe yüklemedir. Dosya tabanlı kaynakların ve öğelerin çözünürlüğünü yönlendiren bir ResourcesProvider oluşturmak için loadFromDirectory() kullanabilirsiniz. Bu, uygulama APK'sı yerine belirli bir dizini aramasına neden olur. Bu öğelere, APK'da paketlenmiş öğelerde olduğu gibi AssetManager API sınıfındaki open() yöntem ailesi aracılığıyla erişebilirsiniz.

APK imza şeması v4

Android 11, APK İmza Şeması v4 desteği ekler. Bu şema, ayrı bir dosyada (apk-name.apk.idsig) yeni bir tür imza oluşturur ancak diğer açılardan v2 ve v3'e benzer. APK'da herhangi bir değişiklik yapılmaz. Bu şema, APK yüklemeyi hızlandıran ADB artımlı APK yüklemesini destekler.

Dinamik intent filtreleri

Bir uygulamanın intent alabilmesi için derleme zamanında, uygulama manifest dosyasında bir intent filtresi tanımlayarak hangi veri türlerini alabileceğini belirtmesi gerekir. Android 10 ve önceki sürümlerde, uygulamaların çalışma zamanında intent filtrelerini değiştirmesi mümkün değildir. Kullanıcının içine ne tür yazılım yükleyeceğini tam olarak bilemedikleri için bu, sanallaştırma uygulamaları (ör. sanal makineler ve uzak masaüstü bilgisayarlar) için bir sorundur.

Android 11, bir uygulamanın intent filtresinde dinamik bir MIME türü grubu tanımlamasına ve çalışma zamanında programatik olarak değiştirmesine olanak tanıyan yeni bir manifest öğesi olan MIME gruplarını kullanıma sunar. MIME grubu kullanmak için uygulama manifest dosyanıza yeni android:mimeGroup özelliğini içeren bir veri öğesi ekleyin:

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

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

Bir MIME grubuna programatik olarak eklediğiniz MIME türü, manifest dosyasında açıkça tanımlanan statik MIME türüyle tam olarak aynı şekilde çalışır.

Otomatik doldurma iyileştirmeleri

Android 11, otomatik doldurma hizmetleri için iyileştirmeler sunar.

AssistStructure.ViewNode'daki ipucu tanımlayıcıları

Otomatik doldurma hizmetlerinin, görünümün özelliklerine göre bir görünüm için imza karması hesaplaması genellikle yararlıdır. Görüntüleme ipucu, özellikle imza karması hesaplanırken dahil edilmesi gereken iyi bir özelliktir ancak ipucu dizesi telefonun yerel ayarlarına göre değişebilir. Android 11, bu sorunu çözmek için AssistStructure.ViewNode öğesini, bir görünümün ipucu metninin kaynak tanımlayıcısını döndüren yeni bir getHintIdEntry() yöntemiyle genişletir. Bu yöntem, imza karmalarını hesaplamak için kullanabileceğiniz yerel ayara bağlı olmayan bir değer sağlar.

Veri kümelerinde gösterilen etkinlikler

Android 11, otomatik doldurma hizmetlerinin önerilerini iyileştirmesine yardımcı olmak için bir otomatik doldurma hizmetinin veri kümeleri sunduğu ancak kullanıcının hiçbirini seçmediği durumları belirlemenin bir yolunu sunar. Android 11'de FillEventHistory, yeni bir TYPE_DATASETS_SHOWN etkinlik türünü bildirir. FillEventHistory, otomatik doldurma hizmeti kullanıcıya bir veya daha fazla veri kümesi sunduğunda bu tür bir etkinlik günlüğe kaydeder. Otomatik doldurma hizmetleri, kullanıcının sağlanan otomatik doldurma seçeneklerinden herhangi birini seçip seçmediğini belirlemek için bu etkinlikleri mevcut TYPE_DATASET_SELECTED etkinliğiyle birlikte kullanabilir.

IME entegrasyonu

Klavyeler ve diğer IME'ler artık otomatik doldurma önerilerini açılır menü yerine satır içi bir öneri şeridinde veya benzer bir arayüzde gösterebilir. Şifre ve kredi kartı numarası gibi hassas bilgileri korumak için öneriler kullanıcıya gösterilir ancak kullanıcı bir öneriyi seçene kadar IME tarafından bilinmez. IME'lerin ve şifre yöneticilerinin bu özelliği nasıl destekleyebileceği hakkında bilgi edinmek için Otomatik doldurma özelliğini klavyelerle entegre etme başlıklı makaleyi inceleyin.

İçerik yakalama hizmetiyle veri paylaşımı

Android 11'den itibaren uygulamanız, cihazın içerik yakalama hizmetiyle veri paylaşabilir. Bu özellik, cihazın bağlama dayalı zeka sunmasını (ör. kullanıcının ortamında çalınan bir şarkının adını gösterme) kolaylaştırır.

Uygulamanızdaki verileri içerik yakalama hizmetinin kullanımına sunmak için ContentCaptureManager örneğinde shareData() yöntemini çağırın. Sistem veri paylaşımı isteğini kabul ederse uygulamanız, içerik yakalama hizmetiyle paylaşacağı salt yazma özellikli bir dosya tanımlayıcısı alır.