Android 9 özellikleri ve API'leri

Android 9 (API düzeyi 28), kullanıcılar ve geliştiriciler için yeni ve harika özellikler ve özellikler sunuyor. Bu dokümanda, geliştiriciler için sunulan yenilikler vurgulanmaktadır.

Yeni API'ler hakkında bilgi edinmek için API farkları raporuna göz atın veya Android API referansı. Platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android 9 Davranış Değişiklikleri başlıklı makaleyi de inceleyin.

Kablosuz RTT ile kapalı alanda konumlandırma

Yeni RTT API'leri, uygulamalarınızda kapalı mekan konumlandırmayı destekler.

Android 9, uygulamalarınızda kapalı mekan konumlandırma özelliğinden yararlanmanıza olanak tanımak için IEEE 802.11-2016 kablosuz protokolü (Kablosuz Dönüş Süresi (RTT) olarak da bilinir) için platform desteği ekler.

Donanım desteğiyle Android 9 çalıştıran cihazlarda uygulamalarınız, yakındaki RTT özellikli kablosuz erişim noktalarına (AP'ler) olan mesafeyi ölçmek için RTT API'lerini kullanabilir. Cihazınızda konum hizmetleri ve kablosuz tarama (Ayarlar > Konum bölümünde) etkin olmalıdır. Ayrıca uygulamanızda ACCESS_FINE_LOCATION iznine sahip olmanız gerekir. RTT'yi kullanmak için cihazın erişim noktalarına bağlanması gerekmez. Gizliliği korumak için erişim noktasına olan mesafeyi yalnızca telefon belirleyebilir. Erişim noktalarında bu bilgi bulunmaz.

Cihazınız 3 veya daha fazla erişim noktasına uzaklığı ölçüyorsa Bunlara en uygun cihaz konumunu tahmin etmek için kullanılan çoklu katmanlama algoritması ölçümler. Sonuç genellikle 1-2 metre içinde doğru sonuç verir.

Bu doğruluk oranıyla, bina içinde gezinme gibi yeni deneyimler oluşturabilirsiniz. ve konum tabanlı ayrıntılı hizmetler (örneğin, belirsizleştirilmiş sesli kontrol gibi) (örneğin, "Bu ışığı aç") ve konuma dayalı bilgiler (ör. "Bu ürün için özel teklifler var mı?").

Kullanımdaki WiFi RTT API'sini Android WifiRttScan demo uygulaması.

Daha fazla bilgi için bkz. Kablosuz konumu: RTT ile aralık.

Ekran kesimi desteği

Farklı kesim boyutlarının gösterildiği geliştirici seçenekleri ekranı

Emülatör kullanarak ekran kesimini test etme

Android 9 en yeni uçtan uca ekranları destekler. kamera ve hoparlörler için ekran kesimleri içeren reklam öğeleri. İlgili içeriği oluşturmak için kullanılan DisplayCutout sınıfta işlevsiz alanların yerini ve şeklini öğrenmenize olanak sağlar görüntülenmemelidir. Mevcut olduğunu ve konumunu belirlemek için bu kesim alanlarını belirlemek için getDisplayCutout() yöntemidir.

Yeni bir pencere düzeni özelliği olan layoutInDisplayCutoutMode, uygulamanızın içeriğini cihazın kesiklerine göre düzenlemesine olanak tanır. Bu özelliği aşağıdaki değerlerden birine ayarlayabilirsiniz:

Android 9 çalıştıran herhangi bir cihazda veya emülatörde ekran kesimi simülasyonu yapabilirsiniz. şu şekilde:

  1. Geliştirici seçeneklerini etkinleştirin.
  2. Geliştirici seçenekleri ekranında Çizim bölümüne gidin Kesim içeren bir ekranı simüle et'i seçin.
  3. Kesimin boyutunu seçin.

Bildirimler

Android 9'da bildirimlerle ilgili çeşitli geliştirmeler sunulmaktadır. Bunların tümü API düzeyi 28 ve üstünü hedefleyen geliştiriciler tarafından kullanılabilir.

Mesajlaşma bildirimleri

Fotoğraf ekli MessagingStyle.

Mesajlaşma bildirimi

Yanıtlar ve görüşme içeren MessagingStyle.

Android 9 özellikleri de dahil olmak üzere bildirimleri kullanan örnek kod için Kişiler Örnek.

Gelişmiş mesajlaşma deneyimi

Android 7.0 (API düzeyi 24) sürümünden itibaren, yanıt vermek üzere bir işlem ekleyebilirsiniz doğrudan bildirimden mesaj gönderebilir veya başka bir metin girebilirsiniz. Android 9 geliştirmeleri aşağıdaki geliştirmelerle bu özelliği sunar:

  • Sohbet katılımcıları için basitleştirilmiş destek: Person sınıfı, bir görüşmede yer alan kişileri tanımlamak için kullanılır. Bu kişilerin avatarlar ve URI'ler. Örneğin, addMessage(), artık CharSequence yerine Person sınıfından yararlanacak. Person sınıfı Oluşturucu tasarım kalıbını da destekler.

  • Resim desteği: Android 9 artık telefonlarda Mesaj Bildirimleri'nde resimleri gösteriyor. Tekliflerinizi otomatikleştirmek ve optimize etmek için setData() mesajda bir resim gösterilir. Aşağıdaki kod snippet'i, (Person ve resim içeren bir ileti oluşturun).

Kotlin

// Create new Person.
val sender = Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build()
// Create image message.
val message = Message("Picture", time, sender)
        .setData("image/", imageUri)
val style = Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message)

