최종 보고서: 발표 자료: 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/..
프로그램 특성상 ListView의 사용이 많아서 여기에 정리한다. ListView를 사용하기 위해서는 다음의 재료가 필요하다. 내용이 들어있는 Item의 Array, ListView 객체, 이 둘을 연결해 줄 Adapter, item의 내용이 들어갈 item layout(xml파일) Item은 리스트의 각 줄마다 들어갈 내용으로, 이 Item을 모아놓은 Array가 필요하다.Array는 배열일 수도 있고, List, ArrayList일 수도 있다.(만드는 사람 마음) 내용의 추가삭제가 용의하게 ArrayList를 이용하는 것이 편하다. Adapter는 ArrayAdapter을 extend해서 만든다. 생성자 및 몇 가지 메소드를 override하면 되는데 getCount(), getItem(), getV..
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 인터페이스..
날씨 업데이트 과정 날씨정보는 Google및 기상청의 API를 사용해서 얻을 수 있는데, Google의 API는 현재위치좌표(위도,경도)를 사용해서도 날씨를 얻을 수 있다. 날씨 업데이트 과정 업데이트 요청 –> GPS로 현재 위치좌표 확인 –> google 날씨 api에 요청 –> stream reader로 xml파싱 -> 현재 날씨 부분만 추출 –> 날씨 그림 표시 날씨 업데이트는 상황에 따라 시간이 걸릴 수도 있기 때문에 백그라운드에서 작업하도록 한다. 보통 handler나 thread를 사용하는데, 이 경우 UI를 업데이트 하기 어렵고, 또 UI 업데이트가 제때 되지 않았다. 대신, 안드로이드에서 제공하는 AsyncTask를 사용한다. 1 private class UpdateWeatherJob e..
C2DM Push를 사용하면 서비스를 항상 돌리지 않아도 서버의 메시지를 받을 수 있다.(물론 결국 휴대폰에서 C2DM서비스가 실행중이여야 하지만, 특별한 경우가 아니면 지금도 돌고 있다.) 준비물 : 구글 계정, 3rd party 서버 메시지 전달 과정은 다음과 같다. 1. 단말기에서 3rd party 서버로 메시지 전송을 요청 2. 3rd party 서버에서 C2DM서버로 Push 전송 요청 3. C2DM 서버에서 단말기로 Push 메시지 전송 4. 받은 Push메시지를 단말기에서 처리 3번은 구글 서버에서 알아서 해주므로 1, 2, 4번을 직접 처리해야 한다. 1번은 직접 구현하면 되고, 2번과 4번은 정해진 프로세스에 따라서 구현하면 된다. 간단하게 C2DM메시지를 서버는 메시지 전송만, 어플은 ..
- Total
- Today
- Yesterday
- dex2jar
- 레터스 투 줄리엣
- 5초 룰
- 2월 29일
- 잠금화면
- setfsb
- 아일랜드
- 안드로이드
- 일상·생각
- lockscreen
- U123
- 요리·레시피
- apktool
- 하이픈
- NEXUS S
- GutsyGibbon
- Android
- 전화번호
- Leap Year
- 더블린
- Ubuntu7.10
- 프로포즈 데이
- Gutsy
- 락스크린
- STOP_APP_SWITCH
- 5 sec rule
- ubuntu
- IT·컴퓨터
- 문학·책
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |