전자정부 표준프레임워크 디바이스 API 실행환경 예제는 사용자가 개발도구를 이용하여 프로젝트를 생성 시 선택적으로 설치 할 수 있는 샘플 어플리케이션으로 폰갭의 디바이스API
기능을 실행 시켜 볼 수 있는 예제로 구성되어 있다.
 
	
		|            구분             |              내용              | 
	
	
		| Local 디바이스 개발 환경 | 전자정부표준프레임워크 개발환경3.5, Android SDK Revision 24이상  
 Xcode 6.3, PhoneGap 4.3 | 
	
	
		| 서버 사이드 개발 환경 | N/A | 
	
	
		| Mash up Open API 연계 | N/A | 
	
	
		| 테스트 디바이스  | 갤럭시S2, 갤럭시S3, iPhone4, iPhone6  | 
	
	
		| 테스트 플랫폼  | Android 2.2, Android 5.1, iOS 6.0, iOS7.1.2, iOS8.3 | 
	
	
		| 추가 라이브러리 적용 | N/A | 
	
 
전자정부 표준프레임워크 디바이스 API 실행환경 예제는 디바이스 API 실행환경을 활용하여 하이브리드 앱을 개발 하시는 분들이 구현시에 참고 및 활용 될 수 있도록 핵심 디바이스 API
10개에 대한 샘플 예제들로 구성되어 있다.
 
	
		| 유형 | 대상소스명 | 비고 | 
	
	
		| CSS | www/css/egovframwork/mbl/hyb/SampleTemplate.css  | 실행환경 예제 주요 Cascading Style Sheets | 
	
	
		| IMAGE  | www/images/egovframwork/mbl/hyb/  | 실행환경 예제 주요 Image 폴더 | 
	
	
		| JS  | www/js/egovframwork/mbl/hyb/SampleTemplate.js  | 실행환경 예제 주요 JavaScript | 
	
	
		| HTML | www/SampleTemplate.html | SampleTemplate 메인 페이지 | 
	
	
		| HTML | www/license.html | SampleTemplate 라이센스 페이지 | 
	
	
		| HTML | www/overview.html | SampleTemplate 기능설명 페이지 | 
	
 
navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);
function onSuccess(acceleration) {
    alert('Acceleration X: ' + acceleration.x + '\n' +
          'Acceleration Y: ' + acceleration.y + '\n' +
          'Acceleration Z: ' + acceleration.z + '\n' +
          'Timestamp: '      + acceleration.timestamp + '\n');
};
 
	
		| Option | 설명 | 비고 | 
	
	
		|  frequency  | 가속도 정보를 조회하는 빈도를 의미한다. |   | 
	
 
navigator.geolocation.getCurrentPosition
navigator.geolocation.getCurrentPosition(successCallback, failCallback);
	
		| Option | 설명 | 비고 | 
	
	
		| successCallback | 성공시 리턴되는 함수 |   | 
	
	
		| failCallback | 실패시 리턴되는 함수 |   | 
	
 
navigator.notification.beep(times);
 
navigator.notification.vibrate(milliseconds);
 
navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] );
 
var cameraOption = {};
  cameraOption  = {
      quality: 50,
      destinationType : Camera.DestinationType.FILE_URI,
      sourceType : Camera.PictureSourceType.CAMERA,
      targetWidth: 200,
      targetHeight: 200
  };
	
		| Option | 설명 | 비고 | 
	
	
		| quality | 이미지의 품질(해상도)를 백분율로 정의한다. |   | 
	
	
		| destinationType | 결과 값의 포맷을 정의한다. | navigator.camera.DestinationType | 
	
	
		| sourceType | 포토 라이브러리, 카메라에서 찍은 사진 등 선택할 소스를 설정한다. | nagivator.camera.PictureSourceType | 
	
	
		| allowEdit | 이미지 선택 전, 이미지 편집 여부. |   | 
	
	
		| encodingType | 이미지 파일의 인코딩 종류를 정의한다. | navigator.camera.EncodingType | 
	
	
		| targetWidth | 이미지의 너비(pixel)를 설정한다. 비율은 고정. |   | 
	
	
		| targetHeight | 이미지의 높이(pixel)를 설정한다. 비율은 고정. |   | 
	
	
		| mediaType | pictureSourceType이 PHOTOLIBRARY 또는 SAVEDPHOTOALBUM일 때, 미디어의 타입을 설정한다.  | nagivator.camera.MediaType | 
	
	
		| correctOrientation  | 이미지를 담는동안 이미지 회전 여부. |   | 
	
	
		| saveToPhotoAlbum  | 이미지를 담은 후, 단말기 저장 여부. |   | 
	
 
