Büyük ekran uyumluluk modu

Android, yön veya yeniden boyutlandırılabilirlik kısıtlamaları bildiren uygulamalar için bir uyumluluk modunu etkinleştirir. Uyumluluk modu, geniş ekranlı cihazlarda kabul edilebilir uygulama davranışı sağlar ancak kullanım kolaylığı sağlar.

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

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

Uygulamalar genellikle uygulama yönü kısıtlamaları, yeniden boyutlandırılabilirlik ve en boy oranı kısıtlamaları, kamera önizleme yönünün yanlış işlenmesi ve yanlış kullanılan API'ler nedeniyle uyumluluk sorunları yaşamaktadır.

Sinemaskop

Sinemaskop, uygulamayı ekranın ortasına veya büyük ekranlarda kolay erişim için bir tarafa ya da diğerine yerleştirir. Uygulamanın yanları veya üst ve alt kısımlarındaki kullanılmayan görüntüleme alanını matlar (düz renkli çubuklar veya bulanık duvar kağıdı) doldurur.

Sinemaskop genellikle büyük ekranlı cihazlarda gerçekleşir, çünkü cihaz ekranının boyutları ve en boy oranı, çoğu uygulamanın tasarlandığı standart telefonlarınkinden genellikle farklıdır.

Şekil 1. Dikey yönle sınırlandırılan uygulama yatay tablette sinemaskop ve katlanabilirdir.

Sorun

Uygulama sabit yöne ve en boy oranına sahip olduğundan ya da yeniden boyutlandırılabilir olmadığından tüm ekran yapılandırmalarını desteklemiyor.

Uygulama yönünü ve yeniden boyutlandırılabilirliği kontrol eden yapılandırma ayarları şunlardır:

  • screenOrientation: Bir uygulama için sabit yönü belirtir. Uygulamalar, çalışma zamanında yönü Activity#setRequestedOrientation() kullanarak da ayarlayabilir.
  • resizeableActivity: Sistemin, uygulamaları değişen boyutlardaki pencerelere sığacak şekilde yeniden boyutlandırıp değiştiremeyeceğini belirtir. Android 11 (API düzeyi 30) ve önceki sürümlerde uygulamaların çoklu pencere modunu destekleyip desteklemediğini belirtir. Android 12 (API düzeyi 31) ve sonraki sürümlerde uygulamaların küçük ekranlarda (sw < 600 dp) çoklu pencere modunu destekleyip desteklemediğini belirtir. Android 12 ve sonraki sürümlerde uygulamalar bu ayardan bağımsız olarak büyük ekranlarda çoklu pencere modunu (sw >= 600 dp) destekler.
  • maxAspectRatio: Uygulama tarafından desteklenen maksimum en boy oranını belirtir. Yalnızca resizeableActivity değeri yanlış değerine ayarlanmış uygulamalar maxAspectRatio özelliğini ayarlayabilir.
  • minAspectRatio: Uygulama tarafından desteklenen minimum en boy oranını belirtir. Yalnızca resizeableActivity değeri yanlış değerine ayarlanmış uygulamalar minAspectRatio özelliğini ayarlayabilir.

Optimizasyon

Uygulama tüm cihaz ve çoklu pencere modu ekran yönleri ile boyutlarını desteklemelidir. Uygulama düzenlerinizden ve uygulama manifest dosyanızdan tüm yön ve sabit en boy oranı kısıtlamalarını kaldırın. Daha fazla bilgi için Farklı ekran boyutlarını destekleme başlıklı makaleye bakın.

Uyumluluk geçici çözümü

Sabit yönde veya sabit en boy oranına sahip bir uygulama, uygulamanın pencere boyutunu veya yönünü doğrudan desteklemediği bir pencerede çalıştırılıyorsa Android, sürekliliği korumak için uygulamaya sinemaskop yapar.

Platform, Android 12'den (API düzeyi 31) başlayıp 12L'den (API düzeyi 32) devam ederek sinemaskoplu uygulamalara çeşitli geliştirmeler uyguluyor. Kullanıcı arayüzü geliştirmelerini cihaz üreticileri uygular. Bu iyileştirmelerden yararlanabilmek için uygulamanızın ek geliştirmeler yapmasına gerek yoktur.

Android 12 (API düzeyi 31), cihaz üreticileri tarafından yapılandırılabilen aşağıdaki estetik geliştirmeleri sunmaktadır:

  • Yuvarlatılmış köşeler: Uygulama penceresinin köşeleri daha zarif bir görünüme sahiptir.
  • Sistem çubuğu şeffaflığı: Uygulama ile yer paylaşan durum ve gezinme çubukları yarı şeffaftır. Böylece çubuklardaki simgeler sinemaskop arka planı üzerinde her zaman görüntülenebilir.
  • Yapılandırılabilir en boy oranı: Uygulamanın en boy oranı, uygulamanın görünümünü iyileştirmek için ayarlanabilir.

2. Şekil. Kullanıcı arayüzü geliştirmelerine sahip sinemaskoplu 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 uygulamayı ekranın sol veya sağ tarafına konumlandırarak etkileşimi kolaylaştırabilir.
  • Yeniden tasarlanmış yeniden başlatma düğmesi: Cihaz üreticileri, kullanıcılar tarafından daha iyi tanınması için boyut uyumluluğu modu için yeniden başlatma düğmesine yeni bir görünüm verebilirler.

Android 13 (API düzeyi 33), sinemaskoplu uygulamayı ekrana konumlandırma veya bölünmüş ekran modunda sinemaskop ekleme hakkında bir kullanıcı eğitimi iletişim kutusu ekler:

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

Boyut uyumluluğu modu

Boyut uyumluluğu modu, yeniden başlatma kontrolü içeren sinemaskoptur. Bu kontrol, kullanıcıların uygulamayı yeniden başlatmasına ve ekranı yeniden çizmesine olanak tanır. Android, yeniden boyutlandırılamaz olarak belirlenen uygulamalar için boyut uyumluluk modunu çağırır. Bir etkinlik uyumsuz boyutlara sahip bir görüntülü reklam kapsayıcısına taşındığında, sistem, cihaz ekranını en az bir boyutta doldurmak için uygulamayı yeniden ölçeklendirebilir.

Boyut uyumluluk modunu tetikleyebilecek cihaz yapılandırma değişiklikleri arasında aşağıdakiler yer alır:

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

Sorun

Boyut uyumluluk modu genellikle yön ya da en boy oranı açısından kısıtlanmış ve yeniden boyutlandırılamaz olacak şekilde yapılandırılmış (veya sistem tarafından belirlenen) etkinlikler için geçerlidir.

Uygulamanız aşağıdaki ölçütlerden herhangi birini karşılıyorsa yeniden boyutlandırılabilir olarak kabul edilir ve boyut uyumluluk moduna yerleştirilmez:

Uygulamanız koşullardan herhangi birini karşılamıyorsa yeniden boyutlandırılamaz olarak kabul edilir ve boyut uyumluluk moduna yerleştirilebilir.

Optimizasyon

Uygulama tüm görüntülü reklam boyutlarını desteklemelidir. Uygulama manifest dosyasında <activity> veya <application> öğesinin android:resizeableActivity özelliğini true olarak ayarlayarak uygulamanızı yeniden boyutlandırılabilir hale getirin. Uygulamanız için duyarlı/uyarlanabilir düzenler tasarlayın. Daha fazla bilgi için Farklı ekran boyutlarını destekleme ve Çoklu pencere desteği başlıklı makalelere bakın.

Uyumluluk geçici çözümü

Sistem, sinemaskoplu uygulamanın görüntüsünün, görüntü penceresini en az bir boyutta dolduracak şekilde yeniden ölçeklendirilmesiyle iyileştirilebileceğini belirlediğinde Android bir uygulamayı boyut uyumluluk moduna alır. Sistem, uygulama işlemini yeniden oluşturup etkinliği yeniden oluşturan ve ekranı yeniden çizen bir yeniden başlatma kontrolü görüntüler. İşlemlere ve ileti dizilerine genel bakış bölümüne de göz atın.

Titreyen döngüler

Bir uygulama tüm ekran yönlerini desteklemediğinde, bir yapılandırma değişikliği olduğunda sürekli olarak yeni yönler isteyebilir, bu da ekranın titreşmesine veya uygulamanın sonsuz bir şekilde dönmesine neden olan bir sonsuz döngü oluşturur.

Sorun

Cihaz üreticileri, Android 12 (API düzeyi 31) ve sonraki sürümlerde cihazlarını, uygulamalar tarafından belirtilen yön kısıtlamalarını yok sayacak ve uyumluluk modlarını çalıştırmak için kısıtlamaları kullanacak şekilde yapılandırabilir. Örneğin, katlanabilir cihaz, bir etkinlik cihazın tablet boyutundaki yatay iç ekranında yatay olarak görüntülendiğinde etkinliğin android:screenOrientation="portrait" ayarını yok sayabilir.

Bir uygulamanın yön kısıtlamaları yoksayıldığında Activity#setRequestedOrientation() yöntemini çağırarak uygulama yönünü programatik olarak ayarlayabilir. Uygulama, yapılandırma değişikliklerini gerçekleştirmiyorsa çağrı, uygulamanın yeniden başlatılmasını tetikler (bkz. Yapılandırma değişikliklerini işleme). Yeniden başlatıldıktan sonra, uygulamanın yön kısıtlamaları tekrar yoksayılır, uygulama setRequestedOrientation() çağrısını tekrarlar, çağrı bir uygulamanın yeniden başlatılmasını tetikler ve bu şekilde devam eden bir döngü devam eder.

Bu durumla karşılaşabileceğiniz bir başka durum da cihaz ekranının doğal yönünün (Android'in belirlediği her zamanki yön) yatay olmasıdır (yani, cihaz yatay en boy oranına sahipken Display#getRotation() çağrısı Surface.ROTATION_0 döndürür). Geçmişte uygulamalar, Display.getRotation() = Surface.ROTATION_0 özelliğinin cihazın dikey yönde olduğu anlamına geldiğini varsayıyordu. Ancak bu durum, örneğin Pixel Fold'un iç ekranı ve bazı tabletlerde her zaman geçerli değildir.

Pixel Fold iç ekranında yatay yönde bulunan bir uygulama, ekran döndürmeyi kontrol edebilir, ROTATION_0 değerini alabilir, doğal yönün dikey olduğunu varsayabilir ve setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) numaralı telefonu çağırabilir. Uygulama yeniden başlatıldıktan sonra (yatay yönde) ekran döndürmeyi tekrar kontrol edebilir, ROTATION_0 değerini alabilir, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) değerini çağırabilir ve bu şekilde devam eder.

Optimizasyon

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

  • Yön isteği, işlenmeyen yapılandırma değişiklikleriyle beklenmedik bir şekilde tetiklenebileceğinden onCreate() etkinliği yönteminde Activity#setRequestedOrientation() ile varsayılan bir yön ayarlayın
  • Cihazın doğal yönünün (ROTATION_0) dikey olduğunu varsayın
  • Yönü, geçerli pencere boyutuyla ilgili olmayan sinyallere göre ayarlayın. Örneğin, Display#getRotation(), FoldingFeature varlığı veya kullanımdan kaldırılan API'ler (aşağıya bakın).

Uyumluluk geçici çözümü

Android aşağıdaki durumlarda Activity#setRequestedOrientation() çağrısını yoksayar:

  • Etkinlik, yönteme yapılan önceki bir çağrıdan zaten yeniden başlatıldı veya kamera uyumlu kuvvet döndürme işlemi etkinleştirilmiş (aşağıdaki Kamera önizlemesi bölümüne bakın).

    Cihaz üreticileri, bu davranışı OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION içeren bir uygulamaya uygulayabilir.

  • Etkinlik bir saniyede ikiden fazla yön isteğinde bulundu. Bu, bir döngünün gerçekleştiğini gösterir. Android, döngüdeki iki istekten uygulama görüntüleme alanını en üst düzeye çıkaranı kullanır.

    Cihaz üreticileri, bu davranışı OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED içeren bir uygulamaya uygulayabilir.

Kamera önizleme

Kamera uygulamalarının kamera önizlemesi (veya vizörü) tabletlerde, dizüstü bilgisayarlarda ve katlanabilir ekranlarda yanlış hizalanabilir ya da bozulabilir.

Sorun

Android Uyumluluk Tanımı'nda, kamera görüntü sensörünün "kameranın uzun boyutu ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmesi ZORUNLUDUR".

Uygulamalar genellikle cihaz yönü ve kamera sensörü yönünün dikey olduğunu varsayar. Bu, standart cep telefonlarında makul bir varsayımdır. Ancak tabletlerin, dizüstü bilgisayarların doğal yönü ve kamera sensörleri yatay olabilir. Ayrıca katlanabilir cihazlar gibi yeni form faktörlerinde birden fazla doğal yön ve farklı yönlerde birden fazla kamera sensörü bulunabilir.

Bir etkinliğin uygulamanın beklemediği kamera yönünde başlatılması veya farklı kameralar ya da cihaz ekranları arasında geçiş yapılması (katlanabilir cihazlar için) yanlış hizalı veya bozuk bir kamera önizlemesine neden olabilir.

Optimizasyon

Kamera uygulamalarının doğru şekilde hizalanıp ölçeklendirilmiş kamera önizlemesi sunmak için cihaz yönünü ve kamera sensör yönünü doğru şekilde tanımlaması ve yönetmesi gerekir. Uygulamaların cihaz döndürme, sensör rotasyonu ve ekran veya pencere en boy oranını hesaplamaları, ardından sonuçları kamera önizlemesine uygulaması gerekir. Ayrıntılı rehberlik için Kamera önizlemesi ve Kamera Vizörü Tanıtımı konularına bakın.

Uyumluluk geçici çözümü

Display#getRotation(), Surface.ROTATION_0 değerini döndürdüğünde cihaz doğal yöndedir. Sistem, CameraCharacteristics.SENSOR_ORIENTATION değerini cihazın doğal yönünden hesaplar. Android, dikey olarak kısıtlanmış uygulamaların dikey penceresini cihazın doğal yönüyle hizalar. Çoğu uygulamanın beklediği gibi. Android, sensör yönü yatay ve kamera önizlemesi dikey olduğunda da kamera sensörü resmini kırpar. Özel geçici çözümler şunlardır:

  • Dikey olarak kısıtlanmış uygulamalar için kamera önizlemelerini döndürmeye zorla: Dikey yönle sınırlandırılan uygulamalar, cihazın doğal yönünü ve kamera sensörü yönünün dikey olmasını bekler. Ancak, cihaz üreticileri yön spesifikasyonunu dikkate almadığı takdirde Android 12 (API düzeyi 31) ve sonraki sürümlerde uygulamalar birden fazla cihaz yönünde çalışabilir.

    Dikey kısıtlamalı bir uygulama kameraya bağlandığında Android, uygulama dikey penceresini cihazın doğal yönüyle hizalamak için uygulamayı zor bir şekilde döndürür.

    Pixel Tablet'te uygulamanın dikey penceresi, cihazın doğal yönüyle uyumlu olması için tam ekran dikey yöne döndürülür. Uygulama, zorla rotasyondan sonra tam ekranı kaplar.

    Pixel Fold'un iç ekranında yalnızca dikey yöndeki etkinlikler, katlanan doğal yönle uyumlu olması için yatay olarak döndürülür. Zorunlu rotasyondan sonra uygulamaya sinemaskop eklenir.

  • İç ön kamerada kırpma: Pixel Fold'daki iç ön kamera sensörü yatay yöndedir. Android, Pixel Fold'un iç ekranında kamera önizlemesini zorla döndürmeye ek olarak iç ön (yatay) kamera görüş alanını kırpar. Böylece sensör, cihazın yönüne karşın görüntüyü yakalayabilir.

  • Kamera önizlemelerini zorunlu yenile: Sistem, zorunlu rotasyondan sonra kamera önizlemesinin düzgün görüntülendiğinden emin olmak için onStop() ve onStart() (varsayılan olarak) veya onPause() ile onResume() (uygulama başına OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE geçersiz kılması tarafından uygulanır) etkinlik yöntemleri arasında geçiş yapar.

  • En boy oranı ölçeklendirme: Sistem, zorla döndürülmüş kamera önizlemesinin en boy oranını daha yüksek bir minimum en boy oranı olacak şekilde dinamik olarak değiştirerek kamera önizlemesinin düzgün ölçeklenmesini sağlar.

Uygulamalar kamera önizlemesini doğru bir şekilde kullanırsa uygulama geliştiriciler bu geçici çözümleri geçersiz kılabilir. Aşağıdaki Uygulama bazında geçersiz kılmalar konusuna bakın.

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

Android, çoklu pencere modu gibi özellikler ve katlanabilir cihazlar gibi özellikler için destek sunduğundan eski API'ler kullanımdan kaldırıldı ve yerini tüm ekran boyutlarına ve cihaz form faktörlerine uygun olan güncel API'ler aldı. Ancak, kullanımdan kaldırılan API'ler geriye dönük uyumluluk için hâlâ kullanılabilir.

Bazı View API'leri, geliştiriciler tarafından her zaman iyi anlaşılmayan özel amaçlar için tasarlanmıştır.

Sorun

Geliştiriciler kullanımdan kaldırılan Display API'lerini kullanmaya devam etmekte ve API'lerin, yanlış bir şekilde cihaz görüntüleme alanı sınırları yerine uygulama sınırlarını döndürdüğünü varsaymaktadır. Veya geliştiriciler, genel görüntüleme metriklerini almak için yanlışlıkla özel amaçlı View API'leri kullanır. Sonuçta, uygulama penceresi yeniden boyutlandırma etkinliklerinden sonra kullanıcı arayüzü öğeleri yeniden konumlandırılırken yanlış hesaplamalar yapılarak düzen sorunları yaşanır.

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

Daha fazla bilgi için Çoklu pencere desteği başlıklı makaleye bakın.

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

Optimizasyon

Kullanıcı arayüzü öğelerini konumlandırmak için hiçbir zaman fiziksel ekran boyutuna güvenmeyin. Uygulamanızı şu WindowManager API'leri de dahil olmak üzere WindowMetrics temelli API'lere taşıyın:

Uyumluluk geçici çözümü

İki geçersiz kılma işlemi, uygulama sınırlarını döndürmek için desteği sonlandırılmış Display API'lerini ve hatalı kullanılan View API'lerini ayarlar: Display API'leri için ALWAYS_SANDBOX_DISPLAY_APIS; View API'leri için OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS. ALWAYS_SANDBOX_DISPLAY_APIS, boyut uyumluluğu moduna uygun olan uygulamalara da varsayılan olarak uygulanır.

Şeffaf etkinlikler

Şeffaf etkinlikler, şeffaf arka plan stillerinin sonucudur. Örneğin:

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

