WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs

마지막 업데이트: 2022년 6월 8일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

위치로 진입 점

프레임워크에 플러그인의 이벤트 처리 진입점에 대해 알리는 데 사용되는 모든 플러그인의 전역 수준 함수입니다.

registerCallbacks(reg)

  • reg: Registrar 과 상호 작용하여 프레임워크에 호출할 함수를 알립니다.

Registrar

Registrar은 프레임워크에 플러그인과 상호 작용하는 방법을 알리는 데 사용되는 객체이며 registerCallbacks 함수로 전달됩니다.

logger

getLogger

플러그인 내에서 메시지를 기록하는 데 사용되는 python Logger 객체를 가져옵니다.

setEmails(*emails)

이 플러그인 또는 해당 콜백 중 하나에서 잘못된 상황이 발생하는 경우 오류 및 중요한 알림을 수신해야 하는 이메일을 설정합니다.

구성 파일에 지정된 기본 주소로 이메일을 보내려면(기본값)

이메일을 비활성화하려면(오류 메시지를 받아볼 수 없게 되므로 이 방법은 권장되지 않음)

특정 주소로 이메일을 보내려면

registerCallback(sgScriptName, sgScriptKey, callback, matchEvents=None, args=None, stopOnError=True)

이 플러그인에 대해 엔진에 콜백을 등록합니다.

  • sgScriptName : ShotGrid 스크립트 페이지에서 가져온 스크립트의 이름입니다.
  • sgScriptKey : ShotGrid 스크립트 페이지에서 가져온 스크립트의 응용프로그램 키입니다.
  • callback : __call__ 메서드가 있는 함수 또는 객체입니다. exampleCallback 을 참조하십시오.
  • matchEvents : 콜백에 전달하려는 이벤트 필터입니다.
  • args : 프레임워크가 콜백으로 다시 전달되게 하려는 모든 객체입니다.
  • stopOnError : 부울이며 이 콜백의 예외가 이 플러그인의 모든 콜백에 의한 이벤트 처리를 중단해야 합니다. 기본값은 True 입니다.

sgScriptName 은 ShotGrid에 대한 플러그인을 식별하는 데 사용됩니다. 모든 이름은 여러 콜백에서 공유되거나, 단일 콜백에 대해 고유할 수 있습니다.

sgScriptKey 는 ShotGrid에 대한 플러그인을 식별하는 데 사용되며 지정된 sgScriptName 에 적합한 키여야 합니다.

필터와 일치하는 이벤트를 처리해야 하는 경우 지정된 콜백 객체가 호출됩니다. 호출 가능한 모든 객체를 실행할 수 있어야 하지만 여기에 클래스를 사용하는 것은 적합하지 않습니다. 함수 또는 __call__ 메서드가 있는 인스턴스를 사용하는 것이 더 적합합니다.

matchEvent 인수는 등록 중인 콜백의 관심 이벤트를 지정할 수 있는 필터입니다. matchEvents 가 지정되지 않았거나 None을 지정하면 모든 이벤트가 콜백으로 전달됩니다. 그렇지 않으면 matchEvents 필터의 각 키는 이벤트 유형이고 각 값은 가능한 속성 이름 목록입니다.

WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드

이 Codelab에서는 AR 웹 앱을 빌드하는 예시를 살펴봅니다. 여기서는 실제로 존재하는 것처럼 보이는 3D 모델을 렌더링하기 위해 자바스크립트를 사용합니다.

AR 및 가상 현실(VR) 기능을 결합하는 WebXR Device API를 사용합니다. 대화형 웹에서 실행되는 간단한 AR 앱을 만들기 위해 WebXR Device API의 AR 확장 프로그램에 중점을 둡니다.

AR이란 무엇인가요?

AR은 보통 컴퓨터에서 생성한 그래픽과 실제 세상을 혼합하는 것을 설명하는 데 사용되는 용어입니다. 즉, 휴대전화 기반 AR의 경우 컴퓨터 그래픽을 실시간 카메라 피드 위에 배치함으로써 실제로 존재하는 것처럼 보이게 하는 것입니다. 휴대전화가 공간에서 움직이면서 이 효과를 사실적으로 유지하려면 AR이 지원되는 기기가 주변 세계를 이해하고 3D 공간에서 포즈(위치 및 방향)를 결정해야 합니다. 여기에는 표면을 감지하고 주변 환경의 조명을 추정하는 작업이 포함될 수 있습니다.

셀카 필터 또는 AR 기반 게임에 사용되는 AR은 Google의 ARCore 및 Apple의 ARKit가 출시된 이후 앱에서 널리 사용되고 있습니다.

빌드할 항목

이 Codelab에서는 증강 현실을 사용하여 실제 세상에 모델을 배치하는 웹 앱을 빌드합니다. 앱에 다음 기능을 구현할 수 있습니다.

  1. 대상 기기의 센서를 사용하여 주변 공간에서의 위치와 방향을 확인하고 추적합니다.
  2. 실시간 카메라 뷰 위에 합성된 3D 모델을 렌더링합니다.
  3. 히트 테스트를 실행하여 실제로 감지된 표면 위에 객체를 배치합니다.

학습할 WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs 내용

    사용 방법
  • 기본 AR 장면을 구성하는 방법
  • AR 히트 테스트를 사용하여 표면을 찾는 방법
  • 실제 카메라 피드와 동기화된 3D 모델을 로드하고 렌더링하는 방법
  • 3D 모델을 기반으로 그림자를 렌더링하는 방법

이 Codelab에서는 AR API에 중점을 둡니다. 따라서 이와 관련 없는 개념과 코드 블록은 그냥 넘어가겠습니다. 단, 필요할 때 확인할 수 있도록 해당 저장소 코드에서 제공만 해드리겠습니다.

필요한 항목

  • 정적 웹 콘텐츠를 코딩하고 호스팅하는 워크스테이션 를 실행하는 ARCore 지원 Android 기기 설치(호환되는 기기에 설치하라는 메시지가 Chrome에 자동으로 표시됨)
  • 원하는 웹 서버
  • AR 기기를 워크스테이션에 연결하기 위한 USB 케이블
  • 텍스트 편집기
  • HTML, CSS, 자바스크립트, Chrome 개발자 도구에 관한 기본 지식

이 Codelab의 첫 번째 단계를 진행하려면 AR 기기에서 사용해 보기를 클릭합니다. '브라우저에 AR 기능이 없습니다'라는 메시지가 표시된 페이지가 나오면 Android 기기에 Google Play AR 서비스가 설치되어 있는지 확인하세요.

2. 개발 환경 설정

코드 다운로드

  1. 다음 링크를 클릭하여 워크스테이션에 이 Codelab의 모든 코드를 다운로드합니다.
  1. 다운로드한 ZIP 파일의 압축을 해제합니다. 그러면 필요한 모든 리소스와 함께 이 Codelab의 여러 단계의 디렉터리가 포함된 루트 폴더( ar-with-webxr-master )가 압축 해제됩니다.

step-03 폴더와 step-04 폴더에는 이 Codelab의 세 번째와 네 번째 단계에서 도달하고자 하는 최종 상태와 final 결과가 들어 있습니다. 참고용으로 제공됩니다.

모든 코딩 작업은 work 디렉터리에서 실행합니다.

웹 서버 설치

  1. 자체 웹 서버를 사용할 수 있습니다. 아직 설정되지 않은 경우 이 섹션에서는 Chrome용 웹 서버를 설정하는 방법을 자세히 설명합니다.
    워크스테이션에 아직 앱을 설치하지 않았다면 Chrome 웹 스토어에서 설치할 수 있습니다.
  1. Chrome용 웹 서버 앱을 설치한 후 chrome://apps 로 이동하여 웹 서버 아이콘을 클릭합니다.

그다음 이 대화상자가 표시되면 로컬 웹 서버를 구성할 수 있습니다.

Chrome 웹 서버 구성

포트 전달 설정

localhost:8887을 방문할 때 워크스테이션에서 동일한 포트에 액세스하도록 AR 기기를 구성합니다.

포트 전달 구성

설정 확인

  1. USB 케이블을 사용하여 AR 기기를 워크스테이션에 연결합니다.
  2. Chrome의 AR 기기에서 주소 표시줄에 http://localhost:8887을 입력합니다. AR 기기는 이 요청을 개발 워크스테이션의 웹 서버로 전달해야 합니다. 파일 디렉터리가 표시됩니다.
  3. AR 기기에서 step-03 을 클릭하여 브라우저에 step-03/index.html 파일을 로드합니다.

