Cihaz uyumluluk modu

Android, yön veya kullanılabilirlik kısıtlamaları belirten uygulamalar için bir uyumluluk modu etkinleştirir. Uyumluluk modu, büyük ekranlı cihazlarda ve katlanabilir kapaklı telefonlarda kabul edilebilir uygulama davranışı sağlar ancak bu modda kullanım deneyimi ideal değildir.

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

Referans cihazlar

Aşağıdaki cihazlarda, sıra dışı yapılandırmalar veya uygulamalar tarafından iyi desteklenmeyen yapılandırmalar nedeniyle uygulama başına geçersiz kılma gerekebilir:

  • Tabletler: Pixel Tablet gibi bazı tabletlerin doğal yönü yataydır. Display#getRotation() Surface.ROTATION_0 değerini döndürdüğünde cihaz doğal yöndedir. Uygulamalar ROTATION_0 değerinin dikey olduğunu varsayarsa uygulama düzenleri ve kamera önizlemesi cihaz ekranıyla eşleşmeyebilir.
  • Yatay katlanabilir cihazlar: Pixel Fold gibi bazı katlanabilir cihazlar katlandığında dikey, açıldıklarında ise yatay yöndedir. Uygulamalar, katlanmış cihazın yönü dikey olarak kabul ederse titreme döngüleri veya düzen sorunları oluşabilir.
  • Katlanabilir katlanabilir telefonlar: Katlanmamış durumdaki döner telefonlar genellikle dikey yöndedir. Ancak katlanmış durumdayken telefonlarda genellikle yatay yönde küçük bir ekran bulunur. Uygulamalar, ekranların farklı yönlerini tanımlamalı ve bunlara uyum sağlamalıdır.

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

Uygulamalarda uyumluluk sorunları çoğunlukla uygulama yönü kısıtlamaları, yeniden boyutlandırılabilirlik ve en boy oranı kısıtlamaları, kamera önizleme yönünün yanlış kullanımı ve hatalı API'ler nedeniyle yaşanır.

Sinemaskop

Sinemaskop, uygulamayı ekranın ortasına veya büyük ekranlarda kolay erişim için bir kenara yerleştirir. Mat renkler (tek renkli çubuklar veya bulanık duvar kağıdı), uygulamanın yanlarındaki ya da üst ve alt kısmındaki kullanılmayan ekran alanını doldurur.

Cihaz ekranının boyutları ve en boy oranı genellikle çoğu uygulamanın tasarlandığı standart telefonlardan farklı olduğundan, sinemaskop genellikle büyük ekranlı cihazlarda görülür.

Şekil 1. Dikey yönde kullanıma kısıtlanmış uygulamalar, yatay tablet ve katlanabilir cihazlarda sinemaskop biçiminde gösterilir.

Sorun

Uygulama sabit yön ve sabit en boy oranına sahip olduğu veya yeniden boyutlandırılamayan olduğu için tüm ekran yapılandırmalarını desteklemez.

Uygulamanın yönünü ve yeniden boyutlandırılabilirliğini 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ı farklı boyutlardaki pencerelere sığacak şekilde yeniden boyutlandırıp boyutlandıramayacağını 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 (kompakt pencere boyutu sınıfı) ç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 (orta veya genişletilmiş pencere boyutu sınıfı) destekler.

  • maxAspectRatio: Uygulama tarafından desteklenen maksimum en boy oranını belirtir. Yalnızca resizeableActivity false olarak ayarlanmış uygulamalar maxAspectRatio ayarlayabilir.

  • minAspectRatio: Uygulamanın desteklediği minimum en boy oranını belirtir. Yalnızca resizeableActivity değeri false olarak ayarlanmış uygulamalar minAspectRatio değerini ayarlayabilir.

Optimizasyon

Uygulama, tüm cihaz ve çoklu pencere modu ekran yönlerini ve 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.

Uyumluluk geçici çözümü

Sabit yönü veya sabit en boy oranına sahip bir uygulama, uygulamanın doğrudan pencere boyutunu veya yönünü desteklemediği bir pencerede çalışıyorsa Android, devamlılığı korumak için uygulamayı sinemaskopa dönüştürür.

Platform, Android 12 (API düzeyi 31) ve 12L (API düzeyi 32) sürümlerinden itibaren sinemaskoplu uygulamalara çeşitli iyileştirmeler uygulamaktadır. Cihaz üreticileri kullanıcı arayüzü iyileştirmelerini uygular. Uygulamanızın iyileştirmelerden yararlanması için başka bir geliştirme yapmanız gerekmez.

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

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

Şekil 2. Kullanıcı arayüzü iyileş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 uygulamayı ekranın sol veya sağ tarafına yerleştirerek etkileşimi kolaylaştırabilir.

  • Yeniden tasarlanmış yeniden başlatma düğmesi: Cihaz üreticileri, boyut uyumluluk modu için yeniden başlatma düğmesine, kullanıcıların daha iyi tanınması için yeni bir görünüm kazandırabilir.

Android 13 (API düzeyi 33), sinemaskoplu uygulamayı ekranda konumlandırma veya sinemaskopu bölünmüş ekran moduna dahil etme hakkında bir kullanıcı eğitimi iletişim kutusu ekler:

