직접 개발한 프로그램 - 친구 위치 찾기

Developed Program/Android 2010. 10. 23. 16:40


20010 년도 5월쯤 프로젝트
개발기간 - 1~3 주..?
사용 플랫폼 - Android OS 1.5
사용 단말기 - Andro One (French Edition)



Android를 처음 접한건 연구실 처음 들어왔을 때니까,
2년쯤 전인데 그 긴 시간동안 무슨 목적의식을 갖고 만든 프로그램은 없었네요.
(Android 쬐끔 만지다가 와인라벨과 메뉴판 인식에 전념을 다하게 된 것도 그 이유 중 하나라고 생각합니다만)
먼저 안드로이드 공부를 다 끝내고 프로그램 기획을 하자 !
그정도 생각이었을거라 봅니다 .ㅎ

결국 뭔가 프로그램 다운건 이것 뿐이네요 .

프로그램은 .. 간단합니다.
요새 논란이 되고 있는 "오빠믿지 ? " 어플과 목적이 같습니다.
교수님이 처음 제안서를 받고 이런 위치 추적 문제가 되지 않겠냐고 우려하시던 모습이 떠오르네요..



이 어플은 상기 그림을 보시면 아시겠지만 Java로 구현된 서버 프로그램이 제 컴퓨터에 돌고 있어야 구동가능합니다.
고로 마켓에 올린다거나하는 번거로운 일은.. 하지 않았습니다.

프로그램의 구조는 다음과 같습니다.


서버, 앱 모두 스레드가 다중이라는 점에서 유발되는 Handling,
서버와의 통신을 담당하는 액티비티를 하나만 만들었기 때문에
( 한번의 Connection의 Close , Open을 괜히 복수로 하고 싶지 않았습니다. 연결이 불안정 할테니까요.. )
각 Activity 간의 통신으로 여러 정보를 주고 받아야 되는 점에서 유발되는 PutExtra, BR 등이 조금 번거롭게 만들긴 했죠.

내 위치는 햄토리로, 친구 위치는 햄토리 여자친구로 나왔는데,
역시 제가 마켓에 출시할 생각이 전혀없었기 때문에 문제 없었습니다.

주요기능은

1. 내 주소록 DB에 Access, 친구목록을 가져옴
2. 친구와 대화 가능
3. 친구와 통화 가능
4. 친구와 문자 가능
5. 귀여운 햄토리로 내 위치 확인
6. 귀여운 햄토리 여자친구로 친구 위치 확인


다음은 구동 이미지입니다.


핸드폰을 들고있는 사람(햄토리)는 움직이지 않고 햄토리 여자친구의 이동을 확인 할 수 있습니다.


후에 동영상 첨부 합니다...

'Developed Program > Android' 카테고리의 다른 글

이거슨 심심풀이 프로젝트 ? - Geng's Minihome  (2) 2010.11.12

Android 입문자를 위한 Tutorial - 2. Hello Android!

Mobile Programming/Android 2010. 9. 28. 15:54

간만의 포스팅입니다 .ㅋ
사실 안드로이드 강좌 포스팅은 다른 블로그에서도 워낙 잘 되있고 해서 별로 안 땡겼는데 , 연구실 후배들의 안드로이드 학습에 도움이 될까해서 포스팅 하도록 하겠습니다.
뭐 같은 의미로다가 C언어를 모르는 예비역 오빠를 위해서도 C언어에 대해 포스팅 할지도 모르겠습니다 ㅋ 
 
현재 클래스의 진도는 출력 쪽 입니다만 , 뭐 게으르다보니 오늘은 첫 예제에 대해.

귀찮으므로 기냥 수업시간에 했던 예제와 ppt를 붙이고 싶지만 아무리 2차적 저작물이라해도 교재를 따라 수업을 했기 때문에,혹시 저작권에 저촉 될까 싶어서 모든 예제, 새로 만들겠습니다.

교재의 모든 내용을 블로그에서 다 풀어쓰는건 무리고, 핵심 기능 몇 가지만 설명하겠습니다.

Eclips, 저번 시간에 다 깔으셨죠 ?
File > New > Project > Android > Android Project 로 먼저 액티비티를 생성해주시기 바랍니다.
ProjectName , Target은 뭐 2.2 ? ㅋ Application Name은 역시 아무거나 원하시는대로 정해주시고.
PackageName은 dot이 두개 들어가는게 정석입니다. 저 같은경우는 geng.mm.jnu (전남대 멀티미디어연구실 소속 갱) 라고 쓰는게 버릇이구요 ㅋㅋ Min SDK는 상콤하게 무시하고 Finish 눌러줍니다.

