Cihaz uyumluluk modu

Android, yön veya renk özelliklerini belirten uygulamalar için bir uyumluluk modunu etkinleştirir. yeniden boyutlandırılabilirlik kısıtlamaları. Uyumluluk modu, büyük ekranlı cihazlar ve katlanabilir katlanabilir telefonlar.

Uygulama bazında geçersiz kılmalar, cihaz üreticilerinin değişiklik yapmasına olanak tanır. kullanıcı deneyimini iyileştirmek veya uygulamaların bozulmasını önlemek için uygulama davranışı cihazlar.

Referans cihazlar

Aşağıdaki cihazlarda, olağan dışı nedenlerden dolayı uygulama başına geçersiz kılma işlemleri gerekebilir uygulamalar tarafından iyi desteklenmeyen yapılandırmaları veya yapılandırmaları içerir:

  • Tabletler: Pixel Tablet gibi bazı tabletlerin doğal yönü yataydır. Cihaz, aşağıdaki durumlarda doğal yönde Display#getRotation() iade Surface.ROTATION_0. Uygulamalar ROTATION_0 cihazının dikey olduğunu varsayarsa Uygulama düzenleri ve kamera önizlemesi, cihaz ekranıyla uyuşmuyor olabilir.
  • Yatay katlanabilir cihazlar: Pixel Fold gibi bazı katlanabilir cihazlar katlanmış durumdayken dikey, ancak katlanmış durumdayken yatay yön. Uygulamalar katlanmamış yönün dikey olduğunu varsayarsa titreşiyorlar. döngüleri veya düzen sorunları olabilir.
  • Katlanabilir katlanabilir telefonlar: Katlanmamış durumdaki kapak telefonları genellikle dikeydir Yön. Ancak telefonlar katlandığında genelde yatay yönde. Uygulamalar farklı özellikleri tanımlamalı ve bunlara yer vermelidir. ekranların yönünü değiştirebilirsiniz.

Sık karşılaşılan uyumluluk sorunları

Uygulamalar çoğunlukla uygulama yönü nedeniyle uyumluluk sorunları yaşıyor kısıtlamaları, yeniden boyutlandırma ve en boy oranı kısıtlamalarını, kamera önizleme yönü ve hatalı kullanılan API'ler.

Sinemaskop

Sinemaskop, uygulamayı ekranın ortasına veya büyük ekranlarda konumlandırır bir tarafa ya da diğerine kolayca taşıyabilirsiniz. Matlar (düz renkli çubuklar) ya da bulanık duvar kağıdı) kullanarak, kullanılmayan görüntüleme alanını yan veya üst taraflarda dokunun.

Sinemaskop genellikle büyük ekranlı cihazlarda, boyutları ve Cihaz ekranının en boy oranı genellikle standart ekran en boy oranından farklıdır cihazlar için tasarlandı.

Şekil 1. Dikey yönle kısıtlanmış uygulama, yatay tablette sinemaskop efektiyle gösterilir ve katlanabilir.

Sorun

Uygulama, düzeltmeye devam ettiği için tüm ekran yapılandırmalarını desteklemiyor yönü veya en boy oranı sabit olmalı ya da yeniden boyutlandırılamaz.

Uygulamanın yönünü ve yeniden boyutlandırılabilirliği kontrol eden yapılandırma ayarları şunları içerir: takip etmek için:

  • screenOrientation: Şu öğe için sabit yönü belirtir: bir uygulamadır. Uygulamalar ayrıca çalışma zamanında yön ayarı için Activity#setRequestedOrientation().

  • resizeableActivity: Sistemin şunları yapıp yapamayacağını gösterir. uygulamaları çeşitli boyutlardaki pencerelere sığacak şekilde yeniden boyutlandırır. Android 11'de (API düzeyi) 30) ve altı, uygulamaların çoklu pencere modunu destekleyip desteklemediğini belirtir. Şu tarihte: Android 12 (API düzeyi 31) ve sonraki sürümler, uygulamaların küçük ekranlarda çoklu pencere modu (sw < 600 dp). Android 12 ve sonraki sürümlerde Uygulamalar büyük ekranlarda çoklu pencere modunu destekler (sw >= 600 dp) bu ayardan bağımsız olarak iletişim kurar.

  • maxAspectRatio: Maksimum en boy oranını belirtir uygulama tarafından desteklenir. Yalnızca resizeableActivity numarası false olarak ayarlanmış uygulamalar şunları yapabilir: maxAspectRatio ayarla.

  • minAspectRatio: Minimum en boy oranını belirtir uygulama tarafından desteklenir. Yalnızca resizeableActivity numarası false olarak ayarlanmış uygulamalar şunları yapabilir: minAspectRatio ayarla.

Optimizasyon

Uygulama tüm cihaz ve çoklu pencere modu ekran yönlerini desteklemeli ve seçin. Uygulamanızdan tüm yön ve sabit en boy oranı kısıtlamalarını kaldırın düzenler ve uygulama manifesti dosyası içerir.

Uyumluluk için geçici çözüm

Sabit yönlü veya sabit en boy oranına sahip bir uygulama, Uygulama pencere boyutunu veya yönünü (Android) doğrudan desteklemiyorsa devamlılığı korumak için uygulamanın sinemaskop biçimine ulaşmasını sağlar.

Android 12 (API düzeyi 31) sürümünden başlayıp 12L ile (API düzeyi 32) devam ediyorsa Platform, sinemaskoplu uygulamalara çeşitli geliştirmeler uyguluyor. Cihaz üreticiler, kullanıcı arayüzü geliştirmelerini uygular. Herhangi bir ek işlem yapmanız gerekmez en iyi uygulamaları paylaşacağız.

Android 12'de (API düzeyi 31) aşağıdaki estetik geliştirmeleri kullanıma sunulmuştur: cihaz üreticileri tarafından yapılandırılabilir:

  • Yuvarlak köşeler: Uygulama penceresinin köşeleri daha zarif bir görünüme sahip.
  • Sistem çubuğu şeffaflığı: yarı şeffaf olduğundan, çubuklardaki simgeler her zaman ekranın sinemaskop arka planı.
  • Yapılandırılabilir en boy oranı: Uygulamanın en boy oranı ayarlanabilir uygulamanın görünümünü iyileştirmek için.

Şekil 2. Kullanıcı arayüzü geliştirmeleri içeren sinemaskop uygulama.

12L (API düzeyi 32), aşağıdaki işlevsel iyileştirmeleri ekler:

  • Yapılandırılabilir konumlandırma: Cihaz üreticileri, büyük ekranlarda ekranın sol veya sağ tarafına doğru konumlandırarak kolaylaştırır.

  • Yeniden tasarlanmış yeniden başlatma düğmesi: Cihaz üreticileri yeniden başlatma işlemini yapabilir boyut uyumluluk modu düğmesi yeni bir görünüm kullanıcı tarafından daha iyi tanınmasını sağlar.

Android 13 (API düzeyi 33), sinemaskoplu uygulama veya sinemaskop efektini bölünmüş ekran moduna ekleme:

