Skip to content

Commit

Permalink
more detailed test app
Browse files Browse the repository at this point in the history
  • Loading branch information
Florian Biebel committed Nov 18, 2021
1 parent d262bb8 commit 7a92f86
Show file tree
Hide file tree
Showing 30 changed files with 148 additions and 153 deletions.
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v14.18.1
v14.x
138 changes: 106 additions & 32 deletions test/scan-test-app/config.xml
Original file line number Diff line number Diff line change
@@ -1,36 +1,110 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.mobisys.scanner.test" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>scan-test-app</name>
<description>
<widget id="com.mobisys.scanner.test"
version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>scan-test-app</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://cordova.io">
</description>
<author email="[email protected]"
href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
<config-file parent="/manifest" target="AndroidManifest.xml">
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.microphone" android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</config-file>
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
<string>This app would like to access your camera to scan barcodes</string>
</edit-config>
</platform>
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
<config-file parent="/manifest"
target="AndroidManifest.xml">
<uses-feature android:name="android.hardware.camera"
android:required="false" />
<uses-feature android:name="android.hardware.microphone"
android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</config-file>
<icon src="res/android/mipmap-mdpi/ic_launcher.png"
density="mdpi" />
<icon src="res/android/mipmap-hdpi/ic_launcher.png"
density="hdpi" />
<icon src="res/android/mipmap-xhdpi/ic_launcher.png"
density="xhdpi" />
<icon src="res/android/mipmap-xxhdpi/ic_launcher.png"
density="xxhdpi" />
<icon src="res/android/mipmap-xxxhdpi/ic_launcher.png"
density="xxxhdpi" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<edit-config file="*-Info.plist"
mode="merge"
target="NSCameraUsageDescription">
<string>This app would like to access your camera to scan barcodes</string>
</edit-config>
<icon src="res/ios/180.png"
width="180"
height="180" />
<icon src="res/ios/60.png"
width="60"
height="60" />
<icon src="res/ios/120.png"
width="120"
height="120" />
<icon src="res/ios/76.png"
width="76"
height="76" />
<icon src="res/ios/152.png"
width="152"
height="152" />
<icon src="res/ios/40.png"
width="40"
height="40" />
<icon src="res/ios/80.png"
width="80"
height="80" />
<icon src="res/ios/57.png"
width="57"
height="57" />
<icon src="res/ios/114.png"
width="114"
height="114" />
<icon src="res/ios/72.png"
width="72"
height="72" />
<icon src="res/ios/144.png"
width="144"
height="144" />
<icon src="res/ios/167.png"
width="167"
height="167" />
<icon src="res/ios/29.png"
width="29"
height="29" />
<icon src="res/ios/58.png"
width="58"
height="58" />
<icon src="res/ios/87.png"
width="87"
height="87" />
<icon src="res/ios/50.png"
width="50"
height="50" />
<icon src="res/ios/100.png"
width="100"
height="100" />
<icon src="res/ios/1167.png"
width="167"
height="167" />
<icon src="res/ios/1024.png"
width="1024"
height="1024" />
</platform>
</widget>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/100.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/1024.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/114.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/120.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/144.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/152.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/167.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/180.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/20.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/29.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/40.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/50.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/57.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/58.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/60.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/72.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/76.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/80.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/scan-test-app/res/ios/87.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
111 changes: 2 additions & 109 deletions test/scan-test-app/www/css/index.css
Original file line number Diff line number Diff line change
@@ -1,110 +1,3 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
* {
-webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */
}

