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'daki davranış değişikliklerine (API düzeyi 29'u hedefleyen uygulamalar ve tüm uygulamalar için) ve gizlilik değişikliklerine de göz atı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ğinin kontrol edilmesi.
- Kullanıcının, biyometri girişini kullanarak kimlik doğrulayamadığı durumlarda cihaz PIN'ini, desenini veya şifresini kullanarak kimlik doğrulamasına olanak tanıyan yedek mekanizma.
- Kullanıcı gizli biyometrik modu kullanarak kimliğini doğruladıktan sonra sistemden kullanıcı onayı istememesini söyleyen bir ipucu. Örneğin, kullanıcı yüz kimlik doğrulamasını kullandıktan sonra başka bir onay gerekmediğini sisteme bildirebilirsiniz.
Yerleşik DEX kodunu doğrudan APK'dan çalıştırma
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, TLS 1.3 desteği ekler. 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, TLS 1.3 ile güvenli bağlantıların TLS 1.2'ye kıyasla %40 daha hızlı kurulabileceğini gösteriyor.
TLS 1.3'ü uygulamamız hakkında daha fazla bilgi için Tüm uygulamalarda davranış değişiklikleri sayfasının TLS bölümüne bakın.
Public Conscrypt API
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.
Wi-Fi ağ bağlantısı API'si
Android 10, eşler arası bağlantılar için destek ekler. Bu özellik, istenen bir ağın özelliklerini tanımlamak 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 ağ önerisi başlıklı makaleyi inceleyin.
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 gecikmeli mod, özellikle gerçek zamanlı mobil oyun uygulamaları için faydalıdır.
DNS çözümleyicisinde özel aramalar
Android 10, hem açık metin aramaları hem de TLS üzerinden DNS 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.
Wi-Fi 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, özelliği destekleyen cihazlarda devam eden IP Multimedya Alt Sistemi (IMS) aramalarının kalitesi (ağla olan bağlantı kalitesi dahil) hakkında bilgi toplama özelliğini ekler.
Arama filtreleme ve arayan kimliği
Android 10, uygulamanıza kullanıcının adres defterinde bulunmayan aramaları potansiyel spam aramalar olarak tanımlama ve spam aramaların kullanıcı adına sessizce reddedilmesini sağlama olanağı sunar. Bu engellenen aramalarla ilgili bilgiler, arama günlüğünde engellenen aramalar olarak kaydedilir. Böylece, kullanıcı aramaları kaçırdığında daha fazla şeffaflık sağlanır. 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 aramaları değiştirmenize olanak tanıyan arayüzler sağlar. Örneğin, üçüncü taraf uygulamaları aramaları iptal edip VoIP üzerinden yeniden yönlendirebilir.
Harici depolama alanında dosya oluşturmayla ilgili iyileştirmeler
Android 10, kapsamlı depolama özelliğini kullanıma sunmanın yanı sıra harici depolama alanıyla ilgili aşağıdaki özellikleri de ekler:
- Uygulamanıza, diske yazılırken 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. Ayrıntılı bilgi 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 ç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. Bu, canlı yayınlar ve radyo yayınları gibi kesin olmayan yayınlar için çubuğun görünmediği anlamına gelir. - 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
için codec hakkında daha fazla bilgi sağlayan 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 ve normal sıcaklığı geri getirmek için daha düşük güç kullanımı sağlamak amacıyla termal API kullanabilir. Uygulamalar, PowerManager'da bir dinleyici kaydeder. Bu dinleyici aracılığıyla sistem, hafif ve orta düzeyden ciddi, kritik, acil durum ve kapanma arasında değişen mevcut termal durumu bildirir.
Cihaz termal stres bildirdiğinde uygulamalar ve oyunlar, çeşitli şekillerde güç kullanımını azaltmak için devam eden etkinlikleri yavaşlatarak 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 çekimi 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 son işlemde istedikleri bulanıklığı uygulayabilirler.
Bu biçimin spesifikasyonunu okumak için Dinamik Derinlik Biçimi bölümüne bakın.
Yüksek Verimli Resim Dosyası biçimi
Yüksek Verimli Resim Dosyası (HEIF) biçimi, diğer dosya biç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 kamerada 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
değerinin klavyenin veya tuş takımının parçası olan bir metin giriş anahtarını temsil edip etmediğini belirlemek için isTextEntryKey()
işlevini çağırabilirsiniz.
Erişilebilirlik iletişim kutusu sözlü geri bildirimi
Kullanıcıların erişilebilirlik hizmetini başlatmak için erişilebilirlik kısayolunu gerçekleştirmesi gerektiğinde Android 10, hizmetin isteği üzerine iletişim kutusunun metinden sese dönüştürme istemiyle birlikte gösterilmesine olanak tanır.
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ızı yukarı doğru kaydırın ve 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
Bir otomatik doldurma isteğinin uyumluluk modu aracılığıyla oluşturulup oluşturulmadığını belirlemek için FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST
işaretini kullanabilirsiniz.
Kullanıcı adı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.
Kullanıcının Kaydet kullanıcı arayüzüyle 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ı daha önce şifre depoladıysa ve yeni bir şifre kaydederse Otomatik Doldurma, kullanıcıdan yeni bir şifre kaydetmek yerine mevcut şifreyi güncellemesini ister.
Alan sınıflandı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, Android JVMTI uygulamasında can_pop_frames
özelliği için destek ekler. Bu özellik, hata ayıklama sırasında bir kesme noktasında duraklattıktan ve yerel değişkenleri, genel değişkenleri veya bir işlevin uygulanması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 derleyiciyle 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, uygulamaların WebView
'in yanıt verip vermediğini algılamak için kullanabileceği WebViewRenderProcessClient
temsili sınıfını kullanıma sunar. Bu sınıfı kullanmak için:
- Kendi alt sınıfınızı tanımlayın ve
onRenderProcessResponsive()
ileonRenderProcessUnresponsive()
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, uygulamaların kullanıcılara ayarlarını kendi bağlamlarında göstermesine olanak tanıyan bir API olan Ayarlar Panelleri'ni kullanıma sunar. Bu sayede kullanıcıların uygulamayı kullanabilmek için NFC veya Mobil veri gibi ayarları değiştirmek üzere Ayarlar'a gitmesi gerekmez.
Ö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ıdan bağlantıyı yeniden kurmak 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.
Bir ayarlar paneli görüntülemek için aşağıdaki Settings.Panel
işlemlerinden birini kullanarak bir intent tetikleyin:
Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
Java
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type); startActivityForResult(panelIntent);
settings_panel_type
aşağıdakilerden 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
Paylaşım Kısayol API'si, Doğrudan Paylaşım API'lerinin yerini alıyor.
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 benzer olduğundan, her iki özelliği de daha kolay kullanabilmeniz için ShortcutInfo
API'sini genişlettik. Paylaşım Kısayollarını 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ğlamak için yöntemler ekler ve geliştirir.
Doğrudan paylaşım hedefleri
Doğrudan Paylaşım Hedefi olarak dinamik bir kısayol 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'sidir. Paylaşım hedeflerini yayınlamanın tercih edilen yolu 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. Tüm bilgiler için Koyu tema başlıklı makaleyi inceleyin.
Ö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 hizmet türü atamak mümkündür ancak bu durum nadiren uygundur.
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.
Kotlin'de boşluk sözleşmesinin ihlalleri genellikle 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 Developers Blog'daki Android Pie SDK'sı artık Kotlin'e daha uygun başlıklı makaleyi inceleyin.
NDK
Android 10, aşağıdaki NDK değişikliklerini içerir.
Dosya tanımlayıcı sahipliğiyle ilgili hata ayıklama işlemi iyileştirildi
Android 10'a, dosya tanımlayıcı sahipliği sorunlarını daha kolay bulup düzeltmenize yardımcı olan fdsan eklendi.
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'daki 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ı atık toplama tetikleme
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. Önceki sürümlerde platform, Java nesneleriyle ilişkili birçok C++ nesnesinin boyutlarını tahmin ediyordu. Bu tahmin her zaman doğru değildi ve platformun gerektiğinde çöp toplama işlemini yapamamasından dolayı 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. Bu iki değerden birini belirttiğinizde sistem uzun bir izleme gerçekleştirir ve izleme kaydedilirken izleme arabelleğini hedef dosyaya düzenli aralıklarla 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 ayarı ve sınıflandırma için karşılık gelen bir güven puanını içerir.
Önerilen görüşme işlemleri
suggestConversationActions()
yöntemi, mevcut sınıflandırma yöntemlerine benzer şekilde çalışır. Bir ConversationActions.Request
nesnesi alır ve 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ı bildirimde 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.