[Android] Data Storage

Android 2010. 2. 25. 01:08

애플리케이션에서 데이터를 저장, 가공, 표현하기 위해서 데이터 저장 메커니즘이 있다.
안드로이드 애플리케니션 또한 마찬가지로 Data Storage 메커니즘을 제공한다.

기본적으로 안드로이드 상에서, 모든 애플리케이션의 데이터는 그 애플리케이션에게 private하다.
그래서, Content Provider를 통해서 private한 데이터를 다른 애플리케이션에게 보여준다.
Content Provider는 애플리케이션 데이터에 읽기/쓰기 접근을 제공하는 컴포넌트이다. 
읽기/쓰기 접근은 그 Content Provider가 부과할 수도 있는 제약의 조건에 따른다. 그 Content Provider는 데이터를 요청하고 수정하는 것에 대한 표준 문법과, 그리고 리턴된 데이터를 읽는 것에 대한 표준 메커니즘을 구현한다. 

안드로이드는 데이터를 저장하고 가져오기 위해 다음의 네 가지 메커니즘을 제공한다.

1. Preferences
2. 파일(Local File)
3. 데이터베이스(SQLite)
4. 네트워크


Preferences 

Preference는 기본적인 데이터 타입에 대한 키와 값의 조합으로 데이터를 가져오는 가벼운 메커니즘이다. 
이는 애플리케이션이 시작될때 로드되어야 하는 기본적인 환경설정 사항들에 대한 정의로 자료형으로는 Boolean, float, int, long, String이 있다. 
이곳에 값을 읽고 쓰기 위해서는 Context.getSharedPreferences()를 호출한다. 만약 같은 애플리케이션 내의 다른 컴포넌트들에게 이것을 공유하고자 한다면, 프레퍼런스 집합에 이름을 할당하면 된다. 또한 호출하는 Activity의 private 영역에 그것을 유지하기 위해서는, 이름없이 Activity.getPreferences()를 사용한다. Content Provider를 사용하는 것에 의하지 않고서는 Preference를 공유할 수 없다.

    @Override
    protected void onCreate(Bundle state){         
       super.onCreate(state);
    
    . . .
    
       // Restore preferences
       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
       boolean silent = settings.getBoolean("silentMode", false);
       setSilent(silent);
    }


Files

Mobile Device 상에 또는 분리될 수 있는 저장 매체 상에 직접적으로 파일들을 저장할 수 있다. 
기본적으로 다른 애플리케이션들은 이러한 파일들에 접근할 수 없다.
만약 컴파일 시점에 애플리케이션과 함께 패키지할 정적(static) 파일을 가지고 있다면, 프로젝트의 res/raw/myDataFile로 
그 파일을 저장할 수 있으며, 그리고 나서 Resources.openRawResource(R.raw.myDataFile)를 사용해서 그것을 열수 있다. 그것은 파일로로부터 읽기 위해 사용할 수 있는 InputStream 오브젝트를 리턴한다.


Databases

안드로이드 API는 SQLite 데이터베이스를 지원한다. 각각의 데이터베이스는 그것을 생성한 애플리케이션에게 private하다.
SQLiteDatabase 오브젝트는 데이터베이스를 나타내고, 그것과 상호작용하는 메소드들을 가지고 있다. 데이터베이스를 생성하기 위해서는 SQLiteDatabase.create()를 호출하고, 또한 서브클래스 SQLiteOpenHelper를 호출한다.
SQLite 데이터베이스 시스템을 위한 지원의 일부로써, 안드로이드는 데이터베이스 관리 기능을 제공한다. 그것은 유용한 오브젝트들로 감싸진 복잡한 데이터 집합들을 저장하게 한다. 예를 들어 안드로이드는 contact 정보에 대한 데이터 타입을 정의한다. 그것은 성과 이름(문자열), 주소와 전화번호(또한 문자열), 사진(비트맵 이미지), 그리고 사람을 설명하는 다른 많은 정보를 포함하는 많은 필드들로 구성되어 있다.
안드로이드는 테이블 컨텐츠를 브라우즈하고, SQL 명령어를 실행하고, 그리고 SQL 데이터베이스의 다른 유용한 기능을 수행하는 것을 가능하게 하는 sqlite3 데이터베이스 도구를 함께 배포하고 있다.
모든 데이터베이스(SQLite와 그 밖의 것들)는 디바이스 상의 /data/data/package_name/databases 안에 저장된다.
그리고, 레코드에 대한 고유한 ID로 사용될 수 있는 자동증가 키값 필드(autoincrement value key field)를 포함할 것을 권장한다. 이것은 정적(private) 데이터를 위해서는 요구되지 않지만, 만약 컨텐트 프로바이더를 구현한다면, 그러한 고유한 ID 필드를 포함해야 한다. 


Network 

데이터를 저장하고 가져오기 위해 네트워크를 사용할 수 있다. 
네트워크 오퍼레이션을 하기 위해서는, 다음의 패키지에 있는 클래스를 사용한다.

java.net.*
android.net.*



Posted by finewoo
,

"안드로이드 개발자 가이드 한글누리집" 사이트가 최근 베타 오픈하였다.

Kandroid가 공개한 안드로이드 개발자 가이드 한글누리집은 대부분 원문과 함께 한글번역이 되어있다.

http://www.kandroid.org/board/kandroid_dev.php








'Android' 카테고리의 다른 글

[Android] Intent  (0) 2010.03.25
[Android] Data Storage  (0) 2010.02.25
[Android] 안드로이드 설치 및 개발 환경설정  (0) 2010.02.05
[Android] 안드로이드란?  (1) 2010.02.02
[Android] 안드로이드 개발 관련 링크  (1) 2010.02.01
Posted by finewoo
,