Java

// Create new Person.
Person sender = new Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build();
// Create image message.
Message message = new Message("Picture", time, sender)
        .setData("image/", imageUri);
Notification.MessagingStyle style = new Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message);
  • Yanıtları taslak olarak kaydetme: Kullanıcı bir mesajlaşma bildirimini yanlışlıkla kapattığında uygulamanız, sistem tarafından gönderilen EXTRA_REMOTE_INPUT_DRAFT değerini alabilir. Bu ekstrayı, uygulamadaki metin alanlarını önceden doldurmak için kullanabilirsiniz. Böylece kullanıcılar, yanıtını tamamlayabilir.

  • Bir görüşmenin grup görüşmesi olup olmadığını belirleme: Bir görüşmeyi grup görüşmesi veya grup dışı görüşme olarak tanımlamak için setGroupConversation() simgesini kullanabilirsiniz.

  • Bir amaç için semantik işlemi ayarlayın: setSemanticAction() yöntemi, bir eyleme anlamsal bir anlam vermenizi "okundu olarak işaretle", "sil," "yanıtla" vb.

  • Akıllı Yanıt: Android 9, mesajlaşma uygulamanızda bulunan önerilen yanıtları destekler. Kullanıcıya bir dizi standart yanıt sağlamak için RemoteInput.setChoices() simgesini kullanın.

Kanal ayarları, yayınlar ve Rahatsız Etmeyin

Android 8.0'da kullanıma sunulan Bildirim Kanalları, görüntülemek istediğiniz her bildirim türü için kullanıcı tarafından özelleştirilebilen bir kanal oluşturmanıza olanak tanır. Android 9, aşağıdaki değişikliklerle bildirim kanalı ayarlarını basitleştirir:

  • Kanal gruplarını engelleme: Kullanıcılar artık kanal gruplarının tamamını engelleyebilir uygulamanın bildirim ayarlarını kullanabilirsiniz. URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için isBlocked() bir yöntem belirlemek için bir e-posta alırsınız ve sonuç olarak bildirim alırsınız.

    Ayrıca, uygulamanız yeni getNotificationChannelGroup() yöntemidir.

  • Yeni yayın amacı türleri: Android sistemi artık yayın amaçları gönderiyor Bildirim kanallarının ve kanal gruplarının engelleme durumu değiştiğinde. Engellenen kanalın veya grubun sahibi olan uygulama, bu amaçları dinleyebilir ve tepki verebilirsiniz. Bu intent işlemleri ve ekstra özellikler hakkında daha fazla bilgi için: NotificationManager bir referans noktası olarak kabul edilir. Yayın amaçlarına tepki vermeyle ilgili bilgi için Yayınlar.

  • NotificationManager.Policy üç yeni Rahatsız Etmeyin öncelik kategorisi vardır:

  • NotificationManager.Policy, görsel kesintileri engellemek için kullanabileceğiniz yedi yeni Rahatsız Etmeyin sabiti de içerir:

Çoklu kamera desteği ve kamera güncellemeleri

Android 9 yüklü cihazlarda iki veya daha fazla fiziksel kameradan aynı anda yayınlara erişebilirsiniz. İki ön veya iki arka kamerası olan cihazlarda, tek bir kamerayla mümkün olmayan yenilikçi özellikler (ör. sorunsuz yakınlaştırma, bokeh ve stereo görüş) oluşturabilirsiniz. API, iki veya daha fazla kamera arasında otomatik olarak geçiş yapan mantıksal ya da birleştirilmiş bir kamera akışı çağırmanıza da olanak tanır.

Kameradaki diğer iyileştirmeler arasında, ilk yakalama sırasındaki gecikmeleri azaltmaya yardımcı olan ek Oturum parametreleri ve kamera istemcilerinin kamera aktarımını durdurup başlatmak zorunda kalmadan çeşitli kullanım alanlarını ele almasına olanak tanıyan yüzey paylaşımı yer alır. Ayrıca, ekran tabanlı flaş desteği ve uygulama düzeyinde görüntü sabitleme ve özel efektler için OIS zaman damgaları erişimi sağlayan API'ler de ekledik.

