Android 10 özellikleri ve API'leri

Android 10, kullanıcılar ve geliştiriciler için mükemmel ö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. Ayrıca, platform değişikliklerinin uygulamalarınızı etkileyebileceği alanları öğrenmek 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ı unutmayın.

Güvenlik geliştirmeleri

Android 10'da, aşağıdaki bölümlerde özetlenen çeşitli güvenlik özellikleri sunulmaktadır.

İyileştirilmiş biyometrik kimlik doğrulama iletişim kutuları

Android 10, biyometrik kimlik doğrulama desteğiyle ilgili aşağıdaki iyileştirmeleri kullanıma sunuyor:

  • Biyometrik kimlik doğrulama özelliğinin kontrolü.
  • Kullanıcının biyometrik girişini kullanarak kimlik doğrulaması yapamadığı durumlarda, cihazın PIN'ini, desenini veya şifresini kullanarak kimlik doğrulaması yapmasına olanak tanıyan yedek mekanizma.
  • Kullanıcı, örtülü bir biyometrik yöntem kullanarak kimlik doğrulamasının ardından sisteme kullanıcı onayı istememesini belirten bir ipucudur. Örneğin, bir kullanıcı yüz kimlik doğrulamasını kullanarak kimlik doğruladıktan sonra sisteme başka bir onaya ihtiyaç duymayacağını söyleyebilirsiniz.

Yerleştirilmiş DEX kodunu doğrudan APK'dan çalıştırın

Android 10'dan itibaren platforma, yerleşik DEX kodunu doğrudan uygulamanızın APK dosyasından çalıştırmasını söyleyebilirsiniz. Bu seçenek, bir saldırganın cihazdaki yerel olarak derlenmiş koda müdahale etmeyi başarması halinde saldırının önlenmesine yardımcı olabilir.

Daha fazla bilgi için Yerleştirilmiş DEX kodunu doğrudan APK'dan çalıştırma bölümüne bakın.

TLS 1.3 desteği

Android 10'da, TLS 1.3 desteği de sunulmaktadır. TLS 1.3, performans avantajları ve gelişmiş güvenlik özellikleriyle TLS standardının önemli bir revizyonudur. Karşılaştırmalarımız, güvenli bağlantıların TLS 1.2'ye kıyasla TLS 1.3 ile %40 daha hızlı kurulabileceğini gösteriyor.

TLS 1.3'ü nasıl uyguladığımız hakkında daha fazla bilgi için Tüm uygulamalar sayfasındaki davranış değişikliklerindeki 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 içerir.

android.net.ssl altındaki sınıfların koleksiyonu, genel javax.net.ssl API'lerinde 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ğul hali olarak çıkarılabilir. Örneğin, javax.net.ssl.SSLSocket örneklerinde çalışan kod, bunun yerine SSLSockets örneklerini kullanabilir.

Bağlantı özellikleri

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

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

Android 10'da eşler arası bağlantı desteği de sunulmaktadır. Bu özellik, istenen bir ağın özelliklerini açıklamak için WifiNetworkSpecifier kullanarak uygulamanızın 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ğlamanın dışındaki amaçlarla kullanılır.

Daha fazla bilgi için Eşler arası bağlantı için Wi-Fi Network Request API sayfasına göz atın.

Kablosuz ağ önerisi API'si

Android 10, kullanıcının kablosuz erişim noktasına bağlanmasını istemek için uygulamanızı desteklemeye imkan tanır. Hangi ağa bağlanacağınıza dair öneriler sağlayabilirsiniz. Platform, en nihayetinde sizin ve diğer uygulamalarınızdan gelen girdilere göre kabul edilecek erişim noktasını seçer.

Bu özellik hakkında daha fazla bilgi edinmek için Kablosuz ağ önerisi sayfasına göz atın.

Kablosuz bağlantı yüksek performans ve düşük gecikme modlarında iyileştirmeler

Android 10, gecikmeyi en aza indirmek için temel modeme ipucu vermenize olanak tanır.

