Ho creato una classe HidDevice
per formare oggetti che concatenano l'input da ciascun dispositivo HIDDecisamente finché non viene premuto un tasto speciale (INVIO). Quindi ogni istanza di HidDevice ha campi come int deviceId
, String concatedInput
.
public class HidDevice {
private int deviceId = -1;
private String concatedInput;
public HidDevice (int id) {
this.deviceId = id;
this.concatedInput = null;
}
public keypress (Event event) {
this.concatedInput += event.code;
// ....
}
//....
}
Ma non so come posso memorizzare queste istanze di hidDevice. Sembra che ci siano molte possibilità in Java, non sono sicuro di quale usare sia il migliore.
Su ogni keyEvent nella mia attività Android, voglio chiamare hidProcessInput.myKeyEvent(event)
che controlla event.getDeviceId()
e aggiunge l'input all'oggetto con questo id. Se non ci sono oggetti per questo id, deve essere creato.
public class HidProcessInput {
// Wrong for my case
private static List<HidDevice> hidDevices = new ArrayList<>();
// a singleton class
private static HidProcessInput instance = null;
public static HidProcessInput getInstances() {
if (instance == null) {
instance = new HidProcessInput();
init();
}
return instance;
}
public boolean myKeyEvent (KeyEvent event) {
int deviceId = event.getDeviceId();
// here create new hidDevice instance if this id not still exist
/* if (!hidDevices.contains(deviceId)) {
HidDevice hidDevice = new HidDevice(deviceId);
hidDevices.add(id,hidDevice);
}
*/
// add the character to the the correct hidDevice instance
/* hidDevices.get(id).keypress(event);
*/
}
Quindi cosa devo usare per memorizzare gli oggetti, per poter accedere a questi oggetti usando deviceId? Ho provato ad esempio ArrayList, ma ho notato che gli indici qui non possono essere scelti liberamente.
Ho trovato cose come TreeSet, HashSet o Map, ma non sono sicuro di quale usare in questo caso?