Şekil 3. Kullanıcı eğitimi iletişim kutusu içeren sinemaskop uygulama.

Boyut uyumluluk modu

Boyut uyumluluk modu, yeniden başlatma kontrolü içeren sinemaskop efektidir. İlgili içeriği oluşturmak için kullanılan kontrolü, kullanıcıların uygulamayı yeniden başlatmasını ve ekranı yeniden çizmesini sağlar. Android çağırır boyut uyumluluk modunu kontrol edin. Bir etkinliğiyle uyumlu olmayan bir görüntülü reklam kapsayıcısına taşınır. sistem, cihaz ekranını dolduracak şekilde uygulamayı yeniden ölçeklendirebilir. en az bir boyut ekleyin.

Boyut uyumluluk modunu tetikleyebilecek cihaz yapılandırması değişiklikleri şunları içerir: şu:

  • Cihaz döndürme
  • Katlanabilir cihaz katlanabilir veya açılır
  • Tam ekran ve bölünmüş ekran görüntüleme modları arasında geçiş yapma

Sorun

Boyut uyumluluğu modu genellikle şuralarda kısıtlanmış etkinlikler için geçerlidir: en boy oranına sahip olduğundan (ya da sistem tarafından belirlendiğinde) yeniden boyutlandırılamaz.

Uygulamanızın yeniden boyutlandırılabilir olduğu kabul edilir ve herhangi bir boyuta yerleştirilmez uyumluluk modu - aşağıdaki ölçütlerden herhangi birini karşılıyorsa:

Uygulamanız koşullardan hiçbirini karşılamıyorsa ifade etmiyorsa ve boyut uyumluluk moduna yerleştirilebilir.

Optimizasyon

Uygulama tüm ekran boyutlarını desteklemelidir. Şu ayarı yaparak uygulamanızı yeniden boyutlandırılabilir hale getirin: <activity> öğesinin android:resizeableActivity özelliği veya <application> öğesini true uygulama manifest'inde yer alır. Uygulamanız için duyarlı/uyarlanabilir düzenler tasarlayın. Daha fazla bkz. Farklı ekran boyutlarını destekleyin ve Çoklu pencere desteği.

Uyumluluk için geçici çözüm

Android, sistem tarafından belirlenen "Sinematik" uygulamasının görüntüsü, uygulamanın boyutu küçültülerek görüntüleme penceresi en az bir boyutta olmalıdır. Sistemde bir yeniden başlatma kontrolü görüntüleniyor Bu da uygulama sürecini yeniden oluşturur, etkinliği yeniden oluşturur ve görüntüleyin. İşlemlere ve ileti dizilerine genel bakış başlıklı makaleyi de inceleyin.

Titreyen döngüler

Bir uygulama tüm ekran yönlerini desteklemediğinde tekrar tekrar yapılandırma değişikliği olduğunda yeni yönler isteyerek ekranın titreşmesine veya uygulamanın sonsuz dönmesine neden olan sonsuz döngü.

Sorun

Android 12 (API düzeyi 31) ve sonraki sürümlerde cihaz üreticileri yapılandırabilir uygulamalar tarafından belirtilen yön kısıtlamalarını yoksayıp uyumluluk modlarını zorunlu kılma. Örneğin, katlanabilir bir cihaz etkinliğin android:screenOrientation="portrait" cihazın yatay tablet boyutunda görüntülendiğinde iç ekranda görünür.

Bir uygulamanın yön kısıtlamaları yok sayılırsa uygulama programatik olarak şunu çağırarak yönünü ayarlayın: Activity#setRequestedOrientation(). Görüşme Uygulama, yapılandırma değişikliklerini gerçekleştirmiyorsa uygulamanın yeniden başlatılmasını tetikler (bkz. Yapılandırma değişikliklerini işleme). uygulamanın yön kısıtlamaları tekrar yoksayılır, uygulama tekrarlar setRequestedOrientation() çağrısı, uygulamanın yeniden başlatılmasını tetikler ve kendi kendine devam eden bir döngüde devam eder.

Bununla karşılaşabileceğiniz bir başka yol da doğal yön (normal yön Android tarafından belirlenen) ekranı yatay (yani Display#getRotation() iade Cihazın yatay bir görünümü varken Surface.ROTATION_0 oranı). Uygulamalar geçmişte, Display.getRotation() = Surface.ROTATION_0 cihazının dikey yönde olduğu anlamına geldiğini varsayıyordu. Ancak bu, doğru bir değer değildir Örneğin, bazı katlanabilir cihazların iç ekranlarında ve kullanıyor.

Katlanabilir iç ekranda yatay yönde bulunan bir uygulama, ekran döndürme, ROTATION_0 değerini alma, doğal yönü kabul et ve dikey bir pozisyonda setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT Uygulama düzenini yeniden yapılandırmak için ) kullanın. Uygulama yeniden başlatıldıktan sonra (yatay modda) ekran yönünü tekrar kontrol edebilir ve tablodaki ROTATION_0, telefon et setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) ve sonsuz döngüye devam edeceğim.

Optimizasyon

Uygulamalar aşağıdakileri yapmamalıdır:

  • Activity#setRequestedOrientation() ile varsayılan yönü ayarlayın yön isteği şöyle olabileceğinden onCreate() aktivitesi yöntemi: işlenmemiş yapılandırma değişiklikleri tarafından beklenmedik bir şekilde tetiklendi
  • Cihazın doğal yönünün (ROTATION_0) dikey olduğunu varsayın
  • Yönü, mevcut pencere boyutuyla ilgili olmayan sinyallere göre ayarlayın. Örneğin: Display#getRotation() olarak, bir FoldingFeature veya kullanımdan kaldırılan API'ler.

Uyumluluk için geçici çözüm

Android, aşağıdaki durumlarda Activity#setRequestedOrientation() numaralı telefona yapılan çağrıları yoksayar durumlar:

Kamera önizleme

Kamera uygulamalarının kamera önizlemesinin (veya vizörünün) hizası yanlış ya da bozuk olabilir ve katlanabilir ekranlarda 360 derece görünür.

Sorun

Android Uyumluluk Tanımlama Belgesi'nde, kamera görüntü sensörü "yöntemi olması ve kameranın uzun boyutunun ekranın uzun boyutuyla uyumlu olacaktır."

Uygulamalar genellikle cihaz yönünün ve kamera sensörü yönünün portre - standart cep telefonlarında bu makul bir varsayımdır. Ancak kamera sensörleri ile tabletlerin ve dizüstü bilgisayarların doğal yönünün gösteriyoruz. Ayrıca katlanabilir cihazlar gibi yeni form faktörlerinde birden fazla doğal yönleri ve çeşitli yönlerde birden fazla kamera sensörü.

Uygulamanın beklemediği bir kamera yönüyle etkinlik başlatma farklı kameralar veya cihaz ekranları (katlanabilir cihazlar için) arasında geçiş yapmak, bozuk veya bozuk bir kamera önizlemesi.

Optimizasyon