증강 현실 시작 버튼이 있는 페이지가 표시됩니다.

하지만 지원되지 않는 브라우저 오류 페이지가 표시되면 기기가 호환되지 않는 것일 수 있습니다.

ARCore 지원됨

ARCore 지원되지 않음

이제 웹 서버와의 연결이 AR 기기와 작동됩니다.

  1. 증강 현실 시작을 클릭합니다. ARCore를 설치하라는 메시지가 표시될 수 있습니다.

ARCore 설치 메시지

AR 앱을 처음 실행하면 카메라 권한 메시지가 표시됩니다.

모든 준비가 완료되면 카메라 피드 위에 여러 큐브가 오버레이되는 장면이 표시됩니다. 카메라가 더 넓은 공간을 파싱함에 따라 장면 이해가 개선되므로, 여기저기 움직이면 효과가 안정화될 수 있습니다.

중요: 보안상의 이유로 WebXR Device API는 보안(HTTPS) 환경에서만 실행할 수 있습니다. 단, localhost 개발은 예외입니다. WebXR을 활성화하는 데 문제가 있는 경우 보안 문서 또는 로컬 호스트 URL을 사용하고 있는지 확인하세요.

이제부터 모든 테스트 및 확인(후속 단계의 테스트하기 섹션)에서 AR 기기 링크를 방문해야 합니다.

3. WebXR 구성

이 단계에서는 WebXR 세션과 기본 AR 장면을 설정하는 방법을 알아봅니다. HTML 페이지에는 기본 AR 기능을 사용할 수 있도록 CSS 스타일 지정 및 자바스크립트가 제공됩니다. 이렇게 하면 설정 프로세스에 소요되는 시간이 단축되어 Codelab에서 AR 기능에 집중할 수 있습니다.

HTML 페이지

기존 웹 기술을 사용하여 기존 웹페이지에 AR 환경을 빌드합니다. 이 환경에서는 전체 화면 렌더링 캔버스를 사용하므로 HTML 파일이 지나치게 복잡해질 필요가 없습니다.

AR 기능을 사용하려면 사용자 동작이 필요하므로 AR 시작 버튼 및 지원되지 않는 브라우저 메시지를 표시하기 위한 몇 가지 머티리얼 디자인 구성요소가 있습니다.

이미 work 디렉터리에 있는 index.html 파일은 다음과 같습니다. 실제 콘텐츠의 일부입니다. 이 코드를 파일에 복사하지 마세요.

키 자바스크립트 코드 열기

앱의 시작점은 app.js 입니다. 이 파일은 AR 환경을 설정하기 위한 상용구를 제공합니다.

이 상용구는 비동기 함수를 사용합니다. 비동기 함수에 관한 자세한 내용은 비동기 함수 - 프로미스를 편리하게 만들기를 참조하세요.

작업 디렉터리에는 이미 앱 코드( app.js )가 포함되어 있습니다.

WebXR 및 AR 지원 확인

사용자가 AR로 작업하기 전에 필요한 XR 기능과 navigator.xr 이 있는지 확인합니다. navigator.xr 객체는 WebXR Device API의 진입점이므로 기기가 호환되는 경우 있어야 합니다. 또한 "immersive-ar" 세션 모드가 지원되는지 확인합니다.

문제가 없는 경우 증강 현실 진입 버튼을 클릭하면 XR 세션을 만들려고 합니다. 문제가 있다면 shared/utils.js 에서 onNoXRDevice() 가 호출되고 AR 지원 부족을 나타내는 메시지를 표시합니다.

이 코드는 이미 app.js 에 있으므로 변경할 필요가 없습니다.

WebXR Device API가 브라우저에서 지원되더라도 요청된 세션 모드가 지원되지 않을 수 있습니다. 예를 들어 데스크톱 브라우저에서는 API를 구현할 수 있지만 환경을 지원하기 위한 연결된 VR이나 AR 하드웨어가 없을 수 있습니다. 기기 열거에 대한 자세한 내용은 WebXR Device API 사양을 참조하세요.

