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 hangi ekran olduğunu. 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. Aynı fiziksel HDMI bağlantı noktasına farklı bir ekran (ör. farklı ekran modeli veya üretici) bağlansa bile bağlantı noktası değerleri aynı kalır. Bu sayede cihaz üreticileri, ekranları birleştirme ve yükseltmeyle ilgili talimatlar sağlayabilir.

İ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", ekranın bağlı olduğu bağlantı noktasını belirtir. 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

Birçok cihaz bağlıysa Giriş Yöneticisi Durumu'ndaki RecentQueue dizisini incelemek için belirli bir cihaza dokunun. 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'ü kullanın ve ardından Ekran Cihazları altında her ekran için DisplayDeviceInfo mülkündeki address mülkünü bulun. 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ı için bir ilişkilendirme belirtirseniz ve ilgili ekran sistemde yoksa ilgili ekran görünene kadar giriş cihazı devre dışı bırakılır. İlişkilendirme yalnızca dokunmatik cihazlar için yapılır.

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 iletiyorum. Bir cihaz uygulaması aşağıdakileri destekliyorsa:

  • Yerleşik istasyonla masaüstü benzeri bir deneyim, ardından bağlantı noktasına bağlı giriş aksesuarından (bağlantı noktasına göre benzersiz şekilde tanımlanır) harici ekrana (bağlantı noktasına göre tanımlanır) girişi hedeflemek için bir yönlendirme yapılandırması sağlanabilir.
  • 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, ekranları dokunmatik ekranlarla eşleştirmek için giriş cihazının bağlı olduğu bağlantı noktası ve ekranın bağlı olduğu bağlantı noktası 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şikliği gerekmez.
  • Giriş cihazı bağlantı noktaları, EVIOCGPHYS ioctl kullanılarak belirlenir.