Android 10, yüksek performans modunu ve düşük gecikme modunu etkili bir şekilde desteklemek için Wi-Fi Lock API'yi genişletir. Kablosuz güç tasarrufu, yüksek performans ve düşük gecikme modu için devre dışı bırakılır. Ayrıca, 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 özel aramalar

Android 10, hem düz metin aramalarını hem de TLS üzerinden DNS modunu kullanarak özel DNS aramaları için yerel destek sağlar. Daha önce, platform DNS çözümleyicisi yalnızca bir adla ilişkilendirilmiş IP adreslerinin aranmasına izin veren ancak diğer kayıt türlerini desteklemeyen A ve AAAA kayıtlarını destekliyordu. DnsResolver API genel, eşzamansız çözüm sunarak SRV, NAPTR ve diğer kayıt türlerini arayabilmenizi sağlar. Yanıt ayrıştırmanın, işlemi gerçekleştirmek için uygulamaya bırakıldığını unutmayın.

NDK tabanlı uygulamalar için android_res_nsend bölümüne bakın.

Kablosuz Kolay Bağlantı

Android 10, kullanımdan kaldırılan WPS'nin yerine geçerek eş bir cihaza kablosuz kimlik bilgilerinin temel hazırlığını yapmak için Easy Connect'i kullanmanıza olanak tanır. Uygulamalar, ACTION_PROCESS_WIFI_EASY_CONNECT_URI amacını kullanarak Easy Connect'i kurulum ve temel hazırlık akışına entegre edebilir.

Bu özellikle ilgili daha fazla bilgi için Wi-Fi Easy Connect konusuna bakın.

Kablosuz Doğrudan Bağlantı API'sı

WifiP2pConfig ve WifiP2pManager API sınıfları, önceden belirlenmiş bilgileri kullanarak Kablosuz Doğrudan Bağlantı'ya 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 aracılığıyla 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() öğesini 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ını sağlar. Bu arayüz, Bluetooth ve bağlantı mekanizmasını soyutlayarak uygulamayı basitleştirir.

Telefon özellikleri

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

Arama kalitesiyle ilgili iyileştirmeler

Android 10, özelliği destekleyen cihazlarda, devam eden IP Multimedya Alt Sistemi (IMS) çağrılarının kalitesi hakkında bilgi toplama özelliği ekler. Bu bilgiler, ağa gelen ve ağdan giden kalite de dahil olmak üzere çok önemlidir.

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 kullanıcı adına sessizce reddedilmesini sağlamak için bir yol sunar. Bu engellenen aramalarla ilgili bilgiler, aramaları cevaplamayan kullanıcılara daha fazla şeffaflık sağlamak için çağrı kaydına engellenmiş çağrı olarak kaydedilir. Bu API'nin kullanılması, arama süzme ve arayan kimliği işlevleri 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, arama amaçlarının işlenme şeklini değiştirir. NEW_OUTGOING_CALL yayını kullanımdan kaldırıldı ve yerini CallRedirectionService API'si aldı. CallRedirectionService API, Android platformu tarafından yapılan giden çağrıları değiştirebileceğiniz arayüzler sağlar. Örneğin, üçüncü taraf uygulamaları aramaları iptal edip VoIP üzerinden yeniden yönlendirebilir.

Harici depolama alanında dosya oluşturmayla ilgili iyileştirmeler

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

Medya ve grafikler

Android 10'da aşağıdaki yeni medya ve grafik özellikleri ile API'ler sunulmaktadır:

Ses girişi paylaşılıyor

Android 10'da iki uygulama, ses girişini aynı anda paylaşabilme özelliği sunar. Tüm bilgiler için Ses girişi paylaşma başlıklı makaleye bakın.

Ses çalma kaydı

Android 10, bir uygulamaya diğer uygulamalardaki sesleri kaydetme olanağı sunar. Tüm bilgiler için Yakalamayı oynatma bölümüne bakın.

MediaStyle bildirimlerinde arama çubuğu