Android 9'da çoklu kamera API aşağıdaki özelliklere sahip cihazlar için tek renkli kameraları destekler: FULL veya LIMITED özelliği. Tek renkli çıkış, Y'nin gri tonlamalı, U (Cb)'nun 128 ve V (Cr)'nin 128 olduğu YUV_420_888 biçimi aracılığıyla elde edilir.

Android 9, harici USB/UVC desteği de sunar. kamera açık cihazlar.

Çizilebilir öğeler ve bitmap'ler için ImageDecoder

Android 9, görüntülerin kodunu çözmek için modern bir yaklaşım sunan ImageDecoder sınıfını kullanıma sunar. Bu sınıfı kullan (BitmapFactory yerine) ve BitmapFactory.Options API'ler.

ImageDecoder, aşağıdakileri oluşturmanızı sağlar: Drawable veya bir bir bayt arabelleğinden, bir dosyadan Bitmap veya URI olabilir. Bir resmin kodunu çözmek için ilk çağrıyı createSource() kodlanan resmin kaynağıyla birlikte kullanılır. Ardından, Drawable veya Bitmap oluşturmak için ImageDecoder.Source nesnesini ileterek decodeDrawable() veya decodeBitmap() işlevini çağırın. varsayılan ayarları kullanıyorsanız OnHeaderDecodedListener öğesini decodeDrawable() veya decodeBitmap(). ImageDecoder, bilindikten sonra resmin varsayılan genişliği ve yüksekliğiyle onHeaderDecoded() çağırır. Kodlanmış resim animasyonlu GIF veya WebP ise decodeDrawable(), AnimatedImageDrawable sınıfının bir örneği olan Drawable döndürür.

Resim özelliklerini ayarlamak için kullanabileceğiniz farklı yöntemler vardır:

  • Kodu çözülmüş resmi tam bir boyuta ölçeklendirmek için hedef boyutları setTargetSize() parametresine iletin. Resimleri örnek boyut kullanarak da ölçeklendirebilirsiniz. Örnek boyutunu doğrudan setTargetSampleSize().
  • Bir resmi ölçeklendirilmiş resmin aralığı içinde kırpmak için setCrop() işlevini çağırın.
  • Değişebilir bit eşlem oluşturmak için true öğesini setMutableRequired()

ImageDecoder, bir resme yuvarlatılmış köşeler veya daire maskeleri gibi özelleştirilmiş ve karmaşık efektler eklemenize de olanak tanır. İstediğiniz çizim komutlarını yürütmek için PostProcessor sınıfının bir örneğiyle setPostProcessor() kullanın.

Animasyon

Android 9, AnimatedImageDrawable sınıfını kullanabilirsiniz. AnimatedImageDrawable, şuna benzer şekilde çalışır: AnimatedVectorDrawable AnimatedImageDrawable animasyonlarını oluşturmada kullanılır. Oluşturma iş parçacığı, kod çözme işleminin oluşturma iş parçacığındaki diğer işlemleri etkilememesi için kod çözme işlemini gerçekleştirmek üzere bir iş parçacığı da kullanır. Bu uygulama, uygulamanızın güncellemelerini yönetmeden veya uygulamanızın kullanıcı arayüzü iş parçacığındaki diğer etkinlikleri etkilemeden animasyonlu bir resim göstermesine olanak tanır.

AnimatedImageDrawable kodunun kodu, şunun bir örneği kullanılarak çözülebilir: ImageDecoder Aşağıdaki kod snippet'inde, AnimatedImageDrawable değerinizin kodunu çözmek için ImageDecoder değerinin nasıl kullanılacağı gösterilmektedir:

Kotlin

@Throws(IOException::class)
private fun decodeImage() {
    val decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(resources, R.drawable.my_drawable))

    // Prior to start(), the first frame is displayed.
    (decodedAnimation as? AnimatedImageDrawable)?.start()
}

Java

private void decodeImage() throws IOException {
    Drawable decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(getResources(), R.drawable.my_drawable));

    if (decodedAnimation instanceof AnimatedImageDrawable) {
        // Prior to start(), the first frame is displayed.
        ((AnimatedImageDrawable) decodedAnimation).start();
    }
}

ImageDecoder, resimde daha fazla değişiklik yapmanıza olanak tanıyan çeşitli yöntemler sunar. Örneğin, setPostProcessor() Örneğin, dairesel maske uygulamak veya yuvarlatılmış köşeler.

HDR VP9 Video, HEIF resim sıkıştırma ve Medya API'leri

Android 9, Yüksek Dinamik Aralık (HDR) VP9 Profil 2 için yerleşik destek sağlar. Böylece, HDR özellikli cihazlarda YouTube, Play Filmler ve diğer kaynaklardan HDR özellikli filmleri kullanıcılarınıza sunabilirsiniz.

