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:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: İletilen oturum yapılandırmasının kamera yakalama oturumu oluşturmak için kullanılıp kullanılamayacağını sorgulamanızı sağlar.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
: Mantıksal kamera cihazını destekleyen etkin fiziksel kameranın kimliğini belirlemenizi sağlar. Daha iyi güç verimliliği elde etmek için döndürülen kimlikleri kullanarak mantıksal akışlar ve fiziksel alt kamera akışları isteyebilirsiniz.
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:
- Kendi alt sınıfınızı tanımlayıp bu alt sınıfın
onRenderProcessResponsive()
veonRenderProcessUnresponsive()
yöntemlerini uygulayın. WebViewRenderProcessClient
öğenizin bir örneğini bir veya daha fazlaWebView
nesnesine ekleyin.WebView
yanıt vermezse sistem,WebView
veWebViewRenderProcess
değerlerini 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, 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.
Ö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.