Android 10 özellikleri ve API'leri

Android 10, kullanıcılar ve geliştiriciler için harika özellikler ve özellikler sunuyor. Bu dokümanda, geliştiricilerin kullanabileceği özellikler vurgulanmaktadır.

API'ler hakkında bilgi edinmek için API karşılaştırma raporunu okuyun veya Android API referansı sayfasını ziyaret edin. "API düzeyi 29'da eklendi" ifadesini içeren API'leri arayın. Platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android 10'daki davranış değişikliklerine (API düzeyi 29'u hedefleyen uygulamalar ve tüm uygulamalar için) ve gizlilik değişikliklerine de göz atın.

Güvenlik geliştirmeleri

Android 10, aşağıdaki bölümlerde özetlenen bir dizi güvenlik özelliğini kullanıma sunar.

Geliştirilmiş biyometrik kimlik doğrulama iletişim kutuları

Android 10, biyometrik kimlik doğrulama desteğinde aşağıdaki iyileştirmeleri sunar:

  • Biyometrik kimlik doğrulama özelliğinin kontrol edilmesi.
  • Kullanıcının, biyometri girişini kullanarak kimlik doğrulayamadığı durumlarda cihaz PIN'ini, desenini veya şifresini kullanarak kimlik doğrulamasına olanak tanıyan yedek mekanizma.
  • Kullanıcı gizli biyometrik modu kullanarak kimliğini doğruladıktan sonra sistemden kullanıcı onayı istememesini söyleyen bir ipucu. Örneğin, kullanıcı yüz kimlik doğrulamasını kullandıktan sonra başka bir onay gerekmediğini sisteme bildirebilirsiniz.

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

Android 10'dan itibaren platforma, yerleşik DEX kodunu doğrudan uygulamanızın APK dosyasından çalıştırmasını söyleyebilirsiniz. Bu seçenek, saldırgan cihazdaki yerel olarak derlenmiş kodda değişiklik yapmayı başarırsa saldırının önlenmesine yardımcı olabilir.

Daha fazla bilgi için Yerleşik DEX kodunu doğrudan APK'dan çalıştırma başlıklı makaleyi inceleyin.

TLS 1.3 desteği

Android 10, TLS 1.3 desteği ekler. TLS 1.3, TLS standardında performans avantajları ve gelişmiş güvenlik içeren önemli bir düzeltmedir. Karşılaştırmalarımız, TLS 1.3 ile güvenli bağlantıların TLS 1.2'ye kıyasla %40 daha hızlı kurulabileceğini gösteriyor.

TLS 1.3'ü uygulamamız hakkında daha fazla bilgi için Tüm uygulamalarda davranış değişiklikleri sayfasının TLS bölümüne bakın.

Public Conscrypt API

Android 10'dan itibaren Conscrypt güvenlik sağlayıcısı, TLS işlevi için herkese açık bir API içerir.

android.net.ssl altındaki sınıf koleksiyonu, genel javax.net.ssl API'lerinde bulunmayan işlevlere erişmek için statik yöntemler içerir. Bu sınıfların adları, ilgili javax.net.ssl sınıfının çoğulu olarak anlaşılabilir. Örneğin, javax.net.ssl.SSLSocket örnekleri üzerinde çalışan kod, bunun yerine SSLSockets sınıfındaki yöntemleri kullanabilir.

Bağlantı özellikleri

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

Wi-Fi ağ bağlantısı API'si

Android 10, eşler arası bağlantılar için destek ekler. Bu özellik, istenen bir ağın özelliklerini tanımlamak için WifiNetworkSpecifier kullanarak uygulamanızın kullanıcıdan cihazın bağlı olduğu erişim noktasını değiştirmesini istemesini sağlar. Eşler arası bağlantı, ağ sağlama dışındaki amaçlar için kullanılır (ör. Chromecast ve Google Home donanım gibi ikincil cihazlar için önyükleme yapılandırması).

Daha fazla bilgi için Eşler arası bağlantı için kablosuz ağ istek API'si başlıklı makaleyi inceleyin.

Kablosuz ağ önerisi API'si

Android 10, uygulamanızın kullanıcıdan kablosuz erişim noktasına bağlanmasını istemesi için destek ekler. Hangi ağa bağlanılacağıyla ilgili öneriler sağlayabilirsiniz. Platform, nihai olarak sizin ve diğer uygulamaların girişine göre hangi erişim noktasını kabul edeceğini seçer.

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

