2013-03-26 5 views
6

Ho un dispositivo tablet touchscreen industriale con Windows7 (questo one). Ha uno scanner RFID/Barcode integrato e una fotocamera. Entrambi possono essere avviati tramite un pulsante hardware. Mi piacerebbe riconoscere, ogni volta che viene premuto uno di questi pulsanti. Ho scritto una piccola app di test con un GlobalKeyEventListener, ma non viene generato alcun evento quando si preme uno di questi pulsanti. Tutti gli eventi normali della tastiera vengono attivati. Qualcuno sa, se e in che modo è possibile accedere a questi tipi di eventi pulsante in Java? Che altro dovrei provare, prima di dire al cliente, che non è possibile. Grazie.Come accedere a un pulsante hardware in Java

+0

Se l'evento non viene attivato quando si preme quel tasto specifico e viene generato quando si preme il tasto della tastiera normale, la chiave hardware non viene registrata come chiave virtuale. Il mio suggerimento sarebbe di avere un listener di eventi che guardi la proprietà che il pulsante hardware cambia e una volta che cambia si può agire su di esso. –

risposta

1

Ci sarà un po 'di interfaccia di programmazione per l'ascolto di questi pulsanti, ed è improbabile che abbia una connessione a una Java Virtual Machine integrata. Vorrei esaminare la scrittura di un programma/servizio/qualsiasi cosa ascoltasse quel pulsante spinge che potrei compilare in una DLL di Windows e quindi chiamerei la DLL dal programma Java. Le DLL di Windows possono ascoltare le cose e le classi Java possono registrarsi come listener per gli eventi dalle DLL. Non è probabile che sia banale, la parte più difficile per me sarebbe il programma DLL stesso (nessun java lì, C o C# o qualcosa di simile a Microsoft), seguito dall'interfaccia Java Native Interface o API o da qualsiasi altra cosa per chiamare la DLL.

Se arrivi così lontano, ti consiglio un prodotto che nome non ricordo; ti permette di chiamare le DLL senza usare alcun codice 'colla' JNI, cioè, una volta dovevi scrivere codice C con un insieme molto specifico di regole da chiamare da Java, e questo altro prodotto lo elimina piacevolmente completamente.

Buona fortuna.

+0

Dai anche un'occhiata a JNA. – Puce

+0

Dipende da cosa fa il pulsante. Ho gestito un problema simile con una soluzione piuttosto banale. Nel mio caso era o andare C/ASM o cercare costantemente il cambio di proprietà. Nel mio caso ero in grado di eseguire la mia applicazione come parte di un processo in background per ascoltare costantemente le modifiche alle proprietà nel registro. Ciò si verificava ogni volta che veniva premuto il pulsante mentre la proprietà cambiava, ero in grado di agire su di essa. –