월별 글 목록: 2011년 10월월

[안드로이드] Java Class 다운로드 받아서 설정하기

 다운 받는 주소가 바뀐 것 같습니다. 공식 주소는 http://source.android.com/source/downloading.html 이곳인 것 같은데, 바로 다운로드 받으려면 https://github.com/android/platform_frameworks_base 이곳을 사용하면 될 것 같습니다.

—— 이전 글

 안드로이드 Java Class 를 받아서 설정하게 되면 이클립스에서 안드로이드 소스를 볼 수 있기 때문에 여러 가지로 더 좋게 개발을 할 수 있습니다.

 위 파일을 다운로드 받아서 압축을 풀고 2개의 폴더를 사용합니다.

– base/core/java/android
– base/core/java/com

 위 2개의 폴더를 안드로이드 SDK 설치 폴더의 platforms 폴더 하위에 본인이 사용하는 sdk 버전 밑에 sources 라는 폴더를 생성하여 그 안에다가 복사합니다. 그리고 이클립스에서 Class Name 에 F3 키를 누르게 되면 해당 소스가 있다면 볼 수 있게 됩니다. 링크가 잘 안되면 직접 소스 폴더를 열어서 해당 파일이 있으면 직접 열어서 보면 됩니다.

관련 페이지 : http://cafe.naver.com/ccjmaster/166

[안드로이드] PendingIntent 에서 putExtra 사용시 마지막 값 전달 문제점

 안드로이드에서 위젯 등을 개발할 때 PendingIntent 를 사용하게 됩니다. PendingIntent 를 사용하는데 Intent 에 putExtra 에 값을 넣고 setOnClickPendingIntent 를 했는데 마지막에 설정한 값으로만 전달이 되는 경우가 발생하는 경우가 발생할 수 있습니다. 만약 값이 없거나 과거에 설정한 값이 전달되는 경우는 아래 Flag를 설정하면 해결 될 수 있다고 합니다.

 PendingIntent.FLAG_UPDATE_CURRENT

 그렇지만 마지막 값으로만 전달되는 문제는 이렇게 해결이 되지 않았습니다. 결론은 putExtra 를 사용하지 않고 setData 를 사용하는 것입니다. 예를 들면 아래 코드와 같습니다.

 수정 전 : intent.putExtra(“Keyword”, keyword);
 수정 후 : intent.setData(Uri.parse(keyword));

 받는 쪽에서는 getData() 함수나 getDataString() 함수로 받아서 처리하면 됩니다.

 그리고 다음 페이지를 참고하셔서 더 정보를 얻으시길 바랍니다. http://angmang.tistory.com/514 

[안드로이드] 위젯에서의 가로모드 레이아웃 지원 여부 정하기

 안드로이드의 위젯을 개발하는데 있어서 세로모드만 지원하면 될 지, 가로모드를 따로 만들어야 할지에 대해서 고민하는분들이 계실 것 같아서 이 글을 작성합니다.

 디바이스나 설치되어 있는 런처에 따라서 다를 수도 있지만
보통은 홈 화면에서 가로모드를 지원한다고 가정하면 가로모드에 대해서 따로 레이아웃을 만들어야 할지 고민이 될 것입니다. 세로모드만 만든 상태에서 위젯을 설치하고 가로모드로 테스트를 해봤을 때 자동으로 레이아웃이 잘 변환되고 나타나면
괜찮은데, 실제 가로모드를 해보면
세로가 좁아지고 가로가 넓어지기 때문에
생각한 것보다 제대로 안 나오는 경우도 많이 보일 것입니다. 그래서
안드로이드 마켓 위젯 등을 보면 가로모드를 따로 지원하는 경우도 많이 보입니다.


 여러 가지로
테스트 한 결과 안드로이드 공식 개발가이드
있는 최소 높이 사이즈에 맞춰 높이를 정하면 가로모드 레이아웃을 따로 만들지 않아도 문제가 발생하지 않았습니다.
그 공식은 (number of
cells * 74) – 2
입니다. 예를
들어 세로를 바둑판 2개 사이즈 높이로 만든다고 하면 높이는 최대
146dp
를 넘으면 안 되는 것입니다. 146dp 로 만들게 되면 제가 봤던 모든 디바이스에서는
세로모드에서 높이가 작아 보였지만 가로 모드에서 깨지지 않고 정상적으로 보이게 됩니다. 만약 이 높이를
넘어간다면 가로모드 레이아웃을 따로 만들어야 좋을 것입니다.