Kablosuz ağ yüksek performanslı ve düşük gecikmeli modlarında iyileştirmeler

Android 10, gecikmeyi en aza indirmek için temel modeme ipucu vermenize olanak tanır.

Android 10, yüksek performans modunu ve düşük gecikme modunu etkili bir şekilde desteklemek için kablosuz bağlantı kilidi API'sini genişletir. Kablosuz bağlantı güç tasarrufu, yüksek performans ve düşük gecikme modu için devre dışıdır. Modem desteğine bağlı olarak, düşük gecikme modunda daha fazla gecikme optimizasyonu etkinleştirilebilir.

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

DNS çözümleyicisinde özel aramalar

Android 10, hem açık metin aramaları hem de TLS üzerinden DNS modu kullanılarak özel DNS aramaları için yerel destek ekler. Daha önce platform DNS çözümleyicisi yalnızca A ve AAAA kayıtlarını destekliyordu. Bu kayıtlar yalnızca bir adla ilişkili IP adreslerinin aranmasına olanak tanır ancak diğer kayıt türlerini desteklemez. DnsResolver API, SRV, NAPTR ve diğer kayıt türlerini aramanıza olanak tanıyan genel, eşzamansız çözüm sunar. Yanıtın ayrıştırılmasının uygulamaya bırakıldığını unutmayın.

NDK tabanlı uygulamalar için android_res_nsend bölümüne bakın.

Wi-Fi Kolay Bağlantı

Android 10, desteği sonlandırılan WPS'nin yerine, eş cihaza kablosuz kimlik bilgileri sağlamak için Kolay Bağlantı'yı kullanmanıza olanak tanır. Uygulamalar, ACTION_PROCESS_WIFI_EASY_CONNECT_URI intent'ini kullanarak Easy Connect'i kurulum ve temel hazırlığı akışlarına entegre edebilir.

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

Wi-Fi Direct bağlantı API'si

WifiP2pConfig ve WifiP2pManager API sınıfları, önceden belirlenmiş bilgileri kullanarak Wi-Fi Direct'e hızlı bağlantı kurma özelliklerini desteklemek için Android 10'da güncellendi. Bu bilgiler Bluetooth veya NFC gibi bir yan kanal üzerinden paylaşılır.

Aşağıdaki kod örneğinde, önceden belirlenmiş bilgileri kullanarak nasıl grup oluşturulacağı gösterilmektedir:

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

Java

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

Kimlik bilgilerini kullanarak bir gruba katılmak için manager.createGroup() değerini aşağıdakiyle değiştirin:

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

Bluetooth LE Bağlantı Yönlü Kanalları (CoC)

Android 10, uygulamanızın iki BDE cihazı arasında daha büyük veri akışları aktarmak için BDE CoC bağlantılarını kullanmasına olanak tanır. Bu arayüz, uygulamayı basitleştirmek için Bluetooth ve bağlantı mekanizmalarını soyutlar.

Telefon özellikleri

Android 10, telefonla ilgili çeşitli iyileştirmeler içerir.

Arama kalitesi iyileştirmeleri

Android 10, özelliği destekleyen cihazlarda devam eden IP Multimedya Alt Sistemi (IMS) aramalarının kalitesi (ağla olan bağlantı kalitesi dahil) hakkında bilgi toplama özelliğini ekler.

Arama filtreleme ve arayan kimliği

Android 10, uygulamanıza kullanıcının adres defterinde bulunmayan aramaları potansiyel spam aramalar olarak tanımlama ve spam aramaların kullanıcı adına sessizce reddedilmesini sağlama olanağı sunar. Bu engellenen aramalarla ilgili bilgiler, arama günlüğünde engellenen aramalar olarak kaydedilir. Böylece, kullanıcı aramaları kaçırdığında daha fazla şeffaflık sağlanır. Bu API'nin kullanılması, arama filtreleme ve arayan kimliği işlevini sağlamak için kullanıcıdan READ_CALL_LOG izinleri alınması zorunluluğunu ortadan kaldırır.

Arama yönlendirme hizmeti API'si

Android 10, arama intent'lerinin işleniş şeklini değiştirir. NEW_OUTGOING_CALL yayını desteği sonlandırıldı ve CallRedirectionService API'si ile değiştirildi. CallRedirectionService API, Android platformu tarafından yapılan giden aramaları değiştirmenize olanak tanıyan arayüzler sağlar. Örneğin, üçüncü taraf uygulamaları aramaları iptal edip VoIP üzerinden yeniden yönlendirebilir.

Harici depolama alanında dosya oluşturmayla ilgili iyileştirmeler

Android 10, kapsamlı depolama özelliğini kullanıma sunmanın yanı sıra harici depolama alanıyla ilgili aşağıdaki özellikleri de ekler:

Medya ve grafikler

Android 10, aşağıdaki yeni medya ve grafik özelliklerini ve API'lerini kullanıma sunar:

Ses girişini paylaşma

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

Ses çalma kaydı

Android 10, uygulamalara diğer uygulamalardan ses oynatmayı yakalama olanağı sunar. Tüm bilgiler için Oynatma yakalama başlıklı makaleyi inceleyin.

MediaStyle bildirimlerindeki kaydırma çubuğu

Android 10'dan itibaren MediaStyle bildirimlerinde bir ilerleme çubuğu gösterilir. Zaman çubuğu, PlaybackState.getPosition()'den itibaren oynatma ilerleme durumunu gösterir ve bazı durumlarda oynatılan programda bir konuma gitmek için kullanılabilir. Kaydırma çubuğunun görünümü ve davranışı aşağıdaki kurallarla kontrol edilir:

  • Etkin bir MediaSession varsa ve süresi (MediaMetadata.METADATA_KEY_DURATION ile belirtilir) sıfırdan büyükse ilerleme çubuğu gösterilir. Bu, canlı yayınlar ve radyo yayınları gibi kesin olmayan yayınlar için çubuğun görünmediği anlamına gelir.
  • Oturumda ACTION_SEEK_TO uygulanıyorsa kullanıcı, oynatma konumunu kontrol etmek için kaydırma çubuğunu sürükleyebilir.

Native MIDI API

Android Native MIDI API (AMidi), uygulama geliştiricilerine C/C++ koduyla MIDI verileri gönderip alma olanağı sunar. Böylece geliştiriciler, C/C++ ses/kontrol mantıklarıyla daha yakın bir entegrasyon sağlayabilir ve JNI ihtiyacını en aza indirebilir.

Daha fazla bilgi için Android Native MIDI API başlıklı makaleyi inceleyin.

MediaCodecInfo iyileştirmeleri

Android 10, MediaCodecInfo için codec hakkında daha fazla bilgi sağlayan yöntemler ekler.

Daha fazla bilgi için Medya codec'leri bölümüne bakın.

Thermal API

Cihazlar çok ısındığında CPU ve/veya GPU'yu kısıtlayabilir. Bu da uygulamaları ve oyunları beklenmedik şekillerde etkileyebilir. Karmaşık grafikler, yoğun hesaplama veya sürekli ağ etkinliği kullanan uygulamaların sorun yaşama olasılığı daha yüksektir. Bu sorunlar, çip seti ve çekirdek frekanslarına, entegrasyon düzeylerine, ayrıca cihaz paketine ve form faktörüne bağlı olarak cihazlar arasında değişiklik gösterebilir.

Android 10'da uygulamalar ve oyunlar, cihazdaki değişiklikleri izlemek ve normal sıcaklığı geri getirmek için daha düşük güç kullanımı sağlamak amacıyla termal API kullanabilir. Uygulamalar, PowerManager'da bir dinleyici kaydeder. Bu dinleyici aracılığıyla sistem, hafif ve orta düzeyden ciddi, kritik, acil durum ve kapanma arasında değişen mevcut termal durumu bildirir.

Cihaz termal stres bildirdiğinde uygulamalar ve oyunlar, çeşitli şekillerde güç kullanımını azaltmak için devam eden etkinlikleri yavaşlatarak yardımcı olabilir. Örneğin, yayın uygulamaları çözünürlüğü/bit hızını veya ağ trafiğini düşürebilir, kamera uygulamaları flaş veya yoğun görüntü geliştirmeyi devre dışı bırakabilir, oyunlar kare hızını veya poligon tesselasyonunu düşürebilir, medya uygulamaları hoparlör sesini düşürebilir ve harita uygulamaları GPS'yi kapatabilir.

Termal API için yeni bir cihaz HAL katmanı gerekir. Şu anda Android 10 çalıştıran Pixel cihazlarda desteklenmektedir. Ekosisteme en kısa sürede geniş kapsamlı destek sunmak için cihaz üreticisi iş ortaklarımızla birlikte çalışıyoruz.

Kamera ve resimler

Android 10, kamera ve görüntüyle ilgili aşağıdaki yeni özellikleri kullanıma sunar:

Tek renkli kamera desteği

Tek renkli kamera özelliği ilk olarak Android 9 (API düzeyi 28) ile kullanıma sunulmuştur. Android 10, tek renkli kamera desteğine çeşitli iyileştirmeler ekler:

  • Bellek verimliliğini artırmak için Y8 akış biçimi desteği.
  • Tek renkli ham DNG çekimi desteği.
  • Normal tek renkli kamera ile kızılötesine yakın kameralar arasındaki farkı belirlemek için MONO ve NIR CFA numaralandırmalarının kullanıma sunulması.

Bu özelliği, doğal tek renkli bir resim çekmek için kullanabilirsiniz. Mantıksal çoklu kameralı cihazlar, düşük ışıkta daha iyi görüntü kalitesi elde etmek için fiziksel bir alt kamera olarak tek renkli kamera kullanabilir.

Dinamik Derinlik Biçimi

Android 10'dan itibaren kameralar, Dinamik Derinlik Biçimi (DDF) adlı yeni bir şema kullanarak bir görüntünün derinlik verilerini ayrı bir dosyada saklayabilir. Uygulamalar hem JPG resmini hem de derinlik meta verilerini isteyebilir. Bu bilgileri kullanarak, orijinal resim verilerini değiştirmeden son işlemde istedikleri bulanıklığı uygulayabilirler.

Bu biçimin spesifikasyonunu okumak için Dinamik Derinlik Biçimi bölümüne bakın.

Yüksek Verimli Resim Dosyası biçimi

Yüksek Verimli Resim Dosyası (HEIF) biçimi, diğer dosya biçimlerine kıyasla daha yüksek kaliteli kodlama ve daha küçük dosya boyutu sunan standart bir resim ve video biçimidir.

Dosya biçimi hakkında daha fazla bilgi için HEIC başlıklı makaleyi inceleyin.

Çoklu kamerada iyileştirmeler

Android 10, Android 9'da (API düzeyi 28) kullanıma sunulan birden fazla kameranın tek bir mantıksal kamerada birleştirilmesini iyileştirir. Camera2 API'ye aşağıdakiler eklendi:

Accessibility services API

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

AccessibilityNodeInfo giriş anahtarı işareti

Android 10'dan itibaren, belirli bir AccessibilityNodeInfo değerinin klavyenin veya tuş takımının parçası olan bir metin giriş anahtarını temsil edip etmediğini belirlemek için isTextEntryKey() işlevini çağırabilirsiniz.

Erişilebilirlik iletişim kutusu sözlü geri bildirimi

Kullanıcıların erişilebilirlik hizmetini başlatmak için erişilebilirlik kısayolunu gerçekleştirmesi gerektiğinde Android 10, hizmetin isteği üzerine iletişim kutusunun metinden sese dönüştürme istemiyle birlikte gösterilmesine olanak tanır.

Hareketle gezinme etkinleştirildiğinde erişilebilirlik kısayolu

Android 10'da hareketle gezinme özelliği etkinleştirildiğinde erişim düğmesi görünmez veya seçilemez. Erişilebilirlik hizmetleri menüsüne erişmek için kullanıcıların aşağıdaki hareketlerden birini yapması gerekir:

  • İki parmağınızı yukarı kaydırın.
  • İki parmağınızı yukarı doğru kaydırın ve basılı tutun.

Fiziksel klavyeler için erişilebilirlik kısayolu

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

Sanal klavye denetleyicisinde iyileştirme

Android 10'da erişilebilirlik hizmetleri, cihaz bağlı bir fiziksel klavye algılasa bile sanal klavyenin gösterilmesini isteyebilir. Kullanıcılar bu davranışı geçersiz kılabilir.

Kullanıcı tanımlı erişilebilirlik zaman aşımları

Android 10'da getRecommendedTimeoutMillis() API'si kullanıma sunulmuştur. Bu yöntem, etkileşimli ve etkileşimli olmayan kullanıcı arayüzü öğeleri için kullanıcı tanımlı zaman aşımlarını destekler. Döndürülen değer hem kullanıcı tercihlerinden hem de erişilebilirlik hizmeti API'lerinden etkilenir.

