Android 10 özellikleri ve API'leri

Android 10, kullanıcılar ve geliştiriciler için muhteşem özellikler ve olanaklar sunar. Bu dokümanda, geliştiricilerin kullanabileceği özellikler vurgulanmaktadır.

API'ler hakkında bilgi edinmek için API fark raporunu okuyun veya Android API referansını ziyaret edin. "API düzeyi 29'da eklenen" API'leri bulun. Platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android 10 davranış değişikliklerine (API düzeyi 29'u hedefleyen uygulamalar ve tüm uygulamalar için) ve gizlilik değişikliklerine göz atmayı da unutmayın.

Güvenlik geliştirmeleri

Android 10'da aşağıdaki bölümlerde özetlenen bir dizi güvenlik özelliği kullanıma sunulmuştur.

Geliştirilmiş biyometrik kimlik doğrulama iletişim kutuları

Android 10, biyometrik kimlik doğrulama desteği için aşağıdaki iyileştirmeleri sunar:

  • Biyometrik kimlik doğrulama özelliği için yapılan bir kontrol.
  • Kullanıcıların biyometrik girişlerini kullanarak kimlik doğrulaması yapamadığı durumlarda cihaz PIN'i, deseni veya şifresiyle kimlik doğrulamasına olanak tanıyan yedek mekanizma.
  • Kullanıcı, örtülü bir biyometrik yöntemle kimlik doğrulaması yaptıktan sonra sisteme, kullanıcı onayı istememesini bildiren bir ipucudur. Örneğin, bir kullanıcı yüzle kimlik doğrulama yöntemini kullanarak kimlik doğruladıktan sonra sisteme başka onaya gerek olmadığını bildirebilirsiniz.

Doğrudan APK'dan yerleştirilmiş DEX kodunu çalıştır

Android 10'dan itibaren, platforma, yerleşik DEX kodunu doğrudan uygulamanızın APK dosyasından çalıştırabilirsiniz. Bir saldırgan, cihazda yerel olarak derlenmiş kodda değişiklik yapmayı başarmışsa bu seçenek saldırının önlenmesine yardımcı olabilir.

Daha fazla bilgi için Doğrudan APK'dan yerleştirilmiş DEX kodu çalıştırma bölümünü inceleyin.

TLS 1.3 desteği

Android 10'a TLS 1.3 desteği eklenmiştir. TLS 1.3, TLS standardının önemli bir revizyonudur. Bu sürümde performans avantajları ve gelişmiş güvenlik özellikleri bulunur. Karşılaştırmalarımız, güvenli bağlantıların TLS 1.3 ile TLS 1.2'ye kıyasla %40'a kadar daha hızlı kurulabileceğini gösteriyor.

TLS 1.3 uygulamamız hakkında daha fazla bilgi için Tüm uygulamalar için davranış değişiklikleri sayfasındaki TLS bölümüne bakın.

Public Conscrypt API'si

Conscrypt güvenlik sağlayıcısı, Android 10'dan itibaren TLS işlevi için herkese açık bir API'ye sahip.

android.net.ssl altındaki sınıfların koleksiyonu, genel javax.net.ssl API'lerde bulunmayan işlevlere erişmek için statik yöntemler içerir. Bu sınıfların adları, karşılık gelen javax.net.ssl sınıfının çoğulu olarak anlaşılabilir. Örneğin, javax.net.ssl.SSLSocket örneklerinde çalışan kod, bunun yerine SSLSockets kaynaklarını kullanabilir.

Bağlantı özellikleri

Android 10, ağ ve bağlantıyla ilgili çeşitli iyileştirmeler içerir.

Kablosuz ağ bağlantısı API'sı

Android 10'a eşler arası bağlantı desteği eklendi. Bu özellik, uygulamanızın, istenen ağın özelliklerini açıklamak için WifiNetworkSpecifier kullanarak kullanıcıdan cihazın bağlı olduğu erişim noktasını değiştirmesini istemesini sağlar. Eşler arası bağlantı, Chromecast ve Google Home donanımı gibi ikincil cihazlar için önyükleme yapılandırması gibi ağ sağlamayan amaçlar için kullanılır.

Daha fazla bilgi edinmek için Eşler arası bağlantı için Wi-Fi Network Request API bölümüne bakın.

Kablosuz ağ önerisi API'sı

Android 10, kullanıcıdan kablosuz erişim noktasına bağlanmasını istemesi için uygulamanız için destek sağlar. Hangi ağa bağlanacağınızla ilgili öneriler sağlayabilirsiniz. Platform, kabul edilecek erişim noktasını nihai olarak sizin ve diğer uygulamalarınızdan gelen girdilere göre seçer.

Bu özellik hakkında daha fazla bilgi için Kablosuz bağlantı önerisi bölümüne bakın.

