2013-06-27 13 views
7

Moja aplikacja działa na standardowych telefonach, ale działa również na urządzeniach z Androidem, które podłączam przez HDMI do mojego telewizora i pracuję za pomocą myszy, aby nawigować. Czy istnieje sposób, aby programowo ustalić, czy urządzenie obsługuje ekran dotykowy, aby można było rozróżnić dwa sposoby nawigacji?Ustal, czy urządzenie ma ekran dotykowy czy nie.

Próbowałem this, ale zwraca true na obu urządzeniach:

getPackageManager().hasSystemFeature("android.hardware.touchscreen"); 

Odpowiedz

3

PackageManager skieruje do odtwarzacza Android samego który prawdopodobnie posiada ekran dotykowy. Nie może wykryć, czy monitor odtwarzacza jest kierowany na zewnętrzny monitor przez HDMI. Gdy zapytasz menedżera pakietów, czy urządzenie ma ekran dotykowy, odnosi się ono do odtwarzacza, a nie do wyświetlacza zewnętrznego.

Jedną z rzeczy, którą możesz zrobić, to sprawdzić, czy odtwarzacz jest podłączony do zewnętrznego monitora, sprawdzając, czy port HDMI jest aktywny i odpowiednio zmienić nawigację.

Patrz: Detect HDMI Port in android device

Notatka: Jeśli gracz nie posiada ekranu dotykowego, ale kierownik pakiet jest błędnie donosi, że tak, to jest to albo błąd z menadżera pakietów lub wykonania producentów urządzeń z Androidem może być błędny.

0

Użyć OnTouchListener zamiast OnClickListener

OnTouch daje lepsze informacje zwrotne i robi wszystko OnClick już nie. Zrób to dla obu przypadków (więc nie ma potrzeby, aby dowiedzieć się, który przypadek jest który).

Niektórzy deweloperzy używają nawet OnTouchListeners zamiast OnClickListeners, nawet jeśli mają do czynienia tylko z urządzeniami bezdotykowymi (ponieważ twierdzą, że zapewniają im lepszą wydajność i szybszą reakcję).

Osobiście nie wiem, czy to ostatnie twierdzenie jest prawdziwe, czy nie, ale zgodziłbym się z tymi programistami, że naprawdę nie ma wad (które znam) na używanie OnTouchListener zamiast OnClickListener.

Powiązane problemy