Otomatik doldurma iyileştirmeleri

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

Uyumlulukla ilgili otomatik doldurma istekleri

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

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

SaveInfo.FLAG_DELAY_SAVE işaretçisini kullanarak bir uygulamanın kullanıcı adını, şifreyi ve diğer alanları görüntülemek için birden fazla etkinlik kullandığı durumları destekleyebilirsiniz.

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

Bir kaydetme iletişim kutusunda şifre alanını göstermek ve gizlemek için iletişim kutusunda bir işlem dinleyicisi ayarlayabilir ve ilgili şifre uzak görüntülemesinin görünürlüğünü değiştirebilirsiniz.

Veri kümelerini güncelleme desteği

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

Alan sınıflandırması iyileştirmeleri

Android 10, Field Classification API'de aşağıdaki iyileştirmeleri içerir.

UserData.Builder oluşturucusu

UserData.Builder sınıfının kurucusu, Builder desenine daha uygun olması için değiştirildi.

Bir değerin birden fazla kategori kimliği türüyle eşlenmesine izin verme

Android 10'da UserData.Builder kullanırken artık bir değeri birden fazla kategori kimliği türüyle eşleyebilirsiniz. Önceki sürümlerde, bir değer birden fazla kez eklenirse istisna atılırdı.

Kredi kartı numaraları için iyileştirilmiş destek

Alan sınıflandırması artık dört haneli sayıları kredi kartı numarasının son dört hanesi olarak algılayabilir.

Uygulamaya özgü alan sınıflandırması desteği

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

Kullanıcı arayüzü ve sistem kontrolleri

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

JVMTI PopFrame sınırlarını destekleme

Android 10, Android JVMTI uygulamasında can_pop_frames özelliği için destek ekler. Bu özellik, hata ayıklama sırasında bir kesme noktasında duraklattıktan ve yerel değişkenleri, genel değişkenleri veya bir işlevin uygulanmasını ayarladıktan sonra işlevleri yeniden çalıştırmanıza olanak tanır. Daha fazla bilgi için Oracle'ın Pop Frame referans sayfasına bakın.

Surface Control API

Android 10, sistem derleyiciye (SurfaceFlinger) düşük düzeyde erişim için bir SurfaceControl API'si sağlar. Çoğu kullanıcı için SurfaceView, derleyiciden yararlanmanın doğru yoludur. SurfaceControl API'si bazı durumlarda yararlı olabilir. Örneğin:

  • Birden fazla yüzeyin senkronizasyonu
  • İşlemler arası yüzey yerleştirme
  • Alt düzey yaşam boyu yönetim

SurfaceControl API'si hem SDK hem de NDK bağlamalarında kullanılabilir. NDK uygulaması, arabelleklerin derleyiciyle manuel olarak değiştirilmesi için bir API içerir. Bu, BufferQueue'ın sınırlamalarına takılan kullanıcılara alternatif bir seçenek sunar.

WebView'de donmuş oluşturma aracı algılama

Android 10, uygulamaların WebView'in yanıt verip vermediğini algılamak için kullanabileceği WebViewRenderProcessClient temsili sınıfını kullanıma sunar. Bu sınıfı kullanmak için:

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

WebView yanıt vermezse sistem, onRenderProcessUnresponsive()'u düzenli aralıklarla (en fazla beş saniyede bir) çağırır ancak başka işlem yapmaz. WebView tekrar yanıt vermeye başlarsa sistem onRenderProcessResponsive()'ı yalnızca bir kez çağırır.

Ayarlar panelleri

Android 10, uygulamaların kullanıcılara ayarlarını kendi bağlamlarında göstermesine olanak tanıyan bir API olan Ayarlar Panelleri'ni kullanıma sunar. Bu sayede kullanıcıların uygulamayı kullanabilmek için NFC veya Mobil veri gibi ayarları değiştirmek üzere Ayarlar'a gitmesi gerekmez.

Şekil 1. Kullanıcı, cihaz ağ bağlantısı olmadığı halde bir web sayfası açmaya çalışır. Chrome, İnternet Bağlantısı ayar panelini gösterir...

Şekil 2. Kullanıcı, Chrome uygulamasından çıkmadan kablosuz bağlantıyı açabilir ve bir ağ seçebilir.

