Android 9 ve önceki sürümlerde, ekranlar ile giriş cihazları arasında ilişkilendirme mekanizması olmadığından dokunarak birden fazla ekranla etkileşim kurulamıyordu. Örneğin, dokunmatik ekranlı bir cihaz HDMI video çıkışı (Android'de ekran olarak kaydedilir) ve dokunmatik ekran için USB çıkışı (giriş cihazı olarak kaydedilir) sağlayabilir. Birden fazla cihaz bu şekilde 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 belirlemek için bir mekanizma ekledi. İlişkilendirme, bağlantı noktası numaralarıyla yapılır. Burada bağlantı noktası, ekranın bağlandığı 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. Farklı bir ekran (ör. farklı bir ekran modeli veya üreticisi) aynı fiziksel HDMI bağlantı noktasına bağlandığında bile bağlantı noktası değerleri aynı kalır. Bu sayede cihaz üreticileri, ekranların montajı ve yükseltilmesiyle ilgili talimatlar sağlayabilir.
İlişkilendirme /vendor/etc/input-port-associations.xml
içinde yapılandırılı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ğlandığı 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'teki bu cihazların location
özelliğini inceleyin.
adb shell dumpsys input
Çok sayıda cihaz bağlıysa Input Dispatcher State'teki 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 State'te bulabilirsiniz.
Bağlı ekranlara atanan görüntüleme bağlantı noktalarını belirlemek için adb shell dumpsys display
kullanın ve ardından Ekran Cihazları bölümündeki her ekran için address
özelliğini bulun.DisplayDeviceInfo
Alternatif olarak, bağlı tüm ekranların tanımlama bilgilerini boşaltmak için adb shell dumpsys SurfaceFlinger --display-id
komutunu kullanın. Ayrıca Statik reklam tanımlayıcıları başlıklı makaleyi de inceleyin.
Belirli bir giriş cihazı için ilişkilendirme belirtirseniz ve sistemde ilgili ekran yoksa giriş cihazı, ilgili ekran görünene kadar devre dışı bırakılır. Yalnızca dokunmatik cihazlarda ilişkilendirme yapılır.
Dinamik çoklu ekranlar için yönlendirme
Android 10, statik çoklu ekran cihazları ayarlamanıza olanak tanır. Dinamik ilişkilendirmeler henüz etkinleştirilmemiştir. Ancak bazı kullanım alanları, her zaman mevcut olmayan ekranlar ve giriş panelleri için yönlendirme bilgileri sağlanarak veya sanal giriş cihazları kullanılarak ve ardından bu sanal cihazlara ek yönlendirme bilgileri sağlanarak ele alınabilir. Bir cihaz uygulaması aşağıdakileri destekliyorsa:
- Bağlantı istasyonuyla masaüstü benzeri bir deneyim sunuluyorsa bağlantı istasyonuna bağlı giriş aksesuarından (bağlantı noktasıyla benzersiz şekilde tanımlanır) gelen girişin harici ekrana (bağlantı noktasıyla tanımlanır) yönlendirilmesini sağlayacak bir yönlendirme yapılandırması sağlanabilir.
- Harici ekrana bağlandığında giriş kaynağı (ör. dokunmatik yüzey) olarak kullanılan birincil ekran varsa sanal dokunmatik panelden (benzersiz sanal kimlikle tanımlanır) gelen girişi harici ekrana (bağlantı noktasıyla tanımlanır) yönlendirmek için bir yönlendirme yapılandırması sağlanabilir.
Uygulama
- Fiziksel cihazlarda, giriş cihazının bağlandığı bağlantı noktası ve ekranın bağlandığı bağlantı noktası, ekranları dokunmatik ekranlarla eşleştirmek için kullanılır.
- Eşlemeler
InputReaderConfiguration
içinde saklanı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ı belirtilmişse ve şu anda eşleşen bir ekran 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ı belirtilmemişse görünüm alanı, mevcut kurallara göre ayarlanır.
- Giriş sürücülerinde çekirdek değişikliği yapılması gerekmez.
- Giriş cihazı bağlantı noktaları, EVIOCGPHYS ioctl kullanılarak belirlenir.