본문 바로가기

앱스프레소19

Appspresso(앱스프레소) - Camera Capture (카메라 캡쳐) 카메라 기능을 이용해서 사진찍기와 기존 사진 불러오기 예제입니다. 자 시작해 볼까요. index.html입니다. camera.html을 따라가 보겠습니다. 두번째 항목의 링크 페이지를 열어봅니다. 초기 이미지를 셋팅하고 두개의 버튼이 있네요. 이미지를 캡쳐하는 함수와 이미지를 선택하는 함수가 정의되어 있는 js를 찾아 열어보겠습니다. js/extapi-capture-image.js를 열어보니 위 두개의 함수가 정의되어 있습니다. imageCapture함수를 보면, 이미지를 캡쳐하는 api를 호출하고 filesystem api를 사용해 캡쳐한 파일을 찾아 이미지의 경로를 설정합니다. 사용하는 api이름이 앞에서 보았던 deviceapis.cameramanager가 아니라, 앱스프레소에서 확장된 기능을 제공.. 2011. 8. 18.
Appspresso(앱스프레소) - Camera liveview (카메라 미리보기) 이번 예제는 카메라 기능입니다. 아마도 전화 기능 다음으로 많이 사용하게 되는 기능인것 같습니다.^^ 시작할까요. index.html입니다. 카메라 매뉴 페이지를 보니 세가지 항목으로 구성되어 있군요. 첫번째 라이브 뷰 페이지를 보겠습니다. div태그만 있고 별거 없네요. 그럼 관련된 js 파일을 찾아보겠습니다. index.js에 라이브 뷰 페이지가 보여질때 호출하는 함수와 페이지가 사라질때 호출되는 함수가 정의되어 있습니다. 위 함수들이 정의되어 있는 js/camera-capture-video.js을 열어 함수를 살펴봅니다. 기존에 카메라 정보가 없다면, getCameras를 호출하고, 지원가능한 카메라 정보가 이미 있다면 startPreview함수를 호출하는군요. getCameras함수는 device.. 2011. 8. 17.
Appspresso(앱스프레소) - Orientation (방향계) 센서 기능중에서 마지막인 방향계에 대하여 살펴보겠습니다. 역시 이번에도 index.html부터 봐야겠죠. 마지막 센서 예제인 방향계의 링크 페이지로 가보겠습니다. 캔버스 태그가 보이고, 로그 같아 보이는 p태그가 있습니다. 방향계와 관련 있는 js/sensor-orientation.js을 열어보겠습니다. 앱스프레소의 deviceapis를 이용해서 방향계에 접근합니다. 함수 이름에서 보여지듯이 watch를 clear하는 함수이군요. demo함수입니다. 캔버스를 2d로 셋팅하고, 방향계의 변화를 감지할 수 있는 api를 호출하고 있습니다. successCallback함수인 orientationChange함수를 따라가 보겠습니다. 방향계 센서로 부터 정보를 정상적으로 가져오면 alpha, beta, gamma.. 2011. 8. 16.
Appspresso(앱스프레소) - Geolocation (위치정보) 센서 예제중에서 위치정보에 대한 기능을 살펴보겠습니다. 이번에도 index.html에서 부터 시작합니다. sensor.html을 열어 두번째 링크 페이지로 따라 갑니다. 위치정보 페이지에서는 헤더와 id가 map인 div태그만이 있군요. 위치 정보와 관련 있는 js를 찾아보겠습니다. 먼저, 구글 맵 api를 사용할 수 있도록 참조 스크립트가 셋팅되어 있습니다. js/sensor-geolocation.js을 찾아 열어봅니다. 위치정보를 가져오기 위한 기능은 html5의 표준에 따라서 navigator객체에서 현재 위치를 가져오도록 되어 있군요. 구글 맵 api를 사용하여 위치, 맵, 마커를 생성하고 맵에 표시합니다. 실제 아이폰에서 실행시킨 화면입니다. 현재 위치 정보를 사용할 것인지 물어보는 창이 나오는.. 2011. 8. 15.
Appspresso(앱스프레소) - Accelerometer (가속도계) 모바일 기기에서 제공하는 센서를 이용하는 예제를 보겠습니다. 예제에 나와있는 센서는 가속도계, 위치정보, 방향계 세가지 이며, 이중에서 가속도계를 먼저 살펴보려 합니다. 시작페이지인 index.html부터 보겠습니다. sensor.html을 열어보면 아래와 같이 세가지 센서에 대한 예제 링크가 있습니다. 우리의 목적은 가속도계이니 sensor-accelerometer.html를 열어봅니다. canvas 태그로 구성되어 있군요. 이 html과 연관된 js파일을 찾아 보겠습니다. js/sensor-accelerometer.js가 있네요. 열어보니 3개 함수가 정의되어 있고, 좀 복잡해 보입니다. 데모라는 이름이 붙은 함수부터 보니, 캔버스를 셋팅하고, 가속도계 api를 호출하면서 콜백함수들을 인수로 주는군요.. 2011. 8. 14.
Appspresso(앱스프레소) - Pim (연락처) 중요한 연락처 정보를 제어하는 예제입니다. 아~ 아이폰 처음 사고 동기화하면서 연락처 엄청나게 날렸었던 아픈 기억이.ㅋㅋ 이번에도 index.html에서 부터 따라가 보겠습니다. pim.html 로 가보면, 아래와 같이 세개의 항목으로 구성되어 있습니다. Calendar와 Task 기능은 아직 제공되지 않네요. 우리의 목적인 연락처 링크 페이지를 따라가 보겠습니다. 하나의 리스트 항목만 덩그러니 있군요. 이벤트도 없는듯 하니 해당 페이지와 연결된 js파일을 찾아보겠습니다. js/pim-contract.js가 보이니 열어봅니다. 상당히 긴 getContacts()함수가 정의되어 있군요. 내용은 리스트를 초기화하고 연락처 api를 호출해서 결과값을 배열로 받아옵니다. 10개의 연락처를 가져와 이름과 전화번호.. 2011. 8. 13.
Appspresso(앱스프레소) - DeviceInteraction(모바일기기 동작) 모바일 단말기의 비프음, 진동, 라이트등을 제어하는 방법의 예제입니다. 현재 아이폰은 진동기능만 제공되고 있고, 안드로이드에서는 진동과 비프음기능이 가능하군요. 그럼, 예제소소를 보겠습니다. 첫 화면 페이지인 index.html에서 두번째 예제가 링크되어 있는 device-interactin.html 파일을 따라가 봅니다. 4가지 리스트로 구성되어 있는데 라이트와 배경화면 기능은 아직 제공되지 않고 있습니다. 아이폰에서는 진동만 되니 vibrator 링크 페이지를 열어보겠습니다. 진둥 기능의 시작과 정지 버튼으로 구성되어 있고, 함수를 호출하고 있으니, 함수가 정의되어 있는 js 파일을 현재 페이지의 id를 참고해 찾아갑니다. js/device-interaction-vibrate.js가 보이네요. 이 파.. 2011. 8. 12.
Appspresso(앱스프레소) - DeviceStatus (모바일기기 정보 확인) 다양한 사용환경이나 모바일 상태에 따라 다른 정보를 서비스해야 할때가 있습니다. 그러기 위해서는 현재 구동되고 있는 디바이스 정보가 필요할 텐데, 데모의 첫번째 예제가 기기 정보를 확인하는 방법에 대한 내용이네요. 먼저, 가장 첫 화면인 index.html를 보면, 아래와 같이 여러 css와 js로 구성 되어 있는것이 보입니다. 이중에서 기기정보 확인하는 것과 관련있어 보이는것이 devicestatus.js이겠네요.^^ 그리고, body 시작 부분에, 로딩되면서 oninit()함수를 호출 하게 되어 있습니다. 이 함수가 어디에 정의되어 있을까하고 보던중에 index.js가 눈에 띄네요. 따라가 보니 역시 oninit()함수가 보입니다. 이벤트 리스너가 있고, 아래로 보니 device 페이지가 보여질때 g.. 2011. 8. 10.
Appspresso(앱스프레소) 예제로 시작하기 - 설치 국내 기업에서 만들고 있는 하이브리드 앱을 지원하는 플렛폼입니다. 현재 베타 버젼이지만, html과 css로 만든 웹 페이지를 안드로이드와 아이폰의 앱처럼 만들어 주어 개발하기 편리한 장점을 제공하고 있습니다. 개인적으로는 폰갭보다 개발하기 쉽게 느껴지는데요^^ 그러나, 아직은 초기이고 베타 버젼이라 폰갭보다 지원하는 API가 적고 버그도 좀 있는듯 합니다. 앞으로 기대가 많이 되는데 개발하시는 분들 화이팅입니다. 지금부터 앱스프레소 사이트에서 제공하는 데모를 사용해서 하나씩 사용법을 알아보려 합니다. 기본적인 이클립스 설치와 SDK설치등은 해당 사이트에 잘 나와있으니 생략합니다. http://www.appspresso.com/appdev/doc/doc.html 우선, 앱스프레소 사이트에 있는 데모 소스.. 2011. 8. 1.