Android中EditText如何判断数据来源是扫描获取,还是手动输入的?

我有个PDA系统是扫描条码然后赋值给EditText,也可以手动输入,现在想判断是手动输入还是扫描获取的数据,然后给服务器传值,0或1,表示自动或手动!求大神赐教应该如何判断

楼主你能说清楚扫描条码赋值是怎么样的流程么?

扫描条码如果要调用摄像头,就在扫描完成的时候做个标记

扫描条码赋值应该是调edittext.settext(String s)方法吧,这是可以设置tag edittext.settag(0).

最后在获取edittext内容 edittext.gettext() 的时候,获取tag edittext.gettag(), 判断是否为0,不为0,则传值1.

扫描条码赋值应该是调seText()赋值吧,手动输入不用调setText()
int mark = 1; // 默认手动

在扫描赋值的seText()这里加一行
mark = 0; // 自动赋值

手动输入的时候不改变mark值(默认1表示手动)

传值的时候传mark就行了

使用EditText的addTextChangedListener(TextWatcher watcher)方法对EditText实现监听,扫描赋值时设为1,然后监听是否被修改,被修改设为0.

问题补充:
有个Android系统的PDA自带扫描头,有个EditText控件添加个一个监听 addTextChangedListener(new TextWatcher()) 在afterTextChanged(Editable waybillNo)方法中写,获取 waybillNo 数据,然后添加到ListView中,我是当waybillNo长度达到12位的时候自动添加到ListView中去,然后保存到本地数据库,
在保存数据的时候需要保存下是自动输入还是手动录入的一个标记,还有,这个是扫描的一维码,获取到的数据是(如:029014536582912A)前面12位
数字是单号,后面四位数(也可能是5位)是目的代码,手动输入的是只有单号没有目的代码,现在有个BUG是可以先输入一个数字在去扫描也可以添加
,网上找了好长时间都没有有效的解决办法

我是做前端的,之前也做过扫码输入的功能,在此分享下我的经验,希望对你有所帮助:
判断是扫码输入还是手动输入,重要的是区分扫码输入和手动输入的区别:
扫码输入可以设置扫码枪扫码后在得到的结果后面增加一个enter键,
而手动输入的话用户是不会手动输enter键的。
另外,如果你不知道扫码得到的数据后面是不是有enter键,建议你看下说明书。同时,除了enter键之外,还可以是换行,换行+enter等等。说明书上会有。
希望可以帮助到你。

手动输入后如果再扫码,则先清空edittext里面的内容。。。
如果扫码时候调用摄像头会有广播android.hardware.action.NEW_PICTURE和android.hardware.action.NEW_VIDEO
利用是否存在广播判断是否手动或者扫码输入试试

设置一个变量记录是否是扫描获取;
调用扫描会掉的时候设置变量true;同事记录结果
在提交的时候,首先校验扫描变量;在校验结果信息是否和最后的提交信息匹配

重写dispatchKeyEvent(KeyEvent event0;方法,通过判断event.getDevice().getName()来判断是否是系统软键盘输入~~然后拦截文本,直到监听到enter键,至此扫码结束~~~