XRSession 요청

증강 현실 진입을 클릭하면 코드는 activateXR() 을 호출합니다. 그러면 AR 환경이 시작됩니다.

  1. app.js 에서 activateXR() 함수를 찾습니다. 일부 코드는 생략되었습니다.

WebXR의 진입점은 XRSystem.requestSession() 을 통해 이루어집니다. immersive-ar 모드를 사용하면 렌더링된 콘텐츠를 실제 환경에서 볼 수 있습니다.

  1. "immersive-ar" 모드를 사용하여 this.xrSession 을 초기화합니다.

XRReferenceSpace 초기화

XRReferenceSpace 는 가상 세계 내 객체에 사용되는 좌표계를 설명합니다. 'local' 모드는 뷰어 근처에 원점이 있고 안정적인 추적이 가능한 참조 공간이 있는 AR 환경에 가장 적합합니다.

onSessionStarted() 에서 다음 코드를 사용하여 this.localReferenceSpace 를 초기화합니다.

애니메이션 루프 정의

  1. window.requestAnimationFrame 과 유사하게 XRSession 의 requestAnimationFrame 을 사용하여 렌더링 루프를 시작합니다.

XRSession 의 requestAnimationFrame 을 사용하면 네이티브 XR 기기의 화면 재생 빈도에 연결할 수 있습니다. 표준 웹페이지의 렌더링 루프는 60FPS로 설계된 반면 외부 VR 디스플레이는 120FPS로 렌더링될 수 있습니다. 비독점 AR 세션은 여전히 60FPS에서만 실행될 수 있지만 기기의 포즈 및 뷰 정보는 세션의 requestAnimationFrame 내에서만 액세스할 수 있습니다.

모든 프레임에서 타임스탬프와 XRFrame을 사용하여 onXRFrame 이 호출됩니다.

  1. onXRFrame 의 구현을 완료합니다. 프레임이 그려지면 아래 코드를 추가하여 다음 요청을 큐에 추가합니다.
  1. 그래픽 환경을 설정하는 코드를 추가합니다. onXRFrame 의 하단에 추가합니다.
  1. 뷰어 포즈를 확인하려면 XRFrame.getViewerPose() 를 사용하세요. 이 XRViewerPose 는 공간 내 기기의 위치와 방향을 설명합니다. 또한 현재 기기에서 올바르게 표시하기 위해 장면을 렌더링해야 하는 모든 시점을 설명하는 XRView 배열도 포함됩니다. 입체 VR에는 두 개의 뷰(각 눈당 하나씩)가 있지만, AR 기기에는 한 개의 뷰만 있습니다.
    pose.views 의 정보는 가상 카메라의 뷰 매트릭스와 투영 매트릭스를 구성하는 데 가장 일반적으로 사용됩니다. 장면이 3D로 WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs 표시되는 방식에 영향을 줍니다. 카메라가 구성되면 장면을 렌더링할 수 있습니다.
  2. onXRFrame 의 하단에 추가합니다.

앱을 실행합니다. 개발 기기에서 work/index.html 을 방문하세요. 카메라 피드에 공중에 떠있는 여러 큐브가 보이며 기기를 움직임에 따라 시점이 바뀝니다. 이동함에 따라 추적이 개선되므로 사용 중인 기기와 본인에게 맞는 방법을 찾아보세요.

앱을 실행하는 데 문제가 있는 경우 소개 및 개발 환경 설정 섹션을 확인합니다.

4. 타겟팅 레티클 추가

기본 AR 장면을 설정했다면 히트 테스트를 사용하여 실제 세상과 상호작용해보겠습니다. 이 섹션에서는 히트 테스트를 프로그래밍하고 이를 사용하여 실제 표면을 찾을 수 있습니다.

히트 테스트 이해

히트 테스트는 일반적으로 공간상의 한 지점에서 특정 방향으로 직선을 뻗어 대상 객체와 교차하는지 확인하는 방법입니다. 이 예시에서는 기기를 실제로 있는 위치에 조준합니다. 기기의 카메라에서 나온 광선이 기기 앞의 현실 세상으로 뻗어나가는 모습을 상상해 보세요.

WebXR Device API를 사용하면 기본 AR 기능과 세상에 대한 이해를 기반으로, 이 광선이 실제 객체와 교차했는지 여부를 확인할 수 있습니다.

히트 테스트 설명

추가 기능으로 XRSession 요청

히트 테스트를 실행하려면 XRSession 을 요청할 때 추가 기능이 필요합니다.

  1. app.js 에서 navigator.xr.requestSession 을 찾습니다.
  2. 다음과 같이 "hit-test" 및 "dom-overlay" 기능을 requiredFeature 로 추가합니다.
  1. DOM 오버레이를 구성합니다. 다음과 같이 AR 카메라 뷰 위에 document.body 요소를 적용합니다.

모션 메시지 추가

ARCore는 환경에 대한 적절한 이해가 완료되었을 때 가장 잘 작동합니다. 이를 WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs 위해서는 위치와 환경 특성의 변화를 계산하기 위해 시각적으로 고유한 특징점을 사용하는 동시 현지화 및 매핑(SLAM) 프로세스를 거쳐야 합니다.

이전 단계의 "dom-overlay" 를 사용하여 카메라 스트림 상단에 모션 메시지를 표시합니다.

ID가 stabilization 인 를 index.html 에 추가합니다. 이 는 사용자에게 안정화 상태를 나타내는 애니메이션을 표시하고 SLAM 프로세스를 개선하기 위해 기기를 들고 이동하라는 메시지를 표시합니다. 이는 사용자가 AR에 있을 때 표시되며, 레티클이 클래스로 제어되는 표면을 찾으면 숨겨집니다.

레티클 추가

레티클을 사용하여 기기 뷰가 가리키는 위치를 나타냅니다.

  1. app.js 에서 setupThreeJs() 의 DemoUtils.createCubeScene() 호출을 빈 Three.Scene() 으로 바꿉니다.
  1. 충돌 지점을 나타내는 객체로 새 장면을 채웁니다. 제공된 Reticle 클래스는 shared/utils.js 의 레티클 모델을 로드하는 작업을 처리합니다.
  2. setupThreeJs() 의 장면에 Reticle 을 추가합니다.

히트 테스트를 실행하려면 새 XRReferenceSpace 를 사용합니다. 이 참조 공간은 뷰어의 관점에서 새로운 좌표계를 표시하여 보는 방향과 일치하는 광선을 만듭니다. 이 좌표계는 히트 테스트를 계산할 수 있는 XRSession.requestHitTestSource() 에서 사용됩니다.

  1. app.js 의 onSessionStarted() 에 다음을 추가합니다.
  1. 이 hitTestSource 를 사용하여 프레임마다 히트 테스트를 실행합니다.
      WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs
    • 히트 테스트 결과가 없으면 ARCore는 환경을 이해하기 위한 시간이 충분하지 않은 것입니다. 이 경우 안정화 를 사용하여 기기를 이동하라는 메시지를 사용자에게 표시합니다.
    • 결과가 나오면 레티클을 해당 위치로 이동합니다.
  2. onXRFrame 을 수정하여 레티클을 이동합니다.

화면 탭 시 동작 추가

XRSession 은 기본 작업을 나타내는 select 이벤트를 통해 사용자 상호작용을 기반으로 이벤트를 내보낼 수 있습니다. 휴대기기의 WebXR에서 기본 작업은 화면 탭입니다.

  1. onSessionStarted 하단에 select 이벤트 리스너를 추가합니다.

이 예시에서는 화면 탭을 통해 해바라기를 레티클에 배치합니다.

  1. App 클래스에서 onSelect 의 구현을 만듭니다.

앱 테스트

히트 테스트를 사용하여 기기로 조준할 수 있는 레티클을 만들었습니다. 화면을 탭하면 레티컬이 지정하는 위치에 해바라기를 배치할 수 있어야 합니다.

  1. 앱을 실행할 때 바닥의 표면을 추적하는 레티클을 볼 수 있습니다. 제대로 작동하지 않으면 휴대전화로 천천히 주변을 둘러보세요.
  2. 레티클이 표시되면 탭합니다. 해바라기가 위에 배치되어야 합니다. 기본 AR 플랫폼이 실제 표면을 더 잘 감지할 수 있도록 조금 돌아다녀야 할 수 있습니다. 조명이 밝지 않고 특징이 없는 표면인 경우 장면 이해의 품질이 저하되고 히트가 발견되지 않을 가능성이 커집니다. 문제가 발생하면 step-04/app.js 코드를 확인하여 이 단계의 실제로 작동하는 예시를 확인하세요.

