Android 9 ve önceki sürümlerde, ekranlar ile giriş cihazları arasında ilişkilendirme mekanizması olmadığından birden fazla ekranla dokunma yoluyla etkileşim kurmak mümkün değildi. Örneğin, dokunmatik ekranlı bir ekran; HDMI video çıkışı (Android'de ekran olarak kaydedilir) ve dokunmatik ekran için USB çıkışı (giriş cihazı olarak kaydedilir) sağlayabilir. Bu şekilde birden fazla cihaz bağlanırsa hangi giriş cihazının hangi ekrana ait olduğunu belirlemek mümkün olmaz. Aynı sorun, birden fazla yerleşik ekrana sahip katlanabilir cihazlar için de geçerlidir.
Android 10, hangi giriş cihazlarının hangi ekranlara ait olduğunu belirtmek için bir mekanizma ekledi. İlişkilendirme, bağlantı noktası numaralarına göre yapılır. Bu durumda bağlantı noktası, bir ekranın bağlı olduğu fiziksel bağlantı noktasını ifade eder.
Örneğin, bir Android cihazda hdmi1
ve hdmi2
etiketli iki HDMI bağlantı noktası varsa ekran bağlantı noktası değerleri 1
ve 2
olabilir. 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
'te yapılandırılmıştır.
Örneğin:
<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. Belirli cihazlarla ilişkili bağlantı noktalarını belirlemek için aşağıdaki terminal komutunu kullanın ve ardından Event Hub State'te bu cihazların location
mülkünü 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. Ardından, en son etkinliği oluşturan cihazları belirleyebilirsiniz. Ardından, ilgili cihazı Event Hub Durumu'nda bulabilirsiniz.
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, bağlı tüm ekranların kimlik bilgilerini dökmek için adb shell dumpsys SurfaceFlinger --display-id
'ü kullanın. Statik görüntülü reklam tanımlayıcıları başlıklı makaleyi de inceleyin.
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 cihazları kurmanıza olanak tanır. Dinamik ilişkilendirmeler henüz etkinleştirilmedi. Ancak bazı kullanım alanları, her zaman mevcut olmayan ekranlar ve giriş panelleri için yönlendirme bilgileri sağlayarak veya sanal giriş cihazları kullanarak ve ardından bu sanal cihazlara ek yönlendirme bilgileri sağlayarak ele alınabilir. Bir cihaz uygulaması aşağıdakileri destekliyorsa:
- Yerleşik istasyonla masaüstü benzeri bir deneyim, ardından yerleşik istasyona 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.
- Birincil ekran, harici ekrana bağlıyken giriş kaynağı (ör. dokunmatik yüzey) olarak hareket eder. Ardından, sanal dokunmatik panelden (benzersiz sanal kimlikle tanımlanır) harici ekrana (bağlantı noktasıyla tanımlanır) girişi hedeflemek için bir yönlendirme yapılandırması sağlanabilir.
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
,InputDevice.location
için belirtilen bağlantı noktasıyla eşleşen görüntü alanına ayarlanır.- Haritalandırma dosyasında bir giriş cihazı bağlantı noktası belirtilmişse ve şu anda eşleşen bir ekran bağlantı noktası içeren bir görüntü alanı yoksa söz konusu bağlantı noktasındaki giriş cihazı devre dışı bırakılır.
- Belirli bir giriş cihazı için bağlantı noktası belirtilmemişse görüntü alanı mevcut kurallara göre ayarlanır.
- Giriş sürücülerinde çekirdek değişikliği gerekmez.
- Giriş cihazı bağlantı noktaları, EVIOCGPHYS ioctl kullanılarak belirlenir.