Giriş yönlendirme

Android 9 ve önceki sürümlerde birden fazla ekranla etkileşimde bulunmak mümkün değildi Ekran ve giriş arasında ilişkilendirme mekanizması olmadığından, dokunma yoluyla cihazlar. Örneğin, dokunmatik ekranlı bir ekran HDMI video çıkışı sağlayabilir (Android'de ekran olarak kaydedilir) ve dokunmatik ekran için USB çıkışı (bir giriş cihazı olarak kaydedilir). Birden fazla cihaz Bu şekilde, hangi giriş cihazının hangi cihaza ait olduğunu belirlemenin bulunur. Aynı sorun birden fazla yerleşik özelliği olan katlanabilir cihazlar için de geçerli. görüntüler.

Android 10, hangi girişin girileceğini belirten bir mekanizma ekledi cihazın ait olduğu cihaz türü. İlişkilendirme, aşağıdaki bağlantı noktası numaralarıyla bağlantı noktası, bir ekranın bağlı olduğu fiziksel bağlantı noktasını belirtir.

Örneğin, bir Android cihazda hdmi1 etiketli iki HDMI bağlantı noktası varsa ve hdmi2 için görüntüleme bağlantı noktası değerleri 1 ve 2. Bağlantı noktası değerleri, farklı bir ekran olsa bile aynı fiziksel cihaza bağlı (ör. farklı bir ekran modeli veya üretici) HDMI bağlantı noktası. Bu, cihaz üreticilerinin montaj talimatları sağlamasına olanak tanır. ve ekranları yükseltmenizi sağlar.

İlişkilendirme /vendor/etc/input-port-associations.xml ürününde yapılandırıldı. Örnek:

<ports>
    <port display="0" input="usb-xhci-hcd.0.auto-1.1/input0" />
    <port display="1" input="usb-xhci-hcd.0.auto-1.2/input0" />
</ports>

Yukarıdaki örnekte display="0", bağlı olduğundan emin olun. input="usb-xhci-hcd.0.auto-1.1/input0". giriş cihazının bağlı olduğu bağlantı noktasını belirtir. Bağlantı noktalarını belirlemek için aşağıdaki terminal komutunu kullanın, ardından bu cihazların location özelliğini, Etkinlik Merkezi Durumu'nda inceleyin.

adb shell dumpsys input

Çok sayıda cihaz bağlıysa belirli bir cihaza dokunarak RecentQueue dizisi vardır. Bu sayede, ara hedeflerin en son etkinliği oluşturan cihazlar. Daha sonra etkinliğindeki ilgili cihazı kontrol eder.

Bağlı ekranlara atanan ekran bağlantı noktalarını belirlemek için adb shell dumpsys display ve ardından address araması yapın. özelliğinin DisplayDeviceInfo özelliğini kullanmanız gerekir. Alternatif olarak, döküm için adb shell dumpsys SurfaceFlinger --display-id komutunu kullanın kimlik bilgilerini girin. Şu kaynakları da inceleyin Statik görüntülü reklam tanımlayıcıları.

Belirli bir giriş cihazı ve ilişkili giriş cihazı için bir ilişkilendirme sistemde mevcut değilse giriş cihazı, ilgili ayar gelene kadar görünür. İlişkilendirme yalnızca dokunmatik cihazlar için gerçekleştirilir.

Dinamik çoklu ekranlar için yönlendirme

Android 10, statik çoklu ekran oluşturmanıza olanak tanır cihazlar. Dinamik ilişkilendirmeler henüz etkin değil. Ancak bazı kullanım alanları bulunmayan ekranlar ve giriş panelleri için yönlendirme bilgileri sağlayarak Her zaman mevcut olan veya sanal giriş cihazları kullanan ve ardından ek yönlendirme sağlayan bu sanal cihazlara gönderebiliyor. Cihaz uygulaması şunları destekliyorsa:

  • Bir bağlantı istasyonunda masaüstüne benzer bir deneyim varsa bir yönlendirme yapılandırması Yuvaya bağlı giriş aksesuarından gelen hedef girişi (tanımlanmış bağlantı noktasıyla benzersiz şekilde) harici ekrana (bağlantı noktasıyla tanımlanır) gönderir.
  • Bağlandığında giriş kaynağı (dokunmatik alan gibi) görevi gören birincil ekran harici ekrana bağlanıyorsa, hedef girişine yönelik bir yönlendirme yapılandırması sağlanabilir sanal dokunmatik panelden (benzersiz sanal kimlikle tanımlanır) harici ekrana (bağlantı noktasıyla tanımlanır).

Uygulama

  • Fiziksel cihazlarda, giriş cihazının bağlı olduğu bağlantı noktası ve gibi bazı bağlantı noktaları yer alır. Bunlar, ekranları dokunmatik ekranlarla eşleştirmek için kullanılır.
  • Eşlemeler InputReaderConfiguration içinde depolanır.
  • TouchInputMapper.mViewport, eşleşen görüntü alanına ayarlandı InputDevice.location için belirtilen bağlantı noktası.
  • Eşleme dosyasında bir giriş cihazı bağlantı noktası belirtildiyse ve eşleşen bir görüntü bağlantı noktasına sahip bir görüntü alanı değilse devre dışı bırakılır.
  • Belirli bir giriş cihazı için bağlantı noktası belirtilmezse görüntü alanı mevcut kurallara göre ayarlanmış olabilir.
  • Giriş sürücülerinde çekirdek değişikliklerine gerek yoktur.
  • Giriş cihazı bağlantı noktaları, EVIOCGPHYS ioctl kullanılarak belirlenir.