5. 그림자 추가

사실적인 장면을 만들려면 장면에 현실감과 몰입감을 더하는 디지털 개체의 적절한 조명 및 그림자와 같은 요소가 필요합니다.

three.js 에서 조명과 그림자를 처리합니다. 그림자를 드리우는 조명, WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs 이러한 그림자를 받아 렌더링해야 하는 머티리얼, 그림자를 드리우는 메시를 지정할 수 있습니다. 이 앱의 장면에는 그림자를 드리우는 조명과 그림자만 렌더링하는 평평한 표면이 포함되어 있습니다.

  1. three.js WebGLRenderer 에서 그림자를 사용 설정합니다. 렌더기를 만든 후 shadowMap 에서 다음 값을 설정합니다.

이 예시에서는 그림자에 하드코딩된 광원을 사용합니다. 향후 WebXR용 AR 기능에는 3D 모델의 그림자도 실제 세상과 동기화되도록 조명 추정 및 기타 값이 포함될 수 있습니다. 자세한 내용은 기능: WebXR AR 조명 추정을 참조하세요.

DemoUtils.createLitScene() 에서 만든 예시 장면에는 그림자만 렌더링하는 평탄한 수평면인 shadowMesh 라는 객체가 포함되어 있습니다. 이 표면의 초기 Y 위치는 10,000단위입니다. 해바라기가 배치되면 꽃의 그림자가 실제 지면 위에 렌더링되도록 shadowMesh 를 실제 표면과 동일한 높이로 이동합니다.

  1. onSelect 에서 clone 을 장면에 추가한 후 코드를 추가하여 그림자 영역의 위치를 변경합니다.

더 복잡한 장면과 정확한 그림자를 표시하려면 장면 이해 기능을 더 많이 사용해야 할 수 있습니다.

해바라기를 배치할 때 그림자가 드리워지는 것을 볼 수 있습니다. 문제가 발생하면 final/app.js 코드를 확인하여 이 단계의 실제로 작동하는 예시를 확인하세요.

6. 추가 리소스

축하합니다. WebXR을 사용하는 WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs AR에 관한 이 Codelab을 완료했습니다.

자세히 알아보기

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

위치로 진입 점

앱 아키텍처 가이드 | Android 개발자 | Android Developers

이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함되어 있습니다. 이 페이지는 Android 프레임워크 기본을 잘 아는 사용자를 대상으로 합니다. Android 앱을 처

사용자의 모바일 앱 경험에 대해 알아둔다면 앱개발 시 초기에 라이프싸이클에 대해 이해하고 개발하는지, 안드로이드 아키텍처가 생겨났는지, Jetpack을 적용해야하는지에 대해 조금은 더 이해 할 수 있을거라고 생각합니다. 먼저 데스크톱 환경과 안드로이드 환경을 비교해보자면, 데스크탑 어플리케이션들은 대부분 아이콘을 클릭해 실행합니다. 앱을 진입하는 일반적으로 하나로 볼 수 있습니다. 이 진입점을 통해 프로그램 전체를 메모리에 올리고, main()과 같은 함수를 통해 시작한다고 볼 수 있습니다. 이 순서외에 데스크탑에서 애플리케이션을 실행시키는 방법은 없다고 생각하겠습니다.

하지만 안드로이드 어플리케이션은 홈에 있는 아이콘을 클릭 할 수도 있고, 푸시메시지를 통해 앱을 실행 할 수도 있고, 다른앱에서 호출 할 수도 있고, 알람을 통해 특정한시간에 스스로 실행이 되기도하는 등 여러가지 방법으로 앱을 실행 할 수 있고 각 이벤트마다 실행되는 시작화면도 다를 수 있습니다.

이에 따라 안드로이드에서는 이러한 다양한 진입점을 대응하기위해 4가지 컴포넌트라는것이 생겨났고 이 컴포넌트를 통해 다양한 앱에 시작 진입점을 설정 할 수 있습니다.