Kablosuz ağ yüksek performanslı ve düşük gecikmeli modlarında iyileştirmeler

Android 10, gecikmeyi en aza indirmek için temel modeme ipucu sağlamanıza olanak tanır.

Android 10, Wi-Fi Lock API'nin kapsamını genişleterek yüksek performans ve düşük gecikme modunu etkili bir şekilde destekler. Kablosuz güç tasarrufu özelliği, yüksek performans ve düşük gecikme modu için devre dışıdır. Modem desteğine bağlı olarak, düşük gecikme modunda daha fazla gecikme optimizasyonu etkinleştirilebilir.

Düşük gecikme modu yalnızca kilidi alan uygulama ön planda çalışırken ve ekran açıkken etkinleştirilir. Düşük gecikme modu özellikle gerçek zamanlı mobil oyun uygulamaları için yararlıdır.

DNS çözümleyicide uzman aramalar

Android 10, hem temizleme metin aramalarını hem de DNS-over-TLS modunu kullanarak özel DNS aramaları için yerel destek ekler. Daha önce platform DNS çözümleyicisi yalnızca bir adla ilişkilendirilen IP adreslerinin aranmasına izin veren ancak başka hiçbir kayıt türünü desteklemeyen A ve AAAA kayıtlarını destekliyordu. DnsResolver API; SRV, NAPTR ve diğer kayıt türlerini arayabilmenizi sağlayan genel, eşzamansız çözünürlük sunar. Yanıtı ayrıştırmanın, gerçekleştirilecek uygulamaya bırakıldığını unutmayın.

NDK tabanlı uygulamalar için bkz. android_res_nsend.

Kablosuz Kolay Bağlantı

Android 10, desteği sonlandırılmış WPS'in yerine geçerek bir eş cihaza kablosuz ağ kimlik bilgileri sağlamak için Easy Connect'i kullanmanıza olanak tanır. Uygulamalar, ACTION_PROCESS_WIFI_EASY_CONNECT_URI niyetini kullanarak Easy Connect'i kurulum ve temel hazırlık akışlarına entegre edebilir.

Bu özellik hakkında daha fazla bilgi edinmek için Wi-Fi Easy Connect bölümüne bakın.

Wi-Fi Direct bağlantı API'sı

WifiP2pConfig ve WifiP2pManager API sınıfları, önceden belirlenmiş bilgileri kullanarak Wi-Fi Doğrudan ile hızlı bağlantı kurma özelliklerini desteklemek için Android 10'da güncellemeler içerir. Bu bilgiler, Bluetooth veya NFC gibi bir yan kanal üzerinden paylaşılır.

Aşağıdaki kod örneğinde, önceden belirlenmiş bilgileri kullanarak nasıl grup oluşturulacağı gösterilmektedir:

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

Java

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

Kimlik bilgilerini kullanarak bir gruba katılmak için manager.createGroup() kısmını aşağıdakiyle değiştirin:

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

Bluetooth LE Bağlantı Yönlü Kanallar (CoC)

Android 10, uygulamanızın iki BLE cihaz arasında daha büyük veri akışlarını aktarmak için BLE CoC bağlantılarını kullanmasına olanak tanır. Bu arayüz, uygulamayı basitleştirmek için Bluetooth ve bağlantı mekanizmasını soyutlar.

Telefon özellikleri

Android 10, telefon özellikleriyle ilgili çeşitli iyileştirmeler içerir.

Arama kalitesiyle ilgili iyileştirmeler

Android 10, bu özelliği destekleyen cihazlarda, ağ ile giden ve ağdan gelen devam eden IP Multimedya Alt Sistemi (IMS) çağrılarının kalitesi hakkında bilgi toplama özelliği sunar.

Arama süzme ve arayan kimliği

Android 10, uygulamanıza kullanıcının adres defterinde olmayan çağrıları potansiyel spam aramalar olarak tanımlaması ve spam çağrılarının kullanıcı adına sessiz bir şekilde reddedilmesini sağlayan bir araç sunar. Engellenen bu çağrılarla ilgili bilgiler, aramaları cevaplamadığında kullanıcıya daha fazla şeffaflık sağlamak için çağrı kaydına engellenen çağrılar olarak kaydedilir. Bu API'nin kullanılması, arama filtreleme ve arayan kimliği işlevi sağlamak için kullanıcıdan READ_CALL_LOG izinleri alma zorunluluğunu ortadan kaldırır.

Çağrı yönlendirme hizmeti API'si

Android 10, aramaların amaçlarının işlenme şeklini değiştirir. NEW_OUTGOING_CALL yayını kullanımdan kaldırıldı ve bu yayının yerini CallRedirectionService API aldı. CallRedirectionService API, Android platformu tarafından yapılan giden çağrıları değiştirmeniz için arayüzler sağlar. Örneğin, üçüncü taraf uygulamaları aramaları iptal edip VoIP üzerinden yönlendirebilir.