Örneğin, bir kullanıcının cihazı uçak modundayken bir web tarayıcısı açtığını varsayalım. Android 10'dan önce uygulama, yalnızca kullanıcıdan bağlantıyı yeniden kurmak için Ayarlar'ı açmasını isteyen genel bir mesaj gösterebiliyordu. Android 10 ile tarayıcı uygulaması, uçak modu, kablosuz ağ (yakındaki ağlar dahil) ve mobil veri gibi önemli bağlantı ayarlarını gösteren satır içi bir panel gösterebilir. Bu panel sayesinde kullanıcılar uygulamadan çıkmadan bağlantıyı geri yükleyebilir.

Bir ayarlar paneli görüntülemek için aşağıdaki Settings.Panel işlemlerinden birini kullanarak bir intent tetikleyin:

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

Java

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type aşağıdakilerden biri olabilir:

ACTION_INTERNET_CONNECTIVITY
Uçak modu, kablosuz ağ ve mobil veri gibi internet bağlantısıyla ilgili ayarları gösterir.
ACTION_WIFI
Kablosuz bağlantı ayarlarını gösterir ancak diğer bağlantı ayarlarını göstermez. Bu, büyük yükleme veya indirme yapmak için kablosuz bağlantıya ihtiyaç duyan uygulamalar için kullanışlıdır.
ACTION_NFC
Yakın alan iletişimi (NFC)
ile ilgili tüm ayarları gösterir.
ACTION_VOLUME
Tüm ses akışlarının ses ayarlarını gösterir.

Paylaşım iyileştirmeleri

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

Sharing Shortcuts API

Paylaşım Kısayol API'si, Doğrudan Paylaşım API'lerinin yerini alıyor.

Paylaşım Kısayolları API'si, sonuçları istek üzerine reaktif olarak almak yerine uygulamaların doğrudan paylaşım hedeflerini önceden yayınlamasına olanak tanır. ShortcutManager işleyiş şekli İki API benzer olduğundan, her iki özelliği de daha kolay kullanabilmeniz için ShortcutInfo API'sini genişlettik. Paylaşım Kısayollarını API'si ile kategorileri veya kişileri doğrudan bir paylaşım hedefine atayabilirsiniz. Paylaşım hedefleri, aynı uygulama tarafından güncellenene veya uygulama kaldırılana kadar sistemde kalır.

Eski Doğrudan Paylaşım mekanizması hâlâ çalışır ancak bu mekanizmayı kullanan uygulamaların önceliği, Paylaşım Kısayollarını API'sini kullanan uygulamalara kıyasla daha düşüktür.

ShortcutInfo.Builder paylaşım hedefi hakkında ek bilgi sağlamak için yöntemler ekler ve geliştirir.

Doğrudan paylaşım hedefleri

Doğrudan Paylaşım Hedefi olarak dinamik bir kısayol yayınlayabilirsiniz. Doğrudan paylaşım hedeflerini yayınlama başlıklı makaleyi inceleyin.

ShortcutManagerCompat, eski DirectShare API ile geriye dönük uyumluluk sağlayan yeni bir AndroidX API'sidir. Paylaşım hedeflerini yayınlamanın tercih edilen yolu budur.

Metni önizleme

Bir uygulama metin içeriği paylaştığında, Sharesheet kullanıcı arayüzünde içeriğin isteğe bağlı bir önizlemesini gösterebilir.

Zengin metin önizlemeleri ekleme başlıklı makaleyi inceleyin.

Daha fazla bilgi

Uygulamaların nasıl veri paylaşabileceği hakkında daha fazla bilgi için Diğer uygulamalara basit veriler gönderme ve Diğer uygulamalardan basit veriler alma başlıklı makaleleri inceleyin.

Koyu tema

Android 10, hem Android sistem kullanıcı arayüzü hem de cihazda çalışan uygulamalar için geçerli olan koyu bir tema sunar. Tüm bilgiler için Koyu tema başlıklı makaleyi inceleyin.

Ön plan hizmeti türleri

Android 10, belirli hizmetlerin tanımına dahil ettiğiniz foregroundServiceType XML manifest özelliğini kullanıma sunar. Belirli bir hizmete birden fazla ön plan hizmet türü atamak mümkündür ancak bu durum nadiren uygundur.

