2013-04-15 2 views
1

Я работаю со сканером штрих-кода Bluetooth, действующим как клавиатура bluetooth, я хочу обрабатывать ключи, когда мой пользователь сканирует что-то, но я знаю он может сосредоточиться любое EditText в своей деятельности, поэтому я хочу, чтобы определить, какие клавиатуры он использует в своей KeyEvent так:Как предотвратить ввод ключа в EditText, если он исходит от конкретной клавиатуры

if KeyEvent.getDevice().getName().equals("Datalogic Scanner") //do stuff 
else //let the edittext add the letter 

и предотвратить EditText быть отредактированы и вместо того, чтобы хранить и обрабатывать значения от посыла сканера.

Я попытался возвращает истину в dispatchKeyEvent в моей деятельности, я пытался возвращает истину в OnKeyDown в моей деятельности, Я попытался возвращает истину в OnKeyListener на моем EditText и переопределение OnKeyDown на моем классе EditText, но ничего не работает, текст все равно вставлен в мой EditText.

Любая идея?

ответ

1

Попробуйте использовать dispatchKeyEvent вроде:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    return scanManager.handleDispatchKeyEvent(event); 
} 

А в классе scanManager, вы должны сделать что-то вроде этого:

public boolean handleDispatchKeyEvent(KeyEvent event) { 
// handle the event 
return true; 
}