FNScanner QR코드 인터페이스 openView 사용자 정의 스캔 데모
모듈 문서 주소:https://link.juejin.im/?targe...
모듈에서 주의해야 할 점:
주의: 본 모듈을 사용하기 전에 클라우드 컴파일 페이지에서 카메라 접근 권한을 추가하고 앨범에 접근하려면 의사소통을 통해 앨범 접근 권한을 신청해야 합니다.동시에 사용할 수 없는 모듈:wwprint
이 모듈은 두 가지 스캔 시나리오로 구성되어 있습니다.
프로젝트 1 개발자는 OpenScanner 인터페이스를 호출하여 기본 UI 효과가 있는 QR코드/바코드 스캔 페이지를 직접 엽니다. 이 인터페이스는 윈도우 창을 여는 것과 같으며, 인터페이스 내용은 사용자 정의를 지원하지 않습니다.사용자는 이 인터페이스에서 다음과 같은 기능을 실현할 수 있다. 불을 켜고 끄고 시스템 앨범에서 QR코드/바코드 이미지를 선택하여 복호화 조작을 하고 카메라를 켜고 초점 코드가 해석하고자 하는 QR코드/바코드를 자동으로 검사한다.
프로젝트 2는 OpenView 인터페이스를 통해 사용자 정의 크기의 스캐닝 영역을 열고 스캐닝을 진행합니다.개발자는 자체적으로 프레임을 모듈에 붙여 사용자 정의 스캐닝 인터페이스 기능을 실현할 수 있다.그리고 setFrame,closeView,switchLight 등 인터페이스에 맞추어 스위치 플래시, 스캐닝 인터페이스 위치 크기, 이미지 디코딩, 문자열 인코딩 등 관련 기능을 재설정한다.자세한 내용은 모듈 인터페이스 매개 변수를 참조하십시오.방안은 제가 소개하지 않겠습니다. 인터페이스를 직접 호출하면 스캔 ui인터페이스를 직접 표시할 수 있기 때문에 직접 사용하면 됩니다. 건물 주인의 본 게시물이 공유하는 것은 방안이 ui 디자인 효과를 만족시키지 못하는 전제에서 ui 사용자 정의 효과를 어떻게 실현하는지입니다.
시나리오 2 페이지 캡처 완료
방안2 플래시 효과 인터페이스 캡처
첫 번째 단계:openwin을 먼저 열고 모듈을 연 다음에frm 사용자 정의 코드를 켜서 만나는 것을 지연합니다.여러분 위에서 스캔이 이런 사고방식인 것을 보았습니다.쓸데없는 말 하지 말고 윗부분 핵심 원본 얘기해.
var FNScanner, eHeader, headerH;
apiready = function() {
// FNScanner
FNScanner = api.require('FNScanner');
// id dom
eHeader = $api.byId('header');
//
$api.fixStatusBar(eHeader);
//
headerH = $api.offset(eHeader).h;
//
api.addEventListener({
name: 'resume'
}, function(ret, err) {
FNScanner.onResume();
});
//
api.addEventListener({
name: 'pause'
}, function(ret, err) {
FNScanner.onPause();
});
fnOpenFNScanner();
}
function fnOpenFNScanner() {
//
FNScanner.openView({
//autorotation: true,
fixedOn: api.frameName,
rect: {
x: 0,
y: headerH,
w: api.frameWidth,
h: api.frameHeight
}
}, function(ret, err) {
if (ret) {
if (ret.eventType == 'success' && ret.content != '') {
//
fnOpenCouple(ret.content);
return;
}
if (ret.eventType == 'cameraError') {
api.toast({
msg: ' app ',
duration: 2000,
location: 'bottom'
});
setTimeout(function() {
//
back();
}, 300);
return;
}
if (ret.eventType == 'albumError') {
api.toast({
msg: ' app ',
duration: 2000,
location: 'bottom'
});
setTimeout(function() {
back();
}, 300);
return;
}
if (ret.eventType == 'fail') {
api.toast({
msg: ' , ',
duration: 2000,
location: 'bottom'
});
setTimeout(function() {
back();
}, 300);
return;
}
} else {
api.toast({
msg: ' ',
duration: 2000,
location: 'bottom'
});
setTimeout(function() {
back();
}, 300);
}
});
setTimeout(function() {
// frm
api.openFrame({
name: 'add_frm',
url: './add_frm.html',
rect: {
marginTop: headerH,
marginLeft: 0,
marginRight: 0,
marginBottom: 0
},
bgColor: 'rgba(0,0,0,0)',
});
}, 300);
}
//
function back() {
// win
api.closeWin();
//
FNScanner.closeView();
}
//
function fnOpenCouple(content) {
console.warn(content);
back(); //
}
var isSOff = true;
//
function fnOpenLamp() {
if (isSOff) {
FNScanner.switchLight({
status: 'on'
});
isSOff = false;
} else {
FNScanner.switchLight({
status: 'off'
});
isSOff = true;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.