рд▓реЗрдЦ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╕рдм рдХреБрдЫ 1C рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛редрдЖрдЬ рд╣рдо "1C рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд▓реЗрдЦ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реБрдЖред рд╣рдо рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА ATOL Smart.Lite рдХреЗ рддрд╣рдд рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗ
- рдПрдХ рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЬрд┐рддрдирд╛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред
- 1C рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдИ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реБрдП рдереЗ
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
c++
рдмрд╛рд╣рд░реА рдШрдЯрдХреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдерд╛ред рдФрд░ x86 рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдХ
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рднреА рд╣реИред рдпрд╣
c++
рдХреА рдХрд┐рд╕реА рднреА рд╕рдордЭ рдХреЗ рдмрд┐рдирд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд┐рд░ рднреА, рдпрд╣ рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЧрд┐рд░рддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рд░ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред 1 рд╕реА рдореЗрдВ рдкреНрд░рд╕рд╛рд░рдг рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реЗ рдЕрддреНрдпрдзрд┐рдХ рд▓рд╛рд▓рдЪ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рдирд╣реАрдВ рд╣реИрдВред рдФрд░ рдореИрдВ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдлрд┐рд░ рднреА, рдПрдХ
рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ "рдПрдВрдбреНрд░реЙрдЗрдб рдУрдПрд╕ рдХреЗ рд▓рд┐рдП 1 рд╕реА рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдмрд╛рд╣рд░реА рдШрдЯрдХ" рд╡рд╣рд╛рдВ рдЖрдПред рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдШрдЯрдХ рдХреЗ рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреИрд╕реЗ рдврд╛рд▓рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ,
рдпрд╣рд╛рдВ рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИрдВред рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рджрдпрд╛рд▓реБ рдЖрджрдореА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдиреЗ рдПрдХ рдЬреАрд╡рдВрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреА рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рдХреНрд╖рд┐рддрд┐рдЬ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдЬреЗрдПрдирдЖрдИ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдФрд░
рдпрд╣рд╛рдБ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрд╕рд▓реА c ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдЖрдкрд╕реЗ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рднреЛрдЧрд╡рд╛рджреА рдмрдиреЗрдВ рдФрд░ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦреЗрдВред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЙрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдерд╛, рдФрд░ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ред рдЖрдк рдЗрд╕реЗ
рдпрд╣рд╛рдБ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛
startEventsWatch
рдЗрд╕рдореЗрдВ рд╣рдо
startEventsWatch
рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕
BroadcastReceiver
рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ рдФрд░
onReceive
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ
onReceive
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реА рдШрдЯрдирд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдИ, рдЦреЗрддреЛрдВ рдореЗрдВ рднрд░реЗрдВ, рдФрд░
OnBroadcastReceive
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЕрдм рдпрд╣ рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА + + рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рд╣реИред + рдФрд░ рд╣рдореЗрдВ Android рдХреА рджреБрдирд┐рдпрд╛ рд╕реЗ 1C рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВред 1C рдореЗрдВ рд╣рдо рдЬреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХреА рдкреЛрд╖рд┐рдд рд▓рд╛рдЗрдиреЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИрдВред
filter.addAction("com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST"); filter.addAction(NEW_KEY_UP);
рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдХреИрдирд░ рд╕реЗ рдПрдХ рдШрдЯрдирд╛ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣
com.xcheng.scanner...
рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдХреИрдирд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдФрд░ рд░реЗрдЦрд╛ рд╣реЛрдЧреАред рддрджрдиреБрд╕рд╛рд░, рд╕рдВрджреЗрд╢ рдХреЗ рдЕрдВрджрд░ рдХрд╛ рдбреЗрдЯрд╛ рднреА рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпреЗ рдбреЗрдЯрд╛ рдЯреАрдПрд╕рдбреА рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЦреИрд░, рдпрд╛ logcat рдХреЛ рджреЗрдЦреЛред рдореИрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмрдЯрди рдкреНрд░реЗрд╕ рдХреЛрдб рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдорд╛рдереЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реБрдИред рдмрд╕ рдХреЛрдб рдореЗрдВ
onKeyUP
рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЗрд╕реЗ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП
sendBroadcast
рдЕрд╕рдлрд▓ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдореБрдЭреЗ рдЬрд▓реНрджреА рд╕реЗ
AccessibilityService
рдлреЗрдВрдХрдирд╛ рдкрдбрд╝рд╛
startEventsWatch public void startEventsWatch() { if (m_Receiver==null) { m_Receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent != null) { String event, type, data; switch (intent.getAction()) { case "com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST": event = "NewBarcode"; type = intent.getStringExtra("EXTRA_BARCODE_DECODING_SYMBOLE"); data = intent.getStringExtra("EXTRA_BARCODE_DECODING_DATA"); OnBroadcastReceive(m_V8Object, event, type, data); break; case NEW_KEY_UP: event = "NewKeyUP"; type = "key"; data = intent.getStringExtra(KEY_CODE); OnBroadcastReceive(m_V8Object, event, type, data); } } } }; IntentFilter filter = new IntentFilter(); filter.addAction("com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST"); filter.addAction(NEW_KEY_UP); m_Activity.registerReceiver(m_Receiver, filter); } }
рдЕрдм рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ 1 рд╕реА рдореЗрдВ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ
OnBroadcastReceive
extern "C" JNIEXPORT void JNICALL Java_org_innovait_atolsmartliteutils_MainApp_OnBroadcastReceive(JNIEnv* env, jclass jClass, jlong pObject, jstring j_event, jstring j_type, jstring j_data)
рд╣реИрдВред
jstring j_event, jstring j_type, jstring j_data
рдпреЗ рд╡реЗ рдЪрд░ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдореИрдВ рдЧреБрдЬрд░рддрд╛ рд╣реВрдВ, рдШрдЯрдирд╛, CC рдХрд╛ рдкреНрд░рдХрд╛рд░, рдФрд░ CC рд╕реНрд╡рдпрдВред рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
Java_org_innovait_atolsmartliteutils_MainApp_OnBroadcastReceive extern "C" JNIEXPORT void JNICALL Java_org_innovait_atolsmartliteutils_MainApp_OnBroadcastReceive(JNIEnv* env, jclass jClass, jlong pObject, jstring j_event, jstring j_type, jstring j_data) { IAddInDefBaseEx *pAddIn = (IAddInDefBaseEx *) pObject; if (pAddIn != nullptr) { std::wstring ws_event =ToWStringJni(j_event); std::wstring ws_type = ToWStringJni(j_type); std::wstring ws_data = ToWStringJni(j_data); std::wstring obj_data{}; obj_data = L"{\"type\": \"" + ws_type + L"\", \"data\": \"" + ws_data + L"\"}"; WcharWrapper wdata((wchar_t*)obj_data.c_str()); WcharWrapper wmsg((wchar_t*)ws_event.c_str()); pAddIn->ExternalEvent(s_EventSource, wmsg, wdata); } }
std::wstring ws_event =ToWStringJni(j_event);
рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ
jstring
рд╕реЗ
std::wstring
рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ 1C
WcharWrapper wmsg((wchar_t*)ws_event.c_str());
рд▓рд┐рдП рдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ
WcharWrapper wmsg((wchar_t*)ws_event.c_str());
рд░реВрдкрд╛рдВрддрд░рдг рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рд╕реНрдорд╛рд░реНрдЯ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рджреВрд╕рд░рд╛ рдлрд╝рдВрдХреНрд╢рди 1 рд╕реА рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдЖрддрд╛ рд╣реИред
рд╕реНрдкрд╛рдпрд▓рд░ рд╣реЗрдбрд┐рдВрдЧ std::wstring ToWStringJni(jstring jstr) { std::wstring ret; if (jstr) { JNIEnv* env = getJniEnv(); const jchar* jChars = env->GetStringChars(jstr, NULL); jsize jLen = env->GetStringLength(jstr); ret.assign(jChars, jChars + jLen); env->ReleaseStringChars(jstr, jChars); } return ret; }
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рд░рд┐рд▓реАрдЬрд╝ рд╣реИрдВред
рд╡рд╣ рд╕рдм рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред