seiminScan.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <view class="content"></view>
  3. </template>
  4. <script>
  5. var main, receiver, filter;
  6. var _codeQueryTag = false;
  7. export default {
  8. name: 'seiminScan',
  9. data() {
  10. return {
  11. scanCode: ''
  12. }
  13. },
  14. created: function(option) {
  15. this.initScan()
  16. this.startScan();
  17. },
  18. onHide: function() {
  19. this.stopScan();
  20. },
  21. destroyed: function() {
  22. /*页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果*/
  23. this.stopScan();
  24. },
  25. methods: {
  26. initScan() {
  27. main = plus.android.runtimeMainActivity();
  28. let IntentFilter = plus.android.importClass('android.content.IntentFilter');
  29. filter = new IntentFilter();
  30. filter.addAction("com.honeywell.scan.broadcast");
  31. receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
  32. onReceive: (context, intent) => {
  33. plus.android.importClass(intent);
  34. let code = intent.getStringExtra("data");
  35. this.queryCode(code);
  36. }
  37. });
  38. },
  39. startScan() {
  40. main.registerReceiver(receiver, filter);
  41. },
  42. stopScan() {
  43. main.unregisterReceiver(receiver);
  44. },
  45. queryCode: function(code) {
  46. //防重复
  47. if (_codeQueryTag) return false;
  48. _codeQueryTag = true;
  49. setTimeout(function() {
  50. _codeQueryTag = false;
  51. }, 150);
  52. let id = code
  53. uni.$emit('scancodedate', {
  54. code: id
  55. })
  56. }
  57. }
  58. }
  59. </script>
  60. <style lang="scss" scoped>
  61. page {
  62. background-color: #efeff4;
  63. }
  64. .content {
  65. text-align: center;
  66. }
  67. </style>