uniapp+native.js는 안드로이드 USB 코드 스캐너를 모니터링합니다.

       최근 프로젝트에 이러한 요구가 생겼는데, 안드로이드 시스템 금전 등록기는 입력 상자 초점이 없을 때 USB 스캐너의 스캔 데이터를 모니터링 해야 하며, 적용된 기술은 안드로이드 네이티브에 통합된 uniapp입니다. 처음에는 계속 안드로이드를 사용하여 모니터링 방법을 작성하다가 스캔한 코드 데이터를 uniapp으로 다시 던졌는데, 디버깅을 해보니 그다지 이상적이지 않다는 것을 알게 되었습니다. 애플릿 페이지가 기본적으로 열리므로 시작할 수 없습니다. USB 스캔 코드 이벤트를 모니터링하는 중 올바른 방법을 사용하지 않은 것 같습니다. 또 다른 문제는 uniapp과 Android 호스트 간의 통신입니다. 마지막으로 uniapp은 키보드 키 누르기 이벤트를 모니터링하는 데 사용되지만 uniapp은 Android의 키 누르기 이벤트를 모니터링하지 않습니다. 창이면 다음과 같이 작성할 수 있습니다.

window.addEventListener('keypress',function(e){

})

      Android 플랫폼에서는 H5 Native.js만을 사용하여 keyup 이벤트를 모니터링할 수 있지만, keypress 이벤트가 없으면 실제로 효과는 동일합니다.입력 상자 없이도 USB 스캐너 데이터를 모니터링할 수 있습니다.(실제로는 외부 키보드입니다.) . KeyCode도 변환해야 하며, 여기의 키-값 대응표는 Android여야 합니다.

<template>
	<view >	
     <text>输入内容:{
   
   {inputString}}</text>
	</view>
</template>


data() {
    	  return {
				 
				inputString:'',
				inputCache:'',
				 
			}
},

onLoad() {
	plus.key.addEventListener("keyup",this.keypress);
},
methods: {
	keypress(e){
				// console.log('focusElement',this.focusElement)
				//if(this.focusElement) return;
				if(e.keyCode===66){
								  this.inputString = this.inputCache;
								  this.inputCache = '';
				}else{
								  this.inputCache += this.keyValue(e.keyCode)
				}
				console.log('keypress argument:',e)
			},

	keyValue(keyCode){
				switch(keyCode){
					case 7:
					  return 0;
					case 8:
					  return 1;
					case 9:
					  return 2;
					case 10:
					  return 3;
				    case 11:
				      return 4;
				    case 12:
				      return 5;
				    case 13:
					  return 6;
				    case 14:
					  return 7;
				    case 15:
					  return 8;
				    case 16:
					  return 9;
				    case 156:
					   return '-';
					case 70:
					    return '=';
					case 157:
						return '+';
					default :
					    return '' ;
					
				}
			},
}

추천

출처blog.csdn.net/qq_33278354/article/details/126409071