Harici depolama alanında dosya oluşturma konusunda iyileştirmeler

Android 10, kapsamlı depolama alanı sunmanın yanı sıra harici depolamayla ilgili olarak aşağıdaki özellikleri de sunar:

Medya ve grafikler

Android 10'da aşağıdaki yeni medya ve grafik özellikleri ile API'ler kullanıma sunuluyor:

Ses girişi paylaşılıyor

Android 10'da, iki uygulamaya ses girişini aynı anda paylaşma özelliği eklendi. Ayrıntılı bilgi için Ses girişi paylaşma başlıklı makaleye bakın.

Ses oynatma kaydı

Android 10, bir uygulamaya diğer uygulamalardaki sesleri yakalama özelliği sunar. Ayrıntılı bilgi için Oynatma kaydı bölümünü inceleyin.

MediaStyle bildirimlerinde arama çubuğu

Android 10 sürümünden itibaren MediaStyle bildirimlerinde arama çubuğu gösterilir. Arama çubuğu, PlaybackState.getPosition() tarihinden itibaren oynatmanın ilerleme durumunu gösterir. Bazı durumlarda sarma çubuğu, oynatma programındaki bir konuma gitmek için kullanılabilir. Arama çubuğunun görünümü ve davranışı şu kurallarla kontrol edilir:

  • Arama çubuğu, etkin bir MediaSession varsa ve süresi (MediaMetadata.METADATA_KEY_DURATION tarafından belirtilir) sıfırdan büyükse görünür. Yani, çubuk canlı yayınlar ve radyo yayınları gibi belirli olmayan akışlar için görünmez.
  • Oturumda ACTION_SEEK_TO uygulanırsa kullanıcı, oynatma konumunu kontrol etmek için arama çubuğunu sürükleyebilir.

Yerel MIDI API'si

Android Yerel MIDI API (AMidi), uygulama geliştiricilerine C/C++ kodu ile MIDI verileri gönderme ve alma olanağı verir, C/C++ ses/kontrol mantığıyla daha yakından entegre olur ve JNI ihtiyacını en aza indirir.

Daha fazla bilgi için Android Yerel MIDI API'si konusuna bakın.

MediaCodecInfo iyileştirmeleri

Android 10, MediaCodecInfo'e codec hakkında daha fazla bilgi veren yöntemler ekler.

Daha fazla bilgi için Medya codec'leri konusuna bakın.

Termal API

Cihazlar çok ısındığında CPU ve/veya GPU'yu daraltabilirler. Bu da uygulamaları ve oyunları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun işlem gücü veya sürekli ağ etkinliği kullanan uygulamaların sorun yaşama olasılığı daha yüksektir. Bu uygulamalar yonga seti ve çekirdek frekansları, entegrasyon seviyeleri ve cihaz ambalajı ile form faktörüne göre cihazlar arasında değişiklik gösterebilir.

Android 10'da, uygulamalar ve oyunlar bir termal API kullanarak cihazdaki değişiklikleri izleyebilir ve normal sıcaklığı geri yüklemek için daha düşük güç kullanımını sağlayacak işlemler yapabilir. Uygulamalar PowerManager'da bir dinleyici kaydeder. Bu işleyici aracılığıyla sistem, hafif ve orta kuvvette, ciddi, kritik, acil durum ve kapatma durumları arasında devam eden termal durumu raporlar.

Cihaz termal stres bildirdiğinde, uygulama ve oyunlar güç kullanımını çeşitli şekillerde azaltmak için devam eden aktiviteleri kapatarak yardımcı olabilir. Örneğin, akış uygulamaları çözünürlük/bit hızı veya ağ trafiğini azaltabilir, kamera uygulaması flaş veya yoğun görüntü iyileştirmeyi devre dışı bırakabilir, bir oyun kare hızını veya poligon tasarımını azaltabilir, medya uygulaması hoparlör ses düzeyini azaltabilir ve harita uygulamaları GPS'i kapatabilir.

Thermal API için yeni bir cihaz HAL katmanı gerekir. Bu katman, şu anda Android 10 çalıştıran Pixel cihazlarda desteklenmektedir. Cihaz üreticisi iş ortaklarımızla birlikte çalışarak ekosisteme mümkün olduğunca hızlı bir şekilde kapsamlı destek sağlamak için çalışıyoruz.

Kamera ve resimler

Android 10'da kamera ve resimlerle ilgili aşağıdaki yeni özellikler kullanıma sunuluyor:

Tek renkli kamera desteği

