Apl.onloadWork = function(){
//Webストレージに保存した全てのデータを取得します。
Apl.getLocalStorageData();
//動作モードに応じてhtml表示を変更します。
Apl.showOperationMode();
//シーンに合わせたhtml表示に変更します。
Apl.changeSceneView();
//画面タップのイベントリスナを登録します。
if(window.navigator.userAgent.match(/(iPad|iPhone|iPod)/i)) //iOSの場合
document.addEventListener("touchstart", Apl.clickEvent, false);
else document.addEventListener("click", Apl.clickEvent, false); //android, Windowsの場合
// ネイティブカメラを起動させます。
AR.Camera.startCameraView(Apl.noop, Apl.startCameraViewError);
// マーカー検知時の処理関数追加です。
AR.Camera.addMarkerListener( Apl.addMarkerListenerSuccess, Apl.addMarkerListenerError, Apl.onDetectMarker, Apl.noop);
};Apl.changeSceneView = function(){
//画面下部のシナリオ操作ボタンの表示/非表示を切り替えます。
if(Apl.sceneId > 1) document.getElementById("backScene").style.visibility = "visible";
else document.getElementById("backScene").style.visibility = "hidden";
if(Apl.sceneId < 4 ) document.getElementById("forwardScene").style.visibility = "visible";
else document.getElementById("forwardScene").style.visibility = "hidden";
//画面上部の表示変更
var guidance = "手順"+Apl.sceneId+" : " + Apl.sceneList[Apl.sceneId].name + "<br>";
if( Apl.sceneList[Apl.sceneId].description != null) guidance += Apl.sceneList[Apl.sceneId].description;
document.getElementById("guidance").innerHTML = guidance;
};Apl.addMarkerListenerSuccess = function(_result){
//リスナIDをApl.listenerIdに格納します。登録したマーカー検知イベントリスナの削除に使用します。
Apl.listenerId = _result.getValue();
};Apl.onDetectMarker = function(_result){
// 引数に検知したマーカー情報が含まれています。
var markval = _result.getValue();
if(markval.markerId == 1){ //マーカー1を検知した場合
if(markval.status == true){ //検出した場合
//マーカー検知通知領域の表示を変更します。
document.getElementById("detect").innerHTML ="マーカー" +markval.markerId+"を検出しました。";
//動作モードを判定します。
if(Apl.operationMode == "serverMode"){ //サーバ通信モードの場合
//AR実行サーバサーバから強制読み込みを行う
//シーンが4の時は利用者定義データを取得
if(Apl.sceneId == 4) Apl.getUserData(true);
Apl.getSuperimposedGraphicData(true, new Apl.Range(Apl.scenarioId), new Apl.Range(Apl.sceneId));
} else { //スタンドアローンモードの場合
//オフラインストレージから取得します。
if(Apl.sceneId == 4) Apl.getUserData(false);
Apl.getSuperimposedGraphicData(false, new Apl.Range(Apl.scenarioId), new Apl.Range(Apl.sceneId));
}
} else if(markval.status == false){ //消失した場合
//マーカー検知通知領域の表示を変更します。
document.getElementById("detect").innerHTML ="";
}
}
};Apl.shiftScene = function(_shift){
if(_shift == true) Apl.sceneId++; //シーンを進めます。
else Apl.sceneId--; //シーンを戻します。
//シーンに合わせたhtml表示に変更します。
Apl.changeSceneView();
//シーンIDをWebストレージに保存します。
localStorage.setItem("sceneId", Apl.sceneId);
//検出中のマーカーを取得します。
AR.Camera.getCurrentMarkers(Apl.getMarkersSuccess, Apl.getCurrentMarkersError);
};Apl.getMarkersSuccess = function(_result){
//検出したマーカーから特定のマーカーを探します。
for(var i=0;i<_result.getValue().length;i++){
var markerId = _result.getValue()[i].value;
if(markerId == 1){ // マーカーIDが1の場合
if(Apl.operationMode == "serverMode"){ //サーバ通信モードの場合
//AR実行サーバから強制読み込みを行います。
//シーンが4の場合は利用者定義データを取得します。
if(Apl.sceneId == 4) Apl.getUserData(true);
Apl.getSuperimposedGraphicData(true, new Apl.Range(Apl.scenarioId), new Apl.Range(Apl.sceneId));
} else { //スタンドアローンモードの場合
//オフラインストレージから取得します。
//シーンが4の場合は利用者定義データを取得します。
if(Apl.sceneId == 4) Apl.getUserData(false);
Apl.getSuperimposedGraphicData(false, new Apl.Range(Apl.scenarioId), new Apl.Range(Apl.sceneId));
}
}
}
};Apl.onClickUpload = function(){
if(Apl.postData != null){ //未登録データが存在する場合
var result = confirm("アップロードしますか?");
if(result){
if(Apl.operationMode == "serverMode"){ // サーバ通信モードの場合
保存したデータをアップロードします。
Apl.upload();
} else { // スタンドアローンモードの場合
alert("データを保存しました。サーバ通信モードでアップロードしてください。");
if(location.href != "work.html") location.href = "work.html";
}
}
} else {
alert("保存されたデータはありません。")
}
};Apl.upload = function(){
//AR実行サーバにアップロード
AR.Data.postArServerData(Apl.postData.query, Apl.postData.body, Apl.uploadSuccess,
Apl.postArServerDataError);
};Apl.uploadSuccess = function(_result){
//Webストレージに保存したデータを削除します。
localStorage.removeItem("postData");
Apl.postData = null;
alert("アップロードしました。");
//work.htmlに遷移します。
location.href = "work.html";
};Apl.clickEvent = function(){
//ARネイティブにクリック座標を通知します。
AR.OS.onBodyClick(event, Apl.noop, Apl.onBodyClickError);
};Apl.changeCommentpage = function(){
//保存データがないか確認します。
if(Apl.postData){
var result = confirm("保存されたデータがあります。データを破棄して入力し直しますか?");
if(result == false) return;
}
// 点検値入力追加ページへ遷移します。
location.href="comment.html";
};ポイント
手順重畳がタップされた場合はApl.shiftScene(true)が呼ばれます(「次の手順へ」ボタン押下と同じ処理)。
Apl.onUnloadWork = function(){
//イベントリスナを削除します。
AR.Camera.removeMarkerListener(Apl.listenerId, Apl.removeListenerSuccess, Apl.removeListenerError);
};
// マーカー検知時のイベントリスナ削除に成功した場合に呼ばれます。
Apl.removeListenerSuccess= function(_result){
Apl.listenerId = "";
};注意
次のOSでは、onunloadイベントは発生しません。
Android 4.4以降
Windows