var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]);
 
media.getCurrentPosition(mediaSuccess, [mediaError]);
 
 운영체제(
OS) 혹은 메모리 내의 Media 객체에 등록된 오디오 파일을 해제한다. 
 
 
media.release();
 
	
		| 에러코드 | 설명 | 비고 | 
	
	
		|  MEDIA_ERR_ABORTED | 사용자에 의해 중단된 비디오 재생 |   | 
	
	
		|  MEDIA_ERR_NETWORK | 네트워크 에러 |   | 
	
	
		|  MEDIA_ERR_DECODE | 디코딩 에러(코덱문제) |   | 
	
	
		|  MEDIA_ERR_SRC_NOT_SUPPORTED | 지원하지 않는 형식의 오디오 |   | 
	
 
var myContact = navigator.contacts.create({"displayName": "Test User"});
 
navigator.contacts.find(contactFields, contactSuccess, contactError, contactFindOptions);
var options = new ContactFindOptions();
options.filter="Bob"; 
var fields = ["displayName", "name"];
navigator.contacts.find(fields, onSuccess, onError, options);
// create a new contact object
var contact = navigator.contacts.create();
contact.displayName = "Plumber";    // not support iOS
contact.nickname = "Plumber";       //specify both to support all devices
// populate some fields
var name = new ContactName();
name.givenName = "Jane";
name.familyName = "Doe";
contact.name = name;
// save to device
contact.save(onSuccess,onError);
var clone = contact.clone();
clone.name.givenName = "John";
console.log("Original contact name = " + contact.name.givenName);
console.log("Cloned contact name = " + clone.name.givenName);
function onSuccess() {
    alert("Removal Success");
};
function onError(contactError) {
    alert("Error = " + contactError.code);
};
// remove the contact from the device
contact.remove(onSuccess,onError);
-     contactFields
	
		| Properties | 객체구조 | 비고 | 
	
	
		| ID | string | 글로벌 고유 식별자. (DOMString) | 
	
	
		| displayName | (DOMString) | 최종 사용자에게 표시하기에 적합이 연락처의 이름. | 
	
	
		| name | (ContactName) | 명 이름의 모든 구성 요소를 포함하는 개체입니다. | 
	
	
		| nickname | (DOMString) | 연락을하여 해결할 수있는 캐주얼 이름.  | 
	
	
		| phoneNumbers | (ContactField []) | 모든 연락처의 전화 번호의 배열입니다. | 
	
	
		| email | (ContactField []) | 모든 연락처의 이메일 주소의 배열입니다. | 
	
	
		| addresses | (ContactAddress []) | 연락처의 주소를 모든 배열입니다. | 
	
	
		| ims | (ContactField []) | 모든 연락처의 IM 주소의 배열입니다. | 
	
	
		| organizations | (ContactOrganization []) | 연락처의 조직 전체의 배열입니다.  | 
	
	
		| birthday | Date | 연락처의 생일. (일) | 
	
	
		| note | (DOMString) | 연락처에 대한 참고 사항. | 
	
	
		| photo | (ContactField []) | 연락처의 사진의 배열입니다.  | 
	
	
		| categories | (ContactField []) | 사용자 정의 범주의 모든 연락처의 배열입니다. | 
	
	
		| urls | (ContactField []) | 연락처에 관련된 웹 페이지의 배열입니다. | 
	
-     ContactName
	
		| Properties | 객체구조 | 비고 | 
	
	
		| formatted | (DOMString) | 연락처의 전체 이름 | 
	
	
		| familyName | (DOMString) |   | 
	
	
		| givenName | (DOMString) |   | 
	
	
		| middleName | (DOMString) |   | 
	
	
		| honorificPrefix | (DOMString) | 연락처 접두사 | 
	
	
		| honorificSuffix | (DOMString) | 연락처 접미사 | 
	
-     ContactField
	
		| Properties | 객체구조 | 비고 | 
	
	
		| type | (DOMString) | 필드의 종류를 구분할수 있는 문자열 | 
	
	
		| value | (DOMString) | 필드의 값 | 
	
	
		| pref | (Boolean) | 선호 가치 표시 | 
	
-     ContactAddress
	
		| Properties | 객체구조 | 비고 | 
	
	
		| pref | (boolean) | ContactAddress 객체의 대표 값 여부 | 
	
	
		| type | (DOMString) | 필드 유형을 정의한다 | 
	
	
		| formatted | (DOMString) | 출력을 위한 전체 주소 | 
	
	
		| streetAddress | (DOMString) | 동 / 읍 / 면 / 가 와 같은 전체 주소 | 
	
	
		| locality | (DOMString) | ’시’ / ‘도’ 표기 | 
	
	
		| region | (DOMString) | ’주’ / ‘지방’ 표기 | 
	
	
		| postalCode | (DOMString) | 우편번호 | 
	
	
		| country | (DOMString) | 국번 | 
	
-     ContactOrganization
	
		| Properties | 객체구조 | 비고 | 
	
	
		| pref | (Boolean) | ContactOrganization 객체의 대표 값 여부 | 
	
	
		| type | (DOMString) | 필드 유형을 정의한다(예: ‘work’ 은 직장.) | 
	
	
		| name | (DOMString) | 소속의 이름을 정의한다 | 
	
	
		| department | (DOMString) | 소속 부서를 정의한다 | 
	
	
		| title | (DOMString) | 소속 내의 직함을 정의한다 | 
	
-     ContactFindOption
	
		| Properties | 객체구조 | 비고 | 
	
	
		| filter | (DOMString) | 검색어 또는 검색조건을 정의한다. (Default: ””) | 
	
	
		| multiple | (Boolean) | 검색 결과으로 다수의 연락처를 가져올 것인지의 여부 | 
	
-     ContactError
	
		| Properties | 객체구조 | 비고 | 
	
	
		| ContactError.UNKNOWN_ERROR | (DOMString) | 알수 없는 에러 | 
	
	
		| ContactError.INVALID_ARGUMENT_ERROR | (DOMString) | 잘못된 인자값 | 
	
	
		| ContactError.TIMEOUT_ERROR | (DOMString) | 응답시간 지연 | 
	
	
		| ContactError.PENDING_OPERATION_ERROR | (DOMString) | 잘못된 명령 | 
	
	
		| ContactError.IO_ERROR | (DOMString) | 입출력 에러 | 
	
	
		| ContactError.NOT_SUPPORTED_ERROR | (DOMString) | 지원하지 않음 | 
	
	
		| ContactError.PERMISSION_DENIED_ERROR | (DOMString) | 권한 에러 | 
	
 
navigator.compass.getCurrentHeading(compassSuccess, compassError, compassOptions);
function onSuccess(heading) {
    alert('Heading: ' + heading.magneticHeading);
};
function onError(error) {
    alert('CompassError: ' + error.code);
};
navigator.compass.getCurrentHeading(onSuccess, onError);
 
	
		| Option | 설명 | 비고 | 
	
	
		|  frequency  | 나침반 정보를 조회하는 빈도를 의미한다. |   | 
	
	
		|  frequency  | 나침반 성공 콜백함수를 초기화 하는데 필요한 변화의 정도를 의미한다. |   | 
	
 
	window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onError);
	
		| 파라미터 | 설명 | 비고 | 
	
	
		| LocalFileSystem.PERSISTENT | 사용자 또는 어플리케이션에 의해 제거 될 수 없는 스토리지를 조회 할 때 사용된다. |   | 
	
	
		| onSuccess,  | 파일 시스템 조회에 성공했을때 호출되는 콜백 함수 |   | 
	
	
		| onError | 파일 시스템 조회에 실패 했을때 호출되는 콜백 함수 |   | 
	
 
var states = {};
states[Connection.UNKNOWN]  = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI]     = 'WiFi connection';
states[Connection.CELL_2G]  = 'Cell 3G connection';
states[Connection.CELL_3G]  = 'Cell 3G connection';
states[Connection.CELL_4G]  = 'Cell 4G connection';
states[Connection.NONE]     = 'No network connection';
var NowNetwork = states[navigator.connection.type];
	
		| Return State(code) | NetworkInfo(string) | 
	
	
		| Connection.UNKNOWN | Unknown connection | 
	
	
		| Connection.ETHERNET | Ethernet connection | 
	
	
		| Connection.WIFI | WiFi connection | 
	
	
		| Connection.CELL_2G | Cell 2G connection | 
	
	
		| Connection.CELL_3G | Cell 3G connection | 
	
	
		| Connection.CELL_4G | Cell 4G connection | 
	
	
		| Connection.NONE | No network connection | 
	
 
	var name = device.name;
	var cordova= device.cordova;
	var platform = device.platform;
	var uuid = device.uuid;
	var version = device.version;
	
		| 변수 | 설명 | 비고 | 
	
	
		| name | 디바이스에 셋팅된 명칭을 반환한다. |   | 
	
	
		| cordova | 어플리케이션에서 사용된 폰갭 버전을 반환한다. |   | 
	
	
		| platform | 모바일 디바이스의 플랫폼 정보를 반환한다. |   | 
	
	
		| uuid | 디바이스 고유의 UUID를 반환한다. |   | 
	
	
		| version | 디바이스의 플랫폼 버전을 반환한다. |   | 
	
 