Ş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. Bu kontrol, kullanıcıların uygulamayı yeniden başlatmasına ve ekranı yeniden çizmesine olanak tanır. Android, boyutlandırılamaz olduğu belirlenen uygulamalar için boyut uyumluluğu modunu çağırır. Bir etkinlik, etkinliğin boyutlarıyla uyumlu olmayan bir ekran kapsayıcısına taşındığında sistem, cihaz ekranını en az bir boyutta dolduracak şekilde uygulamayı yeniden ölçeklendirebilir.

Boyut uyumluluğu modunu tetikleyebilecek cihaz yapılandırması değişiklikleri şunlardır:

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

Sorun

Boyut uyumluluk modu genellikle yön veya en boy oranı açısından kısıtlanmış ve yeniden boyutlandırılamaz olacak şekilde yapılandırılan (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 uyumluluğu moduna yerleştirilmez:

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

Optimizasyon

Uygulama tüm ekran boyutlarını desteklemelidir. Uygulama manifest'inde <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 Çok pencereli modu destekleme başlıklı makalelere bakın.

Uyumluluk geçici çözümü

Sistem, sinemaskoplu uygulamanın görüntüsünün, görüntüleme penceresini en az bir boyutta dolduracak şekilde yeniden ölçeklendirilerek iyileştirilebileceğini belirlediğinde Android, uygulamayı boyut uyumluluğu moduna geçirir. Sistem, uygulama sürecini yeniden oluşturan, etkinliği yeniden oluşturan ve ekranı yeniden çizen bir yeniden başlatma kontrolü gösterir. İş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 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 sonsuza kadar dönmesine neden olan sonsuz bir döngüye neden olabilir.

Sorun

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

Bir uygulamanın yön kısıtlamaları yoksayılıyorsa uygulama, Activity#setRequestedOrientation() yöntemini çağırarak yönünü programatik olarak ayarlayabilir. Uygulama yapılandırma değişikliklerini yönetmiyorsa çağrı, uygulamanın yeniden başlatılmasını tetikler (Yapılandırma değişikliklerini yönetme bölümüne bakın). Yeniden başlatma işleminden sonra uygulamanın yön kısıtlamaları tekrar yoksayılır, uygulama setRequestedOrientation() çağrısını tekrarlar, çağrı bir uygulama yeniden başlatmasını tetikler ve bu döngü devam eder.

Bu durumla karşılaşabileceğiniz bir başka yol da cihaz ekranının doğal yönünün (Android tarafından belirlendiği şekilde normal yön) yatay olmasıdır (yani cihaz yatay en boy oranına sahipken Display#getRotation() çağrısının Surface.ROTATION_0 döndürülmesidir). Geçmişte uygulamalar, Display.getRotation() = Surface.ROTATION_0 işlevinin cihazın dikey yönde olduğu anlamına geldiğini varsayıyordu. Ancak bu durum, örneğin bazı katlanabilir cihazların iç ekranında ve bazı tabletlerde böyle bir durum değildir.

Katlanabilir iç ekranda yatay yönde bulunan bir uygulama, ekran döndürmeyi kontrol edebilir, ROTATION_0 değeri alabilir, cihazın doğal yönünün dikey olduğunu varsayabilir ve uygulama düzenini yeniden yapılandırmak için setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ) çağırabilir. Uygulama yeniden başlatıldıktan sonra (yatay yönde), ekran dönüşünü tekrar kontrol edebilir, ROTATION_0 değerini alabilir, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) işlevini çağırabilir ve sonsuz döngüye devam edebilir.