body {
-webkit-touch-callout: none; /* prevent callout to copy image, etc when tap to hold */
-webkit-text-size-adjust: none; /* prevent webkit from resizing text to fit */
-webkit-user-select: none; /* prevent copy paste, to allow, change 'none' to 'text' */
background-color:#E4E4E4;
background-image:linear-gradient(to bottom, #A7A7A7 0%, #E4E4E4 51%);
font-family: system-ui, -apple-system, -apple-system-font, 'Segoe UI', 'Roboto', sans-serif;
font-size:12px;
height:100vh;
margin:0px;
padding:0px;
/* Padding to avoid the "unsafe" areas behind notches in the screen */
padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
text-transform:uppercase;
width:100%;
}

/* Portrait layout (default) */
.app {
background:url(../img/logo.png) no-repeat center top; /* 170px x 200px */
position:absolute; /* position in the center of the screen */
left:50%;
top:50%;
height:50px; /* text area height */
width:225px; /* text area width */
text-align:center;
padding:180px 0px 0px 0px; /* image height is 200px (bottom 20px are overlapped with text) */
margin:-115px 0px 0px -112px; /* offset vertical: half of image height and text area height */
/* offset horizontal: half of text area width */
}

/* Landscape layout (with min-width) */
@media screen and (min-aspect-ratio: 1/1) and (min-width:400px) {
.app {
background-position:left center;
padding:75px 0px 75px 170px; /* padding-top + padding-bottom + text area = image height */
margin:-90px 0px 0px -198px; /* offset vertical: half of image height */
/* offset horizontal: half of image width and text area width */
}
}

h1 {
font-size:24px;
font-weight:normal;
margin:0px;
overflow:visible;
padding:0px;
text-align:center;
}

.event {
border-radius:4px;
color:#FFFFFF;
font-size:12px;
margin:0px 30px;
padding:2px 0px;
}

.event.listening {
background-color:#333333;
display:block;
}

.event.received {
background-color:#4B946A;
display:none;
}

#deviceready.ready .event.listening { display: none; }
#deviceready.ready .event.received { display: block; }

@keyframes fade {
from { opacity: 1.0; }
50% { opacity: 0.4; }
to { opacity: 1.0; }
}

.blink {
animation:fade 3000ms infinite;
-webkit-animation:fade 3000ms infinite;
}


@media screen and (prefers-color-scheme: dark) {
body {
background-image:linear-gradient(to bottom, #585858 0%, #1B1B1B 51%);
}
pre {
overflow: auto;
}
Binary file removed test/scan-test-app/www/img/logo.png
Binary file not shown.
32 changes: 25 additions & 7 deletions test/scan-test-app/www/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,34 @@
<meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover">
<meta name="color-scheme" content="light dark">
<link rel="stylesheet" href="css/index.css">
<title>Hello World</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<title>ML Kit Barcode Scanner Test</title>
</head>
<body>
<div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p class="event listening">Connecting to Device</p>
<p class="event received">Device is Ready</p>
<div class="container px-4 py-4">
<div class="row gy-4">
<div class="col-12">
<p>Press the button below to open the camera and scan a barcode.</p>
<button id="scan" class="btn btn-primary btn-lg">Scan</button>
</div>
<button id="scan">Scan</button>
<div class="col-12">
<form>
<h4>Scan options</h4>
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" role="switch" id="beepOnSuccessSwitch" name="beepOnSuccess" value="true">
<label class="form-check-label" for="beepOnSuccessSwitch">Beep on success</label>
</div>
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" role="switch" id="vibrateOnSuccessSwitch" name="vibrateOnSuccess" value="true">
<label class="form-check-label" for="vibrateOnSuccessSwitch">Vibrate on success</label>
</div>
</form>
</div>
<div class="col-12">
<h4>Log output</h4>
<pre id="output"></pre>
</div>
</div>
</div>
<script src="cordova.js"></script>
<script src="js/index.js"></script>
Expand Down
18 changes: 14 additions & 4 deletions test/scan-test-app/www/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,26 @@
// See https://cordova.apache.org/docs/en/latest/cordova/events/events.html#deviceready
document.addEventListener('deviceready', onDeviceReady, false);

function log(data) {
alert(JSON.stringify(data, null, 2));
function onSuccess(result) {
const node = document.createElement('div');
node.textContent = `${result.text} (${result.format}/${result.type})`;
document.getElementById('output').prepend(node);
}

function scan() {
cordova.plugins.mlkit.barcodeScanner.scan({}, log, console.error);
const formData = new FormData(document.querySelector('form'));
const options = {};

for (const pair of formData.entries()) {
const key = pair[0];
const value = pair[1];
options[key] = value === 'true';
}

cordova.plugins.mlkit.barcodeScanner.scan(options, onSuccess, console.error);
}

function onDeviceReady() {
console.log('Running cordova-' + cordova.platformId + '@' + cordova.version);
document.getElementById('deviceready').classList.add('ready');
document.getElementById('scan').onclick = scan;
}

0 comments on commit 7a92f86

Please sign in to comment.