실행환경 예제 프로그램에서 제공하는 디바이스 API 기능을 활용하기 위하여 필요한 항목 및 그 환경 설정은 다음과 같다.
 
<plugins>
    <plugin name="App" value="org.apache.cordova.App"/>
    <plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/>
    <plugin name="Device" value="org.apache.cordova.Device"/>
    <plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/>
    <plugin name="Compass" value="org.apache.cordova.CompassListener"/>
    <plugin name="Media" value="org.apache.cordova.AudioHandler"/>
    <plugin name="Camera" value="org.apache.cordova.CameraLauncher"/>
    <plugin name="Contacts" value="org.apache.cordova.ContactManager"/>
    <plugin name="File" value="org.apache.cordova.FileUtils"/>
    <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
    <plugin name="Notification" value="org.apache.cordova.Notification"/>
    <plugin name="Storage" value="org.apache.cordova.Storage"/>
    <plugin name="Temperature" value="org.apache.cordova.TempListener"/>
    <plugin name="FileTransfer" value="org.apache.cordova.FileTransfer"/>
    <plugin name="Capture" value="org.apache.cordova.Capture"/>
    <plugin name="Battery" value="org.apache.cordova.BatteryListener"/>
    <plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/>
</plugins>
<supports-screens 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true" 
    android:resizeable="true" 
    android:anyDensity="true" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
 
 
<dict>
	<key>Logger</key>
	<string>CDVLogger</string>
	<key>Compass</key>
	<string>CDVLocation</string>
	<key>Accelerometer</key>
	<string>CDVAccelerometer</string>
	<key>Camera</key>
	<string>CDVCamera</string>
	<key>NetworkStatus</key>
	<string>CDVConnection</string>
	<key>Contacts</key>
	<string>CDVContacts</string>
	<key>Debug Console</key>
	<string>CDVDebugConsole</string>
	<key>File</key>
	<string>CDVFile</string>
	<key>FileTransfer</key>
	<string>CDVFileTransfer</string>
	<key>Geolocation</key>
	<string>CDVLocation</string>
	<key>Notification</key>
	<string>CDVNotification</string>
	<key>Media</key>
	<string>CDVSound</string>
	<key>Capture</key>
	<string>CDVCapture</string>
	<key>SplashScreen</key>
	<string>CDVSplashScreen</string>
	<key>Battery</key>
	<string>CDVBattery</string>
	<key>InterfaceAPI</key>
	<string>EgovInterface</string>
	<key>StorageInfoAPI</key>
	<string>EgovStorageInfo</string>
</dict>
 
실행환경 예제 프로그램은 디바이스 API 기능을 직관적으로 알 수 있도록 간단한 예제의 집합으로 구성되어 있다.
 
function fn_egov_update_Acceleration(accelInfo) 
{
    var html = "<span>X : " + accelInfo.x + "<BR />" + "Y : " +  accelInfo.y + "<BR />" + "Z : "  + accelInfo.z+"</span>";
	$("#infoDetail").html(html);
    
    if(accelInsertCheck)
    {
        if(accelInfo.x === 0 && accelInfo.y === 0 && accelInfo.z === 0)
        {
            
        }
        else
        {
            fn_egov_insert_table("ACCELERATOR",accelInfo);
            fn_egov_display_deviceAPIInfoMain("ACCELERATOR",html);
            
            accelInsertCheck = false;
        }
    }
}
 
function fn_egov_get_acceleration() 
{
    if (accelerationWatch === null) 
    {
        //navigator.notification.alert("acceleration start");
        toast("acceleration start");
        var options = {};
        options.frequency = 1000;
        accelInsertCheck = true;
        accelerationWatch = navigator.accelerometer.watchAcceleration(fn_egov_update_Acceleration, 
                                                                      function(ex) 
                                                                      {
                                                                          console.log("DeviceAPIGuide fn_egov_get_acceleration fail (" + ex.name + ": " + ex.message + ")");
                                                                      },
                                                                      options);
    }
    else 
    {
        //navigator.notification.alert("acceleration stop");
        toast("acceleration stop");
        navigator.accelerometer.clearWatch(accelerationWatch);
        accelerationWatch = null;
    }
};
 