Theme.Material.Dialog gibi iletişim kutularıyla ilgili temalar, etkinlikleri şeffaf hale getiren stiller içerebilir.

Şeffaf etkinlikler, kullanılabilir görüntülü reklam alanının tamamını kapsamaz. Mevcut görüntüleme alanı cihazın döndürme, cihazı katlama ve açma, çoklu pencere modu gibi yapılandırma değişikliklerine göre değişebileceği için bu durum ekranların büyük ekranlarda kullanılmasını zorlaştırır.

Sorun

Büyük ekranlarda, şeffaf bir etkinlik, görev etkinliği yığınındaki transparent (şeffaf) etkinliğin altındaki ilk opak etkinliğin sınırlarına uymalıdır. Ancak, izin iletişim kutusunu başlatan opak bir etkinlik, iletişim kutusu başlatıldığında kaybolan bir trampolin (diğer etkinlikleri başlatan bir etkinlik) olabilir. Bu nedenle, sistem, şeffaf etkinliğin altındaki opak etkinliğin sınırlarını belirleyemez.

Optimizasyon

Saydam etkinlikler, kısıtlamalarını bir görevin etkinlik yığınında altlarındaki en opak etkinlikten devralır. Opak etkinlik, etkinlik oluşturmadan yok etmeye kadar yarı saydam etkinliğin tüm yaşam döngüsü boyunca kullanılabilir olmalıdır. Bu nedenle, trambolin etkinliklerinden izin istekleri başlatmamalısınız.

Trambolin etkinliği bir izin isteğini başlatırsa, kullanıcı diyaloga yanıt verme fırsatı bulmadan önce trambolin etkinliği yok edilmiş olacağından, kullanıcı izin iletişim kutusunu göremeyebilir.

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

Köşeleri yuvarlatılmış

Etkinlik, yarı saydam bir tema kullanılarak veya kullanılabilir görüntüleme alanı doldurulmadığında yarı saydam olabilir. Kullanılabilir görüntüleme alanını yarı saydam bir etkinlik dolduruyorsa cihaz üreticisi tarafından bu şekilde yapılandırıldığı takdirde sistem, etkinliğe otomatik olarak yuvarlatılmış köşeler uygular. Ancak, yarı saydam bir etkinlik (izin iletişim kutusu gibi) mevcut alanı doldurmuyorsa köşelerin yuvarlatılmış olup olmayacağına karar vermek size kalmıştır.

İletişim kutusu düzeni genellikle LayoutParams.MATCH_PARENT yerine LayoutParams.WRAP_CONTENT öğesini kullandığından izin iletişim kutuları kullanılabilir görüntüleme alanını doldurmaz.

Uyumluluk geçici çözümü

İletişim kutusu etkinliklerini başlatan etkinlikleri kullanıcı iletişim kutusuna yanıt verene kadar görünür tutun.

Sistem, şeffaf bir etkinliğin, aşağıdakilerle ilgili kısıtlamalar dahil olmak üzere etkinlik yığınındaki şeffaf etkinliğin altındaki ilk opak etkinlikten gelen tüm kısıtlamaları devralmasını sağlar:

  • Boyut uyumluluğu modu
  • Yön
  • En Boy Oranı

Unity oyunları

Unity oyunları Android tam ekranında veya çoklu pencere modunda çalışır. Ancak uygulama çoklu pencere moduna yerleştirildiğinde birçok Unity oyununun odak noktası kayboluyor ve içerik çizimi durduruluyor.

Sorun

Unity, Unity 2019.4'ten itibaren Android'de çoklu pencere modunu desteklemek için bir Resizable Window seçeneği ekledi. Ancak ilk uygulama, çoklu pencere modunda etkinlik yaşam döngüsüne doğru şekilde tepki vermediğinden UnityPlayer uygulama odağını kaybettiğinde oynatmayı askıya alabilir. Oyuncu siyah bir ekran veya oyunun donmuş son karesini oluşturdu. Oynanabilirlik yalnızca kullanıcı ekrana dokunduğunda devam ettiriliyordu. Unity motorunu kullanan birçok uygulama bu sorunla karşılaşıyor ve çoklu pencere modunda siyah pencere olarak oluşturuluyor.

Optimizasyon

Unity'yi 2019.4.40 veya daha yeni bir sürüme yükseltip oyununuzu yeniden dışa aktarın. Android Oynatıcı ayarlarında Resizable Window seçeneğini işaretli bırakın. Aksi takdirde, oyun çoklu pencere modunda tamamen görünür olsa bile oyun odakta değilken duraklar.

Uyumluluk geçici çözümü

Cihaz üreticileri, çoklu pencere modundaki bir uygulamaya sahte odak etkinliği sağlamak için uygulama başına OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS geçersiz kılmasını uygulayabilir. Geçersiz kılma, etkinliğin karartılmadan içeriği yeniden çizmesine olanak tanı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 aşağıdaki kaynaklardan yararlanın:

Sinemaskoplu

Her bir etkinliğin, uygulama için kullanılabilen görüntüleme alanının tamamını kullanabildiğini doğrulayın. Önce, test klasörünüzde aşağıdaki kodu tanımlayın:

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 çalıştırın ve hedef etkinliğin sinemaskop olmadığından emin olun:

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 rule = new ActivityScenarioRule<>(MainActivity.class);

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

İdeal olarak bu tür bir testi, yalnızca geçene ve uygulamanızın etkinliklerinin, uygulamanın kullanabileceği tüm görüntüleme alanını kapladığını doğrulayana kadar çalıştırın. Tutarlı bir davranış sağlamak için uygulamanızı tüm cihaz türlerinde test edin.

Uygulama başına geçersiz kılmalar

Android, uygulamaların yapılandırılmış davranışını değiştiren geçersiz kılmalar sağlar. Örneğin, FORCE_RESIZE_APP geçersiz kılma işlemi, uygulama manifest dosyasında resizeableActivity="false" ayarlanmış olsa bile sisteme boyut uyumluluk modunu atlamasını ve uygulamayı görüntülü reklam boyutlarına uyacak şekilde yeniden boyutlandırmasını söyler.

Cihaz üreticileri, belirli büyük ekranlı cihazlarda seçili uygulamalara geçersiz kılmaları uygular. Kullanıcılar, Android 14 (API düzeyi 34) ve sonraki sürümlerde cihaz ayarları üzerinden uygulamalara geçersiz kılmaları uygulayabilir.

Uygulama başına kullanıcı geçersiz kılmaları

Android 14 ve sonraki sürümlerde ayarlar menüsü, kullanıcıların uygulamaların en boy oranını değiştirmesine olanak tanır. Bu menü, Pixel Tablet ve Pixel Fold gibi büyük ekranlı cihazlarda uygulanır.

Menüde, cihazda yüklü tüm uygulamaların bir listesi yer alır. Kullanıcılar bir uygulama seçer ve ardından uygulama en boy oranını 3:4, 1:1, tam ekran veya cihaz üreticisi tarafından yapılandırılan diğer bir değere ayarlar. Kullanıcılar ayrıca en boy oranını uygulama manifest dosyasında belirtilen uygulama varsayılan değerine sıfırlayabilir.

Uygulamalar, aşağıdaki PackageManager.Property etiketlerini ayarlayarak uyumluluğu geçersiz kılmayı devre dışı bırakabilir:


  • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE

    Kullanıcı en boy oranı uyumluluğunu geçersiz kılma özelliğini devre dışı bırakmak için özelliği uygulama manifestinize ekleyip 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ç tutulacaktır. Kullanıcılar uygulamanın en boy oranını geçersiz kılamaz.

    Özelliği true olarak ayarlamanın herhangi bir etkisi olmaz.


  • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE

    Kullanıcı en boy oranı uyumluluğunu geçersiz kılma özelliğinin tam ekran seçeneğini devre dışı bırakmak için özelliği uygulama manifest dosyanıza ekleyip değeri false olarak ayarlayın:

    <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ındaki en boy oranı seçenekleri listesinden kaldırıldı. Kullanıcılar, tam ekran geçersiz kılma özelliğini uygulamanıza uygulayamazlar.

    Bu özelliğin true değerine ayarlanmasının herhangi bir etkisi olmaz.

Uygulamanızı büyük ekranlar için optimize edin: Uygulamanızda en boy oranı kısıtlamaları ayarlamayın. Kullanılabilir görüntüleme alanı miktarına göre farklı düzenleri desteklemek için pencere boyutu sınıflarını kullanın.

Uygulama başına cihaz üreticisi geçersiz kılmaları

Cihaz üreticileri, geçersiz kılma işlemlerini belirli cihazlarda uygulama bazında uygular. Pixel Tablet ve Pixel Fold, geçersiz kılmalardan bazılarını varsayılan olarak çeşitli uygulamalara uygular.

Uygulamalar çoğu geçersiz kılmayı devre dışı bırakabilir (aşağıdaki Uygulama başına geçersiz kılmalar tablosuna bakın).

Uyumluluk çerçevesini kullanarak uygulamanızı geçersiz kılmalar etkinleştirilmiş veya devre dışı bırakılmış olarak test edebilirsiniz (Uyumluluk çerçevesi araçları bölümüne bakın). Etkinleştirildiğinde, geçersiz kılmalar uygulamanın tamamına uygulanır.

Geçersiz kılmaları etkinleştirmek veya devre dışı bırakmak ve uygulamanızda hangi geçersiz kılmaların geçerli olduğunu belirlemek için Android Hata Ayıklama Köprüsü'nü (adb) de kullanabilirsiniz.

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>

Pixel Tablet ve Pixel Fold'da hangi geçersiz kılmaların uygulamanız için geçerli olduğunu kontrol edin:

adb shell dumpsys platform_compat | grep <package name>

Aşağıdaki tabloda, kullanılabilir geçersiz kılma işlemleri ve uygulamanızın geçersiz kılmaları kullanmasına gerek kalmaması için nasıl optimize edileceğiyle ilgili yönergeler listelenmiştir. Bazı geçersiz kılmaları devre dışı bırakmak için uygulama manifestinize mülk işaretleri ekleyebilirsiniz.

Uygulama başına geçersiz kılmalar
Tür Ad ID 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ılma işlemlerini uygulamak için etkinleştirilmesi gereken kapı görevlilerini geçersiz kılma.
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY 203647190 Etkinleştirilirse (varsayılan) sınırlar, kapsamı yalnızca dikey etkinliklerle geçersiz kılar.
OVERRIDE_MIN_ASPECT_RATIO_ORD 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ı, ekran 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_FULLSCREEN 218959984 Cihaz dikey durumdayken uygulamaların tam ekran olması için minimum en boy oranı geçersiz kılmasını devre dışı bırakır.
Yön OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT 265452344 Bir etkinliğin yönü tanımlanmamışsa yönü dikey olarak geçersiz kılar.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR 265451093 Bir etkinliğin yönü tanımlanmamışsa yönü nosensor olacak şekilde geçersiz kılar (cihazın doğal yönünü kullanın).
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE 266124927 Yalnızca yatay uygulamaları 180 derece döndürür.
OVERRIDE_ANY_ORIENTATION 265464455 Herhangi bir yönü geçersiz kılmayı etkinleştirir.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA 265456536 Yön geçersiz kılma kapsamını, uygulamanın kameraya bağlı olduğu zamanla sınırlar.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION 255940284 Bir görev tam ekran olduğunda görüntüyü sabit yatay doğal yöne ayarlar (sinemaskoplu olanlar da dahil).
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION 254631730 Döndürme döngülerini önlemek için uygulamanın 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 saniye içinde en az iki yeni yön istediğini algılarsa sistem bunu bir döndürme döngüsü olarak kabul eder ve geçersiz kılmayı uygular.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION 236283604 Cihaz üreticisinin yön isteğini yoksayma ayarını devre dışı bırakarak sinemaskop almayı engeller.
Korumalı Alan API'leri ASLA_SANDBOX_DISPLAY_APIS 184838306 Görüntülü reklam API'lerinin davranışının değiştirilmesini önler.
ALWAYS_SANDBOX_DISPLAY_APIS 185004937 Uygulamadaki Display API'lerini uygulama sınırlarını döndürmeye zorlar. Görüntülü API'ler, görüntüleme alanı sınırlarını döndürür ancak bazen uygulama, Görüntülü API'lerin uygulama sınırlarını döndürdüğünü varsayar ve bu da kullanıcı arayüzü sorunlarına yol açar.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS - API 237531167 Uygulamada kullanılan View API'lerini uygulama sınırlarını döndürmeye zorlar. View API'leri, görüntüleme alanı sınırları döndürür, ancak bazen uygulama View API'lerinin uygulama sınırları döndürdüğünü varsayar ve bu durum kullanıcı arayüzü sorunlarına yol açar.
Kamera uyumluluğu OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION 263959004 Döndürme kuvvetini kapatır. Varsayılan olarak, kamera önizlemesi açıkken tüm sabit yönlü kamera uygulamaları döndürülmeye zorlanır.
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH 264304459 Kamera önizlemesi zorla döndürüldüğünde, uygulanan varsayılan tam yenilemeyi kaldırır.
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_DURAKLATMA 264301586 Kamera önizlemesi zorla döndürüldüğünde sert yenilemeyi yumuşak yenilemeye geçirir. Böylece, kuvvet rotasyonu sırasında durum korunur. Varsayılan olarak, kamera önizlemesi zorla döndürüldüğünde Android tam yenileme uygular. Kalıcı yenileme, önceki durumlarını nasıl önbelleğe aldıklarına bağlı olarak belirli uygulamaların durum kaybı veya kararmasıyla ilgili sorunlara neden olabilir.
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT 250678880 İç ön kameranın görüntü arabelleğini kırpar. Geçersiz kılma devre dışı bırakılırsa iç ön kamera kırpması kaldırılır ve kamera önizlemesinin görüş alanı artırılır. Sistem, varsayılan olarak Pixel Fold'da iç ön kamerayı kullanırken tüm kamera uygulamalarının kamera önizlemesini kırpar.
Çeşitli OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS 263259275 Bölünmüş ekran modundayken uygulama odağını kaybettiğinde uygulamanın kararmasını engeller. Uygulama, uygulama içeriğini çizmeden önce odaklanmayı bekler. Bu durumda uygulama donabilir veya kararabilir. Geçersiz kılma işlemi, Android'in uygulamaya sahte bir odaklanma etkinliği göndermesine olanak tanır. Bu etkinlik, uygulamaya tekrar içerik çizmeye başlaması için sinyal gönderir.

