ARCore 사용을 위한 환경이 구축되었다면 이제 ARCore를 이용하여 프로젝트를 시작해봐야겠죠.
먼저 새로운 프로젝트를 생성합니다.
프로젝트의 형태는 만들고자 하는 프로그램의 형태를 고르시면 됩니다.
따로 결정된 형태가 없다면 그냥 텅 비어있는 Empty Activity를 선택하시면 되겠죠.
다음으로 프로젝트의 기본 값을 설정합니다.
여기에서 프로젝트 이름, 패키지 이름, 프로젝트 파일들의 저장경로, 개발 언어(Java, Kotlin 등), 최소 API 버전을 지정합니다.
이전 글에서 말씀드렸듯이 최소 API 버전은 24 버전으로 설정하셔야 합니다.
그리고 개발 언어는 Java를 선택하도록 하겠습니다.
여기까지 설정하고 나면 프로젝트의 생성은 끝입니다.
간단하죠.
프로젝트를 생성하고 나면 우리가 사용할 다양한 모듈들을 다운로드 하고 프로젝트에서 사용할 권한들을 설정해주어야 하는데 이런 작업은 gradle 이라는 빌드 자동화 도구를 이용하여 설정하게 됩니다.
가장 먼저 작업해야 할 부분은 아래의 화면에서 표시한 build.gradle (Module: app) 파일입니다.
개발하고자 하는 앱에 대한 모듈들을 설정하는 파일입니다.
build.gradle (Module: app) 파일을 열어보면 다음과 같이 기본적인 코드가 자동으로 생성되어 있습니다.
이 코드에 ARCore를 사용하기 위한 설정을 추가하면 됩니다.
일단 무엇보다 중요한 ARCore를 사용하겠다는 설정을 추가해야겠죠.
build.gradle 파일 안의 dependencies 블록에 다음 내용을 추가해주세요.
implementation 'com.google.ar:core:1.0.0'
사실 현재 최신버전의 ARCore 모듈을 사용하려면 'com.google.ar:core:1.15.0'을 사용해야겠지만 기존에 사용하던 함수, 메소드 중에서 Deprecated 된 것도 있고.. 최신 버전에 대한 자료가 그다지 많지 않아서 그냥 1.0.0을 사용했습니다.
최신 버전을 사용하셔도 무방합니다.
입력, 저장을 하고 나면 오른쪽 상단에 Sync Now 라는 항목이 활성화되는데 이 항목을 클릭하면 ARCore를 빌드하기 위해 필요한 라이브러리들을 다운로드합니다.
Sync Now를 클릭하여 디운로드 및 빌드가 완료되면 이제 ARCore 앱을 동작시키기 위한 설정을 해 주어야 합니다.
첫 번째로 앱에서 사용할 권한을 부여해 주어야 하며, 두 번째로 ARCore를 사용한다고 알려주는 메타데이터를 작성해야 합니다.
이런 설정은 AndroidManifest.xml 파일에 등록하도록 되어 있습니다.
우리가 앱에서 사용할 권한은 당연히 카메라에 대한 접근 권한입니다.
그리고 카메라 기능에 등록된 AR 기능의 사용 권한이 필요하겠죠.
따라서 AndroidManifest.xml 파일의 manifest 블록 안에 다음의 코드를 추가하여 시스템(안드로이드 디바이스)에 권한을 요청합니다.
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.ar" android:required="true" />
그리고 아래의 코드를 추가하여 메타데이터를 작성합니다.
<meta-data android:name="com.google.ar.core" android:value="required" />
작업을 완료하면 아래와 같은 형태가 되겠죠.
여기까지 작성을 하셨다면 한 번 빌드를 해 볼까요?
빌드를 마치고 나면 안드로이드 스튜디오의 하단에 있는 Build Output 탭에서 Build Suddessful 메시지와 함께 디바이스에 설치가 완료되었다는 메시지가 뜹니다.
연결된 디바이스에서 다음과 같은 Hello World가 실행되었다면 정상적으로 빌드 후 실행된 것입니다.
여기까지해서 기본적인 설정이 완료되었습니다.
그러나 ARCore를 사용하여 빌드된 것인지 그냥 일반적인 Hello World! 앱이 빌드, 실행된 것인지 알 수 없습니다.
그렇다면 직접 ARCore가 가지고 있는 함수를 호출해 보면 알 수 있겠죠.
그렇다면 ARCore의 API에 접근할 수 있도록 해 주는 Session 객체를 생성, 호출해보도록 하겠습니다.
코드는 메인 프로그램 파일인 MainActivity.java 파일에 작성하도록 합니다.
제일 처음 자동으로 생성된 MainActivity.java 파일은 아래와 같습니다.
이 파일에 Session 객체를 생성하고 지속적으로 호출되도록 하기 위하여 onResume() 메소드에서 Session 객체에 대한 처리를 구현하도록 합니다.
package com.aidalab.ssar_planedetection;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import com.google.ar.core.ArCoreApk;
import com.google.ar.core.Session;
public class MainActivity extends AppCompatActivity {
private boolean mUserRequestInstall = true;
private Session mSession;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
protected void onResume() {
super.onResume();
try {
if (mSession == null) {
switch (ArCoreApk.getInstance().requestInstall(this,mUserRequestInstall)) {
case INSTALLED:
mSession = new Session(this);
Toast.makeText(this, "Session is created.", Toast.LENGTH_LONG).show();
break;
case INSTALL_REQUESTED:
mUserRequestInstall = false;
Toast.makeText(this, "Session creation is failed.", Toast.LENGTH_LONG).show();
return;
}
}
} catch (Exception e) {
Toast.makeText(this, "TODO: handle exception " + e, Toast.LENGTH_LONG).show();
return;
}
}
}
위와 같이 "Session is created" 메시지가 나오면 ARCore API를 성공적으로 호출한 것입니다.
이렇게 해서 ARCore를 사용하기 위한 프로젝트 생성과 초기 설정 방법을 확인해 보았습니다.
다음 글에서는 ARCore 프로그램을 개발하기 위해서 어떤 점들을 고려하고 시작, 진행해야 하는지 간단하게 살펴보도록 하겠습니다.
'관련 기술 > AR(증강현실)' 카테고리의 다른 글
AR앱 개발 시 Sceneform SDK를 이용한 방법과 직접 구현하는 방법 (0) | 2020.07.29 |
---|---|
ARCore를 이용한 개발 과정을 생각해보자 (0) | 2020.06.29 |
ARCore 개발환경 설정 (0) | 2020.06.25 |
ARCore에 대하여 (0) | 2020.06.23 |
AR(증강현실, Augmented Reality)이란 무엇인가? (0) | 2020.06.22 |