Aşağıdaki tabloda, farklı ön plan hizmet türleri ve belirli bir türün tanımlanmasının uygun olduğu hizmetler gösterilmektedir:

Ön plan hizmeti türü Bu türü belirtmesi gereken bir hizmet için örnek kullanım alanı
connectedDevice Giyilebilir bir fitness takip cihazını izleme
dataSync Dosyaları ağdan indirme
location Kullanıcı tarafından başlatılan bir işleme devam etme
mediaPlayback Sesli kitap, podcast veya müzik çalma
mediaProjection Cihazın ekranının kısa bir süre boyunca video kaydını alın
phoneCall Devam eden telefon görüşmesini yönetme

Kotlin

Android 10, Kotlin geliştirme için aşağıdaki güncellemeleri içerir.

libcore API'leri için geçersizlik ek açıklamaları

Android 10, libcore API'leri için SDK'daki boşluk doldurulabilirlik ek açıklamalarının kapsamını iyileştirir. Bu ek açıklamalar, Android Studio'da Kotlin veya Java boşluk analizi kullanan uygulama geliştiricilerin bu API'lerle etkileşim kurarken boşluk bilgisi almasını sağlar.

Kotlin'de boşluk sözleşmesinin ihlalleri genellikle derleme hatalarına neden olur. Mevcut kodunuzla uyumluluğu sağlamak için yalnızca @RecentlyNullable ve @RecentlyNonNull ek açıklamaları eklenir. Bu, boşluk atlanabilirlik ihlallerinin hata yerine uyarıyla sonuçlandığı anlamına gelir.

Ayrıca, Android 9'a eklenen tüm @RecentlyNullable veya @RecentlyNonNull ek açıklamaları sırasıyla @Nullable ve @NonNull olarak değişiyor. Bu, Android 10 ve sonraki sürümlerde boşluk atlanabilirlik ihlallerinin uyarı yerine hatalara yol açacağı anlamına gelir.

Ek açıklama değişiklikleri hakkında daha fazla bilgi için Android Developers Blog'daki Android Pie SDK'sı artık Kotlin'e daha uygun başlıklı makaleyi inceleyin.

NDK

Android 10, aşağıdaki NDK değişikliklerini içerir.

Dosya tanımlayıcı sahipliğiyle ilgili hata ayıklama işlemi iyileştirildi

Android 10'a, dosya tanımlayıcı sahipliği sorunlarını daha kolay bulup düzeltmenize yardımcı olan fdsan eklendi.

Dosya tanımlayıcı sahipliğinin yanlış kullanımıyla ilgili hatalar (kapattıktan sonra kullanma ve çift kapatma olarak ortaya çıkar) bellek ayırma serbest bıraktıktan sonra kullanma ve çift serbest bırakma hatalarına benzer ancak teşhis edilmesi ve düzeltilmesi çok daha zordur. fdsan, dosya tanımlayıcı sahipliğini zorunlu kılarak dosya tanımlayıcısının yanlış kullanılmasını tespit etmeye ve/veya önlemeye çalışır.

Bu sorunlarla ilgili kilitlenmeler hakkında daha fazla bilgi için fdsan tarafından algılanan hata başlıklı makaleyi inceleyin. fdsan hakkında daha fazla bilgi için fdsan'daki Googlesource sayfasına bakın.

ELF TLS

NDK kullanılarak oluşturulan ve API düzeyi en az 29 olan uygulamalar, emutls yerine ELF TLS kullanabilir. Dinamik ve statik bağlayıcı desteği, iş parçacığı yerel değişkenlerini işleme yöntemini desteklemek için eklendi.

API düzeyi 28 ve daha düşük sürümler için oluşturulan uygulamalarda, libgcc/compiler-rt'ün bazı emutls sorunlarını gidermesi amacıyla iyileştirmeler uygulandı.

Daha fazla bilgi için NDK geliştiricileri için Android değişiklikleri başlıklı makaleyi inceleyin.

Çalışma zamanı

Android 10, aşağıdaki çalışma zamanı değişikliğini içerir.

Mallinfo tabanlı atık toplama tetikleme