Android 9 (API düzeyi 28) ilk olarak tek renkli kamera özelliğini kullanıma sundu. Android 10, tek renkli kamera desteğine çeşitli geliştirmeler ekler:

  • Bellek verimliliğini artırmak için Y8 akış biçimi desteği.
  • Tek renkli ham DNG yakalama desteği.
  • Normal tek renkli kamera ile yakın kızılötesi kameraları birbirinden ayırt etmek için MONO ve NIR CFA numaralandırmalarının kullanıma sunulması.

Yerel tek renkli görüntü yakalamak için bu özelliği kullanabilirsiniz. Mantıklı bir çok kameralı cihaz, düşük ışıkta daha iyi görüntü kalitesi elde etmek için fiziksel alt kamera olarak tek renkli bir kamera kullanabilir.

Dinamik Derinlik Biçimi

Android 10'dan itibaren kameralar, Dinamik Derinlik Biçimi (DDF) adlı yeni bir şema kullanarak bir resmin derinlik verilerini ayrı bir dosyada depolayabiliyor. Uygulamalar hem JPG resmini hem de derinlik meta verilerini isteyebilir. Bu bilgileri kullanarak orijinal resim verilerini değiştirmeden işleme sonrasında istedikleri bulanıklaştırma işlemini uygulayabilirler.

Bu biçimin spesifikasyonunu okumak için Dinamik Derinlik Biçimi konusuna bakın.

Yüksek Verimli Resim Dosyası Biçimi

Yüksek Verimli Resim Dosyası (HEIF) biçimi, diğer dosya biçimlerine kıyasla daha yüksek kaliteli kodlama ve daha küçük dosya boyutu sunan standart bir resim ve video biçimidir.

Dosya biçimi hakkında daha fazla bilgi için HEIC bölümüne bakın.

Çoklu kameradaki iyileştirmeler

Android 10, Android 9'da (API düzeyi 28) kullanıma sunulan bir özellik olan birden fazla kameranın tek bir mantıksal kamerada birleştirilmesi özelliğini iyileştiriyor. Kamera2 API'sine aşağıdakiler eklendi:

  • isSessionConfigurationSupported(SessionConfiguration sessionConfig): İletilen oturum yapılandırmasının, kamera çekimi oturumu oluşturmak için kullanılıp kullanılamayacağını sorgulamanıza olanak tanır.

  • LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID: Mantıksal bir kamera cihazını destekleyen etkin fiziksel kameranın kimliğini belirlemenize olanak tanır. Döndürülen kimlikleri, daha iyi güç verimliliği elde etmek amacıyla mantıksal akışlar ve fiziksel alt kamera akışları istemek için kullanabilirsiniz.