Android 9, Yüksek Verimli Resim Dosyası biçimini (HEIF veya HEIC) kullanarak resim kodlama desteği de ekler. Bu biçim, sıkıştırmayı iyileştirir, depolama alanını ve ağ veri kullanımını azaltır. HEIF hareketsiz resim örnekleri MediaMuxer ve MediaExtractor sınıflar. Android 9 cihazlarda platform desteği sayesinde, arka uç sunucunuzdan HEIF resimleri göndermek ve kullanmak kolaydır. Uygulamanızın paylaşım ve görüntüleme için bu veri biçimiyle uyumlu olduğundan emin olduktan sonra, uygulamanızda resim depolama biçimi olarak HEIF'i deneyin. ImageDecoder veya BitmapFactory (JPEG dosyasından bitmap elde eder) kullanarak JPEG'den HEIF'e dönüştürme işlemi yapabilirsiniz. Ardından, YUV bayt arabelleklerinden veya Surface ya da Bitmap örneklerinden HEIF hareketsiz resimleri yazmak için HeifWriter kullanabilirsiniz.

Medya metrikleri, AudioTrack, AudioRecord, ve MediaDrm sınıfları.

Android 9, Metrikleri almak için MediaDRM sınıfı, HDCP oturum sayısı ile ilgili güvenlik düzeylerini, güvenlik düzeylerini ve oturum sayısını test edebilirsiniz. ve güvenli durdurma özellikleri bulunuyor. Ayrıntılar için API fark raporuna bakın.

Android 9'da AAudio API, kullanım, içerik ve trafik dahil olmak üzere çeşitli ek AAudioStream özellikleri desteği ve giriş hazır ayarı gösterilir. Bu özellikleri kullanarak VoIP veya kamera uygulamalarına özelleştirilmiş akışlar oluşturabilirsiniz. Ayrıca, oturum kimliğini şu şekilde de ayarlayabilirsiniz: Ses akışını efekt içerebilen bir alt mix'le ilişkilendirme Efektleri kontrol etmek için AudioEffect API'yi kullanın.

Android 9, dinamik işleme için AudioEffect API'yi kullanıma sunar. Bu sınıfla, birden fazla aşamada eşitleme, çok bantlı sıkıştırma ve sınırlayıcı dahil olmak üzere kanal tabanlı ses efektleri oluşturabilirsiniz. Bantların ve etkin aşamaların sayısı yapılandırılabilir. Çoğu parametre gerçek zamanlı olarak kontrol edilebilir.

JobScheduler'daki veri maliyeti hassasiyeti

Android 9'dan itibaren JobScheduler, ağla ilgili işlerin işlenmesini iyileştirmek için operatörler tarafından sağlanan ağ durumu sinyallerini kullanabilir.

İşler tahmini veri boyutlarını, sinyal önceden getirme özelliğini ve ayrıntılı ağ gereksinimleri. JobScheduler, ağı yönetir. Örneğin, ağ tıkanık olduğunu sinyal verdiğinde JobScheduler büyük ağ isteklerini erteleyebilir. Bir sayaçsız ağda, JobScheduler önceden getirme işlerini Başlıkları önceden getirmek gibi yöntemlerle kullanıcı deneyimini iyileştirebilir.

İş eklerken setEstimatedNetworkBytes(), setPrefetch(), ve setRequiredNetwork() gerektiğinde JobScheduler bu işleri düzgün şekilde halleder. İşiniz yürütüldüğünde Network nesnesini kullandığınızdan emin olun iade eden: JobParameters.getNetwork(). Aksi takdirde, cihazın varsayılan ağını dolaylı olarak kullanırsınız. Bu ağ, gereksinimlerinizi karşılamayabilir ve istenmeyen veri kullanımına neden olabilir.

Neural Networks API 1.1

Neural Networks API kullanıma sunuldu şu uygulamalarda cihaz üzerinde makine öğrenimini hızlandırmak için: Android Android 9, API'yi genişleterek dokuz yeni işlem için destek:

Bilinen sorun: Android 9 ve sonraki sürümlerde kullanılabilen ANEURALNETWORKS_TENSOR_QUANT8_ASYMM tensörleri ANEURALNETWORKS_PAD işlemine aktarırken NNAPI'den elde edilen çıkış, TensorFlow Lite gibi üst düzey makine öğrenimi çerçevelerinden elde edilen çıkışla eşleşmeyebilir. Bunun yerine, sorun çözülene kadar yalnızca ANEURALNETWORKS_TENSOR_FLOAT32 parametresini iletmeniz gerekir.