Android 10 sürümünden itibaren, MediaStyle bildirimlerinde bir arama çubuğu gösterilir. Arama çubuğu, PlaybackState.getPosition() kanalından gelen oynatma ilerlemesini gösterir ve bazı durumlarda arama programındaki bir konumu bulmak için kullanılabilir. Arama çubuğunun görünümü ve davranışı şu kurallarla kontrol edilir:

  • Etkin bir MediaSession varsa ve süresi (MediaMetadata.METADATA_KEY_DURATION tarafından belirtilir) sıfırdan büyükse arama çubuğu görünür. Bu, çubuğun canlı yayınlar ve radyo yayınları gibi belirsiz yayınlar için görünmediği anlamına gelir.
  • Oturumda ACTION_SEEK_TO uygulanırsa kullanıcı oynatma konumunu kontrol etmek için arama çubuğunu sürükleyebilir.

Yerel MIDI API'sı

Android Native MIDI API (AMidi), uygulama geliştiricilerinin C/C++ koduyla MIDI verilerini gönderip almalarına olanak tanıyarak C/C++ ses/kontrol mantığıyla daha yakın entegrasyon sağlar ve JNI ihtiyacını en aza indirir.

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

MediaCodecInfo iyileştirmeleri

Android 10, MediaCodecInfo'e bir codec hakkında daha fazla bilgi sağlayan yöntemler ekler.

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

Thermal API

Cihazlar aşırı ısındığında CPU ve/veya GPU'yu daraltabilirler. Bu da uygulamaları ve oyunları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun bilgi işlem veya sürekli ağ etkinliği kullanan uygulamaların sorunlarla karşılaşma olasılığı daha yüksektir. Bu uygulamalar yonga seti ve temel frekanslara, entegrasyon seviyelerine, cihaz paketi ve form faktörüne bağlı olarak farklı cihazlarda değişiklik gösterebilir.

Android 10'daki uygulamalar ve oyunlar, termal API kullanarak cihazdaki değişiklikleri izleyebilir ve normal sıcaklığı tekrar eski haline getirmek için güç kullanımını düşük tutmak amacıyla harekete geçebilir. Uygulamalar PowerManager'a bir dinleyici kaydeder. Bu program aracılığıyla sistem, hafif ve orta düzey ile şiddetli, kritik, acil ve kapanma gibi bir aralıktaki sürekli termal durumu raporlar.

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

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

Kamera ve resimler

Android 10'un kamera ve görüntülerle ilgili şu yeni özelliklerini kullanıma sunuyoruz:

Tek renkli kamera desteği

Android 9 (API düzeyi 28) ilk olarak tek renkli kamera özelliğini kullanıma sunmuştur. Android 10'da, tek renkli kamera desteğiyle ilgili çeşitli iyileştirmeler yapılmıştır:

  • 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ıksal bir çok kameralı cihaz, düşük ışıkta daha iyi görüntü kalitesi elde etmek için fiziksel bir alt kamera olarak tek renkli bir kamera kullanabilir.

Dinamik Derinlik Biçimi

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

Bu biçimin spesifikasyonunu okumak için Dinamik Derinlik Biçimi bölümüne bakın.

Yüksek Verimli Resim Dosyası biçimi

Yüksek Verimli Resim Dosyası (HEIF) biçimi, diğer dosya biçimleriyle karşılaştırıldığında 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 sayfasına bakın.

Çoklu kamerada iyileştirmeler

Android 10, birden fazla kameranın tek bir mantıksal kamerada birleştirilmesine olanak tanır. Bu özellik, Android 9'da (API düzeyi 28) kullanıma sunulmuştur. Kamera2 API'sine aşağıdakiler eklendi:

  • isSessionConfigurationSupported(SessionConfiguration sessionConfig): İletilen oturum yapılandırmasının, kamerayla çekim 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 aktif fiziksel kameranın kimliğini belirlemenize olanak tanır. Daha iyi güç verimliliği elde etmek amacıyla mantıksal akışlar ve fiziksel alt kamera akışları istemek için döndürülen kimlikleri kullanabilirsiniz.

Accessibility services API

Android 10, aşağıdaki yeni erişilebilirlik hizmeti özelliklerini ve API'lerini kullanıma sunuyor:

