yb1984724 发表于 2020-9-18 15:43:45

这是一个获取扫描头数据的广播例子,求转火山例子谢谢

这是一个获取扫描头数据的广播例子,求转火山例子谢谢


onLoad() {

            page = this;

            this.title = "开始监听!";

            var main = plus.android.runtimeMainActivity(); //获取activity   
            var context = plus.android.importClass('android.content.Context'); //上下文   
            var receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
                onReceive: doReceive
            });
            var IntentFilter = plus.android.importClass('android.content.IntentFilter');
            var Intent = plus.android.importClass('android.content.Intent');
            var filter = new IntentFilter();

            //针对优博讯安卓PDA-i6300A添加监听,其它优博讯的型号应该一样或类似
            filter.addAction("android.intent.ACTION_DECODE_DATA"); //监听扫描

            main.registerReceiver(receiver, filter); //zc监听   

            function doReceive(context, intent) {

                //通过intent实例引入intent类,方便以后的‘.’操作   
                plus.android.importClass(intent);

                //条码内容
                var barcodeBytes = intent.getByteArrayExtra("barcode");
                var barcode = byteToString(barcodeBytes);

                //条码长度
                var barcodeLength = intent.getIntExtra("length", 0);
                //var myArray = new ArrayBuffer(0);
                //条码类型
                var barcodeTypeBytes = intent.getByteExtra("barcodeType", (0 | 0));
                var barcodeType = byteToString(barcodeTypeBytes);

                // uni.showModal({
                //content: '条码:' + barcode + '\r\n长度:' + barcodeLength + '\r\n类型:' + barcodeType,
                //showCancel: false
                // });
                page.title = barcode;
                //console.log(barcode);   
                //main.unregisterReceiver(receiver);//取消监听   
            }

            function byteToString(arr) {
                if (typeof arr === 'string') {
                  return arr;
                }
                var str = '',
                  _arr = arr;
                for (var i = 0; i < _arr.length; i++) {
                  var one = _arr.toString(2),
                        v = one.match(/^1+?(?=0)/);
                  if (v && one.length == 8) {
                        var bytesLength = v.length;
                        var store = _arr.toString(2).slice(7 - bytesLength);
                        for (var st = 1; st < bytesLength; st++) {
                            store += _arr.toString(2).slice(2);
                        }
                        str += String.fromCharCode(parseInt(store, 2));
                        i += bytesLength - 1;
                  } else {
                        str += String.fromCharCode(_arr);
                  }
                }
                return str;
            }

      }

zhongzutao 发表于 2020-12-9 19:55:24

兄弟,我的已经自己解决了,你现在还需要不?

yb1984724 发表于 2020-12-17 15:45:16

zhongzutao 发表于 2020-12-9 19:55
兄弟,我的已经自己解决了,你现在还需要不?

我还没搞定,期待解决,请问是怎么弄得?

xd1023 发表于 2020-12-19 13:08:00

定义一个广播接收器接收就好了基本上PDA都可以设置自己的广播方式

zhongzutao 发表于 2021-2-18 16:32:37

yb1984724 发表于 2020-12-17 15:45
我还没搞定,期待解决,请问是怎么弄得?

还需要的话可以加企鹅,67--60--49--838,备注下原因

顶级小白 发表于 2022-3-31 15:26:10

zhongzutao 发表于 2021-2-18 16:32
还需要的话可以加企鹅,67--60--49--838,备注下原因

QQ加不了
页: [1]
查看完整版本: 这是一个获取扫描头数据的广播例子,求转火山例子谢谢