FORCE_RESIZE_APP

Geçersiz kılmanın uygulandığı paketleri yeniden boyutlandırılabilir olmaya zorlar. Uygulamanın çoklu pencere moduna alınıp alınmayacağını değiştirmez, ancak ekran yeniden boyutlandırıldığında uygulamanın, boyut uyumluluk moduna girmeden yeniden boyutlandırılmasına izin verir.

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

android:resizeableActivity özelliğini true olarak ayarlayın veya uygulama manifest dosyasında android.supports_size_changes meta veri işaretini true (doğru) değerine ayarlayın (android:resizeableActivity ile çoklu pencere modunu devre dışı bırakırken yeniden boyutlandırmayı desteklemek için).

Uygulamaları optimize etme

Uygulamaların tüm ekran boyutlarına ve en boy oranlarına uyum sağlaması için duyarlı/uyarlanabilir düzenler kullanın. Farklı ekran boyutlarını destekleme başlıklı makaleyi inceleyin.

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

PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı 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 girer.

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

Uygulama manifest dosyasında hem android:resizeableActivity özelliğini hem de android.supports_size_changes meta veri işaretini false (yanlış) değerine ayarlayın ve bir yön ya da en boy oranı kısıtlaması bildirin.

Uygulamaları optimize etme

Yeniden boyutlandırıldığında iyi davranan tüm uygulamalarda android:resizeableActivity veya android.supports_size_changes politikası doğru değerine ayarlanmalıdır. Diğer uygulamalar, yeniden boyutlandırıldığında daha iyi davranacak şekilde iyileştirilmelidir. android:resizeableActivity bölümüne bakın.

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

PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_MIN_ASPECT_RATIO

Belirli bir minimum en boy oranını zorunlu kılan tüm tedaviler için kalkan.

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

android:minAspectRatio öğesini etkinlik veya uygulama düzeyinde ayarlayın.

Uygulamaları optimize etme

Uygulamanızda en boy oranı kısıtlamaları ayarlamamalısınız. Uygulamanızın farklı ekran boyutlarını desteklediğinden emin olun. Uygulamanızın ekranda sahip olduğu alana göre farklı düzenleri desteklemek için pencere boyutu sınıflarını kullanın. Compose WindowSizeClass API ve View WindowSizeClass API'ye göz atın.

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

Bir en boy oranı kısıtlaması belirtin veya PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

YALNIZCA OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_

Yalnızca dikey yöne sahip etkinlikler için belirli bir minimum en boy oranını zorlayan işlemleri kısıtlar. Varsayılan olarak etkindir ve yalnızca OVERRIDE_MIN_ASPECT_RATIO politikası da etkinse geçerli olur.

Uygulamalar, geçersiz kılma ile nasıl aynı sonucu 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 kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_MİN_ASPECT_RATIO_ORTA

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

Uygulamalar, geçersiz kılma ile nasıl aynı sonucu 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 kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı 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 nasıl aynı sonucu 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 kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı 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. Uygulamaya, bölünmüş ekran modunda sinemaskoptan kaçınarak mevcut tüm alanı kullanma izni verir.

Uygulamalar, geçersiz kılma ile nasıl aynı sonucu 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 kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN

Mevcut tüm ekran alanını kullanmak için dikey tam ekranda minimum en boy oranı geçersiz kılmasını devre dışı bırakır.

Uygulamalar, geçersiz kılma ile nasıl aynı sonucu 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 kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT

Paketteki tüm etkinlikler için dikey yönü etkinleştirir. OVERRIDE_ANY_ORIENTATION etkinleştirilmediği sürece, 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 nasıl aynı sonucu 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, yapılandırma değişikliğidir. Bu değişiklik iki yolla yapılabilir: sistemin uygulamayı kaldırmasına ve yeniden oluşturmasına izin verme veya yapılandırma değişikliklerini kendi başınıza yönetme. Yapılandırma değişikliklerini kendiniz yönetiyorsanız uygulama durumunu bir ViewModel kullanarak koruyabilirsiniz. Çok nadir durumlarda, yönü yalnızca küçük ekranlarda kilitlemeye karar verebilirsiniz. Ancak bunu yaptığınızda ölçeklenmeyebilir ve kullanıcının uygulamayı gerektiğinde döndürmesine izin verebilirsiniz. Android 12L ve sonraki sürümlerde sabit yön, cihaz yapılandırması tarafından geçersiz kılınabilir. Yapılandırma değişikliklerini işleme ve tüm yönleri destekleme hakkında daha fazla bilgi için Yapılandırma değişikliklerini işleme, ViewModel'e genel bakış ve Uygulama yönü telefonlarda kısıtlanmış ancak büyük ekranlı cihazlarda kısıtlanmaz başlıklı makalelere bakın.

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

PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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_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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR

Paketteki tüm etkinlikler için nosensör yönünü etkinleştirir. OVERRIDE_ANY_ORIENTATION etkinleştirilmediği sürece, 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 nasıl aynı sonucu elde edebilir?

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

Uygulamaları optimize etme

İlgili konu: OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT.

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

PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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_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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE

Paketteki tüm etkinlikler için reverseLandscape yönünü etkinleştirir. OVERRIDE_ANY_ORIENTATION etkinleştirilmediği sürece, 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 nasıl aynı sonucu elde edebilir?

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

Uygulamaları optimize etme

İlgili konu: OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT.

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

PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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_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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_ANY_ORIENTATION

Herhangi bir yönü geçersiz kılmak için OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR ve OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE geçersiz kılmalarına izin verir.

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

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

Uygulamaları optimize etme

İlgili konu: OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT.

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

PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA

OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR ve OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE geçersiz kılma sınırları, yalnızca kamera bağlantısı etkin olduğunda geçerli olacak şekilde geçersiz kılınır.

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

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

Uygulamaları optimize etme

İlgili konu: OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT.

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

PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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_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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION

Aşağıdaki koşullar karşılandığında görüntü yönünü yatay doğal yönle kısıtlar:

  • Etkinlik tam ekran olarak görüntüleniyor
  • Devre dışı bırakma bileşen özelliği PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE etkin değil
  • Cihaz üreticisinin yön isteğini yoksayma ayarı ekran için etkinleştirildi
  • Ekranın doğal yönü yataydır

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

Geçerli değil. Sorunun, uygulama mantığında çözülmesi gerekir.

Uygulamaları optimize etme

İlgili konu: OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT.

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

PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION

Uygulama yeniden başlatılırken veya kamera uyumlu muamelesi etkin olduğunda Activity#setRequestedOrientation() uygulamasının çağrısına yanıt olarak uygulama yönünü güncellemeyi atlayan uyumluluk politikasını etkinleştirir.

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

PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION özellik işaretini doğru olarak ayarlayın.

Uygulamaları optimize etme

İlgili konu: OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT.

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

PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED

Bir etkinlik sabit yön için sinemaskop değilse Activity#setRequestedOrientation() uygulamasını bir saniyede ikiden fazla kez çağıran uygulamaya yanıt olarak uygulamanın istenen yönünü yok sayan uyumluluk politikasını etkinleştirir.

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

Geçerli değil. Sorunun, uygulama mantığında çözülmesi gerekir.

Uygulamaları optimize etme

İlgili konu: OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT.

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

PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_RESPECT_REQUESTED_ORIENTATION

Paketler, cihaz üreticileri tarafından bir görüntüleme alanına veya ekranın tamamına etkinleştirilebilen yön yoksayma isteği davranışından hariç tutulur.

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

Geçerli değil. Sorunun, uygulama mantığında çözülmesi gerekir.

Uygulamaları optimize etme

İlgili konu: OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT.

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

Devre dışı bırakma yok. Uygulama, cihaz üreticisinin yön isteğini yoksayma ayarının etkin olduğu bir cihazla uyumlu değilse geçersiz kılmanın devre dışı bırakılması tehlikeli olabilir. Geçersiz kılmayı devre dışı bırakmak için Android Geliştirici İlişkileri ile iletişim kurun.

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

Bu geçersiz kılma işlemi için özellik bayrağı 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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

ASLA_SANDBOX_DISPLAY_APIS

Paketlerin, sinemaskoplu veya boyut uyumluluk modu etkinliklerinde hiçbir zaman Display API korumalı alanı uygulanmasını zorunlu kılar. Display API'leri, görüntüleme alanı sınırları sağlamaya devam eder

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

android:resizeableActivity manifest özelliğini true veya android.supports_size_changes meta veri işaretini doğru olarak ayarlayarak etkinlikleri yeniden boyutlandırılabilir olarak bildirin.

Uygulamaları optimize etme

Tamamen yeniden boyutlandırılabilir olduğunu beyan eden uygulamalar, kullanıcı arayüzü öğelerini konumlandırmak için hiçbir zaman görüntüleme boyutunu temel almamalıdır. Uygulamanızı, WindowMetrics sağlayan güncel API'lere taşıyın. Jetpack Compose'u kullanıyorsanız uygulamanın mevcut ekranda ne kadar ekran alanına sahip olduğuna göre kullanıcı arayüzünü çizmek için WindowSizeClass API'sinden yararlanın. Farklı ekran boyutlarını destekleme başlıklı makaleyi inceleyin.

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

Devre dışı bırakma yok. Kullanımdan kaldırılan API'lerden geçiş yapın.

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

Bu geçersiz kılma işlemi için özellik bayrağı 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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

HER ZAMAN_SANDBOX_DISPLAY_APIS

Aralık modu ne olursa olsun, paketlerin her zaman Display API korumalı alanı uygulanmasını zorunlu kılar. Display API'leri her zaman uygulama sınırlarını sağlar.

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

android:resizeableActivity özelliğini yanlış veya android.supports_size_changes meta veri işaretini false (yanlış) değerine ayarlayarak etkinlikleri yeniden boyutlandırılamaz olarak bildirin.

Uygulamaları optimize etme

Tamamen yeniden boyutlandırılabilir olduğunu beyan eden uygulamalar, kullanıcı arayüzü öğelerini konumlandırmak için hiçbir zaman görüntüleme boyutunu temel almamalıdır. Uygulamanızı, WindowMetrics sağlayan güncel API'lerden kullanımdan kaldırılan API'lerden taşıyın. İlgili konu: WindowMetricsCalculator.

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

Devre dışı bırakma yok. Kullanımdan kaldırılan API'lerden geçiş yapın.

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

Bu geçersiz kılma işlemi için özellik bayrağı 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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS

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

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

Cihaz görüntüsü sınırları ve cihaz ekranına göre ofsetler yerine uygulama penceresinin sınırlarını ve uygulama penceresine göre ofsetleri sağlayan API'leri kullanarak uygulama kodundaki sorunu çözün.

Uygulamaları optimize etme