AccessibilityNodeInfo giriş anahtarı işareti

Android 10 sürümünden itibaren, belirli bir AccessibilityNodeInfo öğesinin, klavyenin veya tuş takımının parçası olan bir metin girişi tuşunu temsil edip etmediğini belirlemek için isTextEntryKey() yöntemini çağırabilirsiniz.

Erişilebilirlik iletişim kutusu sözlü geri bildirim

Kullanıcıların bir erişilebilirlik hizmetini başlatmak için erişilebilirlik kısayolu kullanması gereken durumlarda Android 10, hizmetin istediği durumlarda iletişim kutusuna bir metin okuma isteminin sunulmasına olanak tanır.

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 gerçekleştirmesi gerekir:

  • İki parmakla yukarı kaydırın.
  • İki parmakla 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 klavyedeki erişilebilirlik kısayolunu tetikleyebilir.

Dokunmatik klavye kumandası geliştirmesi

Android 10'da erişilebilirlik hizmetleri, cihaz bir sert klavye takıldığını algılasa bile sanal klavyenin gösterilmesini 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ı tercihleri 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

Bir 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ı, şifre 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ü ile 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 kutusunda bir şifre alanını gösterebilir ve gizleyebilirsiniz.

Veri kümelerini güncelleme desteği

Otomatik doldurma mevcut şifreleri güncelleyebilir. Örneğin, kullanıcı zaten bir şifreyi sakladıysa ve yeni bir şifre kaydederse Otomatik Doldurma, kullanıcıdan yeni bir şifre kaydetmek yerine mevcut şifreyi 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 oluşturucu, Builder kalıbına daha iyi uyum sağlamak için değiştirildi.

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

Android 10'da UserData.Builder kullanırken artık bir değeri birden fazla kategori kimliği türüyle eşleyebilirsiniz. Önceki sürümlerde, bir değer birden çok kez eklenirse istisna oluşturuluyordu.

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

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

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

Android 10'da, oturum süresince uygulamaya özel kullanıcı verilerini ayarlamanızı sağlayan FillResponse.setUserData() seçeneği vardır. Bu, otomatik doldurma hizmetinin uygulamaya özel içerik barındıran alanların türlerini algılamasına yardımcı olur.

Kullanıcı arayüzü ve sistem denetimleri

Android 10 aşağıdaki kullanıcı arayüzü iyileştirmelerini sunar:

JVMTI PopFrame büyük harflerini destekle

Android 10, Android JVMTI uygulamasında can_pop_frames özelliği için destek sunar. Hata ayıklama sırasında bu özellik, bir kesme noktasında duraklattıktan ve yerel değerleri, genelleri veya bir işlevin uygulanmasını ayarladıktan sonra işlevleri yeniden çalıştırmanızı sağlar. Daha fazla bilgi için Oracle'ın Pop Frame referans sayfası'na bakın.

Yüzey kontrolü API'sı

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

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

SurfaceControl API, hem SDK hem de NDK bağlamalarında kullanılabilir. NDK uygulaması, arabelleklerin toplayıcı ile manuel olarak değişimine olanak tanıyan bir API içerir. Bu, BufferQueue sınırlamalarına uymayan kullanıcılara bir alternatif sunar.

Web Görünümü aç oluşturucu algılama

Android 10'da, uygulamaların bir WebView öğesinin yanıt vermediğini algılamak için kullanabileceği WebViewRenderProcessClient soyut sınıfı kullanıma sunulmuştur. Bu sınıfı kullanmak için:

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

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

Ayarlar panelleri

Android 10'da, uygulamaların, ayarları kullanıcılara kendi uygulamaları bağlamında gösterebilmelerini sağlayan bir API olan Ayarlar Panelleri kullanıma sunulmuştur. Bu sayede, kullanıcıların uygulamayı kullanmak için NFC veya Mobil veri gibi özellikleri değiştirmek için Ayarlar'a gitmelerine gerek kalmaz.