Optimizasyon

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

  • Yönlendirme isteği, ele alınmayan yapılandırma değişiklikleri nedeniyle beklenmedik bir şekilde tetiklenebileceğinden onCreate() etkinliğinde 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önlendirmeyi, mevcut pencere boyutuyla ilgili olmayan sinyallere (ör. Display#getRotation(), FoldingFeature varlığı veya desteği sonlandırılmış API'ler) göre ayarlayın.

Uyumluluk geçici çözümü

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

Kamera önizleme

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

Sorun

Android Uyumluluk Tanımlama Belgesi'nde, kamera görüntü sensörünün, "kameranın uzun boyutunun ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmesi ZORUNLUDUR" ifadesi belirtilir.

Uygulamalar genellikle cihaz yönünü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 ve dizüstü bilgisayarların doğal yönü ile kamera sensörleri yatay olabilir. Ayrıca, katlanabilir cihazlar gibi yeni form faktörlerinin birden fazla doğal yönü ve farklı yönlerde birden fazla kamera sensörü olabilir.

Bir etkinliği, uygulamanın beklemediği bir kamera yönü ile başlatmak veya farklı kameralar ya da cihaz ekranları (katlanabilir cihazlar için) arasında geçiş yapmak, kamera önizlemesinin yanlış hizalanmasına veya bozulmasına neden olabilir.

Optimizasyon

Kamera uygulamalarının doğru şekilde hizalı ve ölçeklendirilmiş bir 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 cihaz dönüşünü, sensör dönüşünü ve ekran veya pencere en boy oranını hesaplamalı, ardından sonuçları kamera önizlemesine uygulamalıdır. Ayrıntılı rehberlik için Kamera önizlemesi ve Kamera Vizöre Giriş başlıklı makaleleri inceleyin.

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

Display#getRotation() Surface.ROTATION_0 döndüğünde cihaz doğal yöndedir. Sistem, CameraCharacteristics.SENSOR_ORIENTATION değerini cihazın doğal yönelimine göre hesaplar. Android, dikey kısıtlanmış uygulamaların dikey penceresini cihazın doğal yönüne hizalar. Bu, çoğu uygulamanın beklediği yöndür. Android, sensör yönü yatay ve kamera önizlemesi dikey olduğunda kamera sensörü görüntüsünü de kırpar. Belirli geçici çözümler şunlardır:

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

    Kameraya dikey olarak kısıtlanmış bir uygulama bağlandığında Android, uygulama dikey penceresini cihazın doğal yönüyle hizalamak için uygulamayı zorla döndürür.

    Bazı tabletlerde (referans cihazlara bakın) uygulama dikey penceresi, cihazın doğal yönüyle uyumlu olması için tam ekran dikey moda döndürülür. Uygulama, zorla döndürmeden sonra ekranın tamamını kaplar.

    Katlanabilir cihazların yatay iç ekranında (referans cihazlara bakın), yalnızca dikey etkinlikler, katlanmış cihazın doğal yönü ile uyumlu olması için yatay olarak döndürülür. Uygulama, zorla döndürüldükten sonra sinemaskop efektiyle gösterilir.

  • İç ön kamera kırpma: Bazı katlanabilir cihazlardaki iç ön kamera sensörü yatay yöndedir. Android, katlanabilir iç ekranda kamera önizlemesini zorla döndürmenin yanı sıra sensörün cihaz yönünün tersine bir görüntü yakalaması için iç ön (yatay) kameranın görüş alanını kırpar.

  • Kamera önizlemelerini zorla yenileme: Sistem, kamera önizlemesinin düzgün şekilde gösterilmesini sağlamak için zorla döndürme işleminden sonra onStop() ve onStart() (varsayılan olarak) veya onPause() ve onResume() (uygulama başına geçersiz kılma olan OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE tarafından uygulanır) etkinlik yöntemleri arasında geçiş yapar.

  • En boy oranı ölçeklendirme: Sistem, döndürülen kuvvetin döndürdüğü kamera önizlemesinin en boy oranını daha yüksek bir minimum en boy oranına dinamik olarak değiştirir. Bu sayede, kamera önizlemesinin doğru şekilde ölçeklendirilmesi sağlanır.

Uygulama geliştiriciler, kamera önizlemesini doğru şekilde ele alıyorlarsa bu geçici çözümleri geçersiz kılabilir. Uygulama bazında geçersiz kılmalar konusuna bakın.

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

Android, çoklu pencere modu ve katlanabilir cihazlar gibi özellikler için destek ekledikçe eski API'lerin desteği sonlandırıldı ve tüm ekran boyutları ve cihaz form faktörleri için çalışan güncel API'lerle değiştirildi. Ancak desteği sonlandırılan API'ler geriye dönük uyumluluk için kullanılabilir durumdadır.

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

Sorun

Geliştiriciler desteği sonlandırılan Display API'lerini kullanmaya devam ediyor ve API'lerin cihaz görüntüleme alanı sınırları yerine uygulama sınırlarını döndürdüğünü varsayıyor. 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 kullanabilir. Sonuç olarak, uygulama penceresi yeniden boyutlandırma etkinliklerinden sonra kullanıcı arayüzü öğeleri yeniden konumlandırılırken yanlış hesaplamalar yapılır ve düzen sorunları ortaya çıkar.

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

Daha fazla bilgi için Çoklu pencere modunu destekleme başlıklı makaleyi inceleyin.

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. Uygulamanızı aşağıdaki WindowManager API'leri de dahil olmak üzere WindowMetrics tabanlı API'lere taşıyın:

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

Desteği sonlandırılmış Display API'leri ve kötüye kullanılan View API'leri, uygulama sınırlarını döndürmek için iki geçersiz kılma ile ayarlanır: 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.MaterialComponents.Dialog gibi iletişim kutularıyla ilgili temalar, etkinlikleri şeffaf hale getiren stiller içerebilir.

Şeffaf etkinlikler, mevcut ekran alanının tamamını kaplamaz. Mevcut ekran alanı, cihaz rotasyonu, cihazın katlanması ve açılması ve çoklu pencere modu gibi yapılandırma değişikliklerine bağlı olarak değişebileceğinden bu etkinliklerin yönetimi zordur.

Sorun

Şeffaf bir etkinlik, görev etkinliği yığınındaki şeffaf etkinliğin altındaki ilk opak etkinliğin sınırlarına uygun olmalıdır. Ancak izin iletişim kutusunu başlatan opak bir etkinlik trampoline (başka bir etkinliği başlatıp kaybolan bir etkinlik) olabilir. Bu nedenle sistem, şeffaf izin iletişim kutusu etkinliğini başlatan trampoline etkinliğinin sınırlarını belirleyemez.

Optimizasyon

Şeffaf etkinlikler, kısıtlamalarını bir görevin etkinlik yığınının altında bulunan en üst opak etkinlikten devralır. Opak etkinlik, etkinlik oluşturmadan yok etmeye kadar şeffaf etkinliğin tüm yaşam döngüsü boyunca kullanılabilir olmalıdır. Bu nedenle, atlama tahtası etkinliklerinden izin istekleri başlatmayın.

Bir trampolin etkinliği izin isteği başlatırsa kullanıcı, trampolin etkinliği kullanıcının iletişim kutusuna yanıt verme şansı bulamadan önce kaldırılacağı ve iletişim kutusu etkinliğinin boyutları ile konumu yanlış hesaplanmış olabileceği için izin iletişim kutusunu göremeyebilir.

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

Yuvarlatılmış köşeler

Bir etkinlik, arka plan şeffaflığını belirten bir stil nedeniyle veya etkinliğin içeriği mevcut ekran alanını doldurmadığı için şeffaf olabilir. Şeffaf bir etkinlik, mevcut görüntüleme alanını doldurursa cihaz üreticisi tarafından yapılandırıldığında sistem, etkinliğe otomatik olarak yuvarlatılmış köşeler uygular. Ancak şeffaf bir etkinlik (izin iletişim kutusu gibi) mevcut alanı doldurmuyorsa yuvarlatılmış köşeler uygulayıp uygulamama kararı size kalmıştır.

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

Uyumluluk geçici çözümü

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

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

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

Unity oyunları

Unity oyunları Android'de tam ekran veya çoklu pencere modunda çalışır. Bununla birlikte, birçok Unity oyunu çoklu pencere moduna alındığında odağını kaybediyor ve içerik çizmeyi bırakıyor.

Sorun

Unity, Android'de çoklu pencere modunu desteklemek için Unity 2019.4'e Resizable Window seçeneği ekledi. Ancak ilk uygulama, çoklu pencere modunda etkinlik yaşam döngüsüne doğru bir şekilde tepki vermemiştir. Bu da, uygulama odağı kaybettiğinde UnityPlayer'ın oynatmayı askıya almasına neden olmuştur. Oynatıcı, siyah ekran veya oyunun donmuş son karesini oluşturdu. Oyun yalnızca kullanıcı ekrana dokunduğunda devam ediyordu. Unity motorunu kullanan birçok uygulama bu sorunla karşılaşır ve çok 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. Android Oynatıcı ayarlarında Resizable Window seçeneğini işaretli tutun. Aksi takdirde, oyun çoklu pencere modunda tamamen görünür olsa bile odakta olmadığında duraklatılır.

Uyumluluk geçici çözümü

Cihaz üreticileri, çoklu pencere modundaki bir uygulamaya sahte odaklanma etkinliği sağlamak için uygulama başına OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS geçersiz kılma özelliğini uygulayabilir. Geçersiz kılma, etkinliğin içeriği yeniden çizmesini ve karartılmamasını sağlar.

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:

Sinemaskop

Her etkinliğin, uygulamanın kullanabileceği tüm ekran alanını kullanabildiğini doğrulayın. İlk olarak, 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 ve hedef etkinliğin sinemaskop olmadığından emin olmak için bir test çalıştırın:

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 etkinliklerinin uygulama için kullanılabilen ekran alanının tamamı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 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, FORCE_RESIZE_APP geçersiz kılması, uygulama manifest dosyasında resizeableActivity="false" belirtilmiş olsa bile sisteme boyut uyumluluk modunu atlama ve uygulamayı ekran boyutlarına sığacak şekilde yeniden boyutlandırma talimatı verir.

Cihaz üreticileri, belirli büyük ekranlı cihazlardaki belirli uygulamaları veya tüm uygulamaları geçersiz kılar. Android 14 (API düzeyi 34) ve sonraki sürümlerde kullanıcılar, cihaz ayarları üzerinden uygulamalara geçersiz kılma uygulayabilir.

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

Android 14 ve sonraki sürümlerde, kullanıcıların uygulamaların en boy oranını değiştirmesine olanak tanıyan bir ayarlar menüsü bulunur. Referans cihazlar gibi büyük ekranlı cihazlar menüyü uygular.

Menüde, cihaza yüklü tüm uygulamaların listesi yer alır. Kullanıcılar bir uygulama seçip uygulamanın en boy oranını 3:4, 1:1, tam ekran veya cihaz üreticisi tarafından yapılandırılan başka bir değere ayarlar. Kullanıcılar ayrıca, en boy oranını uygulama manifestinde belirtilen uygulama varsayılanına sıfırlayabilirler.

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ğu geçersiz kılma özelliğini devre dışı bırakmak için özelliği uygulamanızın manifest dosyasına 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 uygulamalar listesinden çıkarılır. Kullanıcılar, uygulamanın en boy oranını geçersiz kılamaz.

    Mülkün true olarak ayarlanmasının hiçbir etkisi yoktur.

  • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE

    Kullanıcı en boy oranı uyumluluğu geçersiz kılma işleminin tam ekran seçeneğini devre dışı bırakmak için özelliği uygulama manifestinize ekleyin ve 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ılır. Kullanıcılar, tam ekran geçersiz kılma özelliğini uygulamanıza uygulayamaz.

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

Uygulamanızı tüm ekranlar için optimize edin: Uygulamanızda en boy oranı kısıtlamaları belirlemeyin. Mevcut ekran alanına göre farklı düzenleri desteklemek için pencere boyutu sınıflarını kullanın.

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

Cihaz üreticileri, belirli cihazlarda uygulama bazında geçersiz kılma işlemi uygular. Referans cihazlar, geçersiz kılmaların bazılarını varsayılan olarak çeşitli uygulamalara uygulayabilir.

Uygulamalar, çoğu geçersiz kılma işleminin kapsamı dışında kalmayı seçebilir (aşağıdaki Uygulama bazında geçersiz kılmalar tablosuna bakın).

Uyumluluk çerçevesini kullanarak, uygulamanızı geçersiz kılmaları etkinleştirerek veya devre dışı bırakarak test edebilirsiniz (Uyumluluk çerçevesi araçları bölümüne bakın). Etkinleştirildiğinde, geçersiz kılma işlemleri uygulamanın tamamı için geçerli olur.

Geçersiz kılmaları etkinleştirmek veya devre dışı bırakmak ve hangi geçersiz kılmaların uygulamanız için geçerli olduğunu belirlemek için Android Debug Bridge'i (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>

Referans cihazlar için uygulamanız için hangi geçersiz kılma işlemlerinin geçerli olduğunu kontrol edin:

adb shell dumpsys platform_compat | grep <package name>

Aşağıdaki tabloda, mevcut geçersiz kılma işlemlerinin yanı sıra uygulamanızın geçersiz kılma işlemlerine ihtiyaç duymaması için nasıl optimize edileceğine dair bilgiler verilmiştir. Bazı geçersiz kılma işlemlerini devre dışı bırakmak için uygulama manifest dosyanıza mülk işaretleri ekleyebilirsiniz.

Uygulama bazında geçersiz kılmalar
Tür Ad Kimlik Açıklama
Tabanı değiştirilebilir FORCE_RESIZE_APP 174042936 Yapılandırmaya yönelik değişikliklerde uygulama için boyut uyumluluğu modunu atlar.
FORCE_NON_RESIZE_APP 181136395 Yapılandırma değişikliklerinde uygulamayı boyut uyumluluğu moduna zorlar.
En boy oranı OVERRIDE_MIN_ASPECT_RATIO 174042980 Diğer en boy oranı geçersiz kılma işlemlerinin uygulanması için etkinleştirilmesi gereken Gatekeeper geçersiz kılma.
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_FULLSCREEN 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 Tüm yönleri geçersiz kılmayı sağlar.
OVERRIDE_ANY_ORIENTATION_TO_USER 310816437 Yön, yeniden boyutlandırılabilirlik ve en boy oranı kısıtlamalarını geçersiz kılar.
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 (cihazın doğal yönünü kullan) olarak geçersiz kılar.
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE 266124927 Yalnızca yatay uygulamaları 180 derece döndürür.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA 265456536 Yönlendirme 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 (kenarlıklı olduğunda 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 saniye içinde en az iki yeni yön istediğini algılarsa bunu sonsuz döngü olarak değerlendirir ve geçersiz kılma işlemini uygular.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION 236283604 Cihaz üreticisi yönü yoksayma isteği ayarını devre dışı bırakarak sinemaskopu önler.
Sandbox API'leri NEVER_SANDBOX_DISPLAY_APIS 184838306 Görüntülü reklam API'lerinin davranışının değiştirilmesini engeller.
ALWAYS_SANDBOX_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 uyumluluğu OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION 263959004 Zorunlu rotasyonu 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 yenilemeye geçirir. Bu, 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 devre dışı bırakılırsa iç ön kamera kırpma kaldırılır ve kamera önizlemesinin görüş alanı artırılır. 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_FOCUS 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ılma işleminin uygulandığı paketlerin yeniden boyutlandırılabilir olmasını sağlar. Uygulamanın çoklu pencere moduna yerleştirilip yerleştirilemeyeceğini değiştirmez ancak ekran yeniden boyutlandırıldığında uygulamanın boyut uyumluluk moduna girmeden yeniden boyutlandırma yapmasına izin verir.

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

Uygulama manifest'inde android:resizeableActivity özelliğini true olarak ayarlayın veya android:resizeableActivity=false ile çoklu pencere modunu devre dışı bırakırken yeniden boyutlandırmayı desteklemek için android.supports_size_changes meta veri işaretini true olarak ayarlayın.

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 bölümünü inceleyin.

Üzeriden yazma özelliğini devre dışı bırakma veya devre dışı bırakma

PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES mülk işaretini false olarak ayarlayın.

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ılma işlemini 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ılma işlemini yalnızca geçici olarak uygular veya kaldırır.

FORCE_NON_RESIZE_APP

Geçersiz kılma işleminin uygulandığı paketlerin boyutunun değiştirilemez olmasını ve yapılandırma değişikliklerinde boyut uyumluluğu moduna girmesini zorunlu kılar.

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

Uygulama manifest'inde hem android:resizeableActivity özelliğini hem de android.supports_size_changes meta veri işaretini false olarak ayarlayın ve bir yön veya en boy oranı kısıtlaması beyan edin.

Uygulamaları optimize etme

Boyutu değiştirildiğinde iyi çalışan tüm uygulamalarda android:resizeableActivity veya android.supports_size_changes, true olarak ayarlanmalıdır. Diğer uygulamalar, yeniden boyutlandırıldığında iyi çalışacak şekilde geliştirilmelidir. android:resizeableActivity özelliğine bakın.

Üzeriden yazma özelliğini devre dışı bırakma veya devre dışı bırakma

PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES mülk işaretini false olarak ayarlayın.

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ılma testini yapmak için adb komutları

Geçersiz kılma işlemini 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ılma işlemini yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_MIN_ASPECT_RATIO

Belirli bir minimum en boy oranını zorunlu kılan tüm geçersiz kılma işlemlerinin kapısı.

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

android:minAspectRatio değerini 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ını desteklediğinden emin olun. Uygulamanızın ekrandaki alanına göre farklı düzenleri desteklemek için pencere boyutu sınıfları kullanın. WindowSizeClass API'si oluşturma ve WindowSizeClass API'sini görüntüleme başlıklı makaleleri inceleyin.

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

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

Geçersiz kılma ayarını düzenleyecek mülk işaretleri

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

Geçersiz kılma testini yapmak 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

Yalnızca dikey yönlü etkinlikler için belirli bir minimum en boy oranını zorlayan uygulama ayarlarını kısıtlar. Varsayılan olarak etkindir ve yalnızca OVERRIDE_MIN_ASPECT_RATIO etkinse geçerli olur.

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

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

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ılma ayarını düzenleyecek mülk işaretleri

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılma testini yapmak 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_MEDIUM

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

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

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

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılma ayarını düzenleyecek mülk işaretleri

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılma testini yapmak 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?

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

Uygulamaları optimize etme

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

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

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

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

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

Geçersiz kılma testini yapmak 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. Uygulamanın, sinemaskop etkisini önlemek için bölünmüş ekran modunda mevcut alanın tamamını kullanmasına izin verir.

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

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Uygulamaları optimize etme

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

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

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

Geçersiz kılma ayarını düzenleyecek mülk işaretleri

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

Geçersiz kılma testini yapmak 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ılma işlemini yalnızca geçici olarak uygular veya 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ılma özelliğini devre dışı bırakır.

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

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

Uygulamaları optimize etme

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

Üzeri yazma özelliğini devre dışı bırakma veya devre dışı bırakma

Bkz. OVERRIDE_MIN_ASPECT_RATIO.

Geçersiz kılma ayarını düzenleyecek mülk işaretleri

OVERRIDE_MIN_ASPECT_RATIO konusuna bakın.

Geçersiz kılma testini yapmak 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

Aşağıdaki geçersiz kılma işlemlerinin tüm yönleri geçersiz kılmasına olanak tanır:

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önlendirme değişikliği, iki şekilde yönetilebilen bir yapılandırma değişikliğidir: Sistemin uygulamayı silip yeniden oluşturmasına izin verme veya yapılandırma değişikliklerini kendiniz yönetme. Yapılandırma değişikliklerini kendiniz yönetiyorsanız uygulama durumunu ViewModel kullanarak koruyabilirsiniz. Çok nadir durumlarda, yönü yalnızca küçük ekranlarda kilitleyebilirsiniz. Ancak bunu yapmak ölçeklenmeyebilir ve kullanıcının uygulamayı gerektiği gibi döndürmesine izin verebilir. Android 12L ve sonraki sürümlerde, cihaz yapılandırması sabit yönlendirmeyi geçersiz kılabilir. Yapılandırma değişikliklerini işleme ve tüm yönleri destekleme hakkında daha fazla bilgi edinmek için Yapılandırma değişikliklerini işleme, ViewModel'e genel bakış ve Uygulama yönü telefonlarda kısıtlanıp büyük ekranlı cihazlarda kısıtlanmaz.

Üzeriden yazma özelliğini devre dışı bırakma veya devre dışı bırakma

PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE mülk işaretini false olarak ayarlayın.

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ılma testini yapmak 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ılma işlemini 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. Uygulama manifestinde belirtilen tüm yön, kullanılabilirlik ve en boy oranı kısıtlamalarını geçersiz kılar. Ayrıca Activity#setRequestedOrientation() numarasına yapılan aramaları da yoksayar.

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

  • android:screenOrientation manifest özelliğini ayarlama veya özelliği "user" olarak ayarlama

  • android:resizeableActivity manifest özelliğini true olarak ayarlayın.

  • Küçük ekranlarda, android:resizeableActivity=false ile çoklu pencere modunu devre dışı bırakırken uygulama boyutlandırmasını desteklemek için android.supports_size_changes meta veri işaretini true olarak ayarlayın. minAspectRatio ve maxAspectRatio'yi ayarlamayın.

Uygulamaları optimize etme

Uygulamanızın tüm yönleri desteklemesini sağlayın; uygulamanızın manifest dosyasında screenOrientation spesifikasyonu ayarlamayın. Uygulamanızın manifest dosyasındaki android:resizeableActivity özelliğini true olarak ayarlayarak uygulama yeniden boyutlandırılabilirliği, çoklu pencere modunu ve tüm ekran en boy oranlarını destekleyin. Farklı ekran boyutlarını destekleme başlıklı makaleyi inceleyin.

Üzeriden yazma özelliğini devre dışı bırakma veya devre dışı bırakma

OVERRIDE_ANY_ORIENTATION adresine göz atın.

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

OVERRIDE_ANY_ORIENTATION adresine göz atın.

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. 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 aynı sonucu nasıl elde edebilir?

OVERRIDE_ANY_ORIENTATION sayfasını inceleyin.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION adresine göz atın.

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

OVERRIDE_ANY_ORIENTATION adresine göz atın.

Geçersiz kılma ayarını düzenleyecek mülk işaretleri

OVERRIDE_ANY_ORIENTATION sayfasını inceleyin.

Geçersiz kılma testini yapmak 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

Paketteki tüm etkinlikler için nosensor 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 aynı sonucu nasıl elde edebilir?

OVERRIDE_ANY_ORIENTATION sayfasını inceleyin.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION sayfasını inceleyin.

Üzeriden yazma özelliğini devre dışı bırakma veya devre dışı bırakma

OVERRIDE_ANY_ORIENTATION adresine göz atın.

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

OVERRIDE_ANY_ORIENTATION adresine göz atın.

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ılma işlemini yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE

Paketteki tüm aktiviteler 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 aynı sonucu nasıl elde edebilir?

OVERRIDE_ANY_ORIENTATION adresine göz atın.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION adresine göz atın.

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

OVERRIDE_ANY_ORIENTATION adresine göz atın.

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

OVERRIDE_ANY_ORIENTATION adresine göz atın.

Geçersiz kılma testini yapmak 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ılma işlemini yalnızca geçici olarak uygular veya 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 sınırları yalnızca kamera bağlantısı etkin olduğunda geçerli olacak şekilde geçersiz kılar.

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

OVERRIDE_ANY_ORIENTATION adresine göz atın.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION adresine göz atın.

Üzeri yazma özelliğini devre dışı bırakma veya devre dışı bırakma

OVERRIDE_ANY_ORIENTATION adresine göz atın.

Geçersiz kılma ayarını düzenlemek için mülk işaretleri

OVERRIDE_ANY_ORIENTATION sayfasını 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ılma işlemini yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION

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

  • Etkinlik tam ekranda
  • Kapsam dışında bırakma bileşen özelliği PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE etkin değil
  • Cihaz üreticisinin yönü yoksayma isteği ayarı ekran için etkin
  • 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 sayfasını inceleyin.

Üzeri yazma özelliğini devre dışı bırakma veya devre dışı bırakma

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

Geçersiz kılma ayarını düzenleyecek mülk işaretleri

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

Geçersiz kılma testini yapmak 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ılma işlemini yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION

Uygulama yeniden başlatılırken veya etkin bir kamera uyumluluğu ayarı varsa uygulamanın Activity#setRequestedOrientation() çağrısına yanıt olarak uygulama yönünü güncelleme işlemini atlayan uyumluluk politikasını etkinleştirir.

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

PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION mülk işaretini true olarak ayarlayın.

Uygulamaları optimize etme

OVERRIDE_ANY_ORIENTATION adresine göz atın.

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

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

Geçersiz kılma ayarını düzenlemek için mülk işaretleri

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

Geçersiz kılma testini yapmak 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ılma işlemini yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED

Bir etkinlik sabit yön için sinemaskoplu değilse uygulamanın Activity#setRequestedOrientation() çağrısını bir saniye içinde iki defadan fazla yapmasına yanıt olarak uygulamanın istenen yönünü yok sayan uyumluluk politikasını etkinleştirir.

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 adresine göz atın.

Üzeri yazma özelliğini devre dışı bırakma veya devre dışı bırakma

PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED mülk işaretini false olarak ayarlayın.

Geçersiz kılma ayarını düzenleyecek mülk işaretleri

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

Geçersiz kılma testini yapmak 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ılma işlemini yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_RESPECT_REQUESTED_ORIENTATION

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

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 adresine göz atın.

Üzeri yazma özelliğini devre dışı bırakma veya devre dışı bırakma

Devre dışı bırakmak mümkün değil. Uygulama, cihaz üreticisinin yönü yoksayma ayarı etkin olan bir cihazla uyumlu değilse geçersiz kılma özelliğini devre dışı bırakmak tehlikeli olabilir. Geçersiz kılmayı devre dışı bırakmak için Android Geliştirici İlişkileri ile iletişime geçin.

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.

NEVER_SANDBOX_DISPLAY_APIS

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

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

android:resizeableActivity manifest özelliğini true veya android.supports_size_changes meta veri işaretini true olarak ayarlayarak etkinliklerin yeniden boyutlandırılabilir olduğunu 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 ekran boyutuna güvenmemelidir. Uygulamanızı, WindowMetrics sağlayan güncel API'lere taşıyın. Jetpack Compose'u kullanıyorsanız kullanıcı arayüzünü, uygulamanın mevcut ekranda ne kadar ekran alanına sahip olduğuna göre çizmek için WindowSizeClass API'den yararlanın. Pencere boyutu sınıflarını kullanma bölümüne göz atın.

Üzeri yazma özelliğini devre dışı bırakma veya devre dışı bırakma

Bu özelliği devre dışı bırakmak mümkün değildir. Kullanımdan kaldırılan API'lerden geçiş yapın.

Geçersiz kılma ayarını düzenleyecek mülk 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ılma işlemini yalnızca geçici olarak uygular veya kaldırır.

HER ZAMAN_KUM KUTUSU_GÖRÜNTÜLÜ_APIS

Pencere modundan bağımsız olarak paketlerin her zaman Display API korumalı alanına sahip olmasını zorunlu kılar. Display API'leri her zaman uygulama sınırlarını sağlar.

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

android:resizeableActivity özelliğini false veya android.supports_size_changes meta veri işaretini false olarak ayarlayarak etkinliklerin boyutunun değiştirilemeyeceğini belirtin.

Uygulamaları optimize etme

Tamamen yeniden boyutlandırılabilir olduğunu belirten uygulamalar, kullanıcı arayüzü öğelerini konumlandırmak için asla görüntü boyutuna güvenmemelidir. Uygulamanızı kullanımdan kaldırılan API'lerden WindowMetrics sağlayan güncel API'lere taşıyın. WindowMetricsCalculator adresine göz atın.

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

Bu özelliği devre dışı bırakmak mümkün değildir. Kullanımdan kaldırılan API'lerden geçiş yapın.

Geçersiz kılma ayarını düzenleyecek mülk 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_KUMUN KUTUSU_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?

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

Uygulamaları optimize etme

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

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

PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS mülk işaretini false olarak ayarlayın.

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ılma testini yapmak 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

Zorunlu rotasyonu devre dışı bırakır. Bazı uygulamalarda kullanıcı deneyimini iyileştirir.

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

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

Uygulamaları optimize etme

Önbelleğe alınmış kamera sensörü yönüne veya cihaz bilgilerine güvenmeyin. Kamera uyumluluğuyla ilgili bilgi için Kamera vizörü kullanıma sunuluyor ve Kamera uygulamanızda yeniden boyutlandırılabilir yüzeyleri destekleme başlıklı makaleleri inceleyin.

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

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

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ılma testini yapmak için adb komutları

Zorunlu döndürmeyi kaldıran geçersiz kılma işlemini uygulamak için:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

Zorunlu rotasyonun yapılmasına izin veren geçersiz kılma işlemini 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

Zorunlu döndürme işleminden sonra etkinlik yenilemeyi devre dışı bırakır. Yenileme, uygulamalarda durum kaybına neden olduğunda kullanıcı deneyimini iyileştirir.

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

PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH mülk işaretini false olarak ayarlayın.

Uygulamaları optimize etme

Bkz. OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

Üzeriden yazma özelliğini devre dışı bırakma veya devre dışı bırakma

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

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

Kamera uyumluluğu zorla döndürüldükten sonra, uygulandığı paketlerin etkinlik yenileme işlemini onResume()onStop()onResume() yerine onResume()onPause()onResume() döngüsü kullanarak yapmasını sağlar.

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

PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE mülk işaretini true olarak ayarlayın.

Uygulamaları optimize etme

OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION özelliğine bakın.

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

PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE mülk işaretini false olarak ayarlayın.

Geçersiz kılma ayarını düzenleyecek mülk işaretleri

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

Geçersiz kılma testini yapmak 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ılma işlemini yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT

Dikey kamera yönü doğal cihaz yönüyle hizalanmadığında kamera çıkışının ters yönde kırpılmasını zorlar. Birçok uygulama bu durumu ele almaz ve aksi takdirde gerilmiş resimler gösterir.

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

PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT mülk işaretini true olarak ayarlayın.

Uygulamaları optimize etme

Bkz. OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

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

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

Geçersiz kılma ayarını düzenleyecek mülk işaretleri

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

Geçersiz kılma testini yapmak 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 kamera kırpma özelliğini 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ılma işlemini 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 (Medya projeksiyonu bölümüne bakın). Uygulamalar, tam ekran yakalamayı zorlamak ve tam ekran modunda yakalanan ancak uygulama ekranı paylaşımında yakalanmayan bildirimlerin içeriğini ve pencere modundan bağımsız olarak tüm uygulamaları göstererek kullanıcı gizliliğini tehlikeye atmak için createConfigForDefaultDisplay() API'yi kötüye kullandığında uygulanır.

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

Kullanıcıların pencere modundan bağımsız olarak tam ekranı mı yoksa tek bir uygulama penceresini mi paylaşacağına karar vermesini sağlayan varsayılan medya yansıtma davranışına (Android 14, API düzeyi 34'te createScreenCaptureIntent() ile uygulanır) izin verin. Dilerseniz createConfigForUserChoice() çağrısından döndürülen bir MediaProjectionConfig bağımsız değişkeniyle createScreenCaptureIntent(MediaProjectionConfig) çağrısı da yapabilirsiniz.

Uygulamaları optimize etme

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

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

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ılma ayarını düzenleyecek mülk işaretleri

Yok.

Geçersiz kılma testini yapmak için adb komutları

Uygulamanın kısmi ekran paylaşımını devre dışı bırakma ayarını iptal eden (yani kısmi ekran paylaşımını etkinleştiren) geçersiz kılma işlemini 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, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.

OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS

Bölünmüş ekran modunda odaklanmayan uygulamalar için sahte odaklanma göndermeyi etkinleştirir. Bazı oyun motorları, uygulamanın içeriğini çizmeden önce odaklanmayı bekler. Bu nedenle, sahte odaklama, uygulamaların devam ettirildiğinde ve henüz odaklanmadığında karartılmış kalmasını önlemesine yardımcı olur.

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

PROPERTY_COMPAT_ENABLE_FAKE_FOCUS mülk işaretini true olarak ayarlayın.

Uygulamaları optimize etme

Uygulamanız birden fazla yönü ve yapılandırma değişikliğini iyi şekilde ele alıyorsa bu sorunu önleyebilirsiniz. Büyük ekran uygulama kalitesi yönergelerini uygulayarak uygulamanızı büyük ekranlara hazırlayın.

Unity oyun motorunu çalıştırıyorsanız oyununuzu 2019.4.40 veya sonraki bir sürüme yükseltin ve oyununuzu yeniden dışa aktarın. Android Oynatıcı ayarlarında Resizable Window seçeneğini işaretli tutun.

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

PROPERTY_COMPAT_ENABLE_FAKE_FOCUS mülk işaretini false olarak ayarlayın.

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ılma testini yapmak 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