Android扫描枪(PDA)开发

// 最近在负责PDA的开发,在扫描事件的处理上,花费了一些时间,但是,最终功夫不负有心人,总算找到一个好点的解决方案,不说了,上代码。
	// 该文本框添加扫描事件.
	// 但是该扫描事件有一个明显的bug,当扫描出的字符是一个的时候,就无法区分出是扫描事件还是手动输入的事件。
	editText.addTextChangedListener(textwatcher);
	/**
	 * 扫描事件.
	 **/
	private MTextWatcher textwatcher = new MTextWatcher();

	private class MTextWatcher implements TextWatcher {
		@Override
		public void onTextChanged(CharSequence s, int start, int before, int count) {
			// TODO Auto-generated method stub
			/**
			 * 三个参数的值
			 * start before count 
			 * 0     0      13 
* 扫描时触发的 :start=0,before=0,count=1
* 手动输入时,显示的数据 012 023 034 045
* start=0,before=1,count=2,
* start=0,before=2,count=3,
* start=0,before=3,count=4,
* start=0,before=4,count=5,
* 手动通过键盘输入:是每个字母都会触发textWatcher事件 扫描是整体触发,不会单个触发. ** **/ if (start == 0 && before == 0 && count > 1) { // 当扫描一个字符时,会出错 // 当扫描事件触发的时候,去执行自己的方法. } else { // 为手动输入触发的事件. } } @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 }

**总结**
**单个输入是:触发多个TextWatcher事件**
**PDA扫描是:触发一个TextWatcher事件**
**缺点**
**当扫描一个字符的时候,无法区分这两个事件**


你可能感兴趣的:(Android扫描枪(PDA)开发)