2013-06-27 17 views
7

La mia app funziona su telefoni standard ma funziona anche su lettori Android che collego tramite HDMI alla TV e che funziona con un mouse per navigare. C'è un modo per escludere programmaticamente se il dispositivo ha il supporto del touch screen in modo da poter distinguere tra i due modi di navigazione?Determinare se il dispositivo è dotato di touchscreen o meno

ho provato this, ma restituisce vero su entrambi i dispositivi:

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

risposta

3

PackageManager farà riferimento al giocatore di Android in sé che probabilmente ha un touchscreen. Non è in grado di rilevare se il display del lettore viene indirizzato a un monitor esterno tramite HDMI. Quando chiedi al gestore di pacchetti se il dispositivo ha un touchscreen, si riferisce al lettore e non al display esterno.

Una cosa che si potrebbe fare è rilevare se il lettore è collegato a un display esterno controllando se la porta HDMI è attiva e modificare la navigazione di conseguenza.

See: Detect HDMI Port in android device

Nota a margine: Se il giocatore non ha un touchscreen, ma il gestore di pacchetti viene erroneamente riporta che lo fa, allora è sia un bug con gestore di pacchetti o l'implementazione produttori di dispositivi di Android potrebbe essere bacato

0

Utilizzare un OnTouchListener invece di un OnClickListener

OnTouch ti dà un feedback migliore e fa tutto ciò Su clic fa già. Fai questo per entrambi i casi (quindi non c'è bisogno di capire quale caso è quale).

Alcuni sviluppatori utilizzano anche OnTouchListeners anziché OnClickListeners anche se si occupano solo di dispositivi non touch (perché affermano che offre loro prestazioni migliori e una risposta più rapida).

Personalmente, non so se l'ultima affermazione sia vera o meno, ma concordo con quegli sviluppatori sul fatto che non c'è davvero alcun svantaggio (che io sappia) sull'uso di un OnTouchListener invece di un OnClickListener.

Problemi correlati