<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover">
<meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
<script src="components/loader.js"></script>
<script src="lib/onsenui/js/onsenui.min.js"></script>
<link rel="stylesheet" href="components/loader.css">
<link rel="stylesheet" href="lib/onsenui/css/onsenui.css">
<link rel="stylesheet" href="lib/onsenui/css/onsen-css-components.css">
<link rel="stylesheet" href="css/style.css">
<script>
if (ons.platform.isIPhoneX()) {
document.documentElement.setAttribute('onsflag-iphonex-portrait', '');
document.documentElement.setAttribute('onsflag-iphonex-landscape', '');
}
// Bufferクラス
class Buffer {
constructor(str) {
this.data = str;
}
get() {
return this.data.split('\r\n');
}
append(str) {
this.data += str;
}
}
var buf = new Buffer('');
function scanBarcode() {
cordova.plugins.barcodeScanner.scan(
function (result) {
alert("We got a barcode\n" +
"Result: " + result.text + "\n" +
"Format: " + result.format + "\n" +
"Cancelled: " + result.cancelled);
buf.append(result.text);
var data = buf.get().join('\n');
$('#data').html('<pre>' + data + '</pre>');
},
function (error) {
alert("Scanning failed: " + error);
},
{
preferFrontCamera : false, // iOS and Android
showFlipCameraButton : true, // iOS and Android
showTorchButton : true, // iOS and Android
torchOn: true, // Android, launch with the torch switched on (if available)
saveHistory: true, // Android, save scan history (default false)
prompt : "Place a barcode inside the scan area", // Android
resultDisplayDuration: 500, // Android, display scanned text for X ms. 0 suppresses it entirely, default 1500
formats : "QR_CODE,PDF_417", // default: all but PDF_417 and RSS_EXPANDED
orientation : "landscape", // Android only (portrait|landscape), default unset so it rotates with the device
disableAnimations : true, // iOS
disableSuccessBeep: false // iOS and Android
}
);
}
$(document).on('click','#scan',function(){
scanBarcode();
});
$(document).on('click','#send',function(){
var json = {
"drugs": buf.get()
}
var json_text = JSON.stringify(json, null, ' ');
$('#json').html('<pre>' + json_text + '</pre>');
});
</script>
</head>
<body>
<ons-navigator id="navigator" page="page1.html"></ons-navigator>
<ons-template id="page1.html">
<ons-page id="first-page">
<ons-toolbar>
<div class="center">QRコード読み取り</div>
</ons-toolbar>
<div style="text-align: center">
<p>このボタンをクリックしてQRコードを読み取る</p>
<ons-button id="scan" modifier="large--cta">Scan</ons-button>
</div>
<div id="data"></div>
<div style="text-align: center">
<p>このボタンをクリックしてJSON形式に変換する</p>
<ons-button id="send" modifier="large--cta">Send</ons-button>
</div>
<div id="json"></div>
</ons-page>
</ons-template>
</body>
</html>
OnsenUI V2を使用するので、Monacaで新しいプロジェクトを作る際、[フレームワーク テンプレート]を選んで、[JavaScript]を選ぶ必要がある。また、jQueryを使うために[設定]→[JS/CSSコンポーネントの追加]で「jQuery (Monaca Version)」をインストールしておく。
図1は、図2に示すQRコードを読んだ時のスマホアプリの画面を示したものである。なお、QRコードが2つあるので、左→右の順にQRコードを読む。
| 図3.スマホアプリの画面 |
起動時の画面(左上)。Scanボタンをクリックするとカメラモードになるので1つ目のQRコードにかざすとQRコードを読み取ってスクリーン上に表示する(中央上)。同様にして2つ目のQRコードを読み取る(右上)。QRコードを取り込んだのち、Sendボタンをクリックすると読み取ったデータをJSON形式にして画面下に出力(左下)。
実際は、ここでWebAPIを使ってGoogleカレンダ管理サーバへJSON形式の処方情報を送信する。
| 図2.QRコード |
0 件のコメント:
コメントを投稿