1. JDK 설치
http://java.sun.com/javase/downloads/widget/jdk6.jsp
Java SE Development Kit (JDK) 6 를 다운 받아 설치한다.


2. 이클립스 설치

http://www.eclipse.org/downloads/
Eclipse 3.5 (Galileo)
Eclipse IDE for Java Developers 버전 다운로드 후 설치할 디렉토리에 압축을 푼다.
안드로이드에서 WST를 사용하는데 기본으로 WST가 포함되어 있다.
JEE 개발용은 안드로이드 개발에 굳이 사용할 필요는 없다.


3. 이클립스 플러그인(ADT) 인스톨

Eclipse 3.5 (Galileo) 기준
  1. Help/Install New Software
  2. Available Software
  3. Add : https://dl-ssl.google.com/android/eclipse/
  4. Developer Tools 아래 Android Development Tools와 Android Editors가 체크되어있는지 확인
   (https가 안될경우 http로 연결해본다.)


4. 안드로이드 SDK 설치
http://developer.android.com/sdk/index.html(SDK 다운로드)
http://developer.android.com/sdk/installing.html(설치 방법 안내)
현재 최신 릴리즈 버전은 Android 2.1 Platform 이며 다운받아 특정 디렉토리에 압축을 풀고
'SDK Setup.exe'
를 실행한다.
Available Packages 메뉴에서 설치하고자 하는 버전의 패키지 항목들을 설치한다.

- Documentation for Android SDK, API 7, revision 1
- SDK Platform Android 2.1, API 7, revision 1
- Google APIs by Google Inc., Android API 7 revision 1
- Usb Driver package, revision 3

안드로이드 2.0 SDK 부터 새로 생긴 방식으로  각 버전별 에뮬레이터 및 SDK를 별도로 다운로드 받아 사용할 수 있다.
1. Window / Android SDK and AVD Manager 실행
2. Available 패키지에서 설치를 원하는 API 버전 선택 

  (만약 자동 연결, 설치에 실패하는 경우 Settings 메뉴의 Force https://... 체크한 후 다시 설치한다.)

3. Install Selected

도스창 명령행의 사용을 위해 시스템 Path 'C:\Java\android-sdk-windows\tools\' 추가한다.


5. 안드로이드 SDK 이클립스  설정
  1. Eclipse의 메뉴 Windows/Preference 실행
  2. 왼쪽 탭에서 Android 선택
  3. Browse를 한후 SDK를 설치한 디렉토리 선택




'Android' 카테고리의 다른 글

[Android] Intent  (0) 2010.03.25
[Android] Data Storage  (0) 2010.02.25
[Android] 안드로이드 개발자 가이드 한글누리집  (1) 2010.02.22
[Android] 안드로이드란?  (1) 2010.02.02
[Android] 안드로이드 개발 관련 링크  (1) 2010.02.01
Posted by finewoo
,


What is Android?

Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
[출처]http://developer.android.com/guide/basics/what-is-android.html


안드로이드는 오퍼레이팅 시스템, 미들웨어와 키 애플리케이션을 포함한 모바일 장치를 위한 소프트웨어 스택이다.
안드로이드 SDK는 자바 프로그래밍 언어를 사용하는 안드로이드 플랫폼에서 애플리케이션 개발을 시작하기 위한 필요한 도구와 API들을 제공한다.

단순하게 본다면 PC에서의 리눅스나 윈도우와 같은 운영체제라고 생각해도 된다.
즉, 안드로이드 플랫폼은 운영체제, 미들웨어, 키(Key)애플리케이션들을 포함한 모바일 디바이스를 위한 소프트웨어 집합이다.

안드로이드를 개발의 입장에서 본다면 애플리케이션 개발과 플랫폼 개발로 나눌 수 있다.
애플리케이션 개발에 있어서 안드로이드는 JAVA를 기반으로 한 소프트웨어 프레임워크이며 플랫폼 개발에서는 휴대폰의 새로운 서비스, 기능을 창출해 내는 OPEN SOURCE 프로젝트라고 할 수 있다.
안드로이드는 Linux를 OS로 채택하고 있으며 Google사가 중심으로 수많은 단체로 결성된 OHA(Open Handset Alliance)에 의해 개발되고 있다.

여담으로  '안드로이드'의 희랍 어원적인 의미는 '인간을 닮은 것'이라는 뜻인데,19세기의 작가 빌리에드릴라당이 처음으로 과학소설에 사용했다. <미래의 이브> 이곳에서 등장하는 여성 로봇의 이름이 '안드로이드'이다.
그래서 구글의 안드로이드 로고에도 이 로봇 형상이 들어가게 된다.



Posted by finewoo
,

Android.com
http://www.android.com/
안드로이드 공식 웹사이트.
개발자 웹사이트 및 안드로이드 마켓 링크

Android Developers
http://developer.android.com/index.html
안드로이드 개발자 웹사이트
SDK 다운로드, 리소스, 리퍼런스, 가이드등 제공

Android Market
http://www.android.com/market/
안드로이드 마켓. 무료 및 유료 안드로이드 애플리케이션 장터.

구글 안드로이드
http://code.google.com/android/
구글의 안드로이드 코드사이트

안드로이드펍 커뮤니티
http://www.androidpub.com/
안드로이드관련 사용자 및 개발자등 커뮤니티 사이트
개발과 관련하여 비교적 많은 자료가 등록.

안드로이드 클럽
http://www.androidclub.co.kr/

안드로이드 사이드
http://www.androidside.com/

코리아 안드로이드
http://www.kandroid.org/
Posted by finewoo
,