Ayrıca API, ANEURALNETWORKS_TENSOR_FLOAT32 değerini IEEE 754 16 bit kayan nokta biçimi kadar düşük bir aralık ve hassasiyetle hesaplayıp hesaplamayacağınızı belirtmenize olanak tanıyan yeni bir işlev olan ANeuralNetworksModel_relaxComputationFloat32toFloat16() işlevini de kullanıma sunar.

Otomatik doldurma çerçevesi

Android 9, otomatik doldurma özelliğiyle ilgili birçok iyileştirme sunar. kullanıcı deneyimini daha da iyileştirmek için uygulayabileceği oluşturabilirsiniz. Uygulamanızda otomatik doldurma özelliklerini kullanma hakkında daha fazla bilgi edinmek için Otomatik Doldurma Çerçevesi kılavuzuna bakın.

Güvenlik geliştirmeleri

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

Android Korumalı Onayı

Android 9 veya sonraki sürümleri çalıştıran desteklenen cihazlarda Android Korumalı Onay'ı kullanabilirsiniz. Bu iş akışı kullanıldığında uygulamanız, kullanıcıya kısa bir ifadeyi onaylamasını isteyen bir istem gösterir. Bu ifade, uygulamanın kullanıcının bir şeyi tamamlamak istediğini hassas işlemler (ör. ödeme yapma)

Kullanıcı ifadeyi kabul ederse Android Anahtar Deposu bir anahtarlı karma ileti kimlik doğrulamasıyla korunan kriptografik imza kodu (HMAC) kullanır. Android Anahtar Deposu mesajın geçerliliğini onayladıktan sonra, uygulamanız güvenilir klasöründeki trustedConfirmationRequired hizmetinden oluşturulan anahtarı kullanabilir kullanıcının kabul ettiği mesajı imzalamak için yürütme ortamı (TEE) kullanır. İlgili içeriği oluşturmak için kullanılan imza, kullanıcının en az bir haftalık ve bunu kabul etti.

Dikkat: Android Protected Confirmation, kullanıcı için güvenli bir bilgi kanalı sağlamaz. Uygulamanız, Android platformunun sunduğu özelliklerin ötesinde gizlilik garantileri verir. Özellikle, normalde kullanıcının cihazında göstermeyeceğiniz hassas bilgileri görüntülemek için bu iş akışını kullanmayın.

Android Korumalı Onayı desteğinin eklenmesi hakkında bilgi edinmek için şuraya bakın: Android Korumalı Onay rehberini inceleyin.

Birleştirilmiş biyometrik kimlik doğrulama iletişim kutusu

Android 9'da sistem, uygulamanız adına biyometrik kimlik doğrulama iletişim kutuları sağlar. Bu işlev, iletişim kutusu için standart bir görünüm, his ve yerleşim oluşturur. Böylece kullanıcılar, güvenilir bir biyometrik kimlik bilgisi denetleyiciyle kimlik doğruladıkları konusunda daha fazla güven duyarlar.

Uygulamanız, kullanıcılara parmak izi kimlik doğrulama iletişim kutusu göstermek için FingerprintManager kullanıyorsa bunun yerine BiometricPrompt kullanmaya geçin. BiometricPrompt, kimlik doğrulamayı görüntülemek için sisteme ihtiyaç duyar iletişim kutusu. Ayrıca davranışını, biyometri türüne uyum sağlayacak şekilde değiştirir. kullanıcının seçtiği kimlik doğrulama işlemidir.

Donanım güvenlik modülü

Android 9 veya sonraki sürümleri çalıştıran desteklenen cihazlarda, donanım güvenlik modülünde bulunan Keymaster HAL'in bir uygulaması olan StrongBox Keymaster bulunabilir. Modül şunları içerir:

  • Kendi CPU'su.
  • Güvenli depolama alanı.
  • Gerçek bir rastgele sayı üreteci.
  • Paketlerin değiştirilmesine ve yetkisiz başka cihazdan yüklemeye direnecek ek mekanizmalar sayısı.

StrongBox Keymaster'da saklanan anahtarları kontrol ederken sistem bir anahtarının Güvenilir Yürütme Ortamı (TEE) ile bütünlüğünü kontrol eder.

Strongbox Keymaster'ı kullanma hakkında daha fazla bilgi edinmek için Donanım Güvenliği Modül.

Anahtar Deposuna güvenli anahtar aktarma

Android 9, bir API anahtarı kullanarak şifrelenmiş anahtarları Anahtar Deposu'na güvenli bir şekilde ASN.1 kodlu anahtar biçimi. Ardından Anahtar Yöneticisi, Anahtar Deposu'ndaki anahtarların şifresini çözer. Böylece anahtarların içeriği hiçbir zaman cihazın ana belleğinde açık metin olarak görünmez.

Şifrelenmiş anahtarları daha güvenli bir şekilde içe aktarma hakkında daha fazla bilgi edinin.

