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ğiniLAYOUT_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:
- Parametresi olmayan
BubbleMetadata.Builder()
kurucusu kullanımdan kaldırıldı. Bunun yerine, iki yeni oluşturucudan birini (BubbleMetadata.Builder(PendingIntent, Icon)
veyaBubbleMetadata.Builder(String)
) kullanın. BubbleMetadata.Builder(String)
numaralı telefonu arayarak kısayol kimliğindenBubbleMetadata
oluşturun. İletilen dize,Notification.Builder
için sağlanan kısayol kimliğiyle eşleşmelidir.- Balon simgeleri oluşturmak için
Icon.createWithContentUri()
veya yenicreateWithAdaptiveBitmapContentUri()
yöntemini kullanın.
5G görsel göstergeleri
Kullanıcıların cihazlarında 5G göstergelerini görüntüleme hakkında bilgi edinmek için Kullanıcılarınıza 5G 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:
QoS API: Yeni Quality of Service API, aşağıdaki yeni işlevlerle birlikte NNAPI'de önceliklendirme ve görev teslim tarihleri için destek içerir:
Bellek alanı giriş/çıkışı: NNAPI 1.3, yürütme ve çıkış için bellek alanları için destek içerir. Bu, aynı verilerin farklı sistem bileşenleri arasında gereksiz kopyalarını kaldırır ve Android nöral ağlarının çalışma zamanı performansını artırır. Bu özellik, aşağıdaki işlevler de dahil olmak üzere
ANeuralNetworksMemoryDesc
veANeuralNetworkMemory
nesneleriyle kullanılacak bir dizi yeni NDK API'si ekler:ANeuralNetworksMemoryDesc_create()
ANeuralNetworksMemoryDesc_free()
ANeuralNetworksMemoryDesc_addInputRole()
ANeuralNetworksMemoryDesc_addOutputRole()
ANeuralNetworksMemoryDesc_setDimensions()
ANeuralNetworksMemoryDesc_finish()
ANeuralNetworksMemory_createFromDesc()
ANeuralNetworksMemory_copy()
Daha fazla bilgi edinmek için nöral ağ belleği alan örneğine bakın.
Dependency API ve senkronizasyon izni desteği: NNAPI 1.3, bağımlıları olan eşzamansız bilgi işlem desteği sunar. Bu sayede küçük zincirli modeller çağrılırken ek yük önemli ölçüde azalır. Bu özellik, aşağıdaki yeni işlevleri ekler:
Kontrol akışı: NNAPI 1.3, diğer modelleri yeni
ANEURALNETWORKS_MODEL
işlenen türünü kullanan bağımsız değişken olarak kabul eden yeniANEURALNETWORKS_IF
veANEURALNETWORKS_WHILE
grafik işlemleriyle ilgili genel kontrol akışı desteği içerir. Buna ek olarak, bu özellik aşağıdaki yeni işlevleri ekler:
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:
MediaCodec.getQueueRequest()
MediaCodec.getOutputFrame()
MediaCodec.LinearBlock.isCodecCopyFreeCompatible()
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()
veMediaCodec.queueInputBuffer()
çağrılarını çağırmak yerine, yuvaya bir DoğrusalBlock/DonanımBuffer ekleyerek dizindeMediaCodec.getQueueRequest
kullanmalıdır. onOutputBufferAvailable()
- Uygulamalar, dizinle
MediaCodec.getOutputBuffer()
işlevini çağırmak yerine, daha fazla bilgi içerenOutputFrame
nesnesini ve DoğrusalBlock/DonanımBuffer arabelleklerini almak için dizinleMediaCodec.getOutputFrame()
birlikte kullanabilir.
MediaCodec'te düşük gecikmeli kod çözme
Android 11'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:
MediaCodec.configure()
kullanarak yeni anahtarıKEY_LOW_LATENCY
0 veya 1 olarak ayarlayın.MediaCodec.setParameters()
kullanarak yeni parametre anahtarınıPARAMETER_KEY_LOW_LATENCY
0 veya 1 olarak ayarlayın.
Yeni AAudio işlevi olan AAudioStream_release()
AAudioStream_close()
işlevi 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 yapabilenSet
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çingetStateDescription()
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çinsetGestureDetectionPassthroughRegion()
ç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.