MSDN이 설치된 사람은 다음의 주소를 사용하여 msdn에서 접속해 보자.
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ko/dv_fxsamples/html/642d5603-f4d5-4151-9173-a5cecf2296ac.htm
핸드폰이 고장났었고 한 친구의 꼬드김으로 PDA를 구매해서 사용하다가,
또 다른 친구의 꼬드김으로 프로그래밍을 해 볼라고 준비중이다.
1, PDA의 정보를 알아 보자.
우선 내가 가지고 있는 PDA는 삼성에서 나온 M4655이다.
내가 쓰고 있는 M4655는 아래와 같은 환경정보를 가지고 있다. ( 설정->시스템->정보 )
위의 정보에서 조금 구분해 주어야 할것이 있는데, Windows Mobile 6 Professional과 CE 5.2.1621 이다
Windows Mobile 버젼, 윈도우 CE의 버젼은 다를 수 있다는것을 한번 더 알아 두고 가자.
2. 프로그래밍에 사용되는 SDK를 다운로드 받자.
PDA는 일반 Windows Application보다 기능이 없거나, 혹은 전화와 같은 특수능력에 대한 API가 있다. 이러한 API를 사용할 수 있는 SDK를 다운로드 받아서 설치 해야 한다.
우선 글쓰는 사람의 환경은 Visual Studio 2005 가 이미 설치 되어 있는 상태이다. 그러므로 아래의 작업을 하기 전에 먼저 자신의 환경에 Visual Studio 2005를 설치하고 따라하기를 바란다.
우리는 C#으로 프로그래밍을 하기로 정했고, 거기에 맞춰서 .net framework를 설치하여야 한다. PDA에서 사용되는 .net framework는 .NET Compact Framework 2.0 이다. 이를 사용하여 개발하기 위해서는 compact framework가 아닌 그냥 framework SDK를 설치해 주고, visual studio 2005도 설치해 주어야 한다.
현재 시점에서 나온 .Net Compact Framework는 사실 3.5까지 나와 있다. 하지만 3.5버젼은 기본적으로 설치되어 나오고 있는 PDA가 최근의 것 이외에는 없다고 알고 있기 때문에, 프로그래밍 배포시 불편함을 감수해야 한다. 물론 지금 글쓴이의 개발환경에 visual studio 2008을 설치하지 않은 이유도 매우 크다.
헥헥.. 이제 모두 받았다. 위에서 받은것을 순차적으로 설치해 주면 된다. 글쓰는 이는 이미 다운받아져 있는 상태에서 위의 링크를 찾아서 알려 준것이기 때문에 중복 설치 되거나, 혹은 필요 없거나, 혹은 설치 되지 않는 놈들도 있을 수 있다.
3. 또 SDK, 에뮬레이터를 다운로드 받자
위의 과정은 프로그래밍을 위한 SDK나 배포를 위한 환경을 만들어 두는것이다. 이제는 프로그램을 실행시켜서 잘 동작하는지 테스트 하기 위한 실행환경이 필요하다. 프로그램을 만들어서 직접 PDA에 올려서 본다면, 얼마나 귀찮겠는가? 코드하나 짜고 올려서 보고, 또 한줄 짜서 올려서보고.. 그건 사람이 할 짓이 아니다.
그래서 PDA프로그램을 컴퓨터에서 돌릴 수 있도록 하는 에뮬레이터를 제공해 주고 있다. 프로그래밍을 짜고 실행은 실제 PDA가 아니라, 컴퓨터위에서 동작하는 에뮬레이터에서 동작을 확인할 수 있다.
자. PDA에 관련된 다운로드와 설치를 다시 하도록 하자.
여기서 다운로드 받을때 주의해야 할 점이 있다. 제일위에 설명했듯이 4655는 Winodws Mobile 6 Professional을 사용하므로 거기에 맞도록 Professional을 설치해 주도록 한다. 내용을 대략 읽어 보면 알겠지만 프로페셔널에서는 240*320 pixel을 지원하고, 이는 M4655의 환경과 일치한다.
그리고 System Requirements라고 적혀 있는 부분을 잘 확인해야 한다. 글쓴이의 환경은 Windows XP이고 이를 위해서는 아래의 조건을 만족해야 한다.
Windows XP
Microsoft Windows XP Service Pack 2.
Microsoft Visual Studio 2005, Standard Edition or above (Express Editions are not supported). SP1 recommended.
위의 링크에 있는 프로페셔널을 다운로드 받으면 에뮬레이터가 포함되어 있으니 더 이상 에뮬레이터를 설치하지 않아도 되리라 본다. 하지만 나는 이것저것 다 설치해 보았다. 한글 Windows Mobile을 보고 싶다면 로컬라이즈 된 에뮬레이터를 다운로드 받아서 해 볼 수도 있다.
에뮬레이터도 6.1과 6.1.4 가 있지만, 이는 스스로 잘 읽어 보고 설치하도록 하자. 자신의 환경에 맞는것을 알아서 설치하면 된다. 왠만하면 설치하지 않아도 별 문제는 되지 않을것이다.
4. 이제 드디어 테스트 프로그램을 짜 보도록 하자.
Visual Studio 2005를 설치하고,
파일 -> 새로 만들기 -> 프로젝트 -> Vlsual C# -> 스마트장치 -> Windows Mobile 6 Professional을 선택하면 아래와 같은 화면을 볼 수 있다.
Device Applicaion을 선택하고 "확인"버튼을 눌러서 새로운 프로젝트를 만들고, 버튼이 눌려지면 프로그램을 종료하는 간단한 어플리케이션을 만들어 보도록 하자. 메뉴부분을 더블클릭해서 Exit라는 메뉴를 입력하고, 만들어진 메뉴를 더블클릭하여 소스로 이동할 수 있다. 아래의 스크린캐스를 보면 뭔 말인지 알아 먹을꺼다.
참고로 아래의 스크린캐스트처럼 에뮬레이터를 최초로 띄울때에는 뜨는 시간이 꽤나 걸린다. ( 30-40초 정도? ) 그 이후에는 에뮬레이터를 계속 띄우둔 상태로 할 수 있으므로, 시간이 걸려도 좀 기다려서 테스트 해 보도록 하자.
안드로이드는 각종 GUI 컴포넌트를 제공해 준다.
물론 다른 언어에서도 이러한 GUI 컴포넌트를 모두 제공해 준다. 자바에 비유하자면 JLabel, JButton, JTextArea등이 제공된다는것이다. 그렇다면 안드로이드에서는 이러한 GUI 컴포넌트들의 설정을 어떻게 할까? 그에 대해서 알아 보도록 하자.
기존 프로그래밍 언어(Java-Swing)에서는 어떻게 GUI 컴포넌트의 속성을 설정할까?
JLabel label = new JLabel();
label.setText("Hello");
label.setForeground(Color.red);
코드는 그냥 딱 읽으면 알 수 있도록 간단하다. 위의 소스에서는 label을 하나 만들고, 그 label이 가지게 될 문자열을 설정해주거나, 혹은 그 문자열의 색깔을 지정해 주게 된다. ( 물론 Java Beans를 이용해서 하는 방법도 있기는 하지만, 여기서는 생략하도록 한다. )
그렇다면 안드로이드에서는 어떻게 GUI 컴포넌트의 모양과 색깔을 바꿀 수 있을까?
안드로이드에서는 GUI 컴포넌트에 접근해서 각종 속성을 바꾸는 방법을 두가지 제공해 준다.
1. GUI의 정보가 들어 있는 XML파일을 수정해서 컴포넌트의 모양을 바꾸자. : XML의 attribute를 이용하는 방법
2. Java 소스 코드를 이용해서 GUI의 모양을 바꾸자. : java source에서 method를 호출하는 방법
그렇다면 각기 어떻게 모양을 바꿀 수 있는지 확인해 보도록 하자.
1. GUI정보가 들어 있는 XML파일을 수정해서 컴포넌트의 모양을 바꾸는 방법 근데 그 GUI 정보가 들어 있는 XML파일은 어디??
안드로이드에서는 각종 GUI 정보가 들어 있는 파일들이 있다. 위치는 프로젝트의 res/layout 폴더이다. 그중에서 이클립스를 이용해서 안드로이드 어플리케이션 프로젝트를 만들면 기본적으로 들어 있는 res/layout/main.xml 파일을 살펴 보자.
이 main.xml 파일은 안드로이드의 어플리케이션이 화면에 뜰때, 어떠한 모양(Layout)으로 뜰것인지를 정의해둔 XML 파일이다. 다른것은 다 모르니깐, 우리가 여기에서 관심을 가질만한 TextView Tag만을 확인해 보면 각종 attribute를 가지고 있는것을 볼 수 있다. ( android:layout_width, android:layout_height 등 ). 바로 저 attribute를 설정함에 따라서 각종 GUI의 형태를 변경 시킬 수 있게 되는것이다.
보다시피 Attribute name과 Related methods로 나눠지는것을 볼 수 있다. 여기서 Attribute name은 바로 XML 파일에서 수정할 때 사용되어지는 이름이다.
android:autoLink 속성은 이미지의 좌측에 설명되어 있듯이, url이나 email 주소 같은것들에다가 자동으로 클릭 가능하게 링크를 걸어 줄것이냐를 결정하는 속성이다. android:textColor 속성은 글자의 색깔을 변경해주는 attribute이다. 이 두개의 attribute를 사용법을 알기 위해서는 해당 attribute link를 클릭하여 API 문서를 확인해 보도록 하자.
Controls whether links such as urls and email addresses are automatically found and converted to clickable links. The default value is "none", disabling this feature.
Must be one or more (separated by '|') of the following constant values.
Constant
Value
Description
none
0x00
Match no patterns (default)
web
0x01
Match Web URLs
email
0x02
Match email addresses
phone
0x04
Match phone numbers
map
0x08
Match map addresses
all
0x0f
Match all patterns (equivalent to web|email|phone|map)
This corresponds to the global attribute resource symbol autoLink.
Creates or retrieves a ColorStateList that always returns a single color.
위와 같이 각 메소드의 사용법을 알았으니, 이제 Java소스를 수정하여 autoLink와 textColor이 변경되도록 만들어 보자.
이때 Layout을 설정해 놓은 res/layout/main.xml 파일을 살짝 수정해 준다. 아래의 소스를 보다시피 id를 추가해 주는것이다.
지금 우리는 Java 소스코드에서 TextView의 모양을 바꾸려고 한다. TextView의 모양을 바꾸려면 main.xml 파일에서 어떤 GUI 컴포넌트가 수정하고자하는 TextView인지를 알 수 있어야 한다. 이를 위해서 TextView에 id를 하나 설정해 주어, 이를 구분할 수 있게 해 준다. 설정해둔 id를 이용해서 Java 소스에서 이를 불러다 쓸 수 있다. ( 추가적으로 setText메소드도 테스트하기 위해서, android:text attribute도 제거해 두었다. )
위와 같이 파일을 고치면 R.java 파일이 자동으로 업데이트 되면서 R.id.testTextView로 접근할 수 있도록 변경된다.
public final class R {
// 생략...
public static final class id {
public static final int testTextView=0x7f050000;
}
// 생략...
}
이제 R.id.testTextView라는 것으로 이전에 설정해 두었던 TextView에 접근할 수 있게 되었다. 이때 접근하는 방법은 findViewById(int)라는 메소드를 사용하는데, 자세한 설명은 집어 치우고 그냥 바로 아래의 소스코드를 확인해 보자.
package com.ggaman.android.sample;
import android.app.Activity;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.text.util.Linkify;
import android.widget.TextView;
public class Test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// main.xml에서 testTextView라고 id를 설정해둔 TextView를 가지고 온다.
TextView tv = (TextView)findViewById(R.id.testTextView);
// autoLink에 대한 설정을 해 준다.
tv.setAutoLinkMask(Linkify.WEB_URLS);
// TextView의 textColor을 설정해 준다. ( ARGB 값을 준다. )
tv.setTextColor(ColorStateList.valueOf(0xFFFF0000));
// TextView에 나타날 글자도 설정해 준다.
tv.setText("Hello email : master@gcodebank.com visit : http://gcodebank.com");
}
}
위와 같이 TextView를 얻어오고, autoLink와 textColor, 그리고 text 까지 설정을 마쳤다. 위의 코드를 수행한 결과는 아래와 같이 수행됨을 볼 수 있다. ( 첫번째 attribute와 결과가 다른데, 이는 autoLink를 email에는 주지 않았기 때문에 다른것이다. - java 소스를 잘 확인해 보기 바란다. )
이로써 TextView 같은 GUI 컴포넌트의 정보를 바꿀 수 있는 두 가지 방법을 모두 알아 보았다.
일반적으로 프로그래밍에서 리소스라고 하면, OS나 VM의 자원을 나타내기도 하지만,
각종 이미지, 음악파일, 동영상파일, 문자열등도 리소스라고 부른다.
후자의 리소스 관리를 위해서 Android에서는 R.java라는 특이한 파일을 만들어 두어,
리소스들을 개발하는 프로그램에서 쉽게 읽어 와서 사용할 수 있도록 제공하고 있다.
R.java 파일을 대략 아래와 같이 생겨 먹었다.
R.java
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.ggaman.android.sample;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
public static final int rock=0x7f020001;
public static final int test=0x7f020002;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
위와 같이 생겨 먹었으므로, 개발자는 R.drawable.icon 이라고 하면, 아이콘을 가지고와서 쓸 수 있다.
그렇다면 이 파일을 수정해 보도록 하자.
우선 R.java파일을 더블클릭해서 에디터를 띄운다. 응? 근데 왜 이래??
R.java파일은 왜 수정이 안될까?
이클립스에서 R.java파일을 더블클릭하면 자바 에디터가 뜬다. 하지만 이 에디터는 편집이 되지 않는다. 이 파일을 특별한 의미(리소스들의 정보를 관리)를 가지는 파일로써 함부로 수정할 수 없게 만들어 두었다. 위의 소스에도 잘 드러나 있지만, "AUTO-GENERATED FILE. DO NOT MODIFY." 라고 명확하게 적혀 있다.
그렇다면 새로운 리소스를 추가 할때는 어떻게 하면 될까?
무진장 간단하다. 필요한 jpg 파일을 이클립스의 res 폴더 하위에 drawable 하위의 폴더로 끌어다 두면 된다.
탐색기에서 파일을 복사해서 넣어 두어도, refresh 한번 해 주면 알아서 R.java 파일이 업데이트 되는것을 볼 수 있다.
To develop Android applications using the code and tools in the Android SDK, you need a suitable development computer and development environment, as described below.
Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows
Not compatible with Gnu Compiler for Java (gcj)
Note: If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development.
Installing Google Android SDK 1.0 On Ubuntu 8.04 Desktop
Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>
Last edited 09/24/2008
This guide explains how you can install the Google Android SDK 1.0 on an Ubuntu 8.04 desktop. With this stable release of the Android SDK, you can now develop applications for Android smartphones (like T-Mobile's G1) and offer them on the Android Market.
I do not issue any guarantee that this will work for you!