Accessibility services API (Erişilebilirlik hizmetleri API'si)

Android 10'da aşağıdaki yeni erişilebilirlik hizmeti özellikleri ve API'leri kullanıma sunuluyor:

AccessibilityNodeInfo giriş tuşu işareti

Android 10'dan itibaren, belirli bir AccessibilityNodeInfo öğesinin klavye veya tuş takımındaki bir metin giriş tuşunu temsil edip etmediğini belirlemek için isTextEntryKey() yöntemini çağırabilirsiniz.

Erişilebilirlik iletişim kutusu sesli geri bildirim

Kullanıcıların bir erişilebilirlik hizmetini başlatmak için erişilebilirlik kısayolunu uygulaması gerektiğinde, Android 10, hizmet tarafından istendiğinde bir metin okuma isteminin kullanılmasına izin verir.

Hareketle gezinme etkinleştirildiğinde erişilebilirlik kısayolu

Android 10'da hareketle gezinme özelliği etkinleştirildiğinde erişilebilirlik düğmesi görünmez veya seçilemez. Erişilebilirlik hizmetleri menüsüne erişmek için kullanıcıların aşağıdaki hareketlerden birini yapması gerekir:

  • İki parmakla yukarı kaydırın.
  • İki parmağınızla yukarı kaydırıp basılı tutun.

Fiziksel klavyeler için erişilebilirlik kısayolu

Android 10'da kullanıcılar Ctrl+Alt+Z tuşlarına basarak fiziksel klavyede erişilebilirlik kısayolunu tetikleyebilir.

Klavye kumandası iyileştirmesi

Android 10'da erişilebilirlik hizmetleri, cihaz bir sabit klavyenin takılı olduğunu algılamış olsa bile yumuşak klavyenin görüntülenmesini isteyebilir. Kullanıcılar bu davranışı geçersiz kılabilir.

Kullanıcı tanımlı erişilebilirlik zaman aşımları

Android 10'da getRecommendedTimeoutMillis() API kullanıma sunuldu. Bu yöntem, etkileşimli ve etkileşimli olmayan kullanıcı arayüzü öğeleri için kullanıcı tanımlı zaman aşımları için destek sağlar. Döndürülen değer, hem kullanıcı tercihlerinden hem de erişilebilirlik hizmeti API'lerinden etkilenir.

Otomatik doldurma iyileştirmeleri

Android 10, otomatik doldurma hizmetinde aşağıdaki iyileştirmeleri içerir.

Uyumlulukla ilgili otomatik doldurma istekleri

Otomatik doldurma isteğinin uyumluluk modu aracılığıyla oluşturulup oluşturulmadığını belirlemek için FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST işaretini kullanabilirsiniz.

Kullanıcı adı ve şifreyi aynı anda kaydedin

Bir uygulamanın kullanıcı adını, şifreyi ve diğer alanları görüntülemek için birden fazla etkinlik kullandığı durumları SaveInfo.FLAG_DELAY_SAVE işaretini kullanarak destekleyebilirsiniz.

Kaydet kullanıcı arayüzüyle kullanıcı etkileşimi

İletişim kutusunda bir işlem işleyici ayarlayarak ve ilgili şifre uzaktan görünümünün görünürlüğünü değiştirerek, kaydetme iletişim kutusundaki bir şifre alanını gösterebilir ve gizleyebilirsiniz.

Veri kümelerini güncelleme desteği

Otomatik doldurma özelliği mevcut şifreleri güncelleyebilir. Örneğin, bir kullanıcı zaten bir şifre depoladıysa ve yeni bir şifre kaydettiyse Otomatik Doldurma özelliği, kullanıcıdan yeni bir şifre kaydetmek yerine mevcut şifresini güncellemesini ister.

Alan sınıflandırma iyileştirmeleri

Android 10, Field Classification API'de aşağıdaki iyileştirmeleri içerir.

UserData.Builder oluşturucu

UserData.Builder kurucusu, Builder kalıbına daha iyi uyum sağlayacak şekilde değiştirildi.

Bir Değerin birden fazla Kategori Kimliği türüyle eşlenmesine izin ver

Artık Android 10'da UserData.Builder kullanırken bir değeri birden fazla kategori kimliği türüyle eşleyebilirsiniz. Önceki sürümlerde, bir değerin birden fazla kez eklenmesi durumunda bir istisna atılıyordu.

Kredi kartı numaraları için gelişmiş destek

Alan sınıflandırma artık dört basamaklı sayıları kredi kartı numarasının son dört hanesi olarak algılayabiliyor.

Uygulamaya özel alan sınıflandırması desteği

Android 10'a eklenen FillResponse.setUserData() özelliği, oturum süresince uygulamaya özel kullanıcı verilerini ayarlamanıza olanak tanır. Bu, otomatik doldurma hizmetinin, uygulamaya özel içeriğe sahip alanlardaki türleri algılamasına yardımcı olur.

Kullanıcı arayüzü ve sistem kontrolleri

Android 10, kullanıcı arayüzüyle ilgili aşağıdaki iyileştirmeleri sunar:

JVMTI PopFrame sınırlarını destekleme

Android 10, Android JVMTI uygulamasında can_pop_frames özelliği için destek sağlar. Hata ayıklama sırasında bu özellik, bir ayrılma noktasında duraklatıp yerel ayarları, genel ayarları veya bir işlevin uygulamasını ayarladıktan sonra işlevleri yeniden çalıştırmanıza olanak tanır. Daha fazla bilgi için Oracle'ın Pop Frame referans sayfasına göz atın.

Yüzey denetimi API'si

Android 10, sistem birleştiriciye (SurfaceFlinger) alt düzey erişim için SurfaceControl API sunar. Çoğu kullanıcı için SurfaceView birleştiriciden yararlanmanın doğru yoludur. SurfaceControl API bazı durumlarda faydalı olabilir. Örneğin:

  • Birden fazla yüzeyi senkronize etme
  • Çapraz işlem yüzey yerleştirme
  • Alt düzey yaşam boyu yönetim

SurfaceControl API hem SDK hem de NDK bağlamalarında kullanılabilir. NDK uygulaması, arabelleklerin birleştirici ile manuel olarak değişimini sağlayan bir API içerir. Bu, BufferQueue sınırlamalarıyla karşılaşan kullanıcılar için bir alternatif sağlar.

WebView açılmamış oluşturucu algılama

Android 10'da WebView'in yanıt vermediği durumları tespit etmek için kullanabileceğiniz WebViewRenderProcessClient soyut sınıfı bulunur. Bu sınıfı kullanmak için:

  1. Kendi alt sınıfınızı tanımlayın ve bu alt sınıfın onRenderProcessResponsive() ile onRenderProcessUnresponsive() yöntemlerini uygulayın.
  2. WebViewRenderProcessClient öğenizin bir örneğini bir veya daha fazla WebView nesneye ekleyin.
  3. WebView yanıt vermezse sistem, WebView ve WebViewRenderProcess ileterek istemcinin onRenderProcessUnresponsive() yöntemini çağırır. (WebView tek işlemliyse WebViewRenderProcess parametresi null olur.) Uygulamanız, kullanıcıya oluşturma işlemini durdurmak isteyip istemediğini soran bir iletişim kutusu göstermek gibi uygun işlemleri yapabilir.

WebView yanıt vermezse sistem düzenli aralıklarla (en fazla beş saniyede bir) onRenderProcessUnresponsive() öğesini çağırır, ancak başka bir işlem yapmaz. WebView tekrar duyarlı hale gelirse sistem onRenderProcessResponsive() öğesini yalnızca bir kez çağırır.

Ayar panelleri

Android 10'da, uygulamaların kullanıcılara kendi uygulamaları bağlamında ayarlar göstermesine olanak tanıyan Settings Panels API'si kullanıma sunuldu. Bu API, kullanıcıların uygulamayı kullanmak için NFC veya Mobil veri gibi ayarları değiştirmek üzere Ayarlar'a girmesini önlüyor.

Şekil 1. Kullanıcı, cihaz ağa bağlı değilken bir web sayfası açmaya çalışır. Chrome, İnternet Bağlantısı ayarları panelini açar...

Şekil 2. Kullanıcı Chrome uygulamasından çıkmadan kablosuz bağlantıyı açıp bir ağ seçebilir.

Örneğin, bir kullanıcının cihazı uçak modundayken bir web tarayıcısını açtığını varsayalım. Android 10'dan önce uygulama yalnızca kullanıcının bağlantıyı geri yüklemek için Ayarlar'ı açmasını isteyen genel bir mesaj gösterebiliyordu. Android 10 ile tarayıcı uygulaması; uçak modu, kablosuz bağlantı (yakındaki ağlar dahil) ve mobil veri gibi önemli bağlantı ayarlarını gösteren bir satır içi panel görüntüleyebilir. Bu panel sayesinde kullanıcılar uygulamadan ayrılmadan bağlantıyı geri yükleyebilirler.

Ayarlar paneli görüntülemek için aşağıdaki Settings.Panel işlemlerinden birini kullanarak intent tetikleyin:

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

Java

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type şunlardan biri olabilir:

ACTION_INTERNET_CONNECTIVITY
Uçak modu, Kablosuz ve Mobil Veri gibi internet bağlantısıyla ilgili ayarları gösterir.
ACTION_WIFI
Kablosuz ayarlarını gösterir ancak diğer bağlantı ayarlarını göstermez. Bu özellik, büyük boyutlu yüklemeler veya indirme işlemleri gerçekleştirmek için kablosuz bağlantıya ihtiyaç duyan uygulamalar için yararlıdır.
ACTION_NFC
Yakın alan iletişimi (NFC) ile ilgili tüm ayarları gösterir.
ACTION_VOLUME
Tüm ses akışları için ses düzeyi ayarlarını gösterir.

Paylaşım iyileştirmeleri

Android 10, paylaşımla ilgili çeşitli iyileştirmeler sunar:

Paylaşım Kısayolları API'sı

Direct Share API'lerin yerini Sharing Kısayollar API'si aldı.

Paylaşım Kısayolları API'si, sonuçları istek üzerine tepkisel olarak almak yerine, uygulamaların doğrudan paylaşım hedeflerini önceden yayınlamasına olanak tanır. ShortcutManager bu şekilde çalışır. İki API birbirine benzediğinden, her iki özelliğin kullanımını kolaylaştırmak için ShortcutInfo API'yi genişlettik. Paylaşım Kısayolları API'si ile, kategorileri veya kullanıcıları bir paylaşım hedefine doğrudan atayabilirsiniz. Paylaşım hedefleri, aynı uygulama tarafından güncellenene veya uygulama kaldırılana kadar sistemde kalır.

Eski Direct Share mekanizması çalışmaya devam eder, ancak bu mekanizmayı kullanan uygulamalar, Shared Kısayollar API'sini kullanan uygulamalara göre daha düşük önceliğe sahiptir.

ShortcutInfo.Builder, paylaşım hedefi hakkında ek bilgi sağlama yöntemleri ekler ve bunları geliştirir.

Doğrudan paylaşım hedefleri

Dinamik bir kısayolu doğrudan paylaşım hedefi olarak yayınlayabilirsiniz. Doğrudan paylaşım hedeflerini yayınlama konusunu inceleyin.

ShortcutManagerCompat, eski DirectShare API ile geriye dönük uyumluluk sağlayan yeni bir AndroidX API'dir. Paylaşım hedeflerini yayınlamanın tercih edilen yöntemi budur.

Metin önizleniyor

Bir uygulama metin içeriği paylaştığında, Sharesheet kullanıcı arayüzünde içeriğin isteğe bağlı bir önizlemesini gösterebilir.

Bkz. Zengin metin önizlemeleri ekleme

Daha fazla bilgi

Uygulamaların nasıl veri paylaşabileceği hakkında daha fazla bilgi için Diğer uygulamalara basit veriler gönderme ve Diğer uygulamalardan basit veriler alma konularına göz atın.

Koyu tema

Android 10, hem Android sistem kullanıcı arayüzü hem de cihazda çalışan uygulamalar için geçerli olan koyu tema sunar. Tam bilgi için Koyu tema konusuna bakın.

Ön plan hizmeti türleri

Android 10'da, belirli bazı hizmetlerin tanımına eklediğiniz foregroundServiceType XML manifesti özelliği kullanıma sunulmuştur. Belirli bir hizmete birden fazla ön plan hizmeti türü atamak nadiren de olsa mümkündür.

Aşağıdaki tabloda farklı ön plan hizmet türleri ve belirli bir türün bildirilmesinin uygun olduğu hizmetler gösterilmektedir:

Ön plan hizmeti türü Bu türü bildirmesi gereken bir hizmet için örnek kullanım alanı
connectedDevice Giyilebilir fitness takip cihazını izleme
dataSync Ağdan dosya indirme
location Kullanıcı tarafından başlatılan işleme devam etme
mediaPlayback Sesli kitap, podcast veya müzik çalma
mediaProjection Cihaz ekranının kısa bir süreliğine videosunu kaydedin
phoneCall Devam eden telefon görüşmesini yönetme

Kotlin

Android 10, Kotlin'in geliştirilmesi için aşağıdaki güncellemeleri içerir.

libcore API'leri için boş değer ek açıklamaları

Android 10, libcore API'leri için SDK'daki null değer ek açıklamalarının kapsamını iyileştirir. Bu ek açıklamalar, Android Studio'da Kotlin veya Java boş değer analizi kullanan uygulama geliştiricilerin bu API'lerle etkileşimde bulunurken boş değer bilgisi almalarını sağlar.

Normalde Kotlin'deki geçersiz değer sözleşmesi ihlalleri, derleme hatalarına neden olur. Mevcut kodunuzla uyumluluğu sağlamak için yalnızca @RecentlyNullable ve @RecentlyNonNull ek açıklamaları eklenir. Bu, null değer verisi ihlallerinin hata yerine uyarıyla sonuçlanacağı anlamına gelir.

Ayrıca, Android 9'da eklenen tüm @RecentlyNullable veya @RecentlyNonNull ek açıklamaları sırasıyla @Nullable ve @NonNull olarak değişiyor. Bu durum, Android 10 ve sonraki sürümlerde null atanabilirlik ihlallerinin uyarı yerine hataya yol açtığı anlamına gelir.

Ek açıklama değişiklikleri hakkında daha fazla bilgi için Android Geliştiricileri Blogu'ndaki Android Pie SDK artık Kotlin ile daha uyumlu bölümüne bakın.

NDK

Android 10'da aşağıdaki NDK değişikliklerini içerir.

Dosya açıklayıcı sahipliği için iyileştirilmiş hata ayıklama

Android 10'a eklenen fdsan, dosya tanımlayıcısı sahipliğiyle ilgili sorunları daha kolay bulup düzeltmenize yardımcı olur.

Dosya tanımlayıcı sahipliğinin yanlış işlenmesiyle ilgili hatalar ve genelde use-after-close ve double-close olarak ortaya çıkan hatalar, kullanımdan sonra-kullanılabilir ve çift ücretsiz bellek ayırmalarına benzer, ancak bunların teşhis edilmesi ve düzeltilmesi çok daha zordur. fdsan, dosya sahipliğinin zorunlu kılınmasıyla ilgili hataları tespit etmeye ve/veya önlemeye çalışır.

Bu sorunlarla ilgili kilitlenmeler hakkında daha fazla bilgi için fdsan tarafından hata algılandı bölümüne bakın. fdsan hakkında daha fazla bilgi için fdsan ile ilgili Googlesource sayfasına bakın.

ELF TLS

Minimum API düzeyi 29 ile NDK kullanılarak oluşturulan uygulamalar, emutls yerine ELF TLS kullanabilir. İş parçacığı yerel değişkenlerini yönetme yöntemini desteklemek için dinamik ve statik bağlayıcı desteği eklenmiştir.

API düzeyi 28 ve önceki sürümler için geliştirilen uygulamalarda bazı emutls sorunlarını gidermek amacıyla libgcc/compiler-rt için iyileştirmeler yapıldı.

Daha fazla bilgiyi NDK geliştiricileri için Android değişiklikleri bölümünde bulabilirsiniz.

Çalışma zamanı

Android 10, aşağıdaki çalışma zamanı değişikliğini içerir.

Mallinfo tabanlı çöp toplama tetikleyicisi

Küçük platform Java nesneleri C++ yığınındaki büyük nesnelere başvurduğunda, C++ nesneleri genellikle yalnızca Java nesnesi toplandığında ve örneğin nihai hale getirildiğinde geri alınabilir. Platform önceki sürümlerde, Java nesneleriyle ilişkili birçok C++ nesnesinin boyutunu tahmin ediyordu. Bu tahmin her zaman doğru değildi ve platform olması gerektiği halde atık toplama işlemi yapamadığından, ara sıra bellek kullanımının önemli ölçüde artmasına yol açıyordu.

Android 10'da çöp toplayıcı (GC), malloc() sistemi tarafından ayrılan yığının toplam boyutunu izleyerek büyük malloc() ayırmalarının GC tetikleme hesaplamalarına her zaman dahil edilmesini sağlar. Java yürütme ile çok sayıda C++ ayırmaları arasında araya giren uygulamalar sonuç olarak atık toplama sıklığında artış görebilir. Diğer uygulamalarda küçük bir düşüş görülebilir.

Test etme ve hata ayıklama

Android 10, test ve hata ayıklama için aşağıdaki iyileştirmeleri içerir.

Cihaz üzerinde sistem izlemeyle ilgili iyileştirmeler

Android 10'dan itibaren, cihaz üzerinde sistem izleme işlemi gerçekleştirirken iz boyutu ve süresi için sınırlar belirleyebilirsiniz. İki değerden birini belirlediğinizde sistem, iz kaydedilirken iz arabelleğini düzenli aralıklarla hedef dosyaya kopyalar. Belirttiğiniz boyut veya süre sınırlarına ulaşıldığında iz tamamlanır.

Standart iz ile test edeceğinizden farklı kullanım alanlarını test etmek için bu ek parametreleri kullanın. Örneğin, yalnızca uygulamanız uzun süre çalıştıktan sonra ortaya çıkan bir performans hatasını teşhis ediyor olabilirsiniz. Bu durumda, tüm gün boyunca uzun bir iz kaydedebilir ve daha sonra hatanın nedenini belirlemenize yardımcı olması için rapordaki CPU planlayıcısı, disk etkinliği, uygulama iş parçacıkları ve diğer verileri analiz edebilirsiniz.

Android 10 ve sonraki sürümlerde izleme dosyaları, performans enstrümantasyonu ve izlemeye yönelik açık kaynak bir proje olan Perfetto ile açılabilen bir biçimde kaydedilir. Perfetto izleme dosyalarını Systrace biçimine dönüştürebilirsiniz.

TextClassifier iyileştirmeleri

Android 10, TextClassifier arayüzünde ek metin sınıflandırma işlevi sağlar.

Dil algılama

detectLanguage() yöntemi, daha önce mevcut olan sınıflandırma yöntemlerine benzer şekilde çalışır. TextLanguage.Request nesnesi alır ve TextLanguage nesnesi döndürür.

TextLanguage nesne, sıralı çiftlerden oluşan bir listeden oluşur. Her çift, bir yerel ayara ve sınıflandırmaya karşılık gelen bir güven puanına sahiptir.

Önerilen görüşme işlemleri

suggestConversationActions() yöntemi, mevcut sınıflandırma yöntemlerine benzer şekilde çalışır. Bir ConversationActions.Request nesnesi alır ve bir ConversationActions nesnesi döndürür.

ConversationActions nesneleri, ConversationAction nesnelerinin bir listesinden oluşur. Her ConversationAction nesnesi, önerilen olası bir işlemi ve güven puanını içerir.

Bildirimlerdeki akıllı yanıtlar/işlemler

Android 9, önerilen yanıtları bildirim içinde görüntüleme özelliğini kullanıma sundu. Android 10, önerilen amaca dayalı işlemleri ekleyerek bu durumu genişletir. Ayrıca, platform bu önerileri otomatik olarak oluşturabilir. Uygulamalar yine de kendi önerilerini sağlayabilir veya sistem tarafından oluşturulan önerileri devre dışı bırakabilir.

Bu yanıtları oluşturmak için kullanılan API, TextClassifier'in bir parçasıdır ve aynı zamanda doğrudan Android 10'daki geliştiricilere sunulmuştur. Daha fazla bilgi için lütfen TextClassifier iyileştirmeleriyle ilgili bölümü okuyun.

Uygulamanız kendi önerilerini sunuyorsa platform otomatik öneriler oluşturmaz. Uygulama bildirimlerinin önerilen yanıtları veya işlemleri göstermesini istemiyorsanız setAllowGeneratedReplies() ve setAllowSystemGeneratedContextualActions() özelliklerini kullanarak sistem tarafından oluşturulan yanıtları ve işlemleri devre dışı bırakabilirsiniz.