Önerilen uygulamalar

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.