Android 10 özellikleri ve API'leri

Android 10, kullanıcılar ve geliştiriciler için harika özellikler ve işlevler sunuyor. Bu belgede, geliştiriciler için sunulan ö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 hakkında bilgi edinmek için Android 10'daki davranış değişikliklerinin (API düzeyi 29'u hedefleyen uygulamalar ve tüm uygulamalar için) yanı sıra gizlilik değişikliklerini de inceleyin.

Güvenlik geliştirmeleri

Android 10, aşağıdaki bölümlerde özetlenen bir dizi güvenlik özelliği 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ü
  • Kullanıcının biyometrik girişini kullanarak kimliğini doğrulayamaması durumunda cihazının PIN'ini, desenini veya şifresini kullanarak kimliğini doğrulamasını sağlayan bir yedek mekanizma.
  • Kullanıcı, örtülü bir biyometrik yöntem kullanarak kimliğini doğruladıktan sonra sistemin kullanıcı onayı istememesini sağlayan ipucu. Örneğin, bir kullanıcı yüz kimlik doğrulamayı kullanarak kimliğini doğruladıktan sonra başka bir onay gerekmediğini sisteme bildirebilirsiniz.

Yerleştirilmiş DEX kodunu doğrudan APK'dan çalıştırma

Android 10'dan itibaren platforma, yerleştirilmiş DEX kodunu doğrudan uygulamanızın APK dosyasından çalıştırmasını söyleyebilirsiniz. Bu seçenek, saldırganın cihazdaki yerel olarak derlenmiş kodu kurcalamayı başarması durumunda saldırıyı önlemeye yardımcı olabilir.

Daha fazla bilgi için Yerleştirilmiş 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 revizyondur. 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 uygulamalardaki davranış değişiklikleri sayfasındaki 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ıflar 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 çıkarılabilir. Örneğin, javax.net.ssl.SSLSocket örneklerinde çalışan kod, bunun yerine SSLSockets yöntemlerini kullanabilir.

Bağlantı özellikleri

Android 10, ağ ve bağlantıyla ilgili çeşitli iyileştirmeler içerir.

Kablosuz ağ bağlantısı API'si

Android 10, P2P direkt bağlantı desteği ekler. Bu özellik, uygulamanızın kullanıcılardan cihazın bağlı olduğu erişim noktasını değiştirmelerini istemesini sağlar. Bu işlem için istenen ağın özelliklerini açıklamak üzere WifiNetworkSpecifier kullanılır. Eşler arası bağlantı, ağ sağlama dışındaki amaçlar için kullanılır. Örneğin, Chromecast ve Google Home donanımı gibi ikincil cihazların yapılandırmasını başlatmak için bu bağlantıdan yararlanılır.

Daha fazla bilgi için Wi-Fi Network Request API for peer-to-peer connectivity başlıklı makaleyi inceleyin.

Kablosuz ağ önerisi API'si

Android 10, uygulamanızın kullanıcıdan bir kablosuz erişim noktasına bağlanmasını isteme desteğini ekler. Hangi ağa bağlanılacağıyla ilgili öneriler sağlayabilirsiniz. Platform, sizin ve diğer uygulamaların girişine göre hangi erişim noktasının kabul edileceğine karar verir.

Bu özellik hakkında daha fazla bilgi için Kablosuz ağ önerisi başlıklı makaleyi inceleyin.

Yüksek performanslı ve düşük gecikmeli kablosuz bağlantı 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. Yüksek performans ve düşük gecikme modunda Wi-Fi güç tasarrufu devre dışıdır. Modem desteğine bağlı olarak düşük gecikme modunda daha fazla gecikme optimizasyonu etkinleştirilebilir.

Düşük gecikme modu yalnızca kilidi alan uygulama ön planda çalışırken ve ekran açıkken etkinleştirilir. Düşük gecikme modu, özellikle gerçek zamanlı mobil oyun uygulamaları için faydalıdır.