Anahtar rotasyonu içeren APK imza şeması

Android 9, APK İmza Şeması v3 desteğini ekler. Bu şemada her imzalama için imzalama blokuna bir rotasyon kanıtı kaydı eklemek sertifikası. Bu özellik, APK dosyasının geçmişteki imza sertifikalarını şu anda imzalandığı sertifikaya bağlayarak uygulamanızın yeni bir imza sertifikasıyla imzalanmasını sağlar.

Tuşları döndürme hakkında daha fazla bilgi apksigner.

Yalnızca kilidi açık cihazlarda anahtar şifresinin çözülmesine izin verme seçeneği

Android 9'da unlockedDeviceRequired işareti kullanıma sunulmuştur. Bu seçenek, Anahtar Deposu'nun, izin vermeden önce ekran kilidinin açılmasını gerektirip gerektirmediği belirtilen anahtarı kullanarak yayındaki veya depolanan verilerin şifresini çözme. Bu tür anahtarlar, sağlık veya kurumsal veriler gibi diskte depolanacak hassas verilerin şifrelenmesi için idealdir. Bu işaret, telefonları kaybolduğunda veya çalındığında cihaz kilitliyken verilerin şifresinin çözülemeyeceği konusunda kullanıcılara daha fazla güvence sağlar.

Cihaz kilitliyken bir anahtarı şifrenin çözülmesine karşı korumak için işareti etkinleştirin true öğesini setUnlockedDeviceRequired() yöntemidir. Bu adım tamamlandıktan sonra, kullanıcının ekranı kilitliyken bu anahtarı kullanarak verilerin şifresini çözme veya imzalama girişimleri başarısız olur. Kilitli bir cihaza erişebilmek için PIN, şifre, parmak izi veya başka bir güvenilir faktör gerekir.

Eski şifreleme desteği

Keymaster 4 ile gönderilen Android 9 cihazlar Triple Data'yı destekler Şifreleme Algoritması veya Triple DES. Uygulamanız eski sürümlerle birlikte çalışıyorsa üçüncü taraf DES gerektiren sistemlerde, verileri şifrelerken bu tür şifreler ve hassas kimlik bilgilerine sahip olmalıdır.

Uygulamanızı nasıl daha güvenli hale getireceğiniz hakkında daha fazla bilgiyi Android için güvenlik sayfasında bulabilirsiniz. Geliştiriciler.

WPS'nin kullanımdan kaldırılması

Kablosuz Korumalı Kurulum (WPS) güvenlik nedeniyle kullanımdan kaldırıldı.

Android yedeklemeleri

Android 9, yedekleme ve geri yüklemeyle ilgili yeni işlevler ve geliştirici seçenekleri ekler. Bu değişikliklerle ilgili ayrıntılar aşağıdaki bölümlerde verilmiştir.

İstemci tarafı şifreleme yedeklemeleri

Android 9, Android yedeklemelerinin istemci tarafı gizli anahtarı. Bu destek, aşağıdaki koşullar karşılandığında otomatik olarak etkinleştirilir:

Bu gizlilik önlemi etkinleştirildiğinde cihazın PIN'i, deseni veya şifresi kullanıcının cihazı tarafından yapılan yedeklerden verilerin geri yüklenmesi için gereklidir. Öğrenmek için daha fazla bilgi için bkz. Google Cloud Key Vault Hizmet teknik belgesi.

Yedekleme için gereken cihaz koşullarını tanımlayın

Uygulama verileriniz hassas bilgiler veya tercihler içeriyorsa Android 9, uygulamanızın verilerinin kullanıcının yedeğine dahil edildiği cihaz koşullarını tanımlama olanağı sunar. Örneğin, istemci tarafında şifreleme etkinleştirildiğinde veya yerel cihazlar arası aktarım gerçekleşirken uygulama verileriniz kullanıcının yedeğine dahil edilir.

Android cihazlarda verileri yedekleme hakkında daha fazla bilgi edinmek için Veri Yedeklemeye Genel Bakış başlıklı makaleyi inceleyin.

Erişilebilirlik

Android 9, erişilebilirlik çerçevesinde uygulamanızın kullanıcılarına daha da iyi deneyimler sunmayı kolaylaştıran geliştirmeler sunar.

Gezinme anlamı

Android 9'da eklenen özellikler, kullanıcıların bu sürümde nasıl başta ekran okuyucular olmak üzere erişilebilirlik hizmetlerini kullanmak için taşımak zorunda kalırsınız. Bu özellikler, görme engelli kullanıcıların uygulamanızın kullanıcı arayüzündeki metinlerde hızlıca gezinmesine ve seçim yapmasına yardımcı olabilir.