function fn_egov_get_location() 
{
    var suc = function(p) 
    {
        var html = "<span>위도 : " + p.coords.latitude + "<BR />" + "경도 : " + p.coords.longitude + "<BR />" + fn_egov_get_nowTime()+"</span>";
        fn_egov_display_deviceAPIInfoMain("GPS",html);
        fn_egov_insert_table("GPS",p);
    };
    var locFail = function()
    {
        jAlert("위치 정보를 얻을 수 없습니다.", "알림", "b");
    };
    
    navigator.geolocation.getCurrentPosition(suc, locFail);
};
 
 디바이스의 위도, 경도 정보 조회
 
 
function fn_egov_get_vibrate() 
{
    var html = "<span><img src='images/egovframework/mbl/hyb/ico_vibration.png' ></span><BR />" + fn_egov_get_nowTime();
    fn_egov_display_deviceAPIInfoMain("VIBRATE",html);
    fn_egov_insert_table("VIBRATOR","");
    //document.getElementById('showResult').value = str;
    navigator.notification.vibrate(2000);
};
 
 디바이스 진동 기능 호출
 
 
function fn_egov_capture_photo()
{
    navigator.camera.getPicture(fn_egov_upload_photo,null,{sourceType:1,quality:60});
};
 
function fn_egov_upload_photo(data)
{
    console.log("DeviceAPIGuide fn_egov_upload_photo success");
    var html = '<span class="camera"><img src="' + data + '" style="max-width:100%;height:60px;"> </img></span>';
    fn_egov_display_deviceAPIInfoMain("CAMERA",html);
    fn_egov_insert_table("CAMERA",data);
    
    toast("uploadPhoto success!");
};
 
 디바이스의 카메라 호출 사진 촬영 
 
 
function fn_egov_play_audio() 
{
    if(audioCheck)
    {
        fn_egov_stop_audio();
        audioCheck = false;
        return;
    }
    
    // Create Media object from src
    mediaHandle = new Media("SleepAway.mp3", fn_egov_on_audioSuccess, fn_egov_on_audioError);
    // Play audio
    mediaHandle.play();
    // Update mediaHandle position every second
    if (mediaTimer === null) 
    {
        audioCheck = true;
        fn_egov_insert_table("MEDIA","");
        var html = "<span><img src=\'images/egovframework/mbl/hyb/ico_movie.png\'></span><BR />" + fn_egov_get_nowTime();
        fn_egov_display_deviceAPIInfoMain("MEDIA",html);
        
        mediaTimer = setInterval(function() 
                                 {
                                     // get mediaHandle position
                                     mediaHandle.getCurrentPosition(
                                                                 // success callback
                                                                 function(position) 
                                                                 {
                                                                     if (position > -1) {
                                                                         fn_egov_set_audioPosition((position) + " %");
                                                                     }
                                                                 },
                                                                 // error callback
                                                                 function(e) 
                                                                 {
                                                                     console.log("DeviceAPIGuide fn_egov_play_audio Error "+e.code);
                                                                     fn_egov_set_audioPosition("Error: " + e);
                                                                 });
                                 }, 
                                 1000);
    }
}
 
function fn_egov_pause_audio() 
{
    if (mediaHandle) 
    {
        mediaHandle.pause();
    }
}
 
function fn_egov_stop_audio() 
{
    if (mediaHandle) 
    {
        mediaHandle.stop();
    }
    clearInterval(mediaTimer);
    mediaTimer = null;
}
 
function fn_egov_set_audioPosition(position) 
{
    var html = "<span><img src=\'images/egovframework/mbl/hyb/ico_movie.png\'></span><BR />Play position : "+position+"<BR />" + fn_egov_get_nowTime();
    $("#infoDetail").html(html);
}
 
 미디어 재생하기
 
 미디어 재생 중지 하기
 
 
function fn_egov_get_contacts() 
{
    var obj = new ContactFindOptions();
    obj.filter = "";
    obj.multiple = true;
    navigator.contacts.find(
                            [ "displayName", "name" ], 
                            fn_egov_get_contactsRead,
                            fn_egov_get_contactsFail, 
                            obj);
}
 