DNS çözümleyicideki özel aramalar

Android 10, hem düz metin aramaları hem de TLS üzerinden DNS modu kullanılarak yapılan ö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 veriyor ancak diğer kayıt türlerini desteklemiyordu. DnsResolver API, genel ve eşzamansız çözümleme sağlar. Bu sayede SRV, NAPTR ve diğer kayıt türlerini arayabilirsiniz. Yanıtı ayrıştırma işleminin uygulama tarafından yapıldığını unutmayın.

NDK tabanlı uygulamalar için android_res_nsend başlıklı makaleyi inceleyin.

Wi-Fi Easy Connect

Android 10, kullanımdan kaldırılan WPS'nin yerine, eş cihazlara 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 Kolay Bağlantı'yı kurulum ve hazırlama akışlarına entegre edebilir.

Bu özellik hakkında daha fazla bilgi için Wi-Fi Easy Connect 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ı oluşturma ö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() yerine aşağıdakileri girin:

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

Bluetooth LE Connection Oriented Channels (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ını sağlar. Bu arayüz, uygulamayı basitleştirmek için Bluetooth ve bağlantı mekanizmalarını soyutlar.

Telefon özellikleri

Android 10, telefon görüşmesiyle ilgili çeşitli iyileştirmeler içerir.

Arama kalitesini artırma

Android 10, özelliği destekleyen cihazlarda ağa ve ağdan gelen kalite de dahil olmak üzere devam eden IP Multimedia Subsystem (IMS) aramalarının kalitesi hakkında bilgi toplama olanağı sunar.

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ı kullanıcı adına sessizce reddetme olanağı sunar. Bu engellenen aramalarla ilgili bilgiler, kullanıcının aramaları kaçırdığı durumlarda daha fazla şeffaflık sağlamak için arama kaydına engellenen aramalar olarak kaydedilir. Bu API'nin kullanılması, arama ekranı ve arayan kimliği işlevlerini sağlamak için kullanıcıdan READ_CALL_LOG izni alma zorunluluğunu ortadan kaldırır.

Arama 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 yerine CallRedirectionService API'si getirildi. CallRedirectionService API, Android platformu tarafından yapılan giden aramaları değiştirmeniz için 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 depolamayla ilgili aşağıdaki özellikleri de ekler:

Medya ve grafikler

Android 10'da aşağıdaki yeni medya ve grafik özellikleri ile API'ler kullanıma sunuluyor:

Ses girişini paylaşma

Android 10, iki uygulamanın aynı anda ses girişini paylaşabilmesini sağlar. Ayrıntılı bilgi için Ses girişini paylaşma başlıklı makaleyi inceleyin.

Ses oynatma kaydı

Android 10, uygulamalara diğer uygulamalardan ses oynatma yakalama özelliği verir. Ayrıntılı bilgi için Oynatma kaydı başlıklı makaleyi inceleyin.

MediaStyle bildirimlerinde konumlama çubuğu

Android 10'dan itibaren MediaStyle bildirimlerinde arama çubuğu gösterilir. Arama çubuğu, PlaybackState.getPosition() konumundan itibaren oynatma ilerleme durumunu gösterir. Bazı durumlarda, oynatılan programda belirli bir konuma gitmek için arama çubuğu 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 ile belirtilir) sıfırdan büyükse arama çubuğu gösterilir. Bu nedenle, canlı yayınlar ve radyo yayınları gibi süresi belirsiz yayınlarda çubuk gösterilmez.
  • Oturumda ACTION_SEEK_TO uygulanıyorsa kullanıcı, oynatma konumunu kontrol etmek için arama çubuğunu sürükleyebilir.

Native MIDI API

Android Native MIDI API (AMidi), uygulama geliştiricilere C/C++ koduyla MIDI verilerini gönderme ve alma olanağı sunar. Bu sayede C/C++ ses/kontrol mantıklarıyla daha yakın bir entegrasyon sağlanır ve JNI ihtiyacı en aza indirilir.

Daha fazla bilgi için Android Native MIDI API'yi inceleyin.

MediaCodecInfo iyileştirmeleri

Android 10, MediaCodecInfo öğesine bir codec hakkında daha fazla bilgi veren yöntemler ekler.

Daha fazla bilgi için Medya codec'leri başlıklı makaleyi inceleyin.

Thermal API

Cihazlar çok ısındığında CPU ve/veya GPU'nun hızını düşürebilir. Bu durum, uygulamaları ve oyunları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun hesaplama veya sürekli ağ etkinliği kullanan uygulamalarda sorun yaşanma olasılığı daha yüksektir. Bu sorunlar, yonga seti ve çekirdek frekansları, entegrasyon seviyeleri, cihaz paketleme ve form faktörüne bağlı olarak 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 harekete geçmek için termal API'yi kullanabilir. Uygulamalar, PowerManager'da dinleyici kaydeder. Bu dinleyici aracılığıyla sistem, hafif ve orta düzeyden şiddetli, kritik, acil ve kapatmaya kadar değişen devam eden termal durumu bildirir.

Cihaz, termal stres bildirdiğinde uygulamalar ve oyunlar, devam eden etkinlikleri geri çekerek güç kullanımını çeşitli şekillerde azaltmaya yardımcı olabilir. Örneğin; akış uygulamaları çözünürlüğü/bit hızını veya ağ trafiğini azaltabilir, kamera uygulaması flaşı ya da yoğun görüntü iyileştirmeyi devre dışı bırakabilir, oyunlar kare hızını veya poligon tessellasyonunu azaltabilir, medya uygulaması hoparlör sesini azaltabilir ve 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. 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 sunar:

Tek renkli kamera desteği

Tek renkli kamera özelliği ilk olarak Android 9'da (API seviyesi 28) kullanıma sunuldu. Android 10, tek renkli kamera desteğine çeşitli geliştirmeler ekliyor:

  • 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 arasında ayrım yapmak için MONO ve NIR CFA numaralandırmaları kullanıma sunuldu.

Bu özelliği kullanarak doğal bir tek renkli görüntü yakalayabilirsiniz. Mantıksal bir çok kameralı cihaz, daha iyi düşük ışık 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, Dynamic Depth Format (DDF) adlı yeni bir şema kullanarak bir resmin derinlik verilerini ayrı bir dosyada saklayabilir. Uygulamalar, hem JPG resmini hem de derinlik meta verilerini isteyebilir ve bu bilgileri kullanarak orijinal resim verilerini değiştirmeden, son işlemde istediği 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 iyileştirmeleri

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ştirilmesini iyileştirir. Camera2 API'ye aşağıdakiler eklendi:

Erişilebilirlik hizmetleri API'si

Android 10, aşağıdaki yeni erişilebilirlik hizmeti özelliklerini ve API'lerini sunar:

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şi tuşunu temsil edip etmediğini belirlemek için isTextEntryKey() öğesini çağırabilirsiniz.

Erişilebilirlik iletişim kutusunda sözlü geri bildirim

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 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. Kullanıcıların erişilebilirlik hizmetleri menüsüne erişmek için aşağıdaki hareketlerden birini yapması gerekir:

  • İki parmağınızla yukarı kaydırın.
  • İki parmağınızla yukarı kaydırıp basılı tutun.

Fiziksel klavyeler için erişilebilirlik kısayolu

Android 10'da kullanıcılar, Control+Alt+Z tuşlarına basarak fiziksel klavyede erişilebilirlik kısayolunu tetikleyebilir.

Sanal klavye denetleyicisinde iyileştirme

Android 10'da erişilebilirlik hizmetleri, cihaz bağlı bir fiziksel klavye algıladığında 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şimsiz kullanıcı arayüzü öğeleri için kullanıcı tanımlı zaman aşımlarını destekler. Dönüş değeri hem kullanıcı tercihlerinden hem de erişilebilirlik hizmeti API'lerinden etkilenir.

Otomatik doldurma iyileştirmeleri

Android 10, otomatik doldurma hizmetinde aşağıdaki iyileştirmeleri içerir.

Uyumlulukla ilgili otomatik doldurma istekleri

Otomatik doldurma isteğinin uyumluluk modu aracılığıyla oluşturulup oluşturulmadığını belirlemek için FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST işaretini kullanabilirsiniz.

Kullanıcı adını ve şifreyi aynı anda kaydetme

SaveInfo.FLAG_DELAY_SAVE işaretini kullanarak, bir uygulamanın kullanıcı adını, şifreyi ve diğer alanları göstermek için birden fazla etkinlik kullandığı durumları destekleyebilirsiniz.

Kullanıcının Kaydetme kullanıcı arayüzüyle etkileşimi

İletişim kutusuna bir işlem dinleyici ayarlayarak ve ilgili şifre uzaktan görünümünün görünürlüğünü değiştirerek bir şifre alanını kaydetme iletişim kutusunda gösterebilir ve gizleyebilirsiniz.

Veri kümelerini güncelleme desteği

Otomatik doldurma, mevcut şifreleri güncelleyebilir. Örneğin, bir kullanıcı daha önce şifre kaydettiyse ve yeni bir şifre kaydederse otomatik doldurma, kullanıcıya yeni bir şifre kaydetmek yerine mevcut şifreyi güncellemesini ister.

Alan sınıflandırmasıyla ilgili iyileştirmeler

Android 10, Alan Sınıflandırma API'sinde aşağıdaki iyileştirmeleri içerir.

UserData.Builder oluşturucusu

UserData.Builder yapılandırıcı, Builder deseniyle daha iyi uyum sağlamak 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 oluşturuluyordu.

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ılayabiliyor.

Uygulamaya özel alan sınıflandırması desteği

Android 10, oturum süresi boyunca uygulamaya özel kullanıcı verileri ayarlamanıza olanak tanıyan FillResponse.setUserData() özelliğini ekler. Bu, otomatik doldurma hizmetinin uygulamaya özel içerik içeren alanların türlerini algılamasına yardımcı olur.

Kullanıcı arayüzü ve sistem kontrolleri

Android 10, kullanıcı arayüzünde aşağıdaki iyileştirmeleri sunar:

JVMTI PopFrame özelliklerini destekleme

Android 10, Android JVMTI uygulamasında can_pop_frames özelliğine 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 ya da 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.

Yüzey kontrolü API'si

Android 10, sistem birleştiricisine (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'dir. SurfaceControl API, belirli durumlarda yararlı olabilir. Örneğin:

  • Birden fazla platformun senkronizasyonu
  • Süreçler arası yüzey yerleştirme
  • Alt düzey yaşam döngüsü yönetimi

SurfaceControl API, hem SDK hem de NDK bağlamalarında kullanılabilir. NDK uygulaması, arabelleğin birleştirme yöneticisiyle manuel olarak değiştirilmesi için bir API içerir. Bu, BufferQueue sınırlamalarıyla karşılaşan kullanıcılar için bir alternatif sunar.

WebView'da oluşturucunun askıya alınması algılama

Android 10, uygulamaların WebView cihazının yanıt vermemeye başladığını algılamak için kullanabileceği WebViewRenderProcessClient soyut sınıfını sunar. Bu sınıfı kullanmak için:

  1. Kendi alt sınıfınızı tanımlayın ve onRenderProcessResponsive() ve onRenderProcessUnresponsive() yöntemlerini uygulayın.
  2. WebViewRenderProcessClient öğenizin bir örneğini bir veya daha fazla WebView nesnesine ekleyin.
  3. WebView yanıt vermezse sistem, istemcinin onRenderProcessUnresponsive() yöntemini çağırarak WebView ve WebViewRenderProcess değerlerini iletir. (WebView tek süreçliyse WebViewRenderProcess parametresi null olur.) Uygulamanız, kullanıcının oluşturma sürecini durdurmak isteyip istemediğini soran bir iletişim kutusu göstermek gibi uygun bir işlem yapabilir.

WebView yanıt vermemeye devam ederse sistem onRenderProcessUnresponsive() işlevini düzenli olarak (beş saniyede birden fazla olmamak üzere) çağırır ancak başka bir işlem yapmaz. WebView tekrar yanıt vermeye başlarsa sistem onRenderProcessResponsive() işlevini yalnızca bir kez çağırır.

Ayarlar panelleri

Android 10'da, uygulamaların kullanıcılara uygulama bağlamında ayarları göstermesine olanak tanıyan bir API olan Ayarlar Panelleri kullanıma sunulmuştur. Bu sayede kullanıcılar, uygulamayı kullanmak için Ayarlar'a gidip NFC veya Mobil veri gibi ayarları değiştirmek zorunda kalmaz.

1. şekil. Kullanıcı, cihaz ağa bağlı değilken bir web sayfasını açmaya çalışıyor. Chrome, İnternet Bağlantısı ayarları panelini açar...

Şekil 2. Kullanıcı, Chrome uygulamasından çıkmadan Wi-Fi'yi açabilir ve bir ağ seçebilir.

Örneğin, 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ının 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.

Ayarlar panelini görüntülemek için aşağıdaki Settings.Panel işlemlerden biriyle bir amaç başlatın:

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 ve mobil veri gibi internet bağlantısıyla ilgili ayarları gösterir.
ACTION_WIFI
Kablosuz ayarlarını gösterir ancak diğer bağlantı ayarlarını göstermez. Bu özellik, büyük yükleme veya indirme işlemleri için kablosuz bağlantı gerektiren uygulamalarda 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 ayarlarını gösterir.

Paylaşım iyileştirmeleri

Android 10, paylaşım konusunda çeşitli iyileştirmeler sunar:

Sharing Shortcuts API

Paylaşım Kısayolları API'si, Direct Share API'lerinin yerini alıyor.

Paylaşım Kısayolları API'si, uygulamaların sonuçları talep üzerine reaktif olarak alması yerine doğrudan paylaşım hedeflerini önceden yayınlamasına olanak tanır. ShortcutManager şu şekilde çalışır: İki API benzer olduğundan, her iki özelliği de daha kolay kullanabilmeniz için ShortcutInfo API'yi genişlettik. Paylaşım Kısayolları API'si ile paylaşım hedefine doğrudan kategori veya kullanıcı 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ı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ınlamak için bu yöntem tercih edilir.

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 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ı makaleleri inceleyin.

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. Ayrıntılı bilgi 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 hizmeti türü atamak mümkündür ancak bu durum nadiren uygundur.

Aşağıdaki tabloda, farklı ön plan hizmeti 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şlemi devam ettirme
mediaPlayback Sesli kitap, podcast veya müzik oynatma
mediaProjection Cihazın ekranının kısa bir süre boyunca videosunu kaydetme
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 nullability 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 nullability analizini kullanan uygulama geliştiricilerin bu API'lerle etkileşim kurarken nullness bilgisi almasını sağlar.

Normalde, Kotlin'deki nullability sözleşmesi ihlalleri derleme hatalarına neden olur. Mevcut kodunuzla uyumluluğu sağlamak için yalnızca @RecentlyNullable ve @RecentlyNonNull açıklamaları eklenir. Bu, boş değer izin verme ihlallerinin hata yerine uyarılarla sonuçlanacağı anlamına gelir.

Ayrıca, Android 9'da eklenen tüm @RecentlyNullable veya @RecentlyNonNull ek açıklamaları sırasıyla @Nullable ve @NonNull olarak değiştiriliyor. Bu nedenle, Android 10 ve sonraki sürümlerde boş değer izin ihlalleri uyarı yerine hataya neden olur.

Açıklama değişiklikleri hakkında daha fazla bilgi için Android Developers Blog'daki Android Pie SDK artık Kotlin ile daha uyumlu 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 hatalar genellikle use-after-close ve double-close olarak ortaya çıkar. Bu hatalar, bellek ayırma use-after-free ve double-free hatalarına benzer ancak teşhis ve düzeltilmesi çok daha zordur. fdsan, dosya tanımlayıcı sahipliğini zorunlu kılarak dosya tanımlayıcı yanlış yönetimini tespit etmeye ve/veya önlemeye çalışır.

Bu sorunlarla ilgili kilitlenmeler hakkında daha fazla bilgi için fdsan tarafından hata algılandı 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ığına özel değişkenleri 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 oluşturulan uygulamalarda, bazı emutls sorunlarını gidermek amacıyla libgcc/compiler-rt ile ilgili iyileştirmeler yapıldı.

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 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 platform, çöp toplama işlemini yapması gerektiği zamanlarda yapmadığı için bazen bellek kullanımı önemli ölçüde artıyordu.

Android 10'da çöp toplayıcı (GC), sistem malloc() tarafından ayrılan yığın boyutunu takip ederek 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ütmeyle birlikte kullanan uygulamalarda, çöp toplama sıklığı artabilir. Diğer uygulamalarda küçük bir düşüş görülebilir.

Test etme ve hata ayıklama

Android 10, test ve hata ayıklama için aşağıdaki iyileştirmeleri içerir.

Cihaz üzerinde sistem takibi ile ilgili iyileştirmeler

Android 10'dan itibaren, cihaz üzerinde sistem izlemesi gerçekleştirirken izlemenin boyutu ve süresi için sınırlar belirleyebilirsiniz. Bu değerlerden birini belirttiğinizde sistem uzun bir izleme gerçekleştirir ve izleme kaydedilirken izleme arabelleğini hedef dosyaya düzenli olarak kopyalar. İ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 kaydı oluşturabilir ve ardından rapordaki CPU zamanlayıcı, disk etkinliği, uygulama iş parçacıkları ve diğer verileri analiz ederek hatanın nedenini belirleyebilirsiniz.

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çılabilecek bir biçimde kaydedilir. Perfetto izleme dosyalarını Systrace biçimine dönüştürebilirsiniz.

TextClassifier ile ilgili iyileştirmeler

Android 10, TextClassifier arayüzünde ek metin sınıflandırma işlevi sunar.

Dil algılama

detectLanguage() yöntemi, daha önce kullanılan 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ı çiftlerin listesinden oluşur. 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. ConversationActions.Request nesnesi alır ve ConversationActions nesnesi döndürür.

ConversationActions Nesneler, ConversationAction nesnelerinin listesinden oluşur. Her ConversationAction nesnesi, olası bir önerilen işlem ve bunun güven puanını içerir.

Bildirimlerde akıllı yanıtlar/işlemler

Android 9'da, önerilen yanıtları bildirim içinde gösterme özelliği kullanıma sunuldu. Android 10, önerilen amaca dayalı işlemleri ekleme özelliğiyle bu işlevi daha da geliştirir. Ayrıca platform, bu önerileri otomatik olarak oluşturabilir. Uygulamalar kendi önerilerini sunmaya devam edebilir veya sisteme ait ö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 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 sunuyorsa platform otomatik öneri oluşturmaz. Uygulamanızın bildirimlerinde önerilen yanıtların veya işlemlerin gösterilmesini istemiyorsanız setAllowGeneratedReplies() ve setAllowSystemGeneratedContextualActions() kullanarak sistem tarafından oluşturulan yanıtları ve işlemleri devre dışı bırakabilirsiniz.