Katlanabilir ve çok ekranlı cihazlar için uygulamalar
Uygulamalar genel olarak statik tanımlayıcılara veya kullanabilirsiniz. Çoğu durumda, uygulamalar yeniden boyutlandırılmalı ve farklı ekranlarda çalışmalıdır. Ayrıca sistem, uygulamaların yerini belirleyecektir. Örneğin, Arkadaş Bitkiler projesinin yeni ve benzersiz bir deneyim sunacak. Katlanabilir cihazlarda da harici ekranda nasıl duracağını öğrenin.
Bu durumda, SystemUI (veya başka bir sistem bileşeni) bir işlem gerçekleştirmenin uygun olup olmadığını belirleyin ve ardından ve başlatma hedefi olarak harici bir görüntüleme kimliği belirtin. Uygulamalar bu işlemi algılamamalı veya yanıt olarak herhangi bir işlem yapmamalıdır. lansmanını belirli bir ekranda yapabilirsiniz. Başka bir deyişle, bir cihazda işe yarayan şey diğer cihazlarda da çalışır. Özetle, cihaza özgü kod parçalanmayı artırır.
Ekranlara erişimi kısıtlama
Cihaz yapılandırması, bir veya daha fazla cihaza erişimin kısıtlanmasını gerektiriyorsa
Display#FLAG_PRIVATE
işaretini kullanmanız önerilir
Bu tür ekranları gizli olarak tanımlama. Bu işlem, ekrana içerik ekleme yetkisini yalnızca ekranın sahibine bırakır. Bir etkinliği başlatma veya
herhangi biri tarafından pencere eklerseniz SecurityException
ile sonuçlanır.
Ekran sisteme aitse sistem, pencereler ekleyebilir ve etkinlikleri başlatabilir.
Ayrıca, bir ekrana yerleştirilen varlıklar bu ekrana her zaman erişebilir. Cihazın sahibi ekranda bir etkinlik başlatırsa bu etkinlik başka bir bu ekranda görüntülenebilir. Sonuç olarak, sahibi, söz konusu içeriği yalnızca güvenilir uygulamalara erişme ve bunlara izin verme.
Ayrıca, tüm uygulamalar sanal ekranlara daha fazla kısıtlama
kullanıcıya görünür hale getirmeden bir web sitesi oluşturmaktır. Sanal ekran yoksa
etkinlikleri sisteme aittir, daha sonra yalnızca
allowEmbedded
ve çağrıya ACTIVITY_EMBEDDING
sahip olmalıdır
izni gerekir.
Daha fazla bilgi için bkz.
ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()
ActivityDisplay#isUidPresent()
DisplayManagerService#isUidPresentOnDisplay()
Etkinlik lansmanlarını koşullu olarak kontrol etmek için LaunchParamsController
,
Bu etkinlik, tüm etkinlik başlatmalarına müdahale eder ve bir sistem bileşeninin
parametrelerin sayısını belirler. Bu öğe system_server
dilinde kullanılabilir.
Ekran pencereleme ayarlarını ve sistem süslemelerini yapılandırma
Sistem süslemeleri
DisplayWindowSettings
içinde ekran başına yapılandırılacak. Cihaz
özel bir varsayılan yapılandırma sağlayabilir.
/data/system/display_settings.xml
Bu değer, sistem süslemelerinin (başlatıcı, duvar kağıdı,
gezinme çubuğunu ve diğer dekor pencerelerini kullanın) ve IME bir ekranda görünür.
Ayrıntılı bilgi için DisplayWindowSettings#shouldShowSystemDecorsLocked()
başlıklı makaleyi inceleyin.
ve DisplayWindowSettings#shouldShowImeLocked()
.
Ekranı tanımlamak için benzersiz bir kimlik kullanın (bu varsayılan ayar,
DisplayInfo#uniqueId
) veya donanım için fiziksel bağlantı noktası kimliği
görüntülenir (bkz. DisplayInfo#address
).
Örneğin, aşağıdaki ekran yapılandırması örneği sistem süslemelerini ve Simüle edilmiş ekranda IME:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <display-settings> <config identifier="0" /> <display name="overlay:1" shouldShowSystemDecors="true" shouldShowIme="true" /> </display-settings>
Yukarıdaki örnekte uniqueId
, ekran tanımlaması için kullanılmaktadır.
değeri, simüle edilmiş ekran için overlay:1
değerini alır.
Yerleşik bir ekran için örnek değer "local:45354385242535243453"
olabilir.
Diğer bir seçenek de donanım bağlantı noktası bilgilerini kullanmak ve identifier="1"
değerini DisplayWindowSettings#IDENTIFIER_PORT
değerine karşılık gelecek şekilde ayarlamak, ardından adı "port:<port_id>"
biçimini kullanacak şekilde güncellemektir:
<?xmlversion='1.0' encoding='utf-8' standalone='yes' ?> <display-settings> <config identifier="1" /> <display name="port:12345" shouldShowSystemDecors="true" shouldShowIme="true" /> </display-settings>
Ayrıntılı bilgi için Statik görüntüleme tanımlayıcıları başlıklı makaleyi inceleyin.
Daha fazla bilgi için bkz.