Uygulamalar, uygulamaya sinemaskop ve çoklu pencere modunun uygulanma olasılığını dikkate alarak View API'lerini kullanmalıdır. Bkz. WindowMetricsCalculator.

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

PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

Rotasyonu zorla devre dışı bırakır. Bazı uygulamalardaki kullanıcı deneyimini iyileştirir.

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

PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION özellik işaretini yanlış olarak ayarlayın.

Uygulamaları optimize etme

Önbelleğe alınan kamera sensörü yönüne veya cihaz bilgilerine güvenmeyin. Kamera uyumluluğuyla ilgili yardım için Kamera Vizörü ile tanışın ve Kamera uygulamanızda yeniden boyutlandırılabilir yüzeyleri destekleme konularına bakın.

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

PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION özellik işaretini doğru olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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ı

Zorunlu rotasyonu kaldıran geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

Zorunlu rotasyonun 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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH

Zorunlu rotasyondan sonra etkinlik yenilemesini devre dışı bırakır. Yenileme, durum kaybına neden olduğunda uygulamalarda kullanıcı deneyimini iyileştirir.

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

PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH özellik işaretini yanlış olarak ayarlayın.

Uygulamaları optimize etme

Önbelleğe alınan kamera sensörü yönüne veya cihaz bilgilerine güvenmeyin. Kamera uyumluluğuyla ilgili yardım için Kamera Vizörü ile tanışın ve Kamera uygulamanızda yeniden boyutlandırılabilir yüzeyleri destekleme konularına bakın.

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

PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH özellik işaretini doğru olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 izin veren geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>

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

OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_DURAKLATMA

Kamera uyumluluğu kuvveti rotasyonundan sonra onResume()onStop()onResume() yerine onResume()onPause()onResume() döngüsünü kullanarak etkinlik yenilemesi yapmak için uygulanan paketleri yapar.

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

PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE özellik işaretini doğru olarak ayarlayın.

Uygulamaları optimize etme

Önbelleğe alınan kamera sensörü yönüne veya cihaz bilgilerine güvenmeyin. Kamera uyumluluğuyla ilgili yardım için Kamera Vizörü ile tanışın ve Kamera uygulamanızda yeniden boyutlandırılabilir yüzeyleri destekleme konularına bakın.

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

PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT

Dikey kameranın yönü cihazın doğal yönüyle aynı hizada olmadığında kamera çıkışının ters yönde kırpılmasını zorunlu kılar. Birçok uygulama bu durumu halletmez, aksi takdirde uzatılmış resimler görüntüler.

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

PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT özellik işaretini doğru olarak ayarlayın.

Uygulamaları optimize etme

Önbelleğe alınan kamera sensörü yönüne veya cihaz bilgilerine güvenmeyin. Kamera uyumluluğuyla ilgili yardım için Kamera Vizörü ile tanışın ve Kamera uygulamanızda yeniden boyutlandırılabilir yüzeyleri destekleme konularına bakın.

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

PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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ırpmasını uygulayan geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

İç ön kamera kırpmasını kaldıran geçersiz kılmayı kaldırmak için:

adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

Not: Komutlar yalnızca geçici olarak uygulanır veya geçersiz kılmayı 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). Uygulamalar, tam ekran görüntüsü almaya zorlamak ve kullanıcı gizliliğini tehlikeye atmak için createConfigForDefaultDisplay() API'yi kötüye kullandığında ve pencere modu ne olursa olsun, tam ekran modunda yakalanan ancak uygulama ekran paylaşımı kapsamayan tüm uygulamaların bildirimlerinin içeriklerini açığa çıkararak uygulanır.

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

Varsayılan medya projeksiyon davranışına (Android 14, API düzeyi 34'te createScreenCaptureIntent() ile uygulanır) izin verilir. Bu, kullanıcıların pencere modundan bağımsız olarak tam ekranı mı yoksa tek uygulama penceresini mi paylaşacağına karar verebilmesini sağlar. Alternatif olarak createScreenCaptureIntent(MediaProjectionConfig) yöntemini, createConfigForUserChoice() öğesine yapılan bir çağrıdan döndürülen MediaProjectionConfig bağımsız değişkeniyle çağırabilirsiniz.

Uygulamaları optimize etme

Kullanıcıların, medya projeksiyonu sırasında cihaz ekranının tamamını mı yoksa bir uygulama penceresini mi paylaşacağını seçmesine izin verilir. Bu, Android 14'ten itibaren varsayılan davranıştır.

Uygulamanızı, çoklu pencere modunu destekleyecek şekilde yeniden boyutlandırılabilir (resizeableActivity="true") hale getirin.

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

Kullanıcı gizliliğinin ciddiyeti nedeniyle, uygulamanız bu geçersiz kılmayı devre dışı bırakamaz veya devre dışı bırakamaz.

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

Yok.

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

Uygulamanın kısmi ekran paylaşımını devre dışı bırakmasını (yani kısmi ekran paylaşımını etkinleştirir) iptal eden geçersiz kılmayı uygulamak için:

adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

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

adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

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

OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS

Bölünmüş ekran modunda odaklanmamış uygulamalar için sahte odaklama özelliğini etkinleştirir. Bazı oyun motorları, uygulamanın içeriğini çizmeden önce odaklanmak için bekler. Bu yüzden, sahte odaklama, devam ettirildiğinde ve henüz odaklanmadıklarında uygulamaların karartılmamasını önler.

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

PROPERTY_COMPAT_ENABLE_FAKE_FOCUS özellik işaretini doğru olarak ayarlayın.

Uygulamaları optimize etme

Uygulamanız birden çok yönü ve yapılandırma değişikliklerini iyi bir şekilde işliyorsa bu sorundan kaçınabilirsiniz. Büyük ekran uygulama kalitesi yönergelerini uygulayarak uygulamanızı büyük ekrana hazır hale getirin.

Unity oyun motorunu çalıştırıyorsanız 2019.4.40 veya daha yeni bir sürüme yükseltip oyununuzu tekrar dışa aktarın. Android Oynatıcı ayarlarında Resizable Window seçeneğini işaretli bırakın.

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

PROPERTY_COMPAT_ENABLE_FAKE_FOCUS özellik işaretini yanlış olarak ayarlayın.

Geçersiz kılmayı ayarlamak için kullanılan ö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 yalnızca geçici olarak uygulanır veya geçersiz kılmayı kaldırır.

Ek kaynaklar