У меня есть приложение Kivy в Android, которое возвращает событие key_down
на компьютере для сканирования штрих-кода Zebra tc25, используя профиль, который был настроен для выдачи нажатия клавиш с помощью суффикса возврата carraige.
Проблема заключается в том, что при первом открытии приложения после установки Apk сканер прекрасно выдает символ ASCII 13 или carraige return
при каждом сканировании, но как только я закрываю приложение, перезапускаю или приостанавливаю приложение и возобновляю работу,сканер не хочет выдавать символ ASCII 13. Он сканирует штрих-коды, но никогда после перезапуска возвращает возврат carraige.
Может кто-нибудь подсказать, какие разрешения или действия я должен объявить в * 1005? * или настройку, которую я должен установить, чтобы получить возврат carraige после перезапуска?
Вот вывод logcat до и после перезапуска после печати на консоль:
1) Pre:
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, как мне получить доступ к классу datawedge "com.symbol.datawedge.api.SCANNER_OUTPUT_PLUGIN"
с помощью jnius.
Следующее дает ошибку jnius.jnius.JavaException: Class not found b'com/symbol/datawedge'
:
import jnius
from jnius import autoclass
DatawedgeApi = autoclass("com.symbol.datawedge.api")
С этим я могу использовать плагин вывода
Обновление:
Так что я нашел чистое решение Kivy, которое представляет собой слепой обходной путь, чтобы получить вывод нажатия клавиши, не полагаясь на символ char 13
из datawedge, но только время будетскажите, если это работает в долгосрочной перспективе. Поэтому я создал trigger event
, который срабатывает, как только первый символ читается из сканера, который повторяется каждые 0,1 секунды, чтобы проверить, равна ли переменная StringProperty
, которая строит штрих-код, значению, установленному в TextInput
на каждой петле. Поскольку переменная String создается за 0,01 секунды, а функция, которая проверяет, равны ли они, выполняется с меньшей скоростью, будет известно полное считывание штрих-кода, если TextInput == StringProperty
. Конечно, если профили datawedge или настройки изменены, мое приложение не может проверить плагины.