QCAR은 안드로이드를 기반으로 돌아가기 때문에, 안드로이드 공부를 하지 않을 수 없다.
JAVA는 그렇다치고 JNI, NDK, Android, Unity 3D, OpenCV를 공부해야한다.
QCAR Multitargets의 프로젝트 폴더구조다
src : 현재 개발중인 안드로이드 소스 코드
gen : 안드로이드가 자동적으로 생성한 R.java 소스 코드
libs : 라이브러리 폴더, NDK로 JNI소스를 돌리면 자동적으로 생성된다.
jni : 자바 네이이티브 파일들, C, C++, Header파일이 들어있다. 이걸 NDK-build하면 .so라이브러리가 생성된다.
res : 안드로이드가 자동으로 생성하는 자원 폴더
- drawable : 이미지파일 객체생성을 위한 실제 jpg와 같은 이미지나 이미지 생성을 위한 xml 파일을 넣어준다.
- res/anim : 애니메이션 xml파일. (애니메이션이 없으면 폴더도 없다)
- res/layout : XML 파일로서 안드로이드 화면 layout
개발자의 편의를 위해 UI구성에 필요한 모든 이미지 파일에 대해 XML지원
main.xml이 여기있다
- res/menu : XML파일로 메뉴정의
- res/values : 문자열
- res/xml : XML파일
AndroidManifest.xml : 현재 개발한 안드로이드 응용프로그램에 대한 모든 정보
default.properties : 속성정보
res/drawable 폴더 내에 필요한 이미지나 소스를 첨부하여 layout폴더 내 main.xml을 지원
src폴더 내 실제 소스들을 통한 객체를 생성하고 의미를 부여하기 위해서는 main.xml로 UI구성을 준비하고 이 준비된 것들이 gen폴더 내 R.java를 통해 src내 실제 개발소스를 지원한다.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qualcomm.QCARSamples.MultiTargets"
android:versionCode="1"
android:versionName="1.0">
<application
android:icon="@drawable/icon_qcar" // drawable폴더 내의 icon_qcar이 아이콘이된다
android:label="@string/app_name" // 어플의 이름이
된다
android:description="@string/app_description" // 어플의 설명
android:launchMode="singleTask" // 태스크 하나만 작동
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
// 풀스크린시 타이틀바제거
android:debuggable="true">
<activity android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:name=".MultiTargets">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" /> // 최소 SDK버전은 7
<uses-feature android:glEsVersion="0x00020000" /> // OpenGL ES 2.0 사용
<uses-feature
android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission
android:name="android.permission.READ_PHONE_STATE"/>
</manifest>
---------------------------------------------------------------------------------------
<uses-permission(권한설정)>
안드로이드의 기능을 사용하기 위해서는 권한을 등록해 주어야 한다. 설정해 주어야 한다.
프로젝트 파일에 보면 AndroidManifest.xml 이라는 파일이 있을 것이다. 이곳에 등록을 한다.
CAMERA : 카메라를 사용하는 권한
SET_WALLPAPER : 카메라를 이용하여 사진을 찍고 그것을 바탕화면으로 저장하기 위한 권한.
INTERNET : 지도나 웹뷰등 인터넷을 사용해야 한다면 권한을 설정해야한다.
WRITE_EXTERNAL_STORAGE : 파일을 생성할 수 있는 권한.
READ_EXTERNAL_STORAGE : 파일을 읽을 수 있는 권한.
RESTART_PACKAGES : 실행중인 모든 프로세스 강제로 죽일 때 사용하는 권한.
<가로 세로 모드 설정>
<activity android:screenOrientation="portrait" android:theme="@style/SampleStoreTheme">
portrait 를 써주면 세로 모드로 고정한다.
landscape 를 써주면 가로 모드로 고정한다.
R.Java
얘는 안드로이드가 알아서 만들어주기 때문에 절대로 건드리면 안된다.
자동생성 파일이다.
언제든지 불러올 수 있는 메모리를 항상 저장해 놓는 것이다.
R은 Resource의 약자
Public Static final int aaa = 0x7f020000;
Public : 어디서든 쓸 수 있는 Static : 메모리에 저장한 Final : 상수값인 int : 정수형 aaa변수의 메모리주소는 0x7f020000
이것을 R.Java에서는
R.id.aaa;
요렇게 불러서 쓰면 되는거
R클래스의 id클래스의 aaa를 불러쓰시겠다는 뜻.
Res폴더에 사진이나 애니메이션같은 기타등등파일을 넣어두면 R.java가 자동생성한다.
안드로이드 소스 라이프사이클
이 그림 하나면 설명이 충분할 것이다.
'Augmented Reality > Moblie AR' 카테고리의 다른 글
Android 개발 시 항상 주의해야 할 점 (0) | 2014.06.10 |
---|---|
JNI에서 string 사용 방법 (0) | 2014.06.10 |
Android LOG (0) | 2014.06.10 |
Android NDK (0) | 2014.06.10 |
Qualcomm AR SDK - QCAR (0) | 2014.06.10 |