Android 10, kullanıcılar ve geliştiriciler için mükemmel özellikler ve olanaklar sunar. Bu dokümanda, geliştiricilerin kullanabileceği özellikler vurgulanmaktadır.
API'ler hakkında bilgi edinmek için API fark raporunu okuyun veya Android API referansını ziyaret edin. "API düzeyi 29'da eklenen" API'leri bulun. Ayrıca, platform değişikliklerinin uygulamalarınızı etkileyebileceği alanları öğrenmek 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ı unutmayın.
Güvenlik geliştirmeleri
Android 10'da, aşağıdaki bölümlerde özetlenen çeşitli güvenlik özellikleri sunulmaktadır.
İyileştirilmiş biyometrik kimlik doğrulama iletişim kutuları
Android 10, biyometrik kimlik doğrulama desteğiyle ilgili aşağıdaki iyileştirmeleri kullanıma sunuyor:
- Biyometrik kimlik doğrulama özelliğinin kontrolü.
- Kullanıcının biyometrik girişini kullanarak kimlik doğrulaması yapamadığı durumlarda, cihazın PIN'ini, desenini veya şifresini kullanarak kimlik doğrulaması yapmasına olanak tanıyan yedek mekanizma.
- Kullanıcı, örtülü bir biyometrik yöntem kullanarak kimlik doğrulamasının ardından sisteme kullanıcı onayı istememesini belirten bir ipucudur. Örneğin, bir kullanıcı yüz kimlik doğrulamasını kullanarak kimlik doğruladıktan sonra sisteme başka bir onaya ihtiyaç duymayacağını söyleyebilirsiniz.
Yerleştirilmiş DEX kodunu doğrudan APK'dan çalıştırın
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, bir saldırganın cihazdaki yerel olarak derlenmiş koda müdahale etmeyi başarması halinde saldırının önlenmesine yardımcı olabilir.
Daha fazla bilgi için Yerleştirilmiş DEX kodunu doğrudan APK'dan çalıştırma bölümüne bakın.
TLS 1.3 desteği
Android 10'da, TLS 1.3 desteği de sunulmaktadır. TLS 1.3, performans avantajları ve gelişmiş güvenlik özellikleriyle TLS standardının önemli bir revizyonudur. Karşılaştırmalarımız, güvenli bağlantıların TLS 1.2'ye kıyasla TLS 1.3 ile %40 daha hızlı kurulabileceğini gösteriyor.
TLS 1.3'ü nasıl uyguladığımız hakkında daha fazla bilgi için Tüm uygulamalar sayfasındaki davranış değişikliklerindeki TLS bölümüne bakın.
Public Conscrypt API'si
Conscrypt güvenlik sağlayıcısı, Android 10'dan itibaren TLS işlevi için herkese açık bir API içerir.
android.net.ssl
altındaki sınıfların 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ı, karşılık gelen javax.net.ssl
sınıfının çoğul hali olarak çıkarılabilir. Örneğin, javax.net.ssl.SSLSocket
örneklerinde çalışan kod, bunun yerine SSLSockets
örneklerini kullanabilir.
Bağlantı özellikleri
Android 10, ağ iletişimi ve bağlantıyla ilgili çeşitli iyileştirmeler içerir.
Wi-Fi network bağlantı API'sı
Android 10'da eşler arası bağlantı desteği de sunulmaktadır. 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ı; Chromecast ve Google Home donanımı gibi ikincil cihazlar için önyükleme yapılandırması gibi ağ sağlamanın dışındaki amaçlarla kullanılır.
Daha fazla bilgi için Eşler arası bağlantı için Wi-Fi Network Request API sayfasına göz atın.
Kablosuz ağ önerisi API'si
Android 10, kullanıcının kablosuz erişim noktasına bağlanmasını istemek için uygulamanızı desteklemeye imkan tanır. Hangi ağa bağlanacağınıza dair öneriler sağlayabilirsiniz. Platform, en nihayetinde sizin ve diğer uygulamalarınızdan gelen girdilere göre kabul edilecek erişim noktasını seçer.
Bu özellik hakkında daha fazla bilgi edinmek için Kablosuz ağ önerisi sayfasına göz atın.
Kablosuz bağlantı yüksek performans ve düşük gecikme 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 Wi-Fi Lock API'yi genişletir. Kablosuz güç tasarrufu, yüksek performans ve düşük gecikme modu için 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 yararlıdır.
DNS çözümleyicide özel aramalar
Android 10, hem düz metin aramalarını hem de TLS üzerinden DNS modunu kullanarak özel DNS aramaları için yerel destek sağlar. Daha önce, platform DNS çözümleyicisi yalnızca bir adla ilişkilendirilmiş IP adreslerinin aranmasına izin veren ancak diğer kayıt türlerini desteklemeyen A ve AAAA kayıtlarını destekliyordu.
DnsResolver
API genel, eşzamansız çözüm sunarak SRV
, NAPTR
ve diğer kayıt türlerini arayabilmenizi sağlar. Yanıt ayrıştırmanın, işlemi gerçekleştirmek için 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, kullanımdan kaldırılan WPS'nin yerine geçerek eş bir cihaza kablosuz kimlik bilgilerinin temel hazırlığını yapmak için Easy Connect'i kullanmanıza olanak tanır.
Uygulamalar, ACTION_PROCESS_WIFI_EASY_CONNECT_URI
amacını kullanarak Easy Connect'i kurulum ve temel hazırlık akışına entegre edebilir.
Bu özellikle ilgili daha fazla bilgi için Wi-Fi Easy Connect konusuna bakın.
Kablosuz Doğrudan Bağlantı API'sı
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üncellemeler içerir. Bu bilgiler Bluetooth veya NFC gibi bir yan kanal aracılığıyla 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()
öğesini aşağıdakiyle değiştirin:
Kotlin
manager.connect(channel, config, null)
Java
manager.connect(channel, config, null);
Bluetooth LE Bağlantı Yönlü Kanallar (CoC)
Android 10, uygulamanızın iki BLE cihaz arasında daha büyük veri akışlarını aktarmak için BLE CoC bağlantılarını kullanmasını sağlar. Bu arayüz, Bluetooth ve bağlantı mekanizmasını soyutlayarak uygulamayı basitleştirir.
Telefon özellikleri
Android 10, telefon ile ilgili çeşitli iyileştirmeler içerir.
Arama kalitesiyle ilgili iyileştirmeler
Android 10, özelliği destekleyen cihazlarda, devam eden IP Multimedya Alt Sistemi (IMS) çağrılarının kalitesi hakkında bilgi toplama özelliği ekler. Bu bilgiler, ağa gelen ve ağdan giden kalite de dahil olmak üzere çok önemlidir.
Arama süzme ve arayan kimliği
Android 10, uygulamanıza kullanıcının adres defterinde olmayan çağrıları potansiyel spam aramalar olarak tanımlaması ve spam çağrıların kullanıcı adına sessizce reddedilmesini sağlamak için bir yol sunar. Bu engellenen aramalarla ilgili bilgiler, aramaları cevaplamayan kullanıcılara daha fazla şeffaflık sağlamak için çağrı kaydına engellenmiş çağrı olarak kaydedilir. Bu API'nin kullanılması, arama süzme ve arayan kimliği işlevleri sağlamak için kullanıcıdan READ_CALL_LOG
izinleri alma zorunluluğunu ortadan kaldırır.
Çağrı yönlendirme hizmeti API'si
Android 10, arama amaçlarının işlenme şeklini değiştirir. NEW_OUTGOING_CALL
yayını kullanımdan kaldırıldı ve yerini CallRedirectionService
API'si aldı. CallRedirectionService
API, Android platformu tarafından yapılan giden çağrıları değiştirebileceğiniz 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 alanını kullanıma sunmanın yanı sıra harici depolamayla ilgili aşağıdaki özellikleri de sunar:
- Uygulamanıza diske yazılan bir medya dosyasına özel erişim izni vermek için
IS_PENDING
işaretini kullanabilirsiniz. - Dosyaların depolanması gereken belirli bir konumu biliyorsanız yeni yazılan dosyaları nereye depolanacağı konusunda sisteme bir ipucu sağlayabilirsiniz.
- Her harici depolama cihazının benzersiz bir birim adı vardır.
Medya ve grafikler
Android 10'da aşağıdaki yeni medya ve grafik özellikleri ile API'ler sunulmaktadır:
Ses girişi paylaşılıyor
Android 10'da iki uygulama, ses girişini aynı anda paylaşabilme özelliği sunar. Tüm bilgiler için Ses girişi paylaşma başlıklı makaleye bakın.
Ses çalma kaydı
Android 10, bir uygulamaya diğer uygulamalardaki sesleri kaydetme olanağı sunar. Tüm bilgiler için Yakalamayı oynatma bölümüne bakın.
MediaStyle bildirimlerinde arama çubuğu
Android 10 sürümünden itibaren, MediaStyle
bildirimlerinde bir arama çubuğu gösterilir. Arama çubuğu, PlaybackState.getPosition()
kanalından gelen oynatma ilerlemesini gösterir ve bazı durumlarda arama programındaki bir konumu bulmak için kullanılabilir. Arama çubuğunun görünümü ve davranışı şu kurallarla kontrol edilir:
- Etkin bir
MediaSession
varsa ve süresi (MediaMetadata.METADATA_KEY_DURATION
tarafından belirtilir) sıfırdan büyükse arama çubuğu görünür. Bu, çubuğun canlı yayınlar ve radyo yayınları gibi belirsiz yayınlar için görünmediği anlamına gelir. - Oturumda
ACTION_SEEK_TO
uygulanırsa kullanıcı oynatma konumunu kontrol etmek için arama çubuğunu sürükleyebilir.
Yerel MIDI API'sı
Android Native MIDI API (AMidi), uygulama geliştiricilerinin C/C++ koduyla MIDI verilerini gönderip almalarına olanak tanıyarak C/C++ ses/kontrol mantığıyla daha yakın entegrasyon sağlar ve JNI ihtiyacını en aza indirir.
Daha fazla bilgi için Android Yerel MIDI API'si sayfasına bakın.
MediaCodecInfo iyileştirmeleri
Android 10, MediaCodecInfo
'e bir codec hakkında daha fazla bilgi sağlayan yöntemler ekler.
Daha fazla bilgi için Medya codec'leri konusuna bakın.
Thermal API
Cihazlar aşırı ısındığında CPU ve/veya GPU'yu daraltabilirler. Bu da uygulamaları ve oyunları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun bilgi işlem veya sürekli ağ etkinliği kullanan uygulamaların sorunlarla karşılaşma olasılığı daha yüksektir. Bu uygulamalar yonga seti ve temel frekanslara, entegrasyon seviyelerine, cihaz paketi ve form faktörüne bağlı olarak farklı cihazlarda değişiklik gösterebilir.
Android 10'daki uygulamalar ve oyunlar, termal API kullanarak cihazdaki değişiklikleri izleyebilir ve normal sıcaklığı tekrar eski haline getirmek için güç kullanımını düşük tutmak amacıyla harekete geçebilir. Uygulamalar PowerManager'a bir dinleyici kaydeder. Bu program aracılığıyla sistem, hafif ve orta düzey ile şiddetli, kritik, acil ve kapanma gibi bir aralıktaki sürekli termal durumu raporlar.
Cihaz termal stres bildirdiğinde uygulamalar ve oyunlar, çeşitli şekillerde güç kullanımını azaltmak için devam eden etkinlikleri engelleyerek yardımcı olabilir. Örneğin, akış uygulamaları; çözünürlüğü/bit hızını veya ağ trafiğini düşürebilir, bir kamera uygulaması flaşı veya yoğun görüntü iyileştirmeyi devre dışı bırakabilir, oyun, kare hızını veya poligon mozaiklemesini azaltabilir, medya uygulaması hoparlör sesini azaltabilir ve bir harita uygulaması GPS'i kapatabilir.
Termal API için yeni bir cihaz HAL katmanı gerekir. Bu katman, şu anda Android 10 çalıştıran Pixel cihazlarda desteklenmektedir ve ekosisteme mümkün olduğunca hızlı bir şekilde geniş kapsamlı destek sunmak için cihaz üreticisi iş ortaklarımızla birlikte çalışıyoruz.
Kamera ve resimler
Android 10'un kamera ve görüntülerle ilgili şu yeni özelliklerini kullanıma sunuyoruz:
Tek renkli kamera desteği
Android 9 (API düzeyi 28) ilk olarak tek renkli kamera özelliğini kullanıma sunmuştur. Android 10'da, tek renkli kamera desteğiyle ilgili çeşitli iyileştirmeler yapılmıştır:
- Bellek verimliliğini artırmak için Y8 akış biçimi desteği.
- Tek renkli ham DNG yakalama desteği.
- Normal tek renkli kamera ile yakın kızılötesi kameraları birbirinden ayırt etmek için MONO ve NIR CFA numaralandırmalarının kullanıma sunulması.
Yerel tek renkli görüntü yakalamak için bu özelliği kullanabilirsiniz. Mantıksal bir çok kameralı cihaz, düşük ışıkta daha iyi görüntü kalitesi elde etmek için fiziksel bir alt kamera olarak tek renkli bir kamera kullanabilir.
Dinamik Derinlik Biçimi
Android 10'dan itibaren kameralar, bir resmin derinlik verilerini Dinamik Derinlik Biçimi (DDF) adlı yeni bir şema kullanarak ayrı bir dosyada depolayabilir. Uygulamalar, orijinal resim verilerini değiştirmeden işleme sonrasında istedikleri bulanıklaştırma uygulamak için bu bilgileri kullanarak hem JPG resmi hem de derinlik meta verileri isteyebilir.
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çimleriyle karşılaştırıldığında 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 sayfasına bakın.
Çoklu kamerada iyileştirmeler
Android 10, birden fazla kameranın tek bir mantıksal kamerada birleştirilmesine olanak tanır. Bu özellik, Android 9'da (API düzeyi 28) kullanıma sunulmuştur. Kamera2 API'sine aşağıdakiler eklendi:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: İletilen oturum yapılandırmasının, kamerayla çekim 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 aktif fiziksel kameranın kimliğini belirleyebilmenizi sağlar. Daha iyi güç verimliliği elde etmek amacıyla mantıksal akışlar ve fiziksel alt kamera akışları istemek için döndürülen kimlikleri kullanabilirsiniz.
Accessibility services API
Android 10, aşağıdaki yeni erişilebilirlik hizmeti özelliklerini ve API'lerini kullanıma sunuyor:
AccessibilityNodeInfo giriş anahtarı işareti
Android 10 sürümünden itibaren, belirli bir AccessibilityNodeInfo
öğesinin, klavyenin veya tuş takımının parçası olan bir metin girişi tuşunu temsil edip etmediğini belirlemek için isTextEntryKey()
yöntemini çağırabilirsiniz.
Erişilebilirlik iletişim kutusu sözlü geri bildirim
Kullanıcıların bir erişilebilirlik hizmetini başlatmak için erişilebilirlik kısayolu kullanması gereken durumlarda Android 10, hizmetin istediği durumlarda iletişim kutusuna bir metin okuma isteminin sunulmasına olanak tanır.
Hareketle gezinme etkinleştirildiğinde erişilebilirlik kısayolu
Android 10'da hareketle gezinme özelliği etkinleştirildiğinde erişilebilirlik düğmesi görünmez veya seçilemez. Erişilebilirlik hizmetleri menüsüne erişmek için kullanıcıların aşağıdaki hareketlerden birini gerçekleştirmesi gerekir:
- İki parmakla yukarı kaydırın.
- İki parmakla yukarı kaydırıp basılı tutun.
Fiziksel klavyeler için erişilebilirlik kısayolu
Android 10'da kullanıcılar Ctrl+Alt+Z tuşlarına basarak fiziksel klavyedeki erişilebilirlik kısayolunu tetikleyebilir.
Dokunmatik klavye kumandası geliştirmesi
Android 10'da erişilebilirlik hizmetleri, cihaz bir sert klavye takıldığını 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 kullanıma sunuldu. Bu yöntem, etkileşimli ve etkileşimli olmayan kullanıcı arayüzü öğeleri için kullanıcı tanımlı zaman aşımları için destek sağlar. Döndürülen değer, hem kullanıcı tercihleri 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ı ve şifreyi aynı anda kaydedin
Bir uygulamanın kullanıcı adı, şifre ve diğer alanları görüntülemek için birden fazla etkinlik kullandığı durumları SaveInfo.FLAG_DELAY_SAVE
işaretini kullanarak destekleyebilirsiniz.
Kaydet kullanıcı arayüzü ile kullanıcı etkileşimi
İletişim kutusunda bir işlem işleyici ayarlayarak ve ilgili şifre uzaktan görünümünün görünürlüğünü değiştirerek, kaydetme iletişim kutusunda bir şifre alanını gösterebilir ve gizleyebilirsiniz.
Veri kümelerini güncelleme desteği
Otomatik doldurma mevcut şifreleri güncelleyebilir. Örneğin, kullanıcı zaten bir şifreyi sakladı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ırma iyileştirmeleri
Android 10, Field Classification API'de aşağıdaki iyileştirmeleri içerir.
UserData.Builder oluşturucu
UserData.Builder
oluşturucu, Builder
kalıbına daha iyi uyum sağlamak için değiştirildi.
Bir Değerin birden fazla Kategori Kimliği türüyle eşlenmesine izin ver
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 çok kez eklenirse istisna oluşturuluyordu.
Kredi kartı numaraları için geliştirilmiş destek
Alan sınıflandırması artık bir kredi kartı numarasının son dört hanesi olarak dört basamaklı sayıları algılayabilir.
Uygulamaya özel alan sınıflandırması desteği
Android 10'da, oturum süresince uygulamaya özel kullanıcı verilerini ayarlamanızı sağlayan FillResponse.setUserData()
seçeneği vardır.
Bu, otomatik doldurma hizmetinin uygulamaya özel içerik barındıran alanların türlerini algılamasına yardımcı olur.
Kullanıcı arayüzü ve sistem denetimleri
Android 10 aşağıdaki kullanıcı arayüzü iyileştirmelerini sunar:
JVMTI PopFrame büyük harflerini destekle
Android 10, Android JVMTI uygulamasında can_pop_frames
özelliği için destek sunar. Hata ayıklama sırasında bu özellik, bir kesme noktasında duraklattıktan ve yerel değerleri, genelleri veya bir işlevin uygulanmasını ayarladıktan sonra işlevleri yeniden çalıştırmanızı sağlar. Daha fazla bilgi için Oracle'ın Pop Frame referans sayfası'na bakın.
Yüzey kontrolü API'sı
Android 10, sistem oluşturucuya (SurfaceFlinger
) alt düzey erişim için bir SurfaceControl
API sağlar. Çoğu kullanıcı için SurfaceView, birleştiriciden yararlanmanın doğru yoludur. SurfaceControl
API, belirli durumlarda faydalı olabilir. Örneğin:
- Birden fazla yüzeyi senkronize etme
- Çapraz işlemlerde yüzey yerleştirme
- Alt düzey yaşam boyu yönetimi
SurfaceControl
API, hem SDK hem de NDK bağlamalarında kullanılabilir.
NDK uygulaması, arabelleklerin toplayıcı ile manuel olarak değişimine olanak tanıyan bir API içerir. Bu, BufferQueue
sınırlamalarına uymayan kullanıcılara bir alternatif sunar.
Web Görünümü aç oluşturucu algılama
Android 10'da, uygulamaların bir WebView
öğesinin yanıt vermediğini algılamak için kullanabileceği WebViewRenderProcessClient
soyut sınıfı kullanıma sunulmuştur. Bu sınıfı kullanmak için:
- Kendi alt sınıfınızı tanımlayıp
onRenderProcessResponsive()
veonRenderProcessUnresponsive()
yöntemlerini uygulayın. - Bir veya daha fazla
WebView
nesneyeWebViewRenderProcessClient
örneğinizi ekleyin. WebView
yanıt vermeyi durdurursa sistem,WebView
veWebViewRenderProcess
geçirerek istemcininonRenderProcessUnresponsive()
yöntemini çağırır. (WebView
tek işlemliyseWebViewRenderProcess
parametresi boş olur.) Uygulamanız, kullanıcıya oluşturma işlemini durdurmak isteyip istemediğini soran bir iletişim kutusu göstermek gibi uygun işlemi yapabilir.
WebView
yanıt vermeyi sürdürürse sistem, belirli aralıklarla (beş saniyede en fazla bir kez) onRenderProcessUnresponsive()
çağrısı yapar ancak başka bir işlem yapmaz.
WebView
tekrar duyarlı hale gelirse sistem onRenderProcessResponsive()
öğesini yalnızca bir kez çağırır.
Ayarlar panelleri
Android 10'da, uygulamaların, ayarları kullanıcılara kendi uygulamaları bağlamında gösterebilmelerini sağlayan bir API olan Ayarlar Panelleri kullanıma sunulmuştur. Bu sayede, kullanıcıların uygulamayı kullanmak için NFC veya Mobil veri gibi özellikleri değiştirmek için Ayarlar'a gitmelerine gerek kalmaz.
Ö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 bağlantı (yakındaki ağlar dahil) ve mobil veri gibi önemli bağlantı ayarlarını gösteren bir satır içi panel görüntüleyebilir. Bu panel sayesinde kullanıcılar uygulamadan ayrılmadan bağlantıyı geri yükleyebilir.
Bir ayarlar panelini göstermek 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 özellik, büyük boyutlu yükleme veya indirme işlemleri yapmak için kablosuz bağlantıya ihtiyacı olan uygulamalar için yararlıdır.
ACTION_NFC
- Yakın alan iletişimi (NFC) ile ilgili tüm ayarları gösterir.
ACTION_VOLUME
- Tüm ses akışlarının ses düzeyi ayarlarını gösterir.
Paylaşım iyileştirmeleri
Android 10, paylaşım konusunda çeşitli iyileştirmeler sunar:
Paylaşım Kısayolları API'sı
Paylaşım Kısayolları API'si, Doğrudan Paylaşım API'lerinin yerini almıştır.
Paylaşım Kısayolları API'si, sonuçları isteğe bağlı olarak tepkisel olarak almak yerine, uygulamaların doğrudan paylaşım hedeflerini önceden yayınlamalarına olanak tanır. ShortcutManager
bu şekilde çalışır.
İki API benzer olduğundan her iki özelliğin de kullanılmasını kolaylaştırmak için ShortcutInfo
API'yi genişlettik. Paylaşım Kısayolları API'sıyla, kategorileri veya kullanıcıları doğrudan bir paylaşım hedefine atayabilirsiniz. Paylaşım hedefleri, aynı uygulama bunları güncelleyene veya uygulama kaldırılana kadar sistemde kalır.
Eski Doğrudan Paylaşım mekanizması çalışmaya devam eder 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ğlama yöntemlerini ekler ve 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.
Metin önizleniyor
Bir uygulama metin içeriği paylaştığında, Sharesheet kullanıcı arayüzündeki içeriğin isteğe bağlı bir önizlemesini gösterebilir.
Bkz. Zengin metin önizlemeleri ekleme
Daha fazla bilgi
Uygulamaların nasıl veri paylaşabileceği hakkında daha fazla bilgi için Diğer uygulamalara basit veriler gönderme ve Diğer uygulamalardan basit veriler alma konularına bakın.
Koyu tema
Android 10, hem Android sistem kullanıcı arayüzü hem de cihazda çalışan uygulamalar için geçerli olan bir Koyu tema sunar. Daha fazla bilgi için Koyu tema bölümünü inceleyin.
Ön plan hizmeti türleri
Android 10, belirli hizmetlerin tanımına eklediğ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ü bildirmenin uygun olduğu hizmetler gösterilmektedir:
Ön plan hizmet türü | Bu türün belirtilmesi gereken bir hizmet için örnek kullanım alanı |
---|---|
connectedDevice
| Giyilebilir bir 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
| Kısa bir süre boyunca cihaz ekranının videosunu kaydetme |
phoneCall
| Devam eden telefon aramalarını işleme |
Kotlin
Android 10, Kotlin geliştirme için aşağıdaki güncellemeleri içerir.
libcore API'leri için null değer ek açıklamaları
Android 10, libcore API'leri için SDK'daki nullability ek açıklamalarının kapsamını iyileştirir. Bu ek açıklamalar, Android Studio'da Kotlin veya Java null değer analizi kullanan uygulama geliştiricilerin bu API'lerle etkileşimde bulunurken boş değer bilgisi alabilmelerini sağlar.
Normalde, Kotlin'deki geçersizlik 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, boş değer atanabilirlik ihlallerinin hata yerine uyarıyla sonuçlandığı anlamına gelir.
Ayrıca, Android 9'da eklenen tüm @RecentlyNullable
veya @RecentlyNonNull
ek açıklamaları sırasıyla @Nullable
ve @NonNull
olarak değişecek.
Bu nedenle, Android 10 ve sonraki sürümlerde null değer ihlallerinin uyarılar yerine hatalara neden olduğu anlamına gelir.
Ek açıklama değişiklikleri hakkında daha fazla bilgi için Android Geliştiricileri Blogu'nda Android Pie SDK'sı artık Kotlin ile daha uyumlu bölümüne bakın.
400
Android 10, aşağıdaki NDK değişikliklerini içerir.
Dosya tanımlayıcı sahipliğinde hata ayıklama iyileştirildi
Android 10'da, dosya tanımlayıcı sahipliği sorunlarını daha kolay bulup çözmenize yardımcı olacak fdsan özelliği eklendi.
Dosya tanımlayıcısı sahipliğinin yanlış işlenmesiyle ilgili olan ve genellikle kapatıldıktan sonra kullan ve çift kapat şeklinde ortaya çıkan hatalar, bellek ayırma ücretsiz sonrası kullanım ve çift ücretsiz hata hatalarına benzer, ancak teşhis edilmesi ve düzeltilmesi çok daha zor olur. fdsan, dosya tanımlayıcısının hatalı kullanımını tespit etmeye ve/veya yönetmeye çalışır.
Bu sorunlarla ilgili kilitlenmeler hakkında daha fazla bilgi için Hata algılandı fdsan tarafından bölümüne bakın. fdsan hakkında daha fazla bilgi için fdsan'daki Googlesource sayfasına bakın.
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 eklenmiştir.
API düzeyi 28 ve önceki sürümler için geliştirilen uygulamalarda libgcc/compiler-rt
hizmetinin bazı emutls
sorunlarını çözmesi için iyileştirmeler yapılmıştır.
Daha fazla bilgi için NDK geliştiricileri için Android'deki değişiklikler bölümüne bakın.
Süre
Android 10, aşağıdaki çalışma zamanı değişikliğini içerir.
Mallinfo tabanlı çöp toplama tetiklemesi
Küçük platform Java nesneleri C++ yığınındaki büyük nesnelere referans verdiğinde C++ nesneleri genellikle yalnızca Java nesnesi toplanıp örneğin son haline getirildiğinde geri alınabilir. Önceki sürümlerde platform, Java nesneleriyle ilişkilendirilmiş birçok C++ nesnesinin boyutlarını tahmin ediyordu. Bu tahmin her zaman doğru değildi ve platform olması gerektiği zaman gereksiz toplama yapamadığından bazen bellek kullanımında büyük artışa 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 GC tetikleme hesaplamalarına her zaman dahil edilmesini sağlar. Java yürütmesiyle birlikte çok sayıda C++ ayırma işlemi yapan uygulamalar sonuç olarak atık toplama sıklığında artış görebilir. Diğer uygulamalarda küçük bir azalma 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 izlemeyle ilgili iyileştirmeler
Android 10'dan itibaren, cihaz üzerinde sistem izleme yaparken iz boyutu ve süresi için sınırlar belirleyebilirsiniz. İki değerden birini belirttiğinizde, sistem iz kaydedilirken iz arabelleğini düzenli aralıklarla hedef dosyaya kopyalayarak uzun bir iz gerçekleştirir. İzleme, belirttiğiniz boyut veya süre sınırlarına ulaşıldığında tamamlanır.
Standart iz ile test edeceğinizden farklı kullanım alanlarını test etmek için bu ek parametreleri kullanın. Örneğin, yalnızca uygulamanız uzun bir süre çalıştıktan sonra ortaya çıkan bir performans hatası teşhis ediyor olabilirsiniz. Bu durumda, tüm gün boyunca uzun bir izleri kaydedebilir ve daha sonra hatanın nedenini belirlemenize yardımcı olmak için CPU planlayıcısını, disk etkinliğini, uygulama iş parçacıklarını ve rapordaki diğer verileri analiz edebilirsiniz.
Android 10 ve sonraki sürümlerde izleme dosyaları, performans enstrümantasyonu 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 geliştirmeleri
Android 10, TextClassifier
arayüzünde ek metin sınıflandırma işlevleri sunar.
Dil algılama
detectLanguage()
yöntemi, daha önce mevcut olan sınıflandırma yöntemlerine benzer şekilde çalışır. Bir TextLanguage.Request
nesnesi alır ve bir TextLanguage
nesnesi döndürür.
TextLanguage
nesne, sıralı çiftlerin bir listesinden oluşur. Her çift bir yerel ayar ve sınıflandırma için buna 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, bir ConversationAction
nesne listesinden oluşur. Her ConversationAction
nesnesi, önerilen bir işlemi ve bu işlemin güven puanını içerir.
Bildirimlerde akıllı yanıtlar/işlemler
Android 9'da, önerilen yanıtları bir bildirim içinde gösterme özelliği kullanıma sunuldu. Android 10 bunun kapsamını genişletiyor ve amaca dayalı işlemler öneriliyor. Dahası, platform bu önerileri otomatik olarak oluşturabilir. Uygulamalar yine de kendi önerilerini sunabilir veya sistem tarafından oluşturulan önerileri devre dışı bırakabilir.Bu yanıtları oluşturmak için kullanılan API, TextClassifier
'in bir parçasıdır ve Android 10'daki geliştiriciler tarafından da doğrudan kullanıma sunulmuştur.
Daha fazla bilgi için lütfen TextClassifier iyileştirmeleri bölümünü okuyun.
Uygulamanız kendi önerilerini sağlarsa platform herhangi bir otomatik öneri oluşturmaz. Uygulama bildirimlerinde önerilen yanıtların veya işlemlerin gösterilmesini istemiyorsanız setAllowGeneratedReplies()
ve setAllowSystemGeneratedContextualActions()
özelliklerini kullanarak sistem tarafından oluşturulan yanıtları ve işlemleri devre dışı bırakabilirsiniz.