이러한 앱의 진입점 역할을 하는 4가지 컴포넌트를 사용하기 위해서는 AndoirdManifest라는 파일에 명시를 해야 사용 할 수 있습니다. 그러면 OS에서는 각 앱에 있는 Manifest파일을 전체를 분석하여 사용자가 다양한 앱을 스마트폰에서 사용 할 수 있도록 통합하는 작업을 합니다. 우리는 스마트폰을 사용할때 아주 짧은 간격으로 다양한 앱들을 실행합니다. 인터넷 검색을 했다 지도로 가고, 전화를하고, 메신저를 했다가, 사진을 찍는 등 이러한 앱간의 이동이 아주 자연스러울 수 있는 이유가 앱에 다양하게 진입 할 수 있는 컴포넌트가 잘 구성되어있기 때문입니다. 실제로 WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs 앱을 구현해보면 일반 스토어에 출시되어있는 앱들이 얼마나 이러한 부분을 공들여서 개발하는지 알 수 있게 될 것입니다.

다시 이러한 잘 구성된 앱컴포넌트를 구현했을 때 아래와같이 사용 할 수 있습니다. SNS앱에서 사진을 찍을 때 자연스럽게 카메라 앱으로 전환이 되고 사진을 찍는 도중에 전화가 오고 전화를 받으면 또 자연스럽게 통화 앱으로 넘어가고 통화가 끝나면 다시 카메라 앱으로 돌아오게되는 것이 사용자가 생각 하는 일반적인 경험일 것입니다. 이러한 부분을 앱컴포넌트를 잘 고려하여 구현해야만 가능한부분입니다.

롯데호텔 월드 위치

rewards card image

동호대교 진입 → 동호대교 남단에서 압구정 방향 출구 진입 → 압구정 사거리에서 교각을 중심으로 좌로 U턴 →
맨 우측 차선 올림픽 대로 방향으로 진입 후 잠실종합운동장 방향 직진 → 종합운동장을 조금 지나 성남, 잠실 방향 출구 진입 →
약 100m 직진 후 두 갈래 길에서 잠실역 방향으로 우회전 → 잠실 주공 5단지 앞 신호등 우측 차선 유지 직진 → WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs 우측차선으로 호텔 진입

남산 3호 터널 경유 → 이태원 방향으로 진행하다가 한남동 사거리에서 우회전 → (구)단국대 앞을 지나 한남대교 진입 →
한남대교 남단에서 종합운동장 방향 출구로 진입 → 올림픽대로 잠실종합운동장 방향 직진 → 종합운동장을 조금 지나 성남, 잠실 방향 출구 진입 →
약 100m 직진 후 두 갈래 길에서 잠실역 방향으로 우회전 → 잠실 주공 5단지 앞 신호등 우측 차선 유지 직진 → 우측 차선으로 호텔 진입

동부간선도로 진입 → 강변북로 구리, 팔당 방향으로 진입 → 잠실대교까지 직진 →
잠실대교를 바라보면서 우측 차선으로 잠실대교 진입 → 잠실대교 남단 끝 지점 주공 5단지 앞 신호등 직진 → 잠실역 사거리 우측 차선으로 직진 → 호텔 진입

양재 톨게이트를 지나 한남 I.C.까지 직진 → 잠실종합운동장 방향 출구 진입 →
출구 끝 지점에서 우측차선으로 올림픽대로 진입 → 올림픽 대로 잠실종합운동장 방향 직진 →
종합운동장을 조금 지나 성남, 잠실 방향 출구 진입 → 약 100m 직진 후 두 갈래 길에서 잠실역 방향으로 우회전 → 잠실 주공 5단지 앞 신호등 우측 차선 유지 직진 → 우측차선으로 호텔 진입

동서울 톨게이트를 지나 구리, 미금 방향으로 강일 I.C.까지 진입 → 강일 I.C.에서 우측차선으로 잠실종합운동장 방향 Ramp 진입 →
좌측차선 김포공항 방향으로 다시 진입 → 올릭픽대교 지나 좌측 서울아산병원, 우측 잠실철교가 차례로 보이면 우측차선으로 진행→
잠실대교, 잠실역 이정표를 따라 우측으로 진입 후 약 200m 직진 → 성남, 잠실역 방향 이정표를 따라 좌측 토끼굴로 U턴 → 잠실 주공 5단지 앞 신호등 우측 차선 유지 직진 → 우측차선으로 호텔 진입