Şekil 1. Kullanıcı, cihaz ağa bağlı değilken bir web sayfası açmayı dener. Chrome, İnternet Bağlantı ayarları panelini açar...

Şekil 2. Kullanıcı Chrome uygulamasından ayrılmadan Kablosuz özelliğini açabilir ve bir ağ seçebilir.

Örneğin, bir kullanıcının, cihazı uçak modundayken web tarayıcısı açtığını varsayalım. Android 10'dan önce uygulama yalnızca kullanıcıdan bağlantıyı geri yüklemek için Ayarlar'ı açmasını isteyen genel bir mesaj gösterebiliyordu. Android 10'da 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ükleyebilir.

Bir ayarlar panelini göstermek için aşağıdaki Settings.Panel işlemlerinden biriyle bir 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 ağ ve mobil veri gibi internet bağlantısıyla ilgili ayarları gösterir.
ACTION_WIFI
Kablosuz ağ ayarlarını gösterir, ancak diğer bağlantı ayarlarını göstermez. Bu özellik, büyük boyutlu yükleme veya indirme işlemleri yapmak için kablosuz bağlantıya ihtiyacı olan 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ının ses düzeyi ayarlarını gösterir.

Paylaşım iyileştirmeleri

Android 10, paylaşım konusunda çeşitli iyileştirmeler sunar:

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

Paylaşım Kısayolları API'si, Doğrudan Paylaşım API'lerinin yerini almıştır.

Paylaşım Kısayolları API'si, sonuçları isteğe bağlı olarak tepkisel olarak almak yerine, uygulamaların doğrudan paylaşım hedeflerini önceden yayınlamalarına olanak tanır. ShortcutManager bu şekilde çalışır. İki API benzer olduğundan her iki özelliğin de kullanılmasını kolaylaştırmak için ShortcutInfo API'yi genişlettik. Paylaşım Kısayolları API'sıyla, kategorileri veya kullanıcıları doğrudan bir paylaşım hedefine atayabilirsiniz. Paylaşım hedefleri, aynı uygulama bunları güncelleyene veya uygulama kaldırılana kadar sistemde kalır.

Eski Doğrudan Paylaşım mekanizması çalışmaya devam eder ancak bu mekanizmayı kullanan uygulamalar, Paylaşım 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öntemlerini ekler ve 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 başlıklı makaleyi 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ündeki 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 bakın.

Koyu tema

Android 10, hem Android sistem kullanıcı arayüzü hem de cihazda çalışan uygulamalar için geçerli olan bir Koyu tema sunar. Daha fazla bilgi için Koyu tema bölümünü inceleyin.

Ön plan hizmeti türleri

Android 10, belirli hizmetlerin tanımına eklediğiniz foregroundServiceType XML manifest özelliğini kullanıma sunar. 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ü bildirmenin uygun olduğu hizmetler gösterilmektedir:

Ön plan hizmet türü Bu türün belirtilmesi gereken bir hizmet için örnek kullanım alanı
connectedDevice Giyilebilir bir fitness takip cihazını izleme
dataSync Ağdan dosya indirme
location Kullanıcı tarafından başlatılan bir işleme devam etme
mediaPlayback Sesli kitap, podcast veya müzik çalma
mediaProjection Kısa bir süre boyunca cihaz ekranının videosunu kaydetme
phoneCall Devam eden telefon aramalarını işleme

Kotlin

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

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

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

Normalde, Kotlin'deki geçersizlik 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, boş değer atanabilirlik ihlallerinin hata yerine uyarıyla sonuçlandığı 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şecek. Bu nedenle, Android 10 ve sonraki sürümlerde null değer ihlallerinin uyarılar yerine hatalara neden olduğu anlamına gelir.

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

400

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

Dosya tanımlayıcı sahipliğinde hata ayıklama iyileştirildi

Android 10'da, dosya tanımlayıcı sahipliği sorunlarını daha kolay bulup çözmenize yardımcı olacak fdsan özelliği eklendi.

Dosya tanımlayıcısı sahipliğinin yanlış işlenmesiyle ilgili olan ve genellikle kapatıldıktan sonra kullan ve çift kapat şeklinde ortaya çıkan hatalar, bellek ayırma ücretsiz sonrası kullanım ve çift ücretsiz hata hatalarına benzer, ancak teşhis edilmesi ve düzeltilmesi çok daha zor olur. fdsan, dosya tanımlayıcısının hatalı kullanımını tespit etmeye ve/veya yönetmeye çalışır.

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

ELF TLS

Minimum API düzeyi 29 olan NDK kullanılarak oluşturulan uygulamalar emutls yerine ELF TLS kullanabilir. İş parçacığı yerel değişkenlerini işleme 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 libgcc/compiler-rt hizmetinin bazı emutls sorunlarını çözmesi için iyileştirmeler yapılmıştır.

Daha fazla bilgi için NDK geliştiricileri için Android'deki değişiklikler bölümüne bakın.

Süre

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

Mallinfo tabanlı çöp toplama tetiklemesi

Küçük platform Java nesneleri C++ yığınındaki büyük nesnelere referans verdiğinde C++ nesneleri genellikle yalnızca Java nesnesi toplanıp örneğin son haline getirildiğinde geri alınabilir. Önceki sürümlerde platform, Java nesneleriyle ilişkilendirilmiş birçok C++ nesnesinin boyutlarını tahmin ediyordu. Bu tahmin her zaman doğru değildi ve platform olması gerektiği zaman gereksiz toplama yapamadığından bazen bellek kullanımında büyük artışa neden oluyordu.

Android 10'da çöp toplayıcı (GC), sistem malloc() 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ütmesiyle birlikte çok sayıda C++ ayırma işlemi yapan uygulamalar sonuç olarak atık toplama sıklığında artış görebilir. Diğer uygulamalarda küçük bir azalma görülebilir.

Test 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 yaparken iz boyutu ve süresi için sınırlar belirleyebilirsiniz. İki değerden birini belirttiğinizde, sistem iz kaydedilirken iz arabelleğini düzenli aralıklarla hedef dosyaya kopyalayarak uzun bir iz gerçekleştirir. İzleme, belirttiğiniz boyut veya süre sınırlarına ulaşıldığında 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 bir süre çalıştıktan sonra ortaya çıkan bir performans hatası teşhis ediyor olabilirsiniz. Bu durumda, tüm gün boyunca uzun bir izleri kaydedebilir ve daha sonra hatanın nedenini belirlemenize yardımcı olmak için CPU planlayıcısını, disk etkinliğini, uygulama iş parçacıklarını ve rapordaki diğer verileri analiz edebilirsiniz.

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

TextClassifier geliştirmeleri

Android 10, TextClassifier arayüzünde ek metin sınıflandırma işlevleri sunar.

Dil algılama

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

TextLanguage nesne, sıralı çiftlerin bir listesinden oluşur. Her çift bir yerel ayar ve sınıflandırma için buna karşılık gelen bir güven puanı içerir.

Ö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, bir ConversationAction nesne listesinden oluşur. Her ConversationAction nesnesi, önerilen bir işlemi ve bu işlemin güven puanını içerir.

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

Android 9'da, önerilen yanıtları bir bildirim içinde gösterme özelliği kullanıma sunuldu. Android 10 bunun kapsamını genişletiyor ve amaca dayalı işlemler öneriliyor. Dahası, platform bu önerileri otomatik olarak oluşturabilir. Uygulamalar yine de kendi önerilerini sunabilir 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 Android 10'daki geliştiriciler tarafından da doğrudan kullanıma sunulmuştur. Daha fazla bilgi için lütfen TextClassifier iyileştirmeleri bölümünü okuyun.

Uygulamanız kendi önerilerini sağlarsa platform herhangi bir otomatik öneri oluşturmaz. Uygulama bildirimlerinde önerilen yanıtların veya işlemlerin gösterilmesini istemiyorsanız setAllowGeneratedReplies() ve setAllowSystemGeneratedContextualActions() özelliklerini kullanarak sistem tarafından oluşturulan yanıtları ve işlemleri devre dışı bırakabilirsiniz.