Kamera uygulamaları, cihaz yönünü ve kamerayı doğru şekilde tanımlayıp yönetmelidir sensör yönünün doğru hizalanmış ve ölçeklendirilmiş bir kamera önizlemesi sunmak üzere Uygulamalar cihaz dönüşü, sensör dönüşü ve ekran ya da pencereyi hesaplamalıdır. en boy oranına bakabilir ve sonuçları kamera önizlemesine uygulayabilirsiniz. Ayrıntılı yardım için Kamera önizlemesi ve Kamera tanıtımı Vizör.

Uyumluluk için geçici çözüm

Display#getRotation() olduğunda cihaz doğal yöndedir Surface.ROTATION_0 değerini döndürür. Sistem, CameraCharacteristics.SENSOR_ORIENTATION cihazın doğal yönünden uzaklaşır. Android, dikey pencereyi hizalar cihazın doğal yönünün kullanıldığı, dikey çoğu uygulamanın beklediği şeydir. Android, Sensör yönü yatay, kamera önizlemesi ise dikey olmalıdır. Belirli geçici çözümler şunları içerir:

  • Dikey olarak kısıtlanmış uygulamalar için kamera önizlemelerini döndürmeye zorla: Uygulamalar dikey yönle kısıtlanmış cihazın doğal yönünün ayarlanması gerekir ve kamera sensörünün yönü dikey olmalıdır. Ancak Android 12'de (API düzeyi 31) ve sonraki sürümlerde, cihaz üreticileri yön spesifikasyonunu yoksayar.

    Dikey modu kısıtlanmış bir uygulama kameraya bağlandığında Android, uygulamanın dikey penceresini doğal ekranla hizalamak için uygulamayı döndürür cihazın yönünü değiştirebilirsiniz.

    Bazı tabletlerde (referans cihazlara bakın), uygulama tam ekran dikey pencereye döndürülür. doğal yönünü değiştirebilirsiniz. Uygulama zorla sonrasında tüm ekranı kaplar sağlayabilir.

    Katlanabilir cihazların yatay iç ekranında (bkz. referans cihazlarda), yalnızca dikey yönlü etkinlikler doğal yönüyle uyumlu bir şekilde ayarlamak için yatay çizgi kullanın. Uygulama kuvvetin döndürülmesinden sonra sinemaskop.

  • İç ön kamera kırpma: Bazı cihazlardaki ön kamera sensörü Katlanabilir cihazlar yatay yönde. Cihazı döndürmeye zorlamaya Kamera önizlemesi, katlanabilir iç ekranda yer alır. Android de iç ön tarafı kırpar. Sensörün tersi bir görüş açısı yakalaması için kameranın görüş alanı (yatay) Yönü.

  • Kamera önizlemelerini zorla yenile: Sistem, etkinliği döngüye alır yöntemleri onStop() ve onStart() (varsayılan olarak) veya onPause() ve onResume() ( OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE uygulama başına geçersiz kılma) kullandığınızdan emin olmak için, düzgün şekilde gösterebilir.

  • En boy oranı ölçeklendirme: Sistem, tablodaki en boy oranını dinamik olarak değiştirir. döndürülmüş kamera önizlemesini daha yüksek bir minimum en boy oranına getirir. Bu, Kamera önizlemesinin doğru şekilde ölçeklendirilmesini sağlar.

Uygulamalar kamera önizlemesini yapıyorsa uygulama geliştiriciler bu geçici çözümleri geçersiz kılabilir sağlayabilir. Uygulama bazında geçersiz kılmalar konusuna bakın.

Yaygın olarak hatalı kullanılan API'ler

Android'e çoklu pencere modu ve gibi yeni API'lerle de değiştirilmiştir. Eski API'lerin yerini tüm ekran boyutları ve cihaz biçimleri için çalışan güncel API'ler faktörleri olur. Ancak desteği sonlandırılmış API'ler geriye dönük olarak kullanılabilir uyumluluk.

Bazı View API'leri, her zaman iyi sonuç vermeyen özel amaçlar için tasarlanmıştır. anlaşıldığından emin olmalısınız.

Sorun

Geliştiriciler desteği sonlandırılan Display API'lerini kullanmaya devam ediyor ve API'ler, cihaz görüntüleme alanı sınırları yerine uygulama sınırlarını döndürür. Ya da geliştiriciler genel görüntülü reklam metriklerini almak için yanlışlıkla özel amaçlı görünüm API'lerini kullanma. Sonuç, uygulama penceresinden sonra kullanıcı arayüzü öğeleri yeniden konumlandırılırken yapılan yanlış hesaplamalar etkinlikleri yeniden boyutlandırarak düzen sorunlarına yol açabilir.

Desteği sonlandırılmış ve yaygın şekilde hatalı kullanılan Görüntülü API'ler:

Daha fazla bilgi için bkz. Çoklu pencere desteği.

Hatalı görünüm API'leri:

Optimizasyon

Kullanıcı arayüzü öğelerini konumlandırmak için hiçbir zaman fiziksel görüntü boyutuna güvenmeyin. Verilerinizi taşıyın aşağıdakiler de dahil olmak üzere WindowMetrics'e dayalı olarak uygulamayı API'lere WindowManager API'ler:

Uyumluluk için geçici çözüm

İki geçersiz kılma ayarı, desteği sonlandırılmış Display API'lerini ve hatalı kullanılan View API'leri şu amaçlarla düzenler: uygulama sınırlarını döndürün: Display için ALWAYS_SANDBOX_DISPLAY_APIS API'ler OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS View API için ALWAYS_SANDBOX_DISPLAY_APIS, varsayılan olarak uygulamalar arasında geçiş yapın.

Şeffaf etkinlikler

Şeffaf etkinlikler, şeffaf arka plan stillerinin bir sonucudur. örnek:

<style name="Transparent" parent="AppTheme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

Diyaloglarla alakalı temalar (ör. Theme.MaterialComponents.Dialog) gösteren stillere yer verilmelidir.

Şeffaf etkinlikler mevcut görüntüleme alanının tamamını kapsamaz. Bu durum, farklı cihazlara göre değişebileceğinden, bunları yönetmek zor olabilir. Cihaz döndürme, cihazı katlama ve açma gibi yapılandırma değişiklikleri çoklu pencere moduna girer.

Sorun

Şeffaf bir etkinlik, ilk opak etkinliğin sınırlarına uymalıdır şeffaf etkinliğin altında yer alır. Ancak opak bir izin iletişim kutusu açan etkinlik trampolin (başka bir etkinliği başlatan ve ardından kaybolan etkinlik); ve bu yüzden sistem, trambolin etkinliğinin sınırlarını belirleyemez, şeffaf izin iletişim kutusu etkinliğini başlattı.

Optimizasyon

Şeffaf etkinlikler, kısıtlamalarını en üst opaklıktan devralır etkinliği gösterilir. Opak etkinliği, şeffaf etkinliğin tüm yaşam döngüsü için kullanılabilir yok etme sürecidir. Bu nedenle, şu kaynaklardan gelen izin isteklerini başlatmayın: trambolin aktiviteleri.

Trambolin etkinliği bir izin isteği başlatırsa kullanıcı görebileceğimiz için, trambolin etkinliği kullanıcı iletişim kutusuna yanıt vermeden önce yok olduğundan ve iletişim kutusu etkinliğinin boyutları ve konumu hesaplanmış olabilir sağlayabilir.

Uygulamalar her zaman kalan etkinliklerden izin istekleri başlatmalıdır. Kullanıcı izin kararı verene kadar görünür.

Yuvarlatılmış köşeler

Bir etkinlik, arka planı belirten bir stil nedeniyle şeffaf olabilir ya da etkinliğin içeriğinin mevcut kaynakları doldurmaması kullanabilirsiniz. Şeffaf bir etkinlik mevcut görüntüleme alanını doldurursa olarak yapılandırıldığında, sistem etkinliğe otomatik olarak yuvarlatılmış köşeler uygular cihaz üreticisi tarafından gerçekleştirilmesi gerekir. Ancak şeffaf bir etkinlik (ör. iletişim kutusu) boş alanı doldurmazsa, köşelerin yuvarlanıp uygulanmayacağı.

İzin iletişim kutuları, iletişim kutusu düzen genellikle yerine LayoutParams.WRAP_CONTENT LayoutParams.MATCH_PARENT

Uyumluluk için geçici çözüm

İletişim kutusu etkinlikleri başlatan etkinlikleri, kullanıcı aşağıdaki işlemleri yapana kadar görünür tut: yanıt verdi.

Sistem, şeffaf bir etkinliğin etkinlik yığınındaki şeffaf etkinliğin altındaki ilk opak etkinlik, şunlarla ilgili kısıtlamalar dahil:

  • Boyut uyumluluk modu
  • Yön
  • En Boy Oranı

Unity oyunları

Unity oyunları Android'de tam ekran veya çoklu pencere modunda çalışır. Ancak, Birçok Unity oyunu, uygulama çoklu pencere moduna girer.

Sorun

Unity bir Resizable Window ekledi seçeneğini Unity 2019.4'te kullanıma sunmayı planlıyoruz. Ancak, ilk uygulama, e-postadaki etkinlik yaşam döngüsüne çoklu pencere modunu doğru şekilde ayarlamanıza neden olabilir. Uygulama odağı kaybolduğunda oynatmayı askıya almak için UnityPlayer. Oynatıcı, bir veya oyunun donmuş son karesi olabilir. Oyun yalnızca şu durumlarda devam ettirilir: Kullanıcı ekrana dokundu. Unity motorunu kullanan birçok uygulama bu sorunla karşı karşıya kalır ve çoklu pencere modunda siyah pencere olarak oluşturulur.

Optimizasyon

Unity'yi 2019.4.40 veya sonraki bir sürüme yükseltin ve oyununuzu yeniden dışa aktarın. Şunu sakla: Resizable Window seçeneği Android Oynatıcı ayarları (aksi durumda) Oyun tamamen görünür olsa da odakta değilken oyun duraklıyor çoklu pencere moduna girer.

Uyumluluk için geçici çözüm

Cihaz üreticileri OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS bir uygulamaya sahte odaklanma etkinliği sağlamak için uygulama bazında geçersiz kılma çoklu pencere moduna girer. Geçersiz kılma, etkinliğin içeriği yeniden çizmesini ve olmamalıdır.

Uygulamanızı uyumluluk sorunları açısından test etme

Uygulamanızı test etmek ve farklı form faktörlerinde nasıl davrandığını anlamak için şu kaynaklardan yararlanabilirsiniz:

Sinemaskoplu

Her etkinliğin, uygulamanın kullanabildiği tüm görüntüleme alanını kullanabildiğini doğrulayın. Önce test klasörünüzde aşağıdaki kodu bildirin:

Kotlin

fun Activity.isLetterboxed() : Boolean {
    if (isInMultiWindowMode) return false

    val wmc = WindowMetricsCalculator.getOrCreate()
    val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds
    val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds

    val isScreenPortrait = maxBounds.height() > maxBounds.width()

    return if (isScreenPortrait) {
        currentBounds.height() < maxBounds.height()
    } else {
        currentBounds.width() < maxBounds.width()
    }
}

Java

public boolean isLetterboxed(Activity activity) {
    if (activity.isInMultiWindowMode()) {
        return false;
    }

    WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate();
    Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds()
    Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds();

    boolean isScreenPortrait = maxBounds.height() > maxBounds.width();

    return (isScreenPortrait)
        ? currentBounds.height() < maxBounds.height()
        : currentBounds.width() < maxBounds.width();
}

Ardından, davranışı doğrulamak için bir test yürütün ve hedef etkinliğin sinemaskop:

Kotlin

@get:Rule
val activityRule = ActivityScenarioRule(MainActivity::class.java)

@Test
fun activity_launched_notLetterBoxed() {
    activityRule.scenario.onActivity {
        assertThat(it.isLetterboxed()).isFalse()
    }
}

Java

@Rule
public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class);

public void activity_launched_notLetterBoxed() {
    try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) {
        scenario.onActivity(activity -> {
            assertThat(isLetterboxed(activity)).isFalse();
        });
    }
}

İdeal olarak, bu tür bir testi yalnızca başarılı olana ve uygulamanızın ve etkinlikler, uygulamanın kullanabildiği görüntüleme alanının tamamını kaplar. Uygulamanızı test etme tüm cihaz türlerinde tutarlı bir davranışa sahip olmasını sağlayın.

Uygulama bazında geçersiz kılmalar

Android, uygulamaların yapılandırılmış davranışını değiştiren geçersiz kılmalar sunar. Örneğin, Örneğin, FORCE_RESIZE_APP geçersiz kılması, uygulamanın boyut uyumluluk modunu atlamasını ve uygulamayı ekrana sığacak şekilde yeniden boyutlandırmasını sağlayan sistem resizeableActivity="false", tüm boyutları uygulama manifest dosyasında belirtilmiştir.

Cihaz üreticileri, şurada belirli uygulamalara (veya tüm uygulamalara) geçersiz kılma işlemleri uygular cihazlardır. Android 14 (API düzeyi 34) ve sonraki sürümlerde kullanıcılar cihaz ayarları üzerinden uygulamalara geçersiz kılmalar uygulayabilir.

Kullanıcı başına uygulama başına geçersiz kılmalar

Android 14 ve sonraki sürümlerde ayarlar menüsü, kullanıcıların en boy oranını değiştirmesine olanak tanır. uygulamaların oranı. Örneğin, referans cihazlarda menüyü uygulayabilirsiniz.

Menü, cihazda yüklü tüm uygulamaların listesini içerir. Kullanıcılar, uygulamada en boy oranını 3:4, 1:1, tam ekran veya başka bir değere ayarlayın cihaz üreticisi tarafından yapılandırıldığından emin olun. Kullanıcılar, en boy oranını şu şekilde de sıfırlayabilir: uygulama manifestinde belirtilen uygulama varsayılanı.

Uygulamalar, aşağıdaki PackageManager.Property etiketlerini ayarlayarak uyumluluk geçersiz kılma ayarını devre dışı bırakabilir:

  • MÜLK_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE

    Kullanıcı en boy oranı uyumluluğunu geçersiz kılmayı devre dışı bırakmak için özelliği ekleyin manifest dosyanıza ekleyin ve değeri false olarak ayarlayın:

    <application>
        <property
            android:name="android.window.
            PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE"
            android:value="false" />
    </application>
    

    Uygulamanız, cihaz ayarlarındaki uygulama listesinden hariç tutulacak. Kullanıcı Sayısı uygulamanın en boy oranı geçersiz kılınamaz.

    Özelliğin true değerine ayarlanmasının herhangi bir etkisi yoktur.

  • MÜLK_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE

    Kullanıcı en boy oranı uyumluluğunun tam ekran seçeneğini devre dışı bırakmak için özelliği uygulama manifest dosyanıza ekleyin ve değeri false:

    <application>
        <property
            android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE"
            android:value="false" />
    </application>
    

    Tam ekran seçeneği, cihaz ayarlarına gidin. Kullanıcılar, tam ekran geçersiz kılma ayarını en iyi şekilde yararlanabilirsiniz.

    Bu özelliğin true olarak ayarlanmasının herhangi bir etkisi yoktur.

Uygulamanızı tüm ekranlar için optimize edin: Şurada en boy oranı kısıtlamaları belirlemeyin: en iyi şekilde yararlanabilirsiniz. Farklı alanları desteklemek için pencere boyutu sınıflarını kullanın mevcut görüntüleme alanına göre düzenler.

Cihaz üreticisine göre uygulama bazında geçersiz kılmalar

Cihaz üreticileri, belirli cihazlarda uygulama bazında geçersiz kılma işlemleri uygular. Referans cihazlar, geçersiz kılmaların bazılarını bir varsayılan olarak kullanabilirsiniz.

Uygulamalar, çoğu geçersiz kılma işleminin kapsamı dışında kalmayı seçebilir (Uygulama bazında geçersiz kılma tablosunu inceleyin).

Uygulamanızı, uyumluluğu kullanarak geçersiz kılmaları etkinleştirerek veya devre dışı bırakarak test edebilirsiniz çerçevesini (Uyumluluk çerçevesi araçları) inceleyin. Etkinleştirildiğinde, geçersiz kılmalar uygulamanın tamamında geçerli olur.

Android Debug Bridge (adb) kullanarak geçersiz kılmaları devre dışı bırakabilir ve hangi geçersiz kılmaların uygulamanız için geçerli olduğunu belirleyebilirsiniz.

Geçersiz kılmaları aşağıdaki şekilde etkinleştirin veya devre dışı bırakın:

adb shell am compat enable/disable <override name/id> <package>

Referans cihazlarda hangi geçersiz kılmaların geçerli olduğunu kontrol edin. uygulamanız:

adb shell dumpsys platform_compat | grep <package name>

Aşağıdaki tabloda, geçersiz kılmaların kullanılabilir olduğu ve bu geçersiz kılma işlemlerinin nasıl yapılacağıyla ilgili yönergeler yer almaktadır Uygulamanızı, geçersiz kılmalara bağlı kalmayacak şekilde optimize edin. Ekleyebileceğiniz: mülk işaretlerini uygulama manifestinize ekleyerek devre dışı bırakabilirsiniz.

Uygulama bazında geçersiz kılmalar
Tür Ad Kimlik Açıklama
Yeniden boyutlandırılabilirlik FORCE_RESIZE_APP 174042936 Yapılandırma değişikliklerinde uygulama için boyut uyumluluk modunu atlar.
FORCE_NON_RESIZE_APP 181136395 Yapılandırma değişikliklerinde uygulamayı boyut uyumluluğu moduna geçmeye zorlar.
En boy oranı OVERRIDE_MIN_ASPECT_RATIO 174042980 Diğer en boy oranı geçersiz kılmalarını uygulamak için etkinleştirilmesi gereken kapıcı geçersiz kılması.
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY 203647190 Etkinleştirilirse (varsayılan) sınırlar, kapsamı yalnızca portrelere yönelik etkinliklerle geçersiz kılar.
OVERRIDE_MIN_ASPECT_RATIO_ORTA 180326845 Minimum en boy oranını 3:2 olarak değiştirir.
OVERRIDE_MIN_ASPECT_RATIO_LARGE 180326787 Minimum en boy oranını 16:9 olarak değiştirir.
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN 208648326 Minimum en boy oranını, görüntü boyutunun (veya bölünmüş ekran en boy oranının) %50'sine sığacak şekilde değiştirir.
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_TAM EKRAN 218959984 Cihaz dikey durumdayken uygulamaların tam ekran olması için minimum en boy oranını geçersiz kılma özelliğini devre dışı bırakır.
Yön OVERRIDE_ANY_ORIENTATION 265464455 Herhangi bir yönü geçersiz kılmayı etkinleştirir.
KULLANICININ_OVERRIDE_ANY_ORIENTATION_KİTLESİ 310816437 Yön, yeniden boyutlanabilirlik ve en boy oranı kısıtlamalarını geçersiz kılar.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT 265452344 Bir aktivite tanımlanmamış yöne sahip olduğunda yönün dikey olmasını geçersiz kılar.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR 265451093 Bir etkinlik tanımlanmamış bir yöne sahip olduğunda yön, nosensor (cihazın doğal yönünü kullan) olarak geçersiz kılınır.
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE 266124927 Yalnızca yatay uygulamaları 180 derece döndürür.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA 265456536 Yön geçersiz kılma kapsamını, uygulamanın kameraya bağlandığı zamanla sınırlar.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION 255940284 Görev tam ekran olduğunda (sinemaskop efekti de dahil) ekranı sabit yatay doğal yöne ayarlar.
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION 254631730 Sonsuz döngüleri döndürmeyi önlemek için uygulamadan gelen yön isteklerini yok sayar.
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED 273509367 Bir etkinlik yeniden başlatılırken tekrarlanan yön isteklerini yoksayar. Android, bir uygulamanın bir saniyede en az iki yeni yön isteği istediğini algılarsa sistem bunu sonsuz döndürme döngüsü olarak kabul eder ve geçersiz kılmayı uygular.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION 236283604 Cihaz üreticisinin yönü yoksayma isteği ayarını devre dışı bırakarak sinemaskop efektini önler.
Sandbox API'leri HİÇBİR ZAMAN_KODU KUTUSU_DISPLAY_APIS 184838306 Görüntülü reklam API'lerinin davranışının değiştirilmesini engeller.
HER ZAMAN_KUM KUTUSU_DISPLAY_APIS 185004937 Uygulamadaki Display API'lerini, uygulama sınırlarını döndürmeye zorlar. Display API'leri mantıksal görüntüleme alanı sınırlarını döndürse de uygulama bazen Display API'lerinin uygulama sınırlarını döndürdüğünü varsayar. Bu da kullanıcı arayüzü sorunlarına yol açar.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS 237531167 Uygulamada kullanılan View API'lerinin uygulama sınırlarını döndürmeye zorlar. View API'leri mantıksal görüntüleme alanı sınırlarını döndürse de uygulama bazen View API'lerinin uygulama sınırlarını döndürdüğünü varsayar. Bu da kullanıcı arayüzü sorunlarına yol açar.
Kamera uyumlu OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION 263959004 Kuvvet döndürmeyi kapatır. Varsayılan olarak, kamera önizlemesi açıkken tüm sabit yönlü kamera uygulamaları zorla döndürülür.
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH 264304459 Kamera önizlemesi zorla döndürüldüğünde uygulanan varsayılan tam yenileme işlemini kaldırır.
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE 264301586 Kamera önizlemesi zorla döndürüldüğünde sert yenilemeyi yumuşak bir yenilemeye geçirir ve bu da zorla döndürme sırasında durumun korunmasına yardımcı olur. Kamera önizlemesi zorla döndürüldüğünde Android varsayılan olarak tam yenileme uygular. Kalıcı yenileme, uygulamaların önceki durumlarını önbelleğe alma şekline bağlı olarak uygulamaların durum kaybetmesine veya kararmasına neden olabilir.
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT 250678880 İç ön kameranın resim arabelleğini kırpar. Geçersiz kılma özelliği devre dışı bırakılırsa iç ön kameranın kırpılması kaldırılır ve kamera önizlemesinin görüş alanı genişletilir. Bazı katlanabilir cihazlarda (referans cihazlara bakın) varsayılan olarak sistem, iç ön kamerayı kullanırken tüm kamera uygulamalarının kamera önizlemesini kırpar.
Çeşitli OVERRIDE_ENABLE_COMPAT_FAKE_ODAK 263259275 Uygulama, bölünmüş ekran modunda odağı kaybettiğinde uygulamanın kararmasını engeller. Uygulama, uygulama içeriğini çizmeden önce odaklanmayı bekler. Bu durum, uygulamanın donmasına veya kararmasına neden olabilir. Geçersiz kılma, Android'in uygulamaya sahte bir odaklanma etkinliği göndermesine olanak tanır. Bu etkinlik, uygulamaya tekrar içerik çizmeye başlaması sinyalini verir.