지하철로 오시는 길

- 지하철 출구: 3번출구
- 도보: 1분

버스로 오시는 길

- 간선(파랑) : 301, 341, 351, 360, 362
- 지선(초록) : 2415, 3217, 3313, 3314, 3315, 3317, 3411, 3412, 3414, 4318, 4319

교통편 별 소요시간

인천공항 터미널 1→ 터미널 2 → 롯데호텔월드

(터미널 1 / 3B,4A)
05:00 / 05:27 / 06:00 / 06:30 / 07:00 / 07:19
07:42 / 08:02 / 08:26 / 08:51 / 09:12 / 09:36
09:58 / 10:21 / 10:47 / 11:08 / 11:36 / 12:00
12:26 / 12:52 / 13:16 / 13:40 / 14:00 / 14:25
14:46 / 15:12 / 15:32 / 15:58 / 16:20 / 16:48
17:12 / 17:34 / 17:51 / 18:10 / 18:32 / 18:52
19:15 / 19:40 / 20:05 / 20:36 / 21:05 / 21:33
22:04 / 22:35 / 23:10

인천공항 제 2여객터미널 출발시간은 상기시간(T1)보다 20분 후 출발하는 시간입니다.
- 제 2여객터미널 : 첫차 운행시간 05:00

롯데호텔월드 → 인천공항 터미널 2 → 터미널 1

04:50 / 05:00 / 05:10 / 05:20 / 05:30 / 05:45
06:00 / 06:20 / 06:40 / 07:00 / 07:25 / 07:50
08:15 / 08:40 / 09:00 / 09:25 / 09:50 / 10:15
10:40 / 11:00 / 11:20 / 11:45 / 12:05 / 12:30
12:55 / 13:15 / 13:40 / 14:05 / 14:30 / 14:50
15:15 / 15:40 16:05 / 16:30 / 16:55 / 17:20
17:45 / 18:10 / 18:WebXR Device API를 사용하여 증강 현실(AR) 앱 빌드  |  Google Codelabs 35 / 19:05
* 인천공항 제 2여객터미널 → 제 1여객터미널 운행 (04:50 차량은 T1만 운행)

KAL 리무진 버스 INFORMATION (인천공항-롯데호텔월드)

- 소요시간: 1시간20분 (교통상황에 따라 변경될 수 있습니다.)
- 이용요금: 대인 ₩16,000, 소인(만6세~만12세) ₩10,000
- 승차위치: 인천공항 터미널 1 : 3B, 4A / 터미널 2 : 17, 18, 19번 정류장

김포공항 → 롯데호텔월드
※ 2020.03.01부로 노선 폐지 예정

08:40 / 09:20 / 10:00 / 10:40 / 11:10 / 11:50
12:30 / 13:10 / 13:50 / 14:20 / 14:50 / 15:20
16:00 / 16:40 / 17:20 / 17:50 / 18:20 / 19:00
19:40 / 20:20 / 20:50 / 21:20 / 21:40 / 22:00
22:30 / 22:50 / 23:10
* 김포국제선 청사 출발 시간은 상기 시간표의 10분전입니다. (6번정류장)

롯데호텔월드 → 김포공항
※ 2020.03.01부로 노선 폐지 예정

※ 리무진 버스 : 6706
05:05 / 05:35 / 06:05 / 06:35 / 07:00 / 08:20
09:40 / 10:30 / 11:40 / 12:50 / 13:40 / 14:50
15:50 / 17:00 / 18:10 / 19:20

KAL 리무진 버스 INFORMATION (김포공항-롯데호텔월드)
※ 2020.03.01부로 노선 폐지 예정

- 소요시간: 60분 (교통상황에 따라 변경될 수 있습니다.)
- 이용요금: 대인(₩7,500), 소인(₩4,500)
- 승차위치: 국내선 청사 5번, 국제선 청사 6번


0 개 댓글

답장을 남겨주세요