그럼 처음 화면이 이렇게 뜹니다.




이제 앞으로 친숙해질 코드들입니다. ㅋㅋ

Java에 익숙하다면 이 코드에 대해 뭐 긴 설명 필요 없을거 같은데요 .ㅋ
혹시 C만 아실 분들을 위해 간단하게 설명하죠.

package는 방금 package name 에서 적어주었던 그대로 되어있습니다.
import는 include와 같이 내장함수들을 이용하기 위해 사용되죠.
이 import와 반대되는 개념으로 내가 짠 소스들을 바깥으로 꺼내기 위해 package가 사용됩니다.
다음에 다른 소스에서 import로 이용할 수도 있겠군요.

다음으로 6번 라인. public static void main(String arg) 가 자바에서 메인 역할을 했었죠. C로 말하자면 int main.
Android에서는 public class 클래스명 extends Activity 가 메인 클래스 역할을 합니다.
extends Activity라 했으니 Activity Class의 함수들을 사용할 수 있겠군요 ?
(이 말이 이해 안가시는 분들은 C++의 클래스 - 상속을 공부하시기 바랍니다)


그 클래스 안에는 onCreate가 있네요. ( 9번 ) 포커스를 맞추고 F2를 눌러주면 설명이 뜹니다. 뭐라 뜨나 볼까요.


갱 패키지 아래에 있는 OnCreate .
Called when the ac...
액티비티가 처음 생성될때 호출이 된다고 합니다.
Windows Mobile이나 Window32 API 의 WM_CREATE 메시지 정도 되겠네요.

다시 소스로 돌아가 9번 라인을 봅시다. 그러고 보니 화면 좌측에 이상한 초록색 화살표가 있네요.

이 화살표가 바로 Super Class의 함수를 Override했음을 나타냅니다. ( 역시 클래스 상속을 보세요. )

10번 라인을 보니 오버라이드는 했지만 기본적인 초기화등의 처리는 SuperClass의 처리를 빌려다 쓰고 있네요.


그리고 11번라인, 컨텐트 뷰를 설정합니다.

안드로이드는 액티비티(하나의 소스라고 생각하세요) 에서 위젯들을 포함하고 있는 레이아웃을 불러다가 화면을 구성하는 형태를 취하고 있습니다. 11번 라인에서 수행하는 작업이 res > layout 에 정의되어 R파일에 표기된 레이아웃을 불러오는 것입니다.

res > layout> main.xml을 더블클릭하여 오픈하시고 하단 탭에서 xml을 클릭해 봅시다.


LinearLayout 이라는 화면 구성방법을 사용하고, 배치방법은 수직으로 차례차례두는 Vertical 을 채택, 그리고 layout의 폭과 높이는 액티비티 전체군요.

LinearLayout 을 따르는 위젯으로 TextView 또한 정의되있습니다.
width 는 parent전체 , 즉 LinearLayout의 크기, 액티비티 전체를 차지하고
height 는 wrap_content, 텍스트 뷰 안의 내용이 잘리지 않을정도의 최소한의 크기를 차지합니다.
10번라인의 @string/hello는 values > string에 저장된 hello 변수의 내용입니다.


hello는 Hello world, blog!라고 저장이 되어 있네요. ( 액티비티를 처음 만들때 정한 이름에 따라 hello 변수의 값은 살짝 다릅니다)


즉 , hello world, blog라는 문자열이 textview에 표시가 될거고, 그 텍스트뷰는 blog activity의 setcontentview에서 지정한 레이아웃,main.xml안에 위치하니 최종적으로 blog activity가 하는일은 hello world,blog를 출력하는 일이겠군요 .

실행해보기 전에, window > Android SDK and AVD manager에서  Virtual Device를 만들어두시기 바랍니다.


실행해 봅시다.

RunAs > android Application을 선택하면 만들어둔 Virtual Devices가 실행됩니다.
부팅하는데 조금 걸리니 느긋한 마음으로 기다릴까요.


잠금을 푸시면 (자물쇠모양 화살표 오른쪽으로 드래그) 실행시킨 액티비티가 화면에 표시가 됩니다.




첫 예제 설명이 길어졌습니다. 이제부터 꼭 필요한 경우에만 (최소한 C나 Java 설명은 때려치우겠습니다) Line By Line으로 설명을 하겠습니다.