FORCE_RESIZE_APP

Geçersiz kılmanın uygulandığı paketleri yeniden boyutlandırılabilir olmaya zorlar. Şunu yapmıyor: uygulamanın çoklu pencere moduna yerleştirilip yerleştirilemeyeceğini değiştirir, ancak Ekran yeniden boyutlandırıldığında boyut uyumluluk moduna girmeden yeniden boyutlandırabilirsiniz.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Uygulama manifest'inde android:resizeableActivity özelliğini true veya yeniden boyutlandırmayı destekler. Bu işlem sırasında çoklu pencere modunu devre dışı bırakırken android:resizeableActivity=false, android.supports_size_changes ayarını yapın meta veri işaretini true olarak ayarlayın.

Uygulamaları optimize etme

Uygulamaların tüm ekran boyutlarına ve standartlara uymasını sağlamak için duyarlı/uyarlanabilir düzenler kullanın. en boy oranları. Görüntüleyin Farklı ekran boyutlarını destekleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES mülk bayrağını şuna ayarla: false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak ve uygulamayı yeniden boyutlandırılabilir hale getirmek için:

adb shell am compat enable FORCE_RESIZE_APP <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable FORCE_RESIZE_APP <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

FORCE_NON_RESIZE_APP

Geçersiz kılmanın uygulandığı paketleri yeniden boyutlandırılamaz olmaya zorlar ve yapılandırma değişikliklerinde boyut uyumluluk moduna girme

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Hem android:resizeableActivity hem de Uygulama manifest'inde false olarak android.supports_size_changes meta veri işareti, ve yön veya en boy oranı kısıtlaması beyan edin.

Uygulamaları optimize etme

Yeniden boyutlandırıldığında iyi davranan tüm uygulamalar android:resizeableActivity veya android.supports_size_changes, true olarak ayarlandı. Diğer uygulamalar, yeniden boyutlandırıldığında iyi çalışacak şekilde geliştirilmelidir. Görüntüleyin android:resizeableActivity değerine ayarlayın.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES mülk bayrağını şuna ayarla: false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak ve uygulamayı yeniden boyutlandırılamaz hale getirmek için:

adb shell am compat enable FORCE_NON_RESIZE_APP <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable FORCE_NON_RESIZE_APP <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_MIN_ASPECT_RATIO

Belirli bir minimum en boy oranını zorlayan tüm geçersiz kılmalar için sınırlayıcıdır.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

android:minAspectRatio aracını etkinlik veya uygulama düzeyinde ayarlayın.

Uygulamaları optimize etme

Uygulamanızda en boy oranı kısıtlamaları belirlemeyin. Uygulamanızın farklı ekran boyutlarına sahip olabilir. Pencere boyutu sınıflarını kullan yardımcı olan farklı düzenleri desteklemek için tıklayın. Compose WindowSizeClass API'yi inceleyin ve WindowSizeClass API'yi görüntüleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

En boy oranı kısıtlaması belirtin veya mülk işaretini ayarlayın PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE - false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
  android:value="false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

SALT_MIN_ASPECT_RATIO_PORTRAIT_YALNIZCA

Etkinlikler için belirli bir minimum en boy oranını zorlayan uygulama ayarlarını kısıtlar yalnızca dikey yönde. Varsayılan olarak etkindir ve yalnızca geçerli olur (OVERRIDE_MIN_ASPECT_RATIO politikası da etkinleştirilmişse)

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Uygulamaları optimize etme

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı ayarlamak için özellik işaretleri

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_MIN_ASPECT_RATIO_ORTA

Etkinliğin minimum en boy oranını orta bir değere (3:2) ayarlar

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Uygulamaları optimize etme

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı ayarlamak için özellik işaretleri

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

Etkinliğin minimum en boy oranını büyük bir değere (16:9) ayarlar

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Uygulamaları optimize etme

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı ayarlamak için özellik işaretleri

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN

Bölünmüş ekran en boy oranının kullanımını etkinleştirir. Uygulamalara, Bölünmüş ekran modunda, sinemaskop efektiyle uğraşmayın.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Uygulamaları optimize etme

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı ayarlamak için özellik işaretleri

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_TAM EKRAN

Tümünü kullanmak için dikey tam ekranda minimum en boy oranı geçersiz kılma ayarını devre dışı bırakır kullanılabilir.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Uygulamaları optimize etme

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılmayı ayarlamak için özellik işaretleri

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_ANY_ORIENTATION

Herhangi bir yönü geçersiz kılmak için aşağıdaki geçersiz kılma işlemlerini etkinleştirir:

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

activity:screenOrientation manifest özelliğini ayarlayın, veya Activity#setRequestedOrientation() API'yi kullanın.

Uygulamaları optimize etme

