Android 10, kullanıcılar ve geliştiriciler için mükemmel özellikler ve işlevler sunar. Bu belgede, geliştiricilerin kullanabileceği özellikler açıklanmaktadır.
API'ler hakkında bilgi edinmek için API farklılıkları 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şikliklerini (API düzeyi 29'u hedefleyen uygulamalar ve tüm uygulamalar için) ve gizlilik değişikliklerini de inceleyin.
Güvenlik iyileştirmeleri
Android 10, aşağıdaki bölümlerde özetlenen bir dizi güvenlik özelliği sunar.
İyileş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ü.
- Kullanıcının biyometrik girişini kullanarak kimlik doğrulayamaması durumunda cihazının PIN'ini, desenini veya şifresini kullanarak kimlik doğrulamasını sağlayan bir yedek mekanizma.
- Kullanıcı, dolaylı bir biyometrik yöntem kullanarak kimlik doğruladıktan sonra sistemin kullanıcı onayı istememesi gerektiğini belirten bir ipucu. Örneğin, sisteme, kullanıcı yüz tanıma ile kimlik doğrulama yaptıktan sonra başka bir onay gerekmediğini söyleyebilirsiniz.
Yerleştirilmiş 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ırganların cihazda yerel olarak derlenen koda müdahale etmeyi başarması durumunda saldırıyı önlemeye 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 sunan ö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ızla ilgili daha fazla bilgi için Tüm uygulamalar için davranış değişiklikleri sayfasındaki TLS bölümüne bakın.
Herkese açık 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'lerde 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 yorumlanabilir. Örneğin, javax.net.ssl.SSLSocket örnekleri üzerinde çalışan kod, bunun yerine SSLSockets yöntemlerini kullanabilir.
Bağlantı özellikleri
Android 10, ağ ve bağlantı ile ilgili çeşitli iyileştirmeler içerir.
Kablosuz ağ bağlantısı API'si
Android 10, eşler arası bağlantılar için destek ekler. Bu özellik, uygulamanızın kullanıcıdan cihazın bağlı olduğu erişim noktasını değiştirmesini istemesine olanak tanır. Bunun için istenen ağın özelliklerini açıklamak üzere WifiNetworkSpecifier kullanılır. Eşler arası bağlantı, ağ sağlamayan amaçlar için kullanılır. Örneğin, 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ğ İsteği API'si başlıklı makaleyi inceleyin.
Kablosuz ağ önerisi API'si
Android 10, uygulamanızın kullanıcıdan kablosuz ağ erişim noktasına bağlanmasını istemesi için destek ekler. Hangi ağa bağlanılacağıyla ilgili önerilerde bulunabilirsiniz. Platform, sizin ve diğer uygulamaların girişine göre hangi erişim noktasının kabul edileceğini seçer.
Bu özellik hakkında daha fazla bilgi için Kablosuz ağ önerisi başlıklı makaleyi inceleyin.
Kablosuz yüksek performans ve düşük gecikme modlarında iyileştirmeler
Android 10, gecikmeyi en aza indirmek için temel modeme bir ipucu vermenize olanak tanır.
Android 10, yüksek performans modunu ve düşük gecikme modunu etkili bir şekilde desteklemek için kablosuz kilit API'sini genişletir. Yüksek performans ve düşük gecikme modu için kablosuz güç tasarrufu devre dışı bırakılır. Ayrıca, modem desteğine bağlı olarak düşük gecikme modunda daha fazla gecikme optimizasyonu etkinleştirilebilir.
Düşük gecikme modu yalnızca kilidi alan uygulama ön planda çalışırken ve ekran açıkken etkinleştirilir. Düşük gecikme modu, özellikle gerçek zamanlı mobil oyun uygulamaları için kullanışlıdır.
DNS çözümleyicide özel aramalar
Android 10, hem şifresiz metin aramaları hem de DNS-over-TLS modunu kullanarak ö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 izin veriyordu ancak diğer kayıt türlerini desteklemiyordu.
DnsResolver API'si, genel ve eşzamansız çözümleme sağlayarak SRV, NAPTR ve diğer kayıt türlerini aramanıza olanak tanır. Yanıtı ayrıştırma işleminin uygulama tarafından gerçekleştirildiğini unutmayın.
NDK tabanlı uygulamalar için android_res_nsend sayfasına bakın.
Wi-Fi Easy Connect
Android 10, kullanımdan kaldırılan WPS'nin yerine Easy Connect'i kullanarak kablosuz ağ kimlik bilgilerini eş cihaza sağlamanıza olanak tanır.
Uygulamalar, ACTION_PROCESS_WIFI_EASY_CONNECT_URI intent'ini kullanarak Easy Connect'i kurulum ve temel hazırlık akışlarına entegre edebilir.
Bu özellik hakkında daha fazla bilgi için Wi-Fi Easy Connect başlıklı makaleyi inceleyin.
Kablosuz Doğrudan Bağlantı API'si
WifiP2pConfig ve WifiP2pManager API sınıfları, önceden belirlenmiş bilgileri kullanarak Kablosuz Doğrudan Bağlantı'ya hızlı bağlantı kurma özelliklerini desteklemek için Android 10'da güncellenmiştir. 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() yerine aşağıdakileri yazın:
Kotlin
manager.connect(channel, config, null)
Java
manager.connect(channel, config, null);
Bluetooth LE Bağlantı Odaklı Kanallar (CoC)
Android 10, uygulamanızın iki BLE cihazı arasında daha büyük veri akışları 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ı mekanizmalarını soyutlar.
Telefon özellikleri
Android 10, telefonla ilgili çeşitli iyileştirmeler içerir.
Görüşme kalitesinde iyileştirmeler
Android 10, bu özelliği destekleyen cihazlarda, ağa giden ve ağdan gelen kalite de dahil olmak üzere devam eden IP Multimedya Altsistemi (IMS) aramalarının kalitesi hakkında bilgi toplama özelliğini ekler.
Arama filtreleme ve arayan kimliği
Android 10, uygulamanıza kullanıcının adres defterinde olmayan aramaları potansiyel spam aramalar olarak tanımlama ve spam aramaları kullanıcı adına sessizce reddetme olanağı sağlar. Engellenen bu aramalarla ilgili bilgiler, kullanıcıların cevapsız aramaları konusunda daha fazla şeffaflık sağlamak için arama kaydına engellenen aramalar 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 alma şartını ortadan kaldırır.
Arama yönlendirme hizmeti API'si
Android 10, arama intent'lerinin işlenme şeklini değiştirir. NEW_OUTGOING_CALL yayını kullanımdan kaldırıldı ve CallRedirectionService API ile değiştirildi. CallRedirectionService API'si, 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şturma ile ilgili iyileştirmeler
Android 10, kapsamlı depolama özelliğini sunmanın yanı sıra harici depolama alanıyla ilgili aşağıdaki özellikleri de ekler:
- Uygulamanıza diske yazılan bir medya dosyasına özel erişim vermek için
IS_PENDINGişaretini kullanabilirsiniz. - Dosyaların depolanması gereken belirli bir konum biliyorsanız yeni yazılan dosyaların nerede depolanacağı konusunda sisteme ipucu verebilirsiniz.
- Her harici depolama cihazının benzersiz bir birim adı vardır.
Medya ve grafikler
Android 10 ile aşağıdaki yeni medya ve grafik özellikleri ile API'ler kullanıma sunulmuştur:
Ses girişi paylaşılıyor
Android 10, iki uygulamanın ses girişini aynı anda paylaşabilmesini sağlar. Tüm bilgiler için Ses girişini paylaşma başlıklı makaleyi inceleyin.
Ses oynatma kaydı
Android 10, uygulamalara diğer uygulamalardan ses yakalama özelliği sunar. Tüm bilgileri Playback yakalama bölümünde bulabilirsiniz.
MediaStyle bildirimlerinde arama çubuğu
Android 10'dan itibaren MediaStyle bildirimlerinde bir arama çubuğu gösterilir. Arama çubuğu, PlaybackState.getPosition() uygulamasındaki oynatma ilerleme durumunu gösterir. Bazı durumlarda arama çubuğu, oynatılan programda 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
MediaSessionvarsa ve süresi (MediaMetadata.METADATA_KEY_DURATIONtarafından belirtilir) sıfırdan büyükse görünür. Bu nedenle, canlı yayınlar ve radyo yayınları gibi belirsiz akışlarda çubuk gösterilmez. - Oturumda
ACTION_SEEK_TOuygulanıyorsa kullanıcı, oynatma konumunu kontrol etmek için arama çubuğunu sürükleyebilir.
Yerel MIDI API'si
Android Yerel MIDI API'si (AMidi), uygulama geliştiricilere C/C++ koduyla MIDI verileri gönderip alma olanağı sunar. Bu sayede, C/C++ ses/kontrol mantığıyla daha yakından entegrasyon sağlanır ve JNI ihtiyacı en aza indirilir.
Daha fazla bilgi için Android Native MIDI API başlıklı makaleyi inceleyin.
MediaCodecInfo iyileştirmeleri
Android 10, bir codec hakkında daha fazla bilgi veren yöntemleri MediaCodecInfo sınıfına 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 durum, uygulamaları ve oyunları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun hesaplama veya sürekli ağ etkinliği kullanan uygulamaların sorunlarla karşılaşma olasılığı daha yüksektir. Bu sorunlar, yonga seti ve çekirdek frekanslarına, entegrasyon düzeylerine, cihaz paketine ve form faktörüne göre cihazlar arasında farklılık gösterebilir.
Android 10'da uygulamalar ve oyunlar, cihazdaki değişiklikleri izlemek ve normal sıcaklığı geri yüklemek için daha düşük güç kullanımı sağlamak üzere bir termal API kullanabilir. Uygulamalar, PowerManager'da bir dinleyici kaydeder. Sistem, bu dinleyici aracılığıyla hafif ve orta seviyeden ağır, kritik, acil durum ve kapanmaya kadar devam eden termal durumu bildirir.
Cihaz termal stres bildirdiğinde uygulamalar ve oyunlar, çeşitli şekillerde güç kullanımını azaltmak için devam eden etkinlikleri azaltarak yardımcı olabilir. Örneğin, yayın uygulamaları çözünürlüğü/bit hızını veya ağ trafiğini azaltabilir, kamera uygulaması flaşı ya da yoğun resim iyileştirmeleri devre dışı bırakabilir, oyunlar kare hızını veya poligon mozaiklemeyi azaltabilir, medya uygulamaları hoparlör sesini azaltabilir ve harita uygulamaları GPS'i kapatabilir.
Termal API, yeni bir cihaz HAL katmanı gerektirir. Bu katman şu anda Android 10 çalıştıran Pixel cihazlarda desteklenmektedir. Ekosisteme mümkün olan en kısa sürede geniş destek sağlamak 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 sunar:
Tek renkli kamera desteği
Monokrom kamera özelliği ilk olarak Android 9'da (API düzeyi 28) kullanıma sunuldu. Android 10, monokrom kamera desteğine çeşitli geliştirmeler ekler:
- Bellek verimliliğini artırmak için Y8 akış biçimi desteği.
- Monokrom ham DNG çekimi desteği.
- Normal monokrom kamera ile yakın kızılötesi kameraları ayırt etmek için MONO ve NIR CFA numaralandırmaları kullanıma sunuldu.
Doğal bir monokrom görüntü yakalamak için bu özelliği kullanabilirsiniz. Mantıksal bir çoklu kamera cihazı, düşük ışıkta daha iyi görüntü kalitesi elde etmek için fiziksel alt kamera olarak monokrom 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 depolayabilir. Uygulamalar hem JPG resmini hem de derinlik meta verilerini isteyebilir ve bu bilgileri kullanarak orijinal resim verilerini değiştirmeden, işlem sonrası aşamada istedikleri bulanıklığı uygulayabilir.
Bu biçimin spesifikasyonunu okumak için Dinamik Derinlik Biçimi'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 kamera özelliğinde 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ştirir. Camera2 API'ye aşağıdakiler eklendi:
isSessionConfigurationSupported(SessionConfiguration sessionConfig): Geçirilen oturum yapılandırmasının kamera yakalama 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 belirlemenizi sağlar. Daha iyi güç verimliliği elde etmek için mantıksal akışlar ve fiziksel alt kamera akışları istemek üzere döndürülen kimlikleri kullanabilirsiniz.
Accessibility Services API
Android 10 ile aşağıdaki yeni erişilebilirlik hizmeti özellikleri ve API'leri kullanıma sunulmuştur:
AccessibilityNodeInfo giriş anahtarı işareti
Android 10'dan itibaren, belirli bir AccessibilityNodeInfo öğesinin klavye veya tuş takımının parçası olan bir metin giriş tuşunu temsil edip etmediğini belirlemek için isTextEntryKey() yöntemini çağırabilirsiniz.
Erişilebilirlik iletişim kutusu sözlü geri bildirimi
Kullanıcıların bir erişilebilirlik hizmetini başlatmak için erişilebilirlik kısayolunu kullanması gerektiğinde Android 10, hizmetin istemesi durumunda iletişim kutusuna metin okuma isteminin eşlik etmesine 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. Kullanıcıların erişilebilirlik hizmetleri menüsüne erişmek için aşağıdaki hareketlerden birini yapması gerekir:
- İki parmağınızı yukarı doğru kaydırın.
- İki parmağınızı yukarı doğru 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 denetleyicisi geliştirmesi
Android 10'da erişilebilirlik hizmetleri, cihaz bağlı bir donanım 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,
getRecommendedTimeoutMillis()
API'sini kullanıma sunar. 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
Bir uygulamanın kullanıcı adı, şifre ve diğer alanları görüntülemek için birden fazla etkinlik kullandığı durumlarda SaveInfo.FLAG_DELAY_SAVE işaretini kullanarak destek sağlayabilirsiniz.
Kullanıcının kaydetme kullanıcı arayüzüyle etkileşimi
İletişim kutusunda bir işlem dinleyici ayarlayıp ilgili şifre uzak görünümünün görünürlüğünü değiştirerek kaydetme iletişim kutusundaki şifre alanını gösterebilir ve gizleyebilirsiniz.
Veri kümelerini güncelleme desteği
Otomatik doldurma, mevcut şifreleri güncelleyebilir. Örneğin, bir kullanıcı daha önce bir şifre kaydettiyse ve yeni bir şifre kaydediyorsa otomatik doldurma, kullanıcıdan yeni bir şifre kaydetmek yerine mevcut şifreyi güncellemesini ister.
Alan sınıflandırması ile ilgili iyileştirmeler
Android 10, Field Classification API'de aşağıdaki iyileştirmeleri içerir.
UserData.Builder oluşturucusu
UserData.Builder
oluşturucusu, 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 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 eklendiğinde istisna oluşturuluyordu.
Kredi kartı numaraları için daha iyi 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 özel alan sınıflandırması desteği
Android 10, oturum süresince uygulamaya özel kullanıcı verileri ayarlamanıza olanak tanıyan FillResponse.setUserData() özelliğini ekler.
Bu, otomatik doldurma hizmetinin uygulamaya özel 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. Hata ayıklama sırasında bu özellik, bir kesme noktasında duraklatıp yerel, genel 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 birleştiriciye (SurfaceFlinger) düşük düzeyde erişim için SurfaceControl API'si sağlar. Çoğu kullanıcı için birleştiriciden yararlanmanın doğru yolu SurfaceView'dur. SurfaceControl API'si, belirli durumlarda faydalı olabilir. Örneğin:
- Birden fazla platformun senkronizasyonu
- İşlemler arası yüzey yerleştirme
- Daha düşük düzeyde 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ıyla karşılaşan kullanıcılar için bir alternatif sunar.
WebView'da yanıt vermeyen oluşturucuları algılama
Android 10, uygulamaların bir WebView'nin yanıt vermediğini algılamak için kullanabileceği WebViewRenderProcessClient soyut sınıfını sunar. Bu sınıfı kullanmak için:
- Kendi alt sınıfınızı tanımlayın ve
onRenderProcessResponsive()veonRenderProcessUnresponsive()yöntemlerini uygulayın. WebViewRenderProcessClientörneğinizi bir veya daha fazlaWebViewnesnesine ekleyin.WebViewyanıt vermezse sistem, istemcininonRenderProcessUnresponsive()yöntemini çağırarakWebViewveWebViewRenderProcessdeğerlerini iletir. (WebViewtek işlemliyseWebViewRenderProcessparametresi boştur.) Uygulamanız, kullanıcıya oluşturma işlemini durdurmak isteyip istemediğini soran bir iletişim kutusu göstermek gibi uygun bir işlem yapabilir.
WebView yanıt vermemeye devam ederse sistem düzenli olarak (beş saniyede bir kereden fazla olmamak üzere) onRenderProcessUnresponsive() çağrısı yapar ancak başka bir işlem yapmaz.
WebView tekrar yanıt vermeye başlarsa sistem onRenderProcessResponsive() yöntemini yalnızca bir kez çağırır.
Ayarlar panelleri
Android 10, uygulamaların kullanıcılara uygulama bağlamında ayarları göstermesine olanak tanıyan bir API olan Ayarlar Panelleri'ni kullanıma sunar. Bu sayede kullanıcıların uygulamayı kullanmak için Ayarlar'a gidip NFC veya Mobil veri gibi ayarları değiştirmesi gerekmez.
Örneğin, bir kullanıcının cihazı uçak modundayken web tarayıcısı açtığını varsayalım. Android 10'dan önce uygulama, yalnızca kullanıcıdan bağlantıyı geri yüklemek için Ayarlar'ı açmasını isteyen genel bir mesaj gösterebiliyordu. Android 10'da tarayıcı uygulaması; uçak modu, kablosuz ağ (yakındaki ağlar dahil) ve mobil veri gibi önemli bağlantı ayarlarını gösteren satır içi bir panel görüntüleyebilir. Bu panel sayesinde kullanıcılar uygulamadan çıkmadan bağlantıyı geri yükleyebilir.
Bir ayar panelini görüntülemek için aşağıdaki Settings.Panel işlemlerinden biriyle bir intent tetikleyin:
Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
Java
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type); startActivityForResult(panelIntent);
settings_panel_type şunlardan biri olabilir:
ACTION_INTERNET_CONNECTIVITY- Uçak modu, kablosuz ağ ve mobil veri gibi internet bağlantısıyla ilgili ayarları gösterir.
ACTION_WIFI- Kablosuz ağ ayarlarını gösterir ancak diğer bağlantı ayarlarını göstermez. Bu, büyük yüklemeler veya indirmeler yapmak için kablosuz bağlantı gerektiren uygulamalar için kullanışlıdır.
ACTION_NFC- Near Field Communication (NFC) ile ilgili tüm ayarları gösterir.
ACTION_VOLUME- Tüm ses akışlarının ses düzeyi ayarlarını gösterir.
Paylaşım iyileştirmeleri
Android 10, paylaşım konusunda çeşitli iyileştirmeler sunar:
Sharing Shortcuts API
Sharing Shortcuts API, Direct Share API'lerinin yerini alır.
Sharing Shortcuts API, sonuçları talep üzerine reaktif olarak almak yerine uygulamaların doğrudan paylaşım hedeflerini önceden yayınlamasına olanak tanır. ShortcutManager bu şekilde çalışır.
İki API benzer olduğundan, her iki özelliği de kullanmayı 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, Paylaşım Kısayolları API'sini kullanan uygulamalara göre daha düşük önceliğe sahiptir.
ShortcutInfo.Builder
paylaşım hedefi hakkında ek bilgi sağlamak için yöntemler ekler ve geliştirir.
Doğrudan paylaşım hedefleri
Dinamik kısayolları doğrudan paylaşım hedefi olarak yayınlayabilirsiniz. Doğrudan paylaşım hedefleri 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ınlamak için tercih edilen yöntem budur.
Metin önizleniyor
Bir uygulama metin içeriği paylaştığında, paylaşım sayfası kullanıcı arayüzünde içeriğin isteğe bağlı bir önizlemesini gösterebilir.
Zengin metin önizlemeleri ekleme bölümüne bakın.
Daha fazla bilgi
Uygulamaların verileri nasıl 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ı makalelere göz atın.
Koyu tema
Android 10, hem Android sistem kullanıcı arayüzüne hem de cihazda çalışan uygulamalara uygulanan koyu tema sunar. Tüm bilgileri görmek için Koyu tema bölümüne bakın.
Ön plan hizmeti türleri
Android 10, belirli birkaç hizmetin tanımına eklediğ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 nadiren uygun olur.
Aşağıdaki tabloda, farklı ön plan hizmet türleri ve belirli bir türün beyan edilmesinin uygun olduğu hizmetler gösterilmektedir:
| Ön plan hizmeti türü | Bu türü beyan etmesi 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 bir işleme devam etme |
mediaPlayback
| Sesli kitap, podcast veya müzik çalma |
mediaProjection
| Cihazın ekranının kısa bir videosunu kaydedin. |
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 null değer alabilme ek açıklamaları
Android 10, libcore API'leri için SDK'daki null değer alabilme ek açıklamalarının kapsamını genişletir. Bu ek açıklamalar, Android Studio'da Kotlin veya Java null değer alabilme analizini kullanan uygulama geliştiricilerin bu API'lerle etkileşim kurarken null değer bilgisi almasını sağlar.
Normalde Kotlin'de null değer alabilme 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 alabilme ihlallerinin hata yerine uyarı vermesine neden olur.
Ayrıca, Android 9'da eklenen @RecentlyNullable veya @RecentlyNonNull ek açıklamaları sırasıyla @Nullable ve @NonNull olarak değiştiriliyor.
Bu, Android 10 ve sonraki sürümlerde null değer alabilme 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'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 iyileştirildi.
Android 10, dosya tanımlayıcı sahipliği sorunlarını daha kolay bulup düzeltmenize yardımcı olan fdsan'ı ekler.
Dosya tanımlayıcı sahipliğinin yanlış işlenmesiyle ilgili olan ve genellikle kapattıktan sonra kullanma ve iki kez kapatma olarak ortaya çıkan hatalar, bellek ayırmadaki serbest bıraktıktan sonra kullanma ve iki kez 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ının yanlış yönetilmesini tespit etmeye ve/veya önlemeye çalışır.
Bu sorunlarla ilgili kilitlenmeler hakkında daha fazla bilgi için fdsan tarafından tespit edilen hata başlıklı makaleyi inceleyin. fdsan hakkında daha fazla bilgi için fdsan ile ilgili Googlesource sayfasını inceleyin.
ELF TLS
Minimum API düzeyi 29 olan NDK kullanılarak oluşturulan uygulamalar, emutls yerine ELF TLS kullanabilir. İş parçacığı yerel değişkenlerini işleme yöntemini desteklemek için dinamik ve statik bağlayıcı desteği eklendi.
API düzeyi 28 ve daha düşük sürümler için geliştirilen uygulamalarda, bazı emutls sorunlarını gidermek amacıyla libgcc/compiler-rt için iyileştirmeler yapılmıştır.
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 devasa nesnelere referans verdiğinde C++ nesneleri genellikle yalnızca Java nesnesi toplandığında ve örneğin sonlandırıldığında geri alınabilir. Önceki sürümlerde platform, 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 ölçüde artmasına neden oluyordu.
Android 10'da çöp toplayıcı (GC), sistem malloc() tarafından ayrılan yığının toplam boyutunu izleyerek büyük malloc() ayırmalarının her zaman GC'yi tetikleyen hesaplamalara dahil edilmesini sağlar. Çok sayıda C++ ayırmasını Java yürütme ile birleştiren uygulamalarda, çöp toplama sıklığında artış görülebilir. Diğer uygulamalarda 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 izleme 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 değerlerden birini belirttiğinizde sistem, izleme kaydedilirken izleme arabelleğini düzenli olarak hedef dosyaya kopyalayarak uzun bir izleme gerçekleştirir. İzleme, belirttiğiniz boyut veya süre sınırlarına ulaşıldığında tamamlanır.
Standart bir izlemeyle 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 izleme kaydedebilir ve ardından hatanın nedenini belirlemenize yardımcı olması için rapordaki CPU zamanlayı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 ölçümü ve izleme için açık kaynaklı bir proje olan Perfetto ile açılabilen bir biçimde kaydedilir. Perfetto izleme dosyalarını Systrace biçimine dönüştürebilirsiniz.
TextClassifier 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. TextLanguage.Request nesnesi alır ve TextLanguage nesnesi döndürür.
TextLanguage nesneleri, sıralı çiftlerden oluşan bir listeden meydana gelir. Her çift, bir yerel ayar ve sınıflandırma için karşılık gelen bir güven puanı içerir.
Önerilen görüşme işlemleri
suggestConversationActions()
yöntemi, mevcut sınıflandırma yöntemlerine benzer şekilde çalışır. Bir ConversationActions.Request nesnesi alır ve bir ConversationActions nesnesi döndürür.
ConversationActions
nesneleri,
ConversationAction
nesnelerinin bir listesinden oluşur. Her ConversationAction nesnesi, potansiyel bir önerilen işlem ve bu işlemin güven puanını içerir.
Bildirimlerde akıllı yanıtlar/işlemler
Android 9, bildirimlerde önerilen yanıtları gösterme özelliğini kullanıma sundu. Android 10, amaca dayalı önerilen işlemleri dahil etme özelliğiyle bu işlevi genişletir. Ayrıca platform, bu önerileri otomatik olarak oluşturabilir. Uygulamalar kendi önerilerini sunmaya devam edebilir veya sistem tarafından oluşturulan önerileri devre dışı bırakabilir.Bu yanıtları oluşturmak için kullanılan API, TextClassifier'nin bir parçasıdır ve Android 10'da doğrudan 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 öneri oluşturmaz. Uygulamanızın bildirimlerinde önerilen yanıt veya işlem gösterilmesini istemiyorsanız setAllowGeneratedReplies() ve setAllowSystemGeneratedContextualActions() kullanarak sistem tarafından oluşturulan yanıtları ve işlemleri devre dışı bırakabilirsiniz.