Android 9 ve önceki sürümlerde ekranlar ve giriş cihazları arasında ilişkilendirme mekanizması olmadığından dokunarak birden fazla ekranla etkileşim kurmak mümkün değildi. Örneğin, dokunmatik ekranlı bir ekran, bir HDMI video çıkışı (Android'de ekran olarak kaydedilir) ve dokunmatik ekran için bir 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ıyla yapılır. Bağlantı noktası, bir ekranın bağlı olduğu fiziksel bağlantı noktasını belirtir.
Örneğin, bir Android cihazın hdmi1
ve hdmi2
etiketli iki HDMI bağlantı noktası varsa görüntü bağlantı noktası değerleri 1
ve 2
olabilir. Aynı fiziksel HDMI bağlantı noktasına farklı bir ekran (ör. farklı bir ekran modeli veya üretici) bağlı olduğunda bile bağlantı noktası değerleri aynı kalır. Bu sayede cihaz üreticileri, ekranları birleştirme ve yükseltme talimatları sağlayabilir.
İlişkilendirme /vendor/etc/input-port-associations.xml
'te yapılandırılmıştır.
Ö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. 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
işlevini kullanın ve ardından Görüntüleme Cihazları altında her bir ekran için DisplayDeviceInfo
öğesinin address
özelliğini arayın.
Alternatif olarak, bağlı tüm ekranların kimlik bilgilerini dökmek için adb shell dumpsys SurfaceFlinger --display-id
'ü kullanın. Ayrıca bkz. Statik görüntüleme 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 cihazları kurmanıza olanak tanır. Dinamik ilişkilendirmeler henüz etkin değil. 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. Cihaz uygulaması şunları 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.
- Harici ekrana bağlandığında giriş kaynağı (dokunmatik alan gibi) görevi gören birincil ekran, 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.- Eşleme dosyasında bir giriş cihazı bağlantı noktası belirtildiyse ve şu anda eşleşen bir görüntü bağlantı noktasına sahip bir görüntü alanı yoksa bu bağlantı noktasındaki giriş cihazı devre dışı bırakılır.
- Belirli bir giriş cihazı için bağlantı noktası belirtilmediyse görüntü alanı mevcut kurallara göre ayarlanır.
- Giriş sürücülerinde çekirdek değişikliklerine gerek yoktur.
- Giriş cihazı bağlantı noktaları, EVIOCGPHYS ioctl kullanılarak belirlenir.