Uygulamanız tüm yönleri desteklemelidir. Yön değişikliği, iki yoldan biriyle yapılabilir: uygulamayı kaldırma ve yeniden oluşturma ya da yapılandırma değişikliklerini yönetme kendiniz. Yapılandırma değişikliklerini kendiniz yönetiyorsanız uygulama durumu ViewModel kullanılarak saklanmaktadır. Çok nadir durumlarda, yalnızca küçük ekranlarda çalışır. Ancak bunu yaptığınızda, orijinal ekran Kullanıcının uygulamayı gerektiği gibi döndürmesine izin vermek. Android 12L ve sonraki sürümlerde sabit yön, cihaz yapılandırması tarafından geçersiz kılınabilir. Daha fazla yapılandırma değişikliklerini ele alma ve tüm Yapılandırma değişikliklerini işleme bölümüne bakın. ViewModel'e genel bakış ve Uygulama yönü kısıtlandı büyük ekranlı cihazlarda kullanmayın.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarlama PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE Hedef: false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

KULLANICININ_OVERRIDE_ANY_ORIENTATION_TO

Uygulamanın, mevcut görüntüleme alanını doldurmasını sağlar. Tüm yönleri geçersiz kılar, Uygulama manifest dosyasında belirtilen yeniden boyutlandırılabilirlik ve en boy oranı kısıtlamaları. Ayrıca şu çağrıları yok sayar: Activity#setRequestedOrientation().

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

  • android:screenOrientation manifestini ayarlamayın özelliğini kullanın veya özelliği "user" olarak ayarlayın.

  • android:resizeableActivity manifestini ayarlayın özelliğini true olarak değiştirin.

  • Küçük ekranlarda, çoklu pencere devre dışı bırakılırken uygulama yeniden boyutlandırmayı desteklemek için android:resizeableActivity=false ile ayarlamak istiyorsanız true olarak android.supports_size_changes meta veri işareti. Ayarlama minAspectRatio ve maxAspectRatio.

Uygulamaları optimize etme

Uygulamanızın tüm yönleri desteklemesini sağlama screenOrientation ayarlama spesifikasyonunu kullanabilirsiniz. Uygulamanın yeniden boyutlandırılabilirliğini destekler. çoklu pencere modunu düzenleyebilir ve tüm ekran en boy oranlarını Uygulamanızın manifest dosyasındaki android:resizeableActivity özelliğini true olarak ayarlayın. Görüntüleyin Farklı ekran boyutlarını destekleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı ayarlamak için özellik işaretleri

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT

Paketteki tüm etkinlikler için dikey yönü etkinleştirir. Aksi hâlde OVERRIDE_ANY_ORIENTATION etkinleştirildi, geçersiz kılma yalnızca etkinlik tarafından başka bir sabit yön belirtilmediğinde kullanılır.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı ayarlamak için özellik işaretleri

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR

Şuradaki tüm etkinlikler için nosensör yönünü etkinleştirir: paketinden yararlanın. OVERRIDE_ANY_ORIENTATION geçerli değilse etkinleştirildiğinde, geçersiz kılma yalnızca başka bir sabit yön kullanılmadığında kullanılır etkinliği tarafından belirtilir.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı ayarlamak için özellik işaretleri

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE

Şuradaki tüm etkinlikler için ters yatay yönünü etkinleştirir: teslim edilir. OVERRIDE_ANY_ORIENTATION geçerli değilse etkinleştirildiğinde, geçersiz kılma yalnızca başka bir sabit yön kullanılmadığında kullanılır etkinliği tarafından belirtilir.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı ayarlamak için özellik işaretleri

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA

Sınırlar OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR ve OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE geçersiz kılmaların yalnızca kamera bağlantısı etkin durumdayken geçerli olmasını sağlar.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı ayarlamak için özellik işaretleri

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION

aşağıdaki koşullar karşılanır:

  • Etkinlik tam ekran modunda
  • Bileşen özelliğini devre dışı bırak PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE etkin değil
  • Cihaz üreticisinin yönü yoksayma isteği ayarı ekran
  • Ekranın doğal yönü yatay olmalıdır

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Geçerli değil. Sorun, uygulama mantığında çözülmelidir.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarlama PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE Hedef: false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION

Uygulamaya yanıt olarak uygulama yönünü güncellemeyi atlayan uyumluluk politikasını etkinleştirir Uygulama olduğunda Activity#setRequestedOrientation() aranıyor yeniden başlatılıyor veya etkin bir kamera uyumluluğu değerlendirmesi var.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Mülk işaretini ayarla PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION Hedef: true.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarla PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION Hedef: false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED

Uyumluluk politikasını etkinleştirir. uygulama çağrısına verilen yanıt Activity#setRequestedOrientation() iki kattan fazla bir aktivite sabit yön için sinemaskop biçimine getirilmezse bir saniye içinde gösterilir.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Geçerli değil. Sorun, uygulama mantığında çözülmelidir.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarla PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED - false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
  android:value="false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_RESPECT_REQUESTED_ORIENTATION

Paketleri hariç tutar, etkinleştirilebilen yön yoksayma isteği davranışından hariç tutulur bir ekran alanı veya ekranın tamamı için cihaz üreticileri tarafından

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Geçerli değil. Sorun, uygulama mantığında çözülmelidir.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION başlıklı makaleyi inceleyin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Devre dışı bırakmak mümkün değil. Uygulama uyumlu değilse geçersiz kılmanın devre dışı bırakılması tehlikeli olabilir Cihaz üreticisinin yön isteğini yoksaydığı bir cihazla ayarı etkin. Android Geliştiricisi ile İletişime Geçin İlişkiler'i tıklayın.

Geçersiz kılmayı ayarlamak için özellik işaretleri

Bu geçersiz kılma için özellik işareti yok.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

HİÇBİR ZAMAN_KUM KUTUSU_DISPLAY_APIS

Paketlere Display API korumalı alanının hiçbir zaman uygulanmamasını zorunlu kılar kullanın. Display API'leri alan sınırlarını belirlemeye devam edebilir.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Şu iki ayardan birini ayarlayarak etkinlikleri yeniden boyutlandırılabilir: android:resizeableActivity manifest özelliğini true olarak değiştirildi veya android.supports_size_changes meta veri işaretini true olarak ayarlayın.

Uygulamaları optimize etme

Tamamen yeniden boyutlandırılabilir olduğunu belirten uygulamalar ekran boyutuna bağlı olmamalıdır. kullanıcı arayüzü öğelerini konumlandırmak için kullanılır. Uygulamanızı, aşağıdaki özelliklere sahip güncel API'lere taşıyın: WindowMetrics sağlayın. Jetpack Compose kullanıyorsanız Ekran boyutuna göre kullanıcı arayüzünü çizmek için WindowSizeClass API'si uygulamanın mevcut ekranda ne kadar yer kaplayacağını belirler. Görüntüleyin Pencere boyutu sınıfları.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Devre dışı bırakmak mümkün değil. Kullanımdan kaldırılan API'lerden geçiş yapın.

Geçersiz kılmayı ayarlamak için özellik işaretleri

Bu geçersiz kılma için özellik işareti yok.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

HER ZAMAN_KUM KUTUSU_GÖRÜNTÜLÜ_APIS

