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.
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ızcaresizeableActivity
değeri yanlış değerine ayarlanmış uygulamalarmaxAspectRatio
özelliğini ayarlayabilir.minAspectRatio
: Uygulama tarafından desteklenen minimum en boy oranını belirtir. YalnızcaresizeableActivity
değeri yanlış değerine ayarlanmış uygulamalarminAspectRatio
ö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.
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:
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:
resizeableActivity="true"
ile yeniden boyutlandırılabilirPencere içinde pencere (PIP) modunu destekler
Cihaz üreticisi tarafından uygulama başına
FORCE_RESIZE_APP
geçersiz kılma işlemi uygulanmış olmalıdır (uygulama tarafından ayarlanan özellikler yoksayılır)
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öntemindeActivity#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()
veonStart()
(varsayılan olarak) veyaonPause()
ileonResume()
(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:
- Platform:
- Jetpack:
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:
- Cihaz aktarma: Uygulamanızı Google veri merkezlerinde barındırılan üretim cihazlarında (Pixel Tablet ve Pixel Fold dahil) test etmek için Android Studio'dan Android Cihaz Akışı konusuna bakın.
- Android Studio Hedgehog'da Pixel Tablet ve Pixel Fold emülatörleri: Pixel Tablet ve Pixel Fold emülatörleri oluşturma hakkında bilgi için Sanal cihazlar oluşturma ve yönetme başlıklı makaleyi inceleyin.
- Android Studio yeniden boyutlandırılabilir emülatör: Sanal cihazlara erişme hakkında bilgi için Android Emulator'da uygulama çalıştırma konusuna bakı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 ActivityScenarioRulerule = 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
- Büyük ekran uygulama kalitesi yönergeleri
- Temel uygulama kalitesi yönergeleri