function fn_egov_get_contactsRead(contacts) 
{
    console.log("DeviceAPIGuide fn_egov_get_contactsRead Success");
    var html = "<span>검색 된 연락처 총 " + contacts.length + " 개" + "<BR />" + fn_egov_get_nowTime() + "</span>";
    fn_egov_display_deviceAPIInfoMain("CONTACTS",html);
    fn_egov_insert_table("CONTACTS","total contacts : "+contacts.length);
}
 
 디바이스에 저장된 총 연락처 개수 조회
 
 
function fn_egov_get_compass() 
{
    if (CompasswatchID === null) 
    {
        fn_egov_display_deviceAPIInfoMain("COMPASS","");
        
        toast("Compass start");
        CompassInsertCheck = true;
        var options = { frequency: 1000 };
        CompasswatchID = navigator.compass.watchHeading(fn_egov_update_heading, 
                                                        function(e) 
                                                        {
                                                            console.log("DeviceAPIGuide fn_egov_get_compass Error "+e.code);
                                                        }, 
                                                        options);
    }
    else 
    {        
        navigator.compass.clearWatch(CompasswatchID);
        CompasswatchID = null;
        fn_egov_update_heading({ magneticHeading : "Off"});
        toast("Compass stop");
    }
}
 
function fn_egov_update_heading(h) 
{
    var html = "방위각 : " + h.magneticHeading + "<BR />" + fn_egov_get_nowTime();
    $("#infoDetail").html(html);
    if(CompassInsertCheck) 
    {
        fn_egov_insert_table("COMPASS",h);
        CompassInsertCheck = false;
    }
}
 
function fn_egov_get_localStorageInfo() 
{
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
                             // success get file system
                             function(fs)
                             { 
                                 console.log("DeviceAPIGuide fn_egov_get_localStorageInfo Success");
                                 fileSystem = fs;
                                 dirEntry = fs.root;
                             
                             }, 
                             // error get file system
                             function(evt)
                             {   
                                 console.log("DeviceAPIGuide fn_egov_get_localStorageInfo Error "+evt.target.error.code);
                             });
}
 
function fn_egov_go_directory(directoryEntry) 
{
    console.log("DeviceAPIGuide fn_egov_go_directory Success");
	dirEntry = directoryEntry;
	fn_egov_read_directory();
}
 
function fn_egov_next_chdir(dir) 
{
	if (dir == "../") 
    {
		dirEntry.getParent(fn_egov_go_directory, fn_egov_get_fileError);
	} 
    else if (dir == "root") 
    {
		dirEntry = fileSystem.root;
		fn_egov_read_directory();
	} 
    else 
    {
		dirEntry.getDirectory(dir, {}, fn_egov_go_directory, fn_egov_get_fileError);
	}
}
 
 디바이스의 파일 시스템 조회
 
 
function fn_egov_check_network() 
{
    var networkState = navigator.network.connection.type;
    var states = {};
    states[Connection.UNKNOWN]  = 'Unknown connection';
    states[Connection.ETHERNET] = 'Ethernet connection';
    states[Connection.WIFI]     = 'WiFi connection';
    states[Connection.CELL_2G]  = 'Cell 3G connection';
    states[Connection.CELL_3G]  = 'Cell 3G connection';
    states[Connection.CELL_4G]  = 'Cell 4G connection';
    states[Connection.NONE]     = 'No network connection';
    
    var html = "<span>Network Info : " + states[networkState] + "<BR />" + fn_egov_get_nowTime()+"</span>";
    fn_egov_display_deviceAPIInfoMain("NETWORK",html);
    fn_egov_insert_table("NETWORK", states[networkState]);
}
 
 디바이스의 네트워크 정보 조회
 
 
function fn_egov_get_deviceInfo() 
{
    var html = "NAME : " + device.name + "<BR/>cordovaVersion : " + device.cordova 
               + "<BR/>platform : " + device.platform + "<BR/>uuid : " + device.uuid
               + "<BR/>version : " + device.version + "<BR />" + fn_egov_get_nowTime();
    fn_egov_display_deviceAPIInfoMain("DEVICE",html);
    fn_egov_insert_table("DEVICE",device);
}
 
 디바이스의 메타 정보 조회
 
 
전자정부 표준프레임워크 디바이스 API 실행환경 예제는 개발환경 도구를 통해서 설치가 가능하며 자세한 설치 방법은 다음을 참조 한다.
 
 console.log의 작성 방법은 다음과 같다.
 console.log("[DeviceAPI Guide] fn_egov_delete_fileInfo : Completed");
 디버깅 코드가 실행 되면 아래와 같은 메시지를 개발도구의 콘솔 메시지 창에서 볼 수 있다.