Paketlere her zaman Display API korumalı alanının uygulanmasını zorunlu kılar pencere modundan bağımsız olarak değiştirebilirsiniz. Display API'leri her zaman uygulama sınırlarını sağlar.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Şu iki ayardan birinde etkinlikleri yeniden boyutlandıramaz: android:resizeableActivity özelliğini false veya false olarak android.supports_size_changes meta veri işareti.

Uygulamaları optimize etme

Tamamen yeniden boyutlandırılabilir olduğunu belirten uygulamalar için konum kullanıcı arayüzü öğeleri. Uygulamanızı desteği sonlandırılmış API'lerden WindowMetrics sağlayan güncel API'ler. Görüntüleyin WindowMetricsCalculator.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Devre dışı bırakmak mümkün değil. Kullanımdan kaldırılan API'lerden geçiş yapın.

Geçersiz kılmayı ayarlamak için özellik işaretleri

Bu geçersiz kılma için özellik işareti yok.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS

Paketleri, etkinlik sınırlarına göre aşağıdaki View API'lerini korumalı alana almaya zorlar:

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Uygulama kodundaki sorunu çözmek için uygulama penceresi ve ofsetleri, uygulama penceresine göre cihazın görüntüsüne göre değişir.

Uygulamaları optimize etme

Uygulamalar, sinemaskop efektini hesaba katarak View API'leri kullanmalıdır. ve uygulamaya uygulanan çoklu pencere modu. Görüntüleyin WindowMetricsCalculator.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarla PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS Hedef: false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
  android:value="false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

Döndürmeye zorlamayı devre dışı bırakır. Bazı uygulamalarda kullanıcı deneyimini iyileştirir.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Mülk işaretini ayarla PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION Hedef: false.

Uygulamaları optimize etme

Önbelleğe alınmış kamera sensörü yönüne veya cihaz bilgilerine güvenmeyin. Örneğin, kamera uyumluluğu rehberliği, bkz. Kamera Vizörü ve Destek Desteği kameranızdaki yeniden boyutlandırılabilir yüzeyler uygulamasını indirin.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarla PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION Hedef: true.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

Zorla döndürmeyi kaldıran geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

Zorla döndürme işleminin gerçekleşmesini sağlayan geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_CAMERA_COMPAT_DEVRE DIŞI_YENİLEME

Zorla döndürmeden sonra etkinlik yenilemeyi devre dışı bırakır. Kullanıcı deneyimini iyileştirir yenileme uygulamalarda durum kaybına neden olur.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Mülk işaretini ayarla PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH Hedef: false.

Uygulamaları optimize etme

Görüntüleyin OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarla PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH Hedef: true.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

Etkinlik yenilemesini kaldıran geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>

Etkinlik yenilemesine olanak tanıyan geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE

onResume() kullanarak etkinlik yenilemesi için uygulandığı paketleri yapar → onResume() yerine onPause()onResume() döngüsü → Kamera uyumluluğu kuvvetin döndürülmesinden sonra onStop()onResume().

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Mülk işaretini ayarla PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE Hedef: true.

Uygulamaları optimize etme

Görüntüleyin OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarla PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE Hedef: false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_KAMERA_LANDSCAPE_TO_PORTRAIT

Dikey modda kamera çıkışının ters yönde kırpılmaya zorlanır kamera yönü, cihazın doğal yönüyle uyumlu değil. Birçok uygulama diğer durumlarda uzatılmış resimler gösterebilirsiniz.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Mülk işaretini ayarla PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT Hedef: true.

Uygulamaları optimize etme

Görüntüleyin OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarla PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT Hedef: false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

İç ön kamera kırpmanın uygulandığı geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

İç ön kameranın kırpılmasını kaldıran geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION

Uygulamaların, uygulama ekran paylaşımını devre dışı bırakmasını engeller (bkz. Medya projeksiyonu) tıklayın. Uygulamalar, Zorunlu kılınacak createConfigForDefaultDisplay() API ve içeriği göstererek kullanıcı gizliliğini tehlikeye atabilir tam ekranla yakalanan ancak uygulama ekranıyla yakalanmayan bildirimlerin yüzdesi ve pencere modundan bağımsız olarak tüm uygulamalar için geçerlidir.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Varsayılan medya projeksiyonu davranışına izin ver (Android 14, API'de uygulanır) createScreenCaptureIntent() ile 34. seviye), Bu, kullanıcıların tam ekranı mı yoksa tek bir uygulamayı mı paylaşacaklarına karar vermelerine olanak tanır. pencere modundan bağımsız olarak değiştirebilirsiniz. Alternatif olarak arayın: createScreenCaptureIntent(MediaProjectionConfig) bir MediaProjectionConfig bağımsız değişkeninden createConfigForUserChoice() çağrısı.

Uygulamaları optimize etme

Kullanıcıların, cihaz ekranının tamamını mı yoksa bir uygulamayı mı paylaşacaklarını seçmesine izin ver penceresi açılır. Bu, Android 14'ten itibaren varsayılan davranıştır.

Uygulamanızı şu şekilde yeniden boyutlandırılabilir (resizeableActivity="true") yapın: çoklu pencere modunu destekler.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Kullanıcı gizliliğinin ciddiyeti nedeniyle uygulamanız devre dışı bırakılamıyor veya devre dışı bırakılamıyor bir değer olacaktır.

Geçersiz kılmayı ayarlamak için özellik işaretleri

Yok.

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılma işlemini uygulamak için uygulamanın kısmi ekran paylaşımını devre dışı bırakması iptal edilir (yani kısmi ekran paylaşımını etkinleştirir):

adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

Uygulamanın kısmi ekranı devre dışı bırakmasına olanak tanıyan geçersiz kılmayı kaldırmak için paylaşma:

adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_ENABLE_COMPAT_FAKE_ODAK NOKTASI

Bölünmüş ekran modunda odaklanılmamış uygulamalar için sahte odaklama göndermeyi etkinleştirir. Biraz Oyun motorları, uygulamanın içeriğini çizmeden önce odaklanmayı bekler; Böylece, sahte odaklama, devam ettirildiğinde uygulamaların karar kalmasını önlemeye yardımcı olur. odaklanabillirsiniz.

Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?

Mülk işaretini ayarla PROPERTY_COMPAT_ENABLE_FAKE_FOCUS - true.

Uygulamaları optimize etme

Uygulamanız birden fazla yönü kullanıyorsa ve iyi performans gösterdiğini görmenize yardımcı olur. Uygulamanızı büyük ekrana hazır hale getirmek için Büyük ekran uygulama kalitesi yönergeleri.

Unity oyun motorunu kullanıyorsanız 2019.4.40 veya daha yeni bir sürüme yükseltin ve oyununuzu yeniden dışa aktarın. Resizable Window seçeneğini kullanmaya devam et Android Player'da kontrol edildi Ayarlar'da devre dışı bırakabilirsiniz.

Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma

Mülk işaretini ayarla PROPERTY_COMPAT_ENABLE_FAKE_FOCUS - false.

Geçersiz kılmayı ayarlamak için özellik işaretleri

<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
  android:value="true|false"/>

geçersiz kılmayı test etmek için adb komutları

Geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>

Geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>

Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

Ek kaynaklar