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
Posted by 긍정왕오킹