我在android中有一个Kivy应用程序,它在Zebra tc25条形码扫描计算机上使用一个配置文件返回key_down
事件,该配置文件已设置为使用carraige return后缀提供击键输出。
问题是,安装Apk后,我第一次打开应用程序时,扫描器在每次扫描时都会漂亮地给出ASCII字符13或carraige return
,但一旦我关闭应用程序并重新启动或暂停应用程序并继续,扫描器就不想给出ASCII字符13。它扫描条形码,但不会在重新启动后返回carraige return。
有人能告诉我在manifest
中必须声明哪些权限或活动,或者必须设置哪些设置才能在重新启动后返回carraige吗?
以下是打印到控制台后重启前和重启后的logcat输出:
1) 预处理:
11-02 10:24:35.194 2123 9706 I ScannerFramework: UndecodedImagerHandler, viewPortMode = ON
11-02 10:24:35.194 2123 9706 I ScannerFramework: UndecodedImagerHandler::DecodeThreadProc<ImagerContext> inside if(ViewPortMode =ON)
11-02 10:24:35.198 2123 9706 W ScannerFramework: [ScannerContext::RemoveDataSubscriber] Subscriber not present in subscriber list
11-02 10:24:35.199 2123 9706 I ScannerFramework: ISS[UndecodedImagerHandler::DoDataCallBackFlexiScript]: Completed passing data to user
11-02 10:24:35.200 3902 3916 D IMG_FRM : readsubmit for object: com.symbol.scanning.Scanner@faf4b13, mdec: com.symbol.datawedge.plugins.ScannerPlugin$5@a34f150
11-02 10:24:35.201 3210 3222 D InputMethodService: Params passed to SoftKeyboard android.util.MapCollections$KeySet@da98e4d7
11-02 10:24:35.201 3210 3222 D InputMethodService: keystroke_action_char 13
11-02 10:24:35.203 3902 3920 D ScannerPlugin: Time taken to process data by all plugins4ms
11-02 10:24:35.204 3210 3210 D InputMethodService: running Injector
11-02 10:24:35.204 3210 3210 D InputMethodService: Injector: doInject
11-02 10:24:35.208 9688 9710 I python : Key down enter 49 1
11-02 10:24:35.210 9688 9710 I python : Key down enter 1 51 3
11-02 10:24:35.211 9688 9710 I python : Key down enter 13 49 1
11-02 10:24:35.212 9688 9710 I python : Key down enter 131 51 3
11-02 10:24:35.213 9688 9710 I python : Key down enter 1313 51 3
11-02 10:24:35.214 9688 9710 I python : Key down enter 13133 13 None
2)重启后:
11-02 10:26:04.994 2123 9875 I ScannerFramework: UndecodedImagerHandler::DecodeThreadProc<ImagerContext> inside if(ViewPortMode =ON)
11-02 10:26:05.027 2123 9875 W ScannerFramework: [ScannerContext::RemoveDataSubscriber] Subscriber not present in subscriber list
11-02 10:26:05.027 2123 9875 I ScannerFramework: ISS[UndecodedImagerHandler::DoDataCallBackFlexiScript]: Completed passing data to user
11-02 10:26:05.028 2123 9896 E ScannerFramework: [MessageQueue::waitForMsg]queue2 not-null
11-02 10:26:05.029 3210 3222 D InputMethodService: Params passed to SoftKeyboard android.util.MapCollections$KeySet@da98e4d7
11-02 10:26:05.029 3210 3222 D InputMethodService: keystroke_action_char 13
11-02 10:26:05.029 3902 3916 D IMG_FRM : readsubmit for object: com.symbol.scanning.Scanner@15d304e, mdec: com.symbol.datawedge.plugins.ScannerPlugin$5@3b9856f
11-02 10:26:05.030 3210 3210 D InputMethodService: running Injector
11-02 10:26:05.030 3902 3920 D ScannerPlugin: Time taken to process data by all plugins2ms
11-02 10:26:05.030 3210 3210 D InputMethodService: Injector: doInject
11-02 10:26:05.046 9853 9872 I python : Key down enter 49 1
11-02 10:26:05.046 9853 9872 I python : Key down enter 1 49 1
11-02 10:26:05.047 9853 9872 I python : Key down enter 11 50 2
11-02 10:26:05.049 9853 9872 I python : Key down enter 112 50 2
11-02 10:26:05.051 9853 9872 I python : Key down enter 1122 57 9
11-02 10:26:05.052 9853 9872 I python : Key down enter 11229 57 9
从logcat输出的最后一行可以看出,重启后缺少ASCII十进制字符13。
或者如果有人精通pyjnius
genius库,我如何使用jnius访问datawedge类"com.symbol.datawedge.api.SCANNER_OUTPUT_PLUGIN"
。
下面给出了jnius.jnius.JavaException: Class not found b'com/symbol/datawedge'
错误:
import jnius
from jnius import autoclass
DatawedgeApi = autoclass("com.symbol.datawedge.api")
有了这个,我可以使用输出插件
更新:
因此,我找到了一个纯Kivy解决方案,它是一种盲目的解决方法,可以在不依赖datawedge的char 13
字符的情况下获得击键输出,但只有时间才能判断它是否长期有效。所以我创建了一个trigger event
,当第一个字符从扫描器中读取时触发,扫描器每0.1秒循环一次,以检查构建条形码的StringProperty
变量是否等于每个循环的TextInput
中设置的值。当字符串变量在0.01秒时生成,并且检查它们是否相等的函数以较慢的速度运行时,如果TextInput == StringProperty
,则会知道条形码的完整读取。当然,如果datawedge配置文件或设置被更改,我的应用程序将无法验证插件。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