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:
- 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 konumu biliyorsanız yeni yazılan dosyaların nerede saklanacağıyla ilgili sisteme bir ipucu verebilirsiniz.
- Her harici depolama cihazının bir benzersiz birim adı vardır.
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:
- Kendi alt sınıfınızı tanımlayın ve bu alt sınıfın
onRenderProcessResponsive()
ileonRenderProcessUnresponsive()
yöntemlerini uygulayın. WebViewRenderProcessClient
öğenizin bir örneğini bir veya daha fazlaWebView
nesneye ekleyin.WebView
yanıt vermezse sistem,WebView
veWebViewRenderProcess
ileterek istemcininonRenderProcessUnresponsive()
yöntemini çağırır. (WebView
tek işlemliyseWebViewRenderProcess
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.
![](https://developer.android.com/static/images/about/versions/10/settings-wifi-part1.png?authuser=7&hl=tr)
![](https://developer.android.com/static/images/about/versions/10/settings-wifi-part2.png?authuser=7&hl=tr)
Ö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.