Küçük platform Java nesneleri C++ yığınındaki büyük nesnelere referans verdiğinde C++ nesneleri genellikle yalnızca Java nesnesi toplandığında ve örneğin sonlandırıldığında yeniden kullanılabilir. Önceki sürümlerde platform, Java nesneleriyle ilişkili birçok C++ nesnesinin boyutlarını tahmin ediyordu. Bu tahmin her zaman doğru değildi ve platformun gerektiğinde çöp toplama işlemini yapamamasından dolayı zaman zaman bellek kullanımının büyük oranda artmasına neden oluyordu.

Android 10'da, sistem malloc() tarafından ayrılan yığının toplam boyutunu izleyen çöp toplayıcı (GC), büyük malloc() ayırmalarının her zaman GC'yi tetikleyen hesaplamalara dahil edilmesini sağlar. Çok sayıda C++ ayırma işlemini Java yürütmeyle birlikte kullanan uygulamalarda, bunun sonucunda çöp toplama sıklığında artış görülebilir. Diğer uygulamalarda ise küçük bir düşüş görülebilir.

Test ve hata ayıklama

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

Cihaz üzerinde sistem takibi için iyileştirmeler

Android 10'dan itibaren, cihaz üzerinde sistem izleme işlemi gerçekleştirirken izlemenin boyutu ve süresi için sınırlar belirleyebilirsiniz. Bu iki değerden birini belirttiğinizde sistem uzun bir izleme gerçekleştirir ve izleme kaydedilirken izleme arabelleğini hedef dosyaya düzenli aralıklarla kopyalar. Belirttiğiniz boyut veya süre sınırlarına ulaşıldığında izleme tamamlanır.

Standart bir izlemeyle test edebileceğinizden farklı kullanım alanlarını test etmek için bu ek parametreleri kullanın. Örneğin, yalnızca uygulamanız uzun süre çalıştıktan sonra ortaya çıkan bir performans hatasını teşhis edebilirsiniz. Bu durumda, tüm gün boyunca uzun bir izleme kaydı kaydedebilir ve ardından hatanın nedenini belirlemenize yardımcı olması için rapordaki CPU planlayıcıyı, disk etkinliğini, uygulama iş parçacıklarını ve diğer verileri analiz edebilirsiniz.

Android 10 ve sonraki sürümlerde izleme dosyaları, performans enstrümasyonu ve izleme için açık kaynak bir proje olan Perfetto ile açılabilecek bir biçimde kaydedilir. Perfetto izleme dosyalarını Systrace biçimine dönüştürebilirsiniz.

TextClassifier iyileştirmeleri

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

Dil algılama

detectLanguage() yöntemi, daha önce mevcut olan sınıflandırma yöntemlerine benzer şekilde çalışır. Bir TextLanguage.Request nesnesini alır ve TextLanguage nesnesini döndürür.

TextLanguage nesneleri, sıralı çiftlerden oluşan bir listeden oluşur. Her çift, bir yerel ayarı ve sınıflandırma için karşılık gelen bir güven puanını içerir.

Önerilen görüşme işlemleri

suggestConversationActions() yöntemi, mevcut sınıflandırma yöntemlerine benzer şekilde çalışır. Bir ConversationActions.Request nesnesi alır ve ConversationActions nesnesi döndürür.

ConversationActions nesneleri, ConversationAction nesnelerinin bir listesinden oluşur. Her ConversationAction nesnesi, önerilen olası bir işlemi ve bu işlemin güven puanını içerir.

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

Android 9, önerilen yanıtları bildirimde gösterme özelliğini kullanıma sundu. Android 10, önerilen intent tabanlı işlemleri dahil etme özelliğiyle bu kapsamı genişletir. Ayrıca platform, bu önerileri otomatik olarak oluşturabilir. Uygulamalar kendi önerilerini sunmaya veya sistem tarafından oluşturulan önerileri devre dışı bırakmaya devam edebilir.

Bu yanıtları oluşturmak için kullanılan API, TextClassifier'un bir parçasıdır ve Android 10'da geliştiricilere doğrudan sunulmuştur. Daha fazla bilgi için lütfen TextClassifier iyileştirmeleriyle ilgili bölümü okuyun.

Uygulamanız kendi önerilerini sağlıyorsa platform otomatik öneri oluşturmaz. Uygulamanızın bildirimlerinde önerilen yanıtların veya işlemlerin gösterilmesini istemiyorsanız setAllowGeneratedReplies() ve setAllowSystemGeneratedContextualActions() simgesini kullanarak sistem tarafından oluşturulan yanıtları ve işlemleri devre dışı bırakabilirsiniz.