post list.

kakao adfit

2014년 5월 16일 금요일

흑심 ONGOING

  • 구글 앱 엔진
    https://appengine.google.com/
  • 앱엔진 자바 예제
    http://code.google.com/intl/ko-KR/appengine/docs/java/gettingstarted/usingjsps.html

    예제 따라가다가 이클립스에서 JSP파일 인식문제
    http://javafreak.tistory.com/244
     
  • 폰갭 에서 두번째 링크가 새로 웹브라우져를 띄울때 차일드 브라우져를 쓰자(webviewclient도쓰자)
    http://simonmacdonald.blogspot.com/2011/05/installing-childbrowser-plugin-on.html
  • webview를 쓰는데 서버에서 온 폰갭 js navigator.geolocation.getCurrentPosition 가 말을 안들을때
  • WebView webview = (WebView) findViewById(R.id.WebView01);
  • webview.getSettings().setJavaScriptEnabled(true);
  • webview.getSettings().setGeolocationEnabled(true);
  • webview.setWebChromeClient(new WebChromeClient() {
  •         public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
  •             callback.invoke(origin, true, false);
  •         }
  •     });
  • webview.loadUrl("http://www.herdin86.appspot.com");
  • webview.setWebViewClient(new WebViewClient());
  • 매니패스트에 퍼미션설정다해줬나 확인도하자




  • 폰갭 API는 비동기 자바스크립트로 구현돼 있다. 즉, 원하는 값을 곧바로 받을 수 없고 콜백함수를 등록해 놓으면 특정 시점에 값이 반환되는 구조다. 물론 Device와 같은 특정 API는 폰갭 초기 로딩 시 값을 설정해 원하는 시점에 사용하는 것도 가능하다.
    getCurrentPosition 함수는 디바이스의 GPS 모듈정보를 얻어오는 기능을 처리한다. 일반적으로 디바이스의 GPS 정보는 실시간으로 얻어올 수 없다. 따라서 getCurrentPosition는 콜백함수 등록 방식을 통해 디바이스가 GPS 정보를 올려주면 그 시점에 해당 값을 사용할 수 있도록 구성돼 있다. getCurrentPosition 함수는 다음과 같이 세 개의 인자를 갖고 있다. 첫 번째 인자는 성공할 경우 실행할 콜백함수, 두 번째 인자는 GPS 값 획득에 실패할 경우 실행할 함수를 지정할 때 사용한다. 마지막 인자는 GPS 정보를 얻기 위한 세부 옵션을 지정하는 용도로 사용된다.
    navigator.geolocation.getCurrentPosition(geolocationSuccess,
                                                            [geolocationError],
                                                            [geolocationOptions]);

  • GPS를 사용해 위치정보를 처리하는 [Get Location] 버튼은 main.js 파일의 getLocation 함수를 호출한다. 이 함수도 폰갭이 제공하는 geolocation 기능을 사용해 구현됐다.

  • <리스트 3> geolocation 기능
  • 1: var getLocation = function() {
  • 2:    var suc = function(p) {
  • 3:       alert(p.coords.latitude + " " + p.coords.longitude);
  • 4:    };
  • 5:    var locFail = function() {
  • 6:    };   // getCurrentPosition은 세 개의 인자를 갖지만 마지막 인자는 생략됐음.
  • 7:   navigator.geolocation.getCurrentPosition(suc, locFail);   // 폰갭 위치 정보 API
  • 8: };


  • 일반적으로 폰갭이 제공하는 비동기 API들은 다음 형태를 띠고 있다.
  • [function]( [SuccessCallback], [ErrorCallback], [Options] );

  • 따라서 폰갭을 이용해 특정 기능을 구현할 때는 해당 기능을 처리하는 함수([function])를 선언하고, 성공했을 때 수행할 함수([SuccessCallback]), 실패할 경우 수행할 함수([Error Callback])를 지정해야 한다. 이때 [Options]은 JSON 형태로 다양한 값을 지정할 수 있다. 

  • getLocation 함수는 일곱 번째 줄에서 폰갭의 getCurrent Position 함수를 호출한다. 첫 번째 인자인 suc는 2~4라인에 선언돼 있다. 두 번째 인자인 locFail은 5~6라인에 선언돼 있다. 폰갭 getCurrentPosition 함수는 GPS 정보를 얻으면 2~4라인의 suc 함수를 호출한다. 만약 일정 시간동안 GPS 정보를 얻지 못한다면 5~6라인의 locFail 함수를 호출한다. GPS 정보를 성공적으로 얻어 2~4라인이 실행되면 폰갭은 suc 함수의 매개변수로 p 값을 넘겨준다. 이 값에는 coords와 timestamp 속성이 들어있으며, 이 속성값을 통해 다양한 GPS 정보(Latitude, Longitude, Altitude, Accuracy, Altitude Accuracy, Heading, Speed, Timestamp)를 얻을 수 있다. 

댓글 없음 :

댓글 쓰기