최종 보고서: 발표 자료: Client: Server:
기존 코드에서 SQL조작 관련 코드를 Activity내부에서 빼 내에 따로 클래스를 생성하여 관리하도록 변경하였다. 이로써 각 클래스의 역할이 좀 더 명확해지게 되었다. 사용하는 SQL Table은 Article, Photo, Message, C2DM과 같은 데이터를 관리한다. 각각 공통으로 가지는 메소드가 있기 때문에 이를 명확하게 하기 위해 다음과 같은 Base클래스를 작성하였다. 클라이언트 public abstract class SQLiteTable { protected Context mContext; protected String QTE = "'"; public SQLiteTable(Context context){ mContext = context; } /** SQLite DB에 추가 */ pub..
7,8월 간 중간보고서
오늘은 새로운 기능 추가보다는 기존의 코드를 리팩토링 하였다. 기존의 코드가 Java의 탈을 쓴 C 스타일로 작성되어 있어서 중복되는 부분이 너무 많고, 보기에도 좋지 않았다. 특히 MySQL에 접근하는 부분들이 그러한데, 각 테이블마다 관리하는 클래스(ArticleTable, C2DMTable, PhotoTable)를 두고 이들이 관리하도록 바꾸었다. 그리고 LIMIT와 WHERE에서의 인덱스를 적절히 활용하여, 전체 테이블을 불러와서 작업하는 것이 아니라, 최대한 작게 불러온다. 나중에 튜플 수 가 무시무시하게 늘어나는 때를 대비해서이다. 클라이언트는 Preference Activity에서 작업 중인데, 다이얼로그 새로 띄워서 뭐 하려고 하면 작업이 상당히 어렵다. 새로 Activity를 만들어서 작..
이전에 다른 Activity로 메시지를 전송하기 위해 Intent를 사용하였는데, 새로운 Activity를 시작할 때 Parameter로 주는 것이다. 그러면 이미 실행되고 있는 액티비티에 메시지를 전송하려면 어떻게 해야 할까? C2DM BroadCast Activity에서 C2DM관련 메시지를 받아 처리한다. 이때 TabChat Activity로 메시지를 보내려면 Handler를 사용하면 된다. 메시지를 받고자 하는 쪽에서 Handler를 작성한다. static Handler chatHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch(msg.what){ case 1: ChatItem item = (ChatI..
서버 클라이언트 통신 서버-클라이언트 통신시 소켓을 사용하게 되는데, Input/OutputStream으로는 int나 byte데이터만 전달할 수 있다. 이때 클래스등의 데이터를 전달하려면 ObjectInput/OutputStream을 사용하면 간단하게 데이터를 주고 받을 수 있다. 이전에 사용했던 안드로이드의 Parcel과 비슷하다(애초에 이쪽이 자바 쪽 기능을 가져온거겠지...) 먼저, 전달할 클래스를 직렬화 해야 하는데 Serializable 혹은 Externalizable을 implement 한다. 둘 다 같은 기능을 하고, Externalizable는 데이터를 어떻게 전달할 지 명시적으로 지정하고 싶을 때 사용한다. 이때엔 read/writeExternal 메소드를 오버라이드 해서 직접 read/..
Activity간 데이터를 전송하려면 intent를 생성해서 putExtra()메소드로 데이터를 넣어서 startActivity()메소드를 실행하면 되는데. primitive한 자료형만 가능하고 클래스와 같은 데이터는 전송할 수 없다. 따라서 클래스의 내용물을 하나하나 분해해서 putExtra()해야 하지만, Parcelable인터페이스를 사용하면 깔끔하게 전달할 수 있다. http://arsviator.blogspot.com/2010/10/parcelable%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-%EC%A0%84%EB%8B%AC-object.html 먼저 전달하고자 하는 클래스에 Parcelable 인터페이스..
프로그램 특성상 ListView의 사용이 많아서 여기에 정리한다. ListView를 사용하기 위해서는 다음의 재료가 필요하다. 내용이 들어있는 Item의 Array, ListView 객체, 이 둘을 연결해 줄 Adapter, item의 내용이 들어갈 item layout(xml파일) Item은 리스트의 각 줄마다 들어갈 내용으로, 이 Item을 모아놓은 Array가 필요하다.Array는 배열일 수도 있고, List, ArrayList일 수도 있다.(만드는 사람 마음) 내용의 추가삭제가 용의하게 ArrayList를 이용하는 것이 편하다. Adapter는 ArrayAdapter을 extend해서 만든다. 생성자 및 몇 가지 메소드를 override하면 되는데 getCount(), getItem(), getV..
날씨 업데이트 과정 날씨정보는 Google및 기상청의 API를 사용해서 얻을 수 있는데, Google의 API는 현재위치좌표(위도,경도)를 사용해서도 날씨를 얻을 수 있다. 날씨 업데이트 과정 업데이트 요청 –> GPS로 현재 위치좌표 확인 –> google 날씨 api에 요청 –> stream reader로 xml파싱 -> 현재 날씨 부분만 추출 –> 날씨 그림 표시 날씨 업데이트는 상황에 따라 시간이 걸릴 수도 있기 때문에 백그라운드에서 작업하도록 한다. 보통 handler나 thread를 사용하는데, 이 경우 UI를 업데이트 하기 어렵고, 또 UI 업데이트가 제때 되지 않았다. 대신, 안드로이드에서 제공하는 AsyncTask를 사용한다. 1 private class UpdateWeatherJob e..
안드로이드 실행파일은 APK파일로, 컴파일 한 결과물을 ZIP으로 묶은 것이다. 파일 내부를 살펴보면 기본적으로 다음과 같은 구조로 되어 있다. o META-INF o res - AndroidManifest.xml - classes.dex - resources.arsc META-INF : 개발자의 키로 APK파일을 사인한 결과값들이 저장되어 있다. 파일마다 SHA1값이 저장되어 있기 때문에 파일 변조시 기기에 설치가 되지 않는다. res : 소스의 그림파일들과 바이너리화된 xml파일들이 저장되어 있다. AndroidManifest.xml : 바이너리화되어 있음 classes.dex : 컴파일된 소스 resources.arsc : 컴파일된 리소스 관련 파일 이 상태에선 파일을 수정할 수 없지만, apkto..
- Total
- Today
- Yesterday
- 5 sec rule
- ubuntu
- 2월 29일
- 요리·레시피
- Ubuntu7.10
- 문학·책
- lockscreen
- 전화번호
- 락스크린
- apktool
- 잠금화면
- 아일랜드
- Gutsy
- IT·컴퓨터
- Leap Year
- NEXUS S
- 안드로이드
- U123
- 5초 룰
- 프로포즈 데이
- 더블린
- 일상·생각
- setfsb
- STOP_APP_SWITCH
- 레터스 투 줄리엣
- GutsyGibbon
- dex2jar
- Android
- 하이픈
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |