Android 10 özellikleri ve API'leri

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

API'ler hakkında bilgi edinmek için API karşılaştırma raporunu okuyun veya Android API referansı sayfasını ziyaret edin. "API düzeyi 29'da eklendi" ifadesini içeren API'leri arayın. 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, aşağıdaki bölümlerde özetlenen bir dizi güvenlik özelliğini kullanıma sunar.

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

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

  • Biyometrik kimlik doğrulama özelliği için yapılan bir kontrol.
  • Kullanıcının, biyometri girişini kullanarak kimlik doğrulayamadığında cihaz PIN'ini, desenini veya şifresini kullanarak 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 söyleyen bir ipucudur. Örneğin, kullanıcı yüz kimlik doğrulamasını kullandıktan sonra başka bir onay gerekmediğini sisteme 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ırmasını söyleyebilirsiniz. Bu seçenek, saldırgan cihazdaki yerel olarak derlenmiş kodda değişiklik yapmayı başarırsa saldırının önlenmesine yardımcı olabilir.

Daha fazla bilgi için Yerleşik DEX kodunu doğrudan APK'dan çalıştırma başlıklı makaleyi inceleyin.

TLS 1.3 desteği

Android 10'a TLS 1.3 desteği eklenmiştir. TLS 1.3, TLS standardında performans avantajları ve gelişmiş güvenlik içeren önemli bir düzeltmedir. 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.

Ortak Conscrypt API'si

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

android.net.ssl altındaki sınıf 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ı, ilgili javax.net.ssl sınıfının çoğulu olarak anlaşılabilir. Örneğin, javax.net.ssl.SSLSocket örnekleri üzerinde çalışan kod, bunun yerine SSLSockets sınıfındaki yöntemleri 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, eşler arası bağlantılar için destek ekler. 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ı, ağ sağlama dışındaki amaçlar için kullanılır (ör. Chromecast ve Google Home donanım gibi ikincil cihazlar için önyükleme yapılandırması).

Daha fazla bilgi için Eşler arası bağlantı için kablosuz ağ istek API'si başlıklı makaleyi inceleyin.

Kablosuz ağ önerisi API'si

Android 10, uygulamanızın kullanıcıdan kablosuz erişim noktasına bağlanmasını istemesi için destek ekler. Hangi ağa bağlanılacağıyla ilgili öneriler sağlayabilirsiniz. Platform, nihai olarak sizin ve diğer uygulamaların girişine göre hangi erişim noktasını kabul edeceğini 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 vermenize olanak tanır.

Android 10, yüksek performans modunu ve düşük gecikme modunu etkili bir şekilde desteklemek için kablosuz bağlantı kilidi API'sini genişletir. Kablosuz bağlantı güç tasarrufu, 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 gecikmeli mod 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ümleyicisinde özel aramalar

Android 10, hem açık metin aramaları hem de DNS üzerinden TLS modu kullanılarak özel DNS aramaları için yerel destek ekler. Daha önce platform DNS çözümleyicisi yalnızca A ve AAAA kayıtlarını destekliyordu. Bu kayıtlar yalnızca bir adla ilişkili IP adreslerinin aranmasına olanak tanır ancak diğer kayıt türlerini desteklemez. DnsResolver API, SRV, NAPTR ve diğer kayıt türlerini aramanıza olanak tanıyan genel, eşzamansız çözüm sunar. Yanıtın ayrıştırılmasının 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, desteği sonlandırılan WPS'nin yerine, eş cihaza kablosuz kimlik bilgileri sağlamak için Kolay Bağlantı'yı kullanmanıza olanak tanır. Uygulamalar, ACTION_PROCESS_WIFI_EASY_CONNECT_URI intent'ini kullanarak Easy Connect'i kurulum ve temel hazırlığı akışlarına entegre edebilir.

Bu özellik hakkında daha fazla bilgi için Kablosuz Kolay Bağlantı başlıklı makaleyi inceleyin.

Wi-Fi Direct bağlantı API'si

WifiP2pConfig ve WifiP2pManager API sınıfları, önceden belirlenmiş bilgileri kullanarak Wi-Fi Direct'e hızlı bağlantı kurma özelliklerini desteklemek için Android 10'da güncellendi. 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() değerini 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 BDE cihazı arasında daha büyük veri akışları aktarmak için BDE CoC bağlantılarını kullanmasına olanak tanır. Bu arayüz, uygulamayı basitleştirmek için Bluetooth ve bağlantı mekanizmalarını soyutlar.

Telefon özellikleri

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

Arama kalitesi iyileştirmeleri

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 filtreleme 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ğlayacak 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şlevini sağlamak için kullanıcıdan READ_CALL_LOG izinleri alınması zorunluluğunu ortadan kaldırır.

Arama yönlendirme hizmeti API'si

Android 10, arama intent'lerinin işleniş şeklini değiştirir. NEW_OUTGOING_CALL yayını desteği sonlandırıldı ve CallRedirectionService API'si ile değiştirildi. 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şturmayla ilgili iyileştirmeler

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

  • Uygulamanıza, diske yazıldığı anda bir medya dosyasına özel erişim vermek için IS_PENDING işaretini kullanabilirsiniz.
  • Dosyaların depolanması gereken belirli bir konum olduğunu düşünüyorsanız yeni yazılan dosyaların nereye depolanacağı konusunda sisteme ipucu verebilirsiniz.
  • Her harici depolama cihazının benzersiz bir birim adı vardır.

Medya ve grafikler

Android 10, aşağıdaki yeni medya ve grafik özelliklerini ve API'lerini kullanıma sunar:

Ses girişini paylaşma

Android 10, iki uygulamanın ses girişini aynı anda paylaşma özelliğini ekler. Tüm bilgiler için Ses girişini paylaşma başlıklı makaleyi inceleyin.

Ses çalma kaydı

Android 10, uygulamalara diğer uygulamalardan ses oynatmayı yakalama olanağı sunar. Tüm bilgiler için Oynatma yakalama başlıklı makaleyi inceleyin.

MediaStyle bildirimlerindeki kaydırma çubuğu

Android 10'dan itibaren MediaStyle bildirimlerinde bir ilerleme çubuğu gösterilir. Zaman kaydırma çubuğu, PlaybackState.getPosition()'den itibaren oynatma ilerleme durumunu gösterir ve bazı durumlarda oynatılan programda bir konuma gitmek için kullanılabilir. Kaydırma çubuğunun görünümü ve davranışı aşağıdaki kurallarla kontrol edilir:

  • Etkin bir MediaSession varsa ve süresi (MediaMetadata.METADATA_KEY_DURATION ile belirtilir) sıfırdan büyükse ilerleme çubuğu gösterilir. Yani, çubuk canlı yayınlar ve radyo yayınları gibi belirli olmayan akışlar için görünmez.
  • Oturumda ACTION_SEEK_TO uygulanıyorsa kullanıcı, oynatma konumunu kontrol etmek için kaydırma çubuğunu sürükleyebilir.

Native MIDI API

Android Native MIDI API (AMidi), uygulama geliştiricilerine C/C++ koduyla MIDI verileri gönderip alma olanağı sunar. Böylece geliştiriciler, C/C++ ses/kontrol mantıklarıyla daha yakın bir entegrasyon sağlayabilir ve JNI ihtiyacını en aza indirebilir.

Daha fazla bilgi için Android Native MIDI API başlıklı makaleyi inceleyin.

MediaCodecInfo iyileştirmeleri

Android 10, MediaCodecInfo'e codec'le ilgili daha fazla bilgi sunan yöntemler ekler.

Daha fazla bilgi için Medya codec'leri bölümüne bakın.

Thermal API

Cihazlar çok ısındığında CPU ve/veya GPU'yu kısıtlayabilir. Bu da uygulamaları ve oyunları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun hesaplama veya sürekli ağ etkinliği kullanan uygulamaların sorun yaşama olasılığı daha yüksektir. Bu sorunlar, çip seti ve çekirdek frekanslarına, entegrasyon düzeylerine, ayrıca cihaz paketine ve form faktörüne bağlı olarak cihazlar arasında değişiklik gösterebilir.

Android 10'da uygulamalar ve oyunlar, cihazdaki değişiklikleri izlemek için bir termal API kullanabilir ve normal sıcaklığı geri getirmek için daha düşük güç kullanımı sağlamak üzere işlem 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, yayın uygulamaları çözünürlüğü/bit hızını veya ağ trafiğini düşürebilir, kamera uygulamaları flaş veya yoğun görüntü geliştirmeyi devre dışı bırakabilir, oyunlar kare hızını veya poligon tesselasyonunu düşürebilir, medya uygulamaları hoparlör sesini düşürebilir ve harita uygulamaları GPS'yi kapatabilir.

Termal API için yeni bir cihaz HAL katmanı gerekir. Şu anda Android 10 çalıştıran Pixel cihazlarda desteklenmektedir. Ekosisteme en kısa sürede geniş kapsamlı destek sunmak için cihaz üreticisi iş ortaklarımızla birlikte çalışıyoruz.

Kamera ve resimler

Android 10, kamera ve görüntüyle ilgili aşağıdaki yeni özellikleri kullanıma sunar:

Tek renkli kamera desteği

Tek renkli kamera özelliği ilk olarak Android 9 (API düzeyi 28) ile kullanıma sunulmuştur. Android 10, tek renkli kamera desteğine çeşitli iyileş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 kızılötesine yakın kameralar arasındaki farkı belirlemek için MONO ve NIR CFA numaralandırmalarının kullanıma sunulması.

Bu özelliği, doğal tek renkli bir resim çekmek için kullanabilirsiniz. Mantıksal çoklu kameralı cihazlar, düşük ışıkta daha iyi görüntü kalitesi elde etmek için fiziksel bir alt kamera olarak tek renkli kamera kullanabilir.

Dinamik Derinlik Biçimi

Android 10'dan itibaren kameralar, Dinamik Derinlik Biçimi (DDF) adlı yeni bir şema kullanarak bir görüntünün derinlik verilerini ayrı bir dosyada saklayabilir. 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 başlıklı makaleyi inceleyin.

Çoklu kameradaki iyileştirmeler

Android 10, Android 9'da (API düzeyi 28) kullanıma sunulan birden fazla kameranın tek bir mantıksal kamerada birleştirilmesini iyileştirir. Camera2 API'ye aşağıdakiler eklendi:

Accessibility services API

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

AccessibilityNodeInfo giriş anahtarı 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 istekte bulunulduğunda iletişim kutusuna bir metin okuma istemi gösterilmesine izin verir.

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

Android 10'da hareketle gezinme özelliği etkinleştirildiğinde erişim 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 parmağınızı 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, fiziksel klavyede Control+Alt+Z tuşlarına basarak erişilebilirlik kısayolunu tetikleyebilir.

Sanal klavye denetleyicisinde iyileştirme

Android 10'da erişilebilirlik hizmetleri, cihaz bağlı bir fiziksel klavye 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'si kullanıma sunulmuştur. Bu yöntem, etkileşimli ve etkileşimli olmayan kullanıcı arayüzü öğeleri için kullanıcı tanımlı zaman aşımlarını destekler. 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ını ve şifreyi aynı anda kaydetme

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

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

Bir kaydetme iletişim kutusunda şifre alanını göstermek ve gizlemek için iletişim kutusunda bir işlem dinleyicisi ayarlayabilir ve ilgili şifre uzak görüntülemesinin görünürlüğünü değiştirebilirsiniz.

Veri kümelerini güncelleme desteği

Otomatik doldurma, 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ırması iyileştirmeleri

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

UserData.Builder oluşturucusu

UserData.Builder sınıfının kurucusu, Builder desenine daha uygun olması için değiştirildi.

Bir değerin birden fazla kategori kimliği türüyle eşlenmesine izin verme

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 fazla kez eklenirse istisna atılırdı.

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

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

Uygulamaya özgü alan sınıflandırması desteği

Android 10, oturum süresi boyunca uygulamaya özgü kullanıcı verilerini ayarlamanıza olanak tanıyan FillResponse.setUserData() özelliğini ekler. Bu, otomatik doldurma hizmetinin uygulamaya özgü içeriğe sahip alanların türlerini algılamasına yardımcı olur.

Kullanıcı arayüzü ve sistem kontrolleri

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

JVMTI PopFrame sınırlarını destekleme

Android 10'a, Android JVMTI uygulamasında can_pop_frames özelliği için destek eklendi. 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 bakın.

Surface Control API

Android 10, sistem derleyiciye (SurfaceFlinger) düşük düzeyde erişim için bir SurfaceControl API'si sağlar. Çoğu kullanıcı için SurfaceView, derleyiciden yararlanmanın doğru yoludur. SurfaceControl API'si bazı durumlarda yararlı olabilir. Örneğin:

  • Birden fazla yüzeyin senkronizasyonu
  • İşlemler arası yüzey yerleştirme
  • Alt düzey yaşam boyu yönetim

SurfaceControl API'si hem SDK hem de NDK bağlamalarında kullanılabilir. NDK uygulaması, arabelleklerin birleştiriciyle manuel olarak değiştirilmesi için bir API içerir. Bu, BufferQueue'ın sınırlamalarına takılan kullanıcılara alternatif bir seçenek sunar.

WebView'de donmuş oluşturma aracı algılama

Android 10'da WebView'in yanıt vermediği durumları algılamak 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ıp bu alt sınıfın onRenderProcessResponsive() ve onRenderProcessUnresponsive() yöntemlerini uygulayın.
  2. WebViewRenderProcessClient öğenizin bir örneğini bir veya daha fazla WebView nesnesine ekleyin.
  3. WebView yanıt vermezse sistem, WebView ve WebViewRenderProcess değerlerini 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, onRenderProcessUnresponsive()'u düzenli aralıklarla (en fazla beş saniyede bir) çağırır ancak başka işlem yapmaz. WebView tekrar yanıt vermeye başlarsa sistem onRenderProcessResponsive()'ı yalnızca bir kez çağırır.

Ayarlar 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 gitmesine gerek kalmamasını sağlıyor.

Şekil 1. Kullanıcı, cihaz ağ bağlantısı olmadığı halde bir web sayfası açmaya çalışır. Chrome, İnternet Bağlantısı ayar panelini gösterir...

Ş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ı 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 ağ (yakındaki ağlar dahil) ve mobil veri gibi önemli bağlantı ayarlarını gösteren satır içi bir panel gösterebilir. Bu panel sayesinde kullanıcılar uygulamadan çıkmadan bağlantıyı geri yükleyebilir.

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 ağ ve mobil veri gibi internet bağlantısıyla ilgili ayarları gösterir.
ACTION_WIFI
Kablosuz bağlantı ayarlarını gösterir ancak diğer bağlantı ayarlarını göstermez. Bu, büyük yükleme veya indirme yapmak için kablosuz bağlantıya ihtiyaç duyan uygulamalar için kullanışlı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 ayarlarını gösterir.

Paylaşım iyileştirmeleri

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

Sharing Shortcuts API

Doğrudan Paylaşım API'lerinin yerini Paylaşım Kısayolları API'si aldı.

Paylaşım Kısayolları API'si, sonuçları istek üzerine reaktif olarak almak yerine uygulamaların doğrudan paylaşım hedeflerini önceden yayınlamasına olanak tanır. ShortcutManager işleyiş şekli İ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 kişileri doğrudan bir paylaşım hedefine atayabilirsiniz. Paylaşım hedefleri, aynı uygulama tarafından güncellenene veya uygulama kaldırılana kadar sistemde kalır.

Eski Doğrudan Paylaşım mekanizması hâlâ çalışır ancak bu mekanizmayı kullanan uygulamaların önceliği, Paylaşım Kısayollarını API'sini kullanan uygulamalara kıyasla daha düşüktür.

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 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.

Metni önizleme

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.

Zengin metin önizlemeleri ekleme başlıklı makaleyi inceleyin.

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 başlıklı makaleleri inceleyin.

Koyu tema

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

Ön plan hizmeti türleri

Android 10, belirli hizmetlerin tanımına dahil ettiğ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ün tanımlanmasının uygun olduğu hizmetler gösterilmektedir:

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

Kotlin

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

libcore API'leri için geçersizlik ek açıklamaları

Android 10, libcore API'leri için SDK'daki boşluk doldurulabilirlik ek açıklamalarının kapsamını iyileştirir. Bu ek açıklamalar, Android Studio'da Kotlin veya Java boşluk analizi kullanan uygulama geliştiricilerin bu API'lerle etkileşim kurarken boşluk bilgisi almasını sağlar.

Normalde Kotlin'deki geçersiz değer sözleşme 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şluk atlanabilirlik ihlallerinin hata yerine uyarıyla sonuçlandığı anlamına gelir.

Ayrıca, Android 9'a eklenen tüm @RecentlyNullable veya @RecentlyNonNull ek açıklamaları sırasıyla @Nullable ve @NonNull olarak değişiyor. Bu, Android 10 ve sonraki sürümlerde boşluk atlanabilirlik ihlallerinin uyarı yerine hatalara yol açacağı 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, aşağıdaki NDK değişikliklerini içerir.

Dosya tanımlayıcı sahipliğinde 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ış kullanımıyla ilgili hatalar (kapattıktan sonra kullanma ve çift kapatma olarak ortaya çıkar) bellek ayırma serbest bıraktıktan sonra kullanma ve çift serbest bırakma hatalarına benzer ancak teşhis edilmesi ve düzeltilmesi çok daha zordur. fdsan, dosya tanımlayıcı sahipliğini zorunlu kılarak dosya tanımlayıcısının yanlış kullanılmasını tespit etmeye ve/veya önlemeye çalışır.

Bu sorunlarla ilgili kilitlenmeler hakkında daha fazla bilgi için fdsan tarafından algılanan hata başlıklı makaleyi inceleyin. fdsan hakkında daha fazla bilgi için fdsan ile ilgili Googlesource sayfasına bakın.

ELF TLS

NDK kullanılarak oluşturulan ve API düzeyi en az 29 olan uygulamalar, emutls yerine ELF TLS kullanabilir. Dinamik ve statik bağlayıcı desteği, iş parçacığı yerel değişkenlerini işleme yöntemini desteklemek için eklendi.

API düzeyi 28 ve daha düşük sürümler için oluşturulan uygulamalarda, libgcc/compiler-rt'ün bazı emutls sorunlarını gidermesi amacıyla iyileştirmeler uygulandı.

Daha fazla bilgi için NDK geliştiricileri için Android değişiklikleri başlıklı makaleyi inceleyin.

Ç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 referans verdiğinde C++ nesneleri genellikle yalnızca Java nesnesi toplandığında ve örneğin sonlandırıldığında yeniden kullanılabilir. 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 platformun gerektiğinde çöp toplama işlemini gerçekleştirememesi nedeniyle zaman zaman bellek kullanımının büyük oranda artmasına neden oluyordu.

Android 10'da, sistem malloc() tarafından ayrılan yığının toplam boyutunu izleyen çöp toplayıcı (GC), büyük malloc() ayırmalarının her zaman GC'yi tetikleyen hesaplamalara dahil edilmesini sağlar. Çok sayıda C++ ayırma işlemini Java yürütmeyle birlikte kullanan uygulamalarda, bunun sonucunda çöp toplama sıklığında artış görülebilir. Diğer uygulamalarda ise küçük bir düşüş 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 takibi için iyileştirmeler

Android 10'dan itibaren, cihaz üzerinde sistem izleme işlemi gerçekleştirirken izlemenin 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 izleme tamamlanır.

Standart bir izlemeyle test edebileceğ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 edebilirsiniz. Bu durumda, tüm gün boyunca uzun bir izleme kaydı kaydedebilir ve ardından hatanın nedenini belirlemenize yardımcı olması için rapordaki CPU planlayıcıyı, disk etkinliğini, uygulama iş parçacıklarını ve diğer verileri analiz edebilirsiniz.

Android 10 ve sonraki sürümlerde izleme dosyaları, performans enstrümasyonu ve izleme için açık kaynak bir proje olan Perfetto ile açılabilecek 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 sunar.

Dil algılama

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

TextLanguage nesneleri, 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 ConversationActions nesnesi döndürür.

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

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

Android 9, önerilen yanıtları bildirim içinde gösterme özelliğini kullanıma sundu. Android 10, önerilen intent tabanlı işlemleri dahil etme özelliğiyle bu kapsamı genişletir. Ayrıca platform, bu önerileri otomatik olarak oluşturabilir. Uygulamalar kendi önerilerini sunmaya veya sistem tarafından oluşturulan önerileri devre dışı bırakmaya devam edebilir.

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

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