package com.seuic.scanner;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.LOG;
import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
/**
* This class echoes a string called from JavaScript.
*/
public class SeuicScanner extends CordovaPlugin {
private static final String LOG_TAG = "ScannerManager";
private static final String ACTION_SCAN_OK = "com.seuic.framework.scan_ok";
private static final String A9_SCAN_ACTION = "com.android.server.scannerservice.youbang";
private static final String GET_BAR_CODE = "getBarCode";
private static final String CANCEL_SCAN = "cancelScan";
private static final String INIT_NAME = "initBroadcastName";
private static final String NEWLAND_SCAN_ACTION = "nlscan.action.SCANNER_RESULT";
private static final String SHT35_4G_SCAN_ACTION = "com.android.server.scannerservice.broadcast";
BroadcastReceiver receiver;
private CallbackContext scannerCallbackContext = null;
/**
* Constructor.
*/
public SeuicScanner() {
this.receiver = null;
}
/**
* Executes the request.
*
* @param action The action to execute.
* @param args JSONArry of arguments for the plugin.
* @param callbackContext The callback context used when calling back into JavaScript.
* @return True if the action was valid, false if not.
*/
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
LOG.e(LOG_TAG, "the action is : ", action);
if (action.equals(GET_BAR_CODE)) {
if (this.scannerCallbackContext != null) {
callbackContext.error( "Scanner listener already running.");
return true;
}
this.scannerCallbackContext = callbackContext;
// We need to listen to the scanner is successfully status
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTION_SCAN_OK);
intentFilter.addAction(A9_SCAN_ACTION);
intentFilter.addAction(NEWLAND_SCAN_ACTION);
intentFilter.addAction(SHT35_4G_SCAN_ACTION);
if (this.receiver == null) {
this.receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateScannerInfo(intent);
}
};
webView.getContext().registerReceiver(this.receiver, intentFilter);
}
// Don't return any result now, since status results will be sent when events come in from broadcast receiver
PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
pluginResult.setKeepCallback(true);
callbackContext.sendPluginResult(pluginResult);
return true;
}
else if (action.equals(CANCEL_SCAN)) {
removeScannerListener();
this.sendUpdate("", false); // release status callback in JS side
this.scannerCallbackContext = null;
callbackContext.success();
return true;
}
else if(action.equals(INIT_NAME)){
Intent intent = new Intent("com.android.scanner.service_settings");
intent.putExtra("action_barcode_broadcast",A9_SCAN_ACTION);
intent.putExtra("endchar","NONE");
cordova.getActivity().sendBroadcast(intent);
}
return false;
}
/**
* Stop battery receiver.
*/
public void onDestroy() {
removeScannerListener();
}
/**
* Stop battery receiver.
*/
public void onReset() {
removeScannerListener();
}
/**
* Stop the battery receiver and set it to null.
*/
private void removeScannerListener() {
if (this.receiver != null) {
try {
webView.getContext().unregisterReceiver(this.receiver);
this.receiver = null;
} catch (Exception e) {
LOG.e(LOG_TAG, "Error unregistering scanner receiver: " + e.getMessage(), e);
}
}
}
/**
* Updates the JavaScript side whenever the battery changes
*
* @param batteryIntent the current battery information
* @return
*/
private void updateScannerInfo(Intent ScannerIntent) {
if ( null == ScannerIntent ) {
return;
}
String action = ScannerIntent.getAction();
if ( null == action ) {
return;
}
if ( action.equals( ACTION_SCAN_OK ) ) {
String scanData = ScannerIntent.getStringExtra( "scan_data" );
if ( scanData != null && scanData.length() > 0 ) {
LOG.i(LOG_TAG, "=====================ScanData in EditText: ", scanData);
sendUpdate(scanData,true);
}
}else if( action.equals( A9_SCAN_ACTION ) ){
String scanData = ScannerIntent.getStringExtra("scannerdata");
if ( scanData != null && scanData.length() > 0 ) {
LOG.i(LOG_TAG, "=====================ScanData in EditText: ", scanData);
sendUpdate(scanData,true);
}
}else if( action.equals( NEWLAND_SCAN_ACTION)){
String scanData = ScannerIntent.getStringExtra("SCAN_BARCODE1");
if(scanData != null && scanData.length() > 0 ){
LOG.i(LOG_TAG, "=====================ScanData in EditText: ", scanData);
sendUpdate(scanData,true);
}
}else if(action.equals(SHT35_4G_SCAN_ACTION)){
String scanData = ScannerIntent.getStringExtra("scannerdata");
if(scanData != null && scanData.length() > 0 ){
LOG.i(LOG_TAG, "=====================ScanData in EditText: ", scanData);
sendUpdate(scanData,true);
}
}
}
/**
* Create a new plugin result and send it back to JavaScript
*
* @param connection the network info to set as navigator.connection
*/
private void sendUpdate(String info, boolean keepCallback) {
if (this.scannerCallbackContext != null) {
PluginResult result = new PluginResult(PluginResult.Status.OK, info);
result.setKeepCallback(keepCallback);
this.scannerCallbackContext.sendPluginResult(result);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
cordova-plugin-seuic-scanner.rar
共4个文件
js:1个
xml:1个
json:1个
4星 · 超过85%的资源 需积分: 15 11 下载量 21 浏览量
2020-07-30
10:38:06
上传
评论
收藏 4KB RAR 举报
温馨提示
自己封装的适用于PDA红外扫码使用广播方式扫码的插件,支持扫码后自动失去焦点开始调用接口,解压后安装在项目中plugins插件目录中
资源推荐
资源详情
资源评论
收起资源包目录
cordova-plugin-seuic-scanner.rar (4个子文件)
cordova-plugin-seuic-scanner
package.json 346B
src
android
SeuicScanner.java 7KB
plugin.xml 860B
www
seuicScanner.js 2KB
共 4 条
- 1
资源评论
- baidu_348638462021-08-06大佬 怎么调用呀
- yzlLOVEwq2020-11-15说实话,下载了,但是不会调用,无法评价Angularbaby2021-08-06私聊我吧,我教你
Angularbaby
- 粉丝: 71
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 555springboot + vue 线上教学平台.zip(可运行源码+数据库文件+文档)
- 554springcloud + vue 房产销售平台.zip(可运行源码+数据库文件+文档)
- 小霸王坦克游戏源码.7z
- 蓝桥杯单片机基础学习项目(LED,数码管,蜂鸣器,继电器,按键控制)
- 553springboot + vue 某银行OA系统.zip(可运行源码+数据库文件+文档)
- DatabaseWatermarkingBasedonTextFormat
- yolov8常用二维码检测检测+数据集
- -移动通信-网络课程设计与研究
- 基于Python的PCA人脸识别算法的原理及实现代码+文档详解.zip
- 甘肃移动全业务工程建设项目管理流程优化研究
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功