Android-получать данные по мере их ввода с внешней клавиатуры

У меня есть сканер штрих-кода Bluetooth, подключенный к моему планшету. Всякий раз, когда я сканирую штрих-код, и фокус находится в текстовом поле редактирования моего приложения, отсканированные данные появляются в тексте редактирования.

Я хочу взять эти данные одновременно с текстом редактирования. Я пытался использовать setOnClickListener,setOnKeyListener . Если кто-нибудь знает, пожалуйста, дайте мне знать.

EDITED: Шаги, которые я выполняю:

  1. моя программа имеет простой текст редактирования, кнопку, текстовое поле.

  2. при сканировании штрих-кода через аппаратный ввод данные вставляются в текст редактирования моей программы.

  3. при нажатии кнопки я копирую текстовое содержимое редактирования в текстовое поле.

Что я хочу, чтобы мое приложение делало:

Как только данные появятся в тексте редактирования, я хочу скопировать их в текстовое поле. Прямо сейчас я делаю это по нажатию кнопки.

Вот мой код: я сомневаюсь, что он полезен, потому что внешнее оборудование отображает данные в самом тексте редактирования.

public class SimpleTextBoxActivity extends Activity {

Button btnClear, btnPairedList, btnAvailableList, btnPairedAvailableList,btnShowScan;

EditText edtSacnnedData;
BroadcastReceiver brSent;
TextView txtShowScannedData;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    edtSacnnedData=(EditText) findViewById(R.id.edtData);
    btnClear=(Button) findViewById(R.id.btnClear);
    btnShowScan=(Button) findViewById(R.id.btnScannedText);
    txtShowScannedData=(TextView) findViewById(R.id.txtScanData);

    Log.d("my", "b4 set visibility");
    edtSacnnedData.setBackgroundColor(Color.BLACK);

    Log.d("my", "after set visibility");
    btnClear.setOnClickListener(new OnClickListener() {         
        @Override
        public void onClick(View v) {
            edtSacnnedData.setText("");
            txtShowScannedData.setText("");
        }
    });
    btnShowScan.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            String str=edtSacnnedData.getText().toString();
            txtShowScannedData.setText(str);
            edtSacnnedData.setText("");
        }
    });
}

@Override
protected void onDestroy() {
    super.onDestroy();      
}

}


person Pallavi    schedule 04.01.2012    source источник
comment
можно пожалуйста подробно описать?   -  person Seshu Vinay    schedule 04.01.2012


Ответы (3)


Вам нужно использовать addTextChangedListener(..) может быть полезно для вас. Вот ссылка для интересного обсуждения этого. Прослушиватель текста изменен

person kosa    schedule 04.01.2012

Попробуйте найти этот код editText.setText(data) в своем классе.

Что бы ни было в ваших скобках метода setText() этого editText, это ваши данные, и вы можете использовать их отсюда.

Если мое предположение неверно, поделитесь своим кодом.

person Sourab Sharma    schedule 04.01.2012
comment
данные появляются сами по себе, я ничего для этого не делаю. Аппаратное обеспечение имеет свойство вставлять отсканированные данные в какое-либо редактируемое текстовое поле. - person Pallavi; 04.01.2012
comment
Но приложение ваше. Его код, который показывает данные об этом конкретном тексте редактирования, аппаратная роль заключается в том, чтобы просто доставлять байты на телефон Android, но не отображать сам текст редактирования. Если вы можете поделиться своим кодом приложения, я укажу, что я говорю. - person Sourab Sharma; 04.01.2012
comment
разместил код... Я вообще ничего не делаю... аппаратное обеспечение разработано таким образом, что оно вводит данные прямо в текст редактирования. - person Pallavi; 04.01.2012
comment
Вы используете bluetooth, тогда в вашем коде должен быть какой-то сервис bluetooth, который позволит вам подключиться к устройству. В этом методе службы Bluetooth будет такой случай, как Message_Read, который устанавливает текст в вашем editText. - person Sourab Sharma; 04.01.2012
comment
Если ваш код может быть опубликован публично, дайте мне код вашего проекта, я его исправлю, это будет 2 минуты работы. - person Sourab Sharma; 04.01.2012
comment
ЭТО МОЙ ЕДИНСТВЕННЫЙ КОД. ДРУГОГО КОДА НЕТ!!! Поставщик оборудования уже предоставил приложение, которое связывает оборудование с моим планшетом, а затем оно работает как внешняя клавиатура. - person Pallavi; 04.01.2012
comment
давайте продолжим обсуждение в чате - person Pallavi; 04.01.2012

Дайте некоторые идентификаторы вашему дизайну пользовательского интерфейса и сделайте работу. Я показываю вам пример.

 EditText editText;
 TextView textView;

 editText = (EditText) findViewById(R.id.editText);
 textView = (TextView) findViewById(R.id.textView);

 editText.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            textView.setText(editText.getText().toString());

        }
    });

В приведенном выше примере, как только вы переместите фокус, ваше текстовое представление будет обновлено, иначе вы также можете использовать:

editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            textView.setText(editText.getText().toString());

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

Это всего лишь пример. Вы можете указать свои собственные идентификаторы и имена.

person Suleman Khan    schedule 04.01.2012