Örneğin, bir alışveriş uygulamasında ekran okuyucu, kullanıcıların bir fırsat kategorisinden diğerine doğrudan geçiş yapmasına yardımcı olabilir. Bu durumda ekran okuyucunun, bir kategoriden diğerine geçmeden önce kategorideki tüm öğeleri okuması gerekmez.

Erişilebilirlik bölmesi başlıkları

Android 8.1 (API düzeyi 27) ve önceki sürümlerde erişilebilirlik hizmetleri her zaman ekranın belirli bir bölmesinin ne zaman güncellendiğini (örneğin, bir etkinliğin bir parçayı başka bir parçayla değiştirmesi) belirler. Bölmelerin içeriği mantıksal olarak gruplandırılmış, görsel olarak ilişkili kullanıcı arayüzü öğeleri (genellikle bir olabilir.

Android 9'da bu paneller için erişim paneli başlıkları veya tek tek tanımlanabilir başlıklar sağlayabilirsiniz. Bir bölmenin erişilebilirlik bölmesi başlığı varsa Bölme değiştiğinde daha ayrıntılı bilgi erişilebilirlik hizmetleri alır. Bu özellik, hizmetlerin kullanıcı arayüzünde yapılan değişiklikler hakkında kullanıcıya daha ayrıntılı bilgi vermesine olanak tanır.

Bir bölmenin başlığını belirtmek için android:accessibilityPaneTitle özelliğini kullanın. setAccessibilityPaneTitle() kullanarak çalışma zamanında değiştirilen bir kullanıcı arayüzü bölmesinin başlığını da güncelleyebilirsiniz. Örneğin, bir reklamın içerik alanı için Fragment nesnesini tanımlayın.

Başlık tabanlı gezinme

Uygulamanız mantıksal başlıklar içeren metin içerikleri gösteriyorsa bu başlıkları temsil eden View örnekleri için android:accessibilityHeading özelliğini true olarak ayarlayın. Ölçüt başlıkları ekleyerek, erişilebilirlik hizmetlerinin kullanıcıların gezinmesine yardımcı olmasını sağlayabilirsiniz. doğrudan bir başlıktan diğerine geçer. Herhangi bir erişilebilirlik hizmeti, kullanıcıların kullanıcı arayüzü gezinme deneyimini iyileştirmek için bu özelliği kullanabilir.

Grup gezinme ve çıkışı

Ekran okuyucular geleneksel olarak android:focusable özelliğini ne zaman okumaları gerektiğini ViewGroup veya View nesneleri tek bir birim olarak gösterir. Bu şekilde ekip görüntülemelerin mantıksal olarak birbiriyle ilişkili olduğunu anlayabiliyordu.

Android 8.1 ve önceki sürümlerde, View her nesneyi bir Odaklanamaz olarak ViewGroup ve odaklanılabilir olarak ViewGroup öğesi. Bu düzenleme, bazı View örneklerinin odaklanılabilir olarak işaretlenmesine neden oldu. klavyeyle gezinmeyi daha hantal hale getirdi.

Android 9 sürümünden itibaren android:screenReaderFocusable özelliğini kullanarak, aşağıdaki durumlarda android:focusable özelliği yerine bir View nesnesini odaklanabilir hale getirmenin istenmeyen sonuçları vardır. Ekran okuyucular yer, android:screenReaderFocusable ayarından herhangi birine ayarlanmış tüm öğelere odaklanır veya android:focusable ile true arasında.

Kolaylık işlemleri

Android 9, kullanıcılar adına kolaylık sağlayan işlemleri gerçekleştirme desteği ekler:

İpuçlarıyla etkileşim
Erişilebilirlik çerçevesine eklenen özellikler, uygulamanın kullanıcı arayüzündeki ipuçlarını görmenize olanak tanır. getTooltipText() ile ipucu metnini okuyabilir, ACTION_SHOW_TOOLTIP ve ACTION_HIDE_TOOLTIP ile View örneklerine ipuçlarını gösterme veya gizleme talimatı verebilirsiniz.
Eklenen genel işlemler
Android 9, AccessibilityService sınıfını kullanır. Hizmetiniz kullanıcıların cihazlarını kilitlemesine ve ekran görüntüsü almasına yardımcı olabilir her bir arama terimi için GLOBAL_ACTION_LOCK_SCREEN ve GLOBAL_ACTION_TAKE_SCREENSHOT işlemleri için de geçerli.

Aralık değişikliği ayrıntıları

Android 9, bir uygulama aynı anda birden fazla pencereyi yeniden çizdiğinde uygulamanın pencerelerindeki güncellemeleri izlemeyi kolaylaştırır. Bir TYPE_WINDOWS_CHANGED etkinliği gerçekleştiğinde, aralıkların nasıl değiştiğini belirlemek için getWindowChanges() API'yi kullanın. Çoklu pencere güncellemesi sırasında penceresi kendi etkinlik kümesini oluşturur. getSource() yöntemi, her etkinlikle ilişkili pencerenin kök görünümünü döndürür.

Bir uygulama, kendisi için erişilebilirlik bölmesi başlıkları tanımlamışsa View nesneleri kullanıyorsanız hizmetiniz uygulamanın kullanıcı arayüzü güncellendiğinde. Bir TYPE_WINDOW_STATE_CHANGED bir etkinlik gerçekleştirdiğinde, getContentChangeTypes() zaman çizelgesinin ne şekilde değiştiğini belirler. Örneğin, çerçeve bir bölmenin yeni bir başlığa sahip olduğunu veya bir bölmenin kaybolduğunu algılayabilir.

Döndürme

Yanlışlıkla döndürmeleri ortadan kaldırmak için akımı sabitleyen bir mod ekledik. cihazın yönünü değiştirebilirsiniz. Kullanıcılar rotasyonu tetikleyebilir manuel olarak manuel olarak değiştirebilirsiniz.

Uygulamalar üzerindeki uyumluluk etkisi çoğu durumda minimum düzeydedir. Ancak uygulamanızda özelleştirilmiş bir döndürme davranışı varsa veya alışılmadık ekran yönü ayarları kullanılıyorsa kullanıcının döndürme tercihi her zaman dikey olarak ayarlandığında fark edilmeyen sorunlarla karşılaşabilirsiniz. Uygulamanızın tüm önemli etkinliklerindeki döndürme davranışına göz atmanızı ve tüm ekran yönü ayarlarınızın hâlâ en iyi deneyimi sağladığından emin olmanızı öneririz.

Daha fazla bilgi için, ilgili davranışa bakın değişiklikler başlıklı makaleyi inceleyin.

Kullanıcıların döndürmeyi manuel olarak tetiklemesine olanak tanıyan yeni döndürme modunu gösteren dönen mobil cihaz

Yeni bir döndürme modu, kullanıcıların gerektiğinde sistem çubuğundaki bir düğmeyle rotasyonu manuel olarak tetiklemesine olanak tanır.

Metin

Android 9, platforma metinle ilgili aşağıdaki özellikleri ekler:

  • Önceden hesaplanmış metin: PrecomputedText sınıfı, gerekli bilgileri önceden hesaplayıp önbelleğe almanızı sağlayarak metin oluşturma performansını artırır. Ayrıca, uygulamanızın ana iş parçacığından bağımsız olarak metin düzenini gerçekleştirmesini sağlar.

  • Büyüteç: Magnifier sınıfı, tüm uygulamalarda tutarlı bir büyüteç özelliği deneyimi sunmak için büyüteç API'si sağlayan bir platform widget'ıdır.

  • Akıllı Bağlantı Oluşturma: Android 9, seçili metindeki bazı varlıkları tanımlamak ve işlem önermek için makine öğreniminden yararlanan TextClassifier sınıfını iyileştirir. Örneğin, TextClassifier, uygulamanızın kullanıcının bir telefon numarası seçtiğini algılamasını sağlayabilir. Uygulamanız daha sonra kullanıcıya bu numarayı kullanarak telefon araması yapmasını önerebilir. TextClassifier özellikleri Linkify sınıfının işlevlerini değiştirir.

  • Metin düzeni: Kullanışlı yöntemler ve özellikler, kullanıcı arayüzü tasarımınızı uygulamayı kolaylaştırır. Ayrıntılar için TextView referans dokümanlarına bakın.

DEX dosyalarının ART önceden dönüşümü

Android 9 veya sonraki sürümleri çalıştıran cihazlarda Android çalışma zamanı (ART) önceden derleyici, sıkıştırılmış Dalvik Executable'ı daha da optimize eder bir uygulama paketindeki DEX dosyalarını daha spesifik bir uygulama paketine dönüştürerek temsil eder. Bu değişiklik, uygulamanızın daha hızlı başlatılmasına ve daha az disk alanı ve RAM.

Bu iyileştirme, özellikle daha yavaş disk G/Ç'sine sahip düşük teknoloji cihazlara fayda sağlar hızları.

Cihaz üzerinde sistem izleme

Android 9, cihazınızdan sistem izlerini kaydetmenize ve ardından bu kayıtların raporunu geliştirme ekibinizle paylaşmanıza olanak tanır. Bu rapor HTML dahil birden fazla biçimi destekler.

Bu izlemeleri toplayarak uygulamanızın işlemleri ve iş parçacıklarıyla ilgili zamanlama verilerini yakalayabilir ve dünya genelinde önemli olan diğer cihaz durumlarını görüntüleyebilirsiniz.

Bu araç hakkında daha fazla bilgi edinmek için Cihaz üzerinde sistem izleme gerçekleştirme başlıklı makaleyi inceleyin.