레이블이 안드로이드인 게시물을 표시합니다. 모든 게시물 표시
레이블이 안드로이드인 게시물을 표시합니다. 모든 게시물 표시

2013. 7. 22.

[Android]TextView - CompoundDrawable을 이용한 버튼만들기


이렇게 생긴 버튼을 만들고 싶을때

안드로이드에서 주로 TextView를 사용한다.

위의 예에서 아이콘이 drawable폴더에 icon.png 파일로 저장되어 있다면

^TextView
     android:id="@+id/btn_tag"
     android:layout_width = "wrap_content"
     android:layout_height = "fill_parent"
     android:drawableLeft = "@drawable/icon"
     android:text="태그"
     android:drawablePadding = "4dp"
     android:gravity = "center_vertical"
     /^

^를 <>로 바꾸세요

정도로 만들 수 있다.

하지만 실제 만들어보면


위 처럼 글자가 아래로 1~2px 내려간다.


왜~ 중앙정렬을 해야 한단 말이다!!!!
center_vertical 인데... 왜 ㅠㅠ


1) 이미지의 윗부분을 1~2px 키워볼까....?
2) ImageView와 TextView를 분리하고 부모에 Click 속성을 줘야하나...?


해답은 의외로 간단한 곳에 있었다..


폰트에는 기본적으로 padding이 만든사람 마음대로 들어가 있고,
이를 인지한 구글에서 paddind을 제외할 수 있도록 해 둬서
옵션만 주면 정 중앙에 맞게 그려진다...
(삽질 한시간... 에이 바보야...)


android:includeFontPadding="false"

끝!

2012. 3. 21.

[ICS / Honeycomb] 여러개의 AsyncTask (병렬) 실행

안드로이드 버전 허니컴 / ICS가 AsyncTask의 동작이 다릅니다.

허니컴에서는 AsyncTask를 생성해서 .execute()만 호출해주면
하나 이상의 AsyncTask가 사전에 동작하고 있더라도 병렬 처리가 되지만,

ICS에서는 Serial 하게 동작해서 이전의 AsyncTask가 끝나기를 기다립니다.
따라서 이전의 AsyncTask가 동작하고 있다면, 새로 동작시키고자 한 AsyncTask가 영원히 시작되지 않을 수도 있습니다.

해결방법은 아래처럼 시작을 호출하면 병렬처리가 됩니다.^^

.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

참고하시길...

2011. 9. 17.

갤럭시 네오 기본 내장된 앱 삭제하기

루팅은 했는데, 이제 뭘 해야하나?

이거 지우다 벽돌되는거 아냐? 어쩌지? 불안하신 분들이 많으실 것 같아서
루팅의 후속편으로 기본 내장된 앱(일반적으로 시스템 App 이라고 불러요) 삭제하기를 정리해서 올려 드립니다^^

[준비물]
- 루트 익스프롤러

1. 루트 익스프롤러 사용법
   - 이건 위 사이트에 너무 잘 나와있어서 위 사이트를 참고해 주시고요
      (저랑 아무 관계 없으신 분의 블로그이나, 아주 정성껏 포스팅 및 설명을 해 놓으셔서
       전 시간 절약하고, 웅륭선비님은 방문객이 늘어나니 서로 윈윈이죠^^)

2. 시스템 앱의 종류
    - /system/app 에 들어가시면 220개가 넘는 파일이 있습니다.
      이거 다 뭥미-_-;; 지워도 되는건지 안되는건지 내가 어케 아러 ㅜㅜ
      그래서 제가 아는 모든 파일에 대해 아래에서 설명해 드릴께요

      일반적으로 시스템앱들은 용량을 줄이기 위하여 .apk와 .odex로 나누어져 있는 경우가 많아서 같은 이름을 가지면서 확장자를 .apk .odex 로 가지는 파일은 하나의 프로그램으로 생각하시면 됩니다.

저는 아래의 설명에서 편의상 확장자를 제외하고 설명하겠습니다.
해당 프로그램이 필요 없으시면 두 파일을 모두 이동(삭제)하시면 됩니다.

노란색으로 표시한 부분은 삭제하시면 대체할 프로그램을 꼭 넣어두세요
(이름은 달라도 상관 없습니다.)
그렇지 않으면 공장초기화 하고나면 키보드가 안보이거나 무한으로 로고만 보일 수있어요
음악 재생을 못할수도ㅎㅎ




** 추가 2011.09.19
 시스템 앱을 삭제한 이후에 공장 초기화를 하실 분들은 아래 리스트 중 노란색으로 표시된 내용을 삭제하지
 마세요. 
TouchWiz30Launcher 을 삭제하면 무한 리부팅이 발생하며,
AxT9IME 를 삭제하면 재부팅 후 키보드가 나타나지 않아 입력이 불가능 합니다.

(대체할 런쳐 어플과 키보드 어플을 system/app 에 복사해 둔다면 괜찮습니다.)


** 추가 2011.09.25
아래 앱 중에 Setupwizard 와 관련이 있는 앱이 있는것 같네요.. 해당 부분 찾을 때 까지 공장 초기화는 하지 말아주세요^^
처음에 GPS 동의 이후에 화면을 넘어 갈 수 가 없습니다.


제가 삭제한 파일
파일명 앱이름 설명
AnycallServiceCenter 애니콜서비스센터 서비스센터 목록 및 전화번호 예약방법 설명
AppInstaller SD카드에 저장된 APK를 설치할 수 있게함
Apple
BadgeProvider
BluetoothTestMode 공장 출고전 테스트용 프로그램
이건 왜 넣은거니 -_-;;
ChatInbox 통합 메시지함용
Choco
CSC
Email 이메일 네이버메일, 다음메일, 아웃룩을 연결할때 사용하는 메일 클라이언트
FactoryTest 공장 출고전 테스트용 프로그램
FlashLitePlugin 플래쉬Lite 지원용 플러그인.
진저부터 플래시를 지원하므로 필요 없음
GoogleQuickSearchBox 퀵서치 위젯을 포함한 검색기
Kies 삼성에서 만든 동기화 프로그램
전화번호부, 일정, 사진등의 백업제공.
- 구글계정 등록하면 다 되는걸.. 구지 필요한가?
lcdtest 공장 출고전 테스트용 프로그램
LGUARMService OZStore에서 다운로드받은 앱의 인증에 사용
LGUDownLoader OZStore에서 구입시 다운로드 해 주는 앱
LGUInstaller OZStore에서 구입한 앱을 설치해 주는 앱
LGUOZLite OZ Lite OZLite 사이트 바로가기
LGUOZStore OZ Store OZStore 접속 앱
LGUplusWeb LG Uplus Uplus 웹사이트 바로가기
LiveWallpapers 메뉴-배경화면 움직이는 배경화면 LiveWallpapers 를 사용할수 있게 해주는 앱
LiveWallpapersPicker 메뉴-배경화면 LiveWallpaper를 고르는데 사용
MusicPlayer 음악 mp3 등의 재생용, 전 음악앱 딴거 써요
MyFiles 내 파일 SDCard의 내용을 볼 수 있는 앱
= Astro file manager
PowerOnOffTest 공장 출고전 테스트용 프로그램
SamsungWidget_DataCallSetting 메뉴-위젯-3G데이터 3G 데이터의 사용여부를 정하는 위젯
= Apndroid
SecMMS_MobileFax 모바일팩스 휴대폰으로 팩스를 송/수신 할수 있는 앱
SelfTest 공장 출고전 테스트용 프로그램
SnsAccount 트위터, Facebook 등을 사용하게 해주는 삼성에서 만든 앱
SnsProvider 트위터, Facebook 등을 사용하게 해주는 삼성에서 만든 앱
SoundPlayer
Street Street 구글 스트릿뷰 - 한국에서는 안됨
syncmldm
Tinker
TouchWiz30Launcher Home 삭제 주의 - 다른 런쳐가 안깔려 있다면 무한부팅됨
= adw launcher, go launcher, launcher pro
TwWallpaperChooser 삼성홈 배경하면 설정기
U+Mobile U+ Mobile U+ 휴대폰 사이트 바로가기
UnifiedInbox 통합메시지함 통합 메시지함.
UrlShortcut 트윗등을 하다 보면 자주 보이는 bit.ly 같이 단축어 만들어 주는 App
VoiceSearch 음성검색 음성검색
WlanTest 공장 출고전 테스트용 프로그램
LGUCommonService OzStore 사용을 위한 기반 앱들
LGUContentsManager OzStore 사용을 위한 기반 앱들
LGUMwlan 무선랜 접속을 도와주는 앱
LGUSharedManager
LGUWipiPlayer OZStore에서 사용하는것으로 예상.
옜날 피처폰때 쓰던 앱들을 구동시키기 위한 앱으로 보임
MobileTrackerEngineTwo 통합 메시지함을 이용하기 위한 앱
MobileTrackerUI 통합 메시지함을 이용하기 위한 앱
SamsungWidget_Mirror 위젯 - 거울 단순히 전면카메라를 보여주는 역할
UmsService 통합 메시지함을 이용하기 위한 앱
WorldClockInstaller 세계시간 세계시간
wssomacp 삼성 SNS 사용을 위해 필요한 앱
wssyncmlnps 삼성 SNS 사용을 위해 필요한 앱
삭제할 수 있는 파일
AxT9IME 키보드 삼성 키보드 어플
=> 기본 키보드 외에 따른 키보드 사용시 삭제해도 됨. 단 다른 키보드 먼저 설치 후 삭제할것


위 처럼 삭제하고 나면 재부팅 시 메모리가 100M 정도 남습니다.

물론 data 폴더까지 깨끗하게 하려면 위의 내용들을 삭제해 주고나서 공장초기화를 한번 해 줘야 하는데,
귀찮으시면 안하셔도 사용하는데 크게 문제는 없고요^^ (공초하면 용량이 조금 더 남을뿐)

그리고 저만큼 삭제하게 되면 system/app 폴더에 30메가 정도의 여유 공간이 생기는데요,
마켓 에서 다운로드 받은 앱 중에 용량 좀 큰녀석이나 꼭 쓰는 녀석들을 저 폴더에 넣어주고
재부팅하면 시스템 앱으로 들어가서 프로그램 설치 용량을 먹지 않도록 되지요^^
그렇게 부족한 프로그램 설치 공간을 확보할 수 있습니다.

그럼 즐거운 루팅생활 되세요~~

2011. 9. 15.

[Neo] 갤럭시 네오 진저브레드 루팅하기

갤럭시 네오 (Galaxy Neo) 진저브레드 루팅하기
단말기를 루팅할 경우 AS 등에 불이익을 받으실 수 있으며, 아래 내용을 따라하다 발생하는 사고에 관해서 본인은 책임을 져 드릴 수 없으니 자신 없으신 분들은 주위에 컴퓨터를 잘 하는 친구의 도움을 받으시거나 순정그대로 사용하시기를 권장합니다.
또한 금일 2010.09.15일을 기준으로 Galaxy neo 진저브레드의 루팅방법 및 관련 파일이 업로드 되어 있는 동호회, 사이트가 없으므로 퍼가실 때에는 출처를 꼭 명기해 주시기 바라며 전체 내용을 복사해 가지 마시고 제사이트를 링크해 주시기 바랍니다.


2011.09.25 일 추가
22일 업그레이드 된 TI08에서는 SU가 안생겨서 루팅이 안되네요.
다른 방법 찾아보고 포스팅 해 드릴께요^^


[Galaxy neo spec]
- LG U+ 전용(CDMA Rev.A 방식, USIM 없음)
- 할부원금 없음. (내가 구입할 때는 5만원)
- Android 2.3 진저브레드(2.2에서 업그레이드 됨)
- 800x480 wvga 해상도(보급형 중에서는 고해상도)
- 800Mhz AP
- 256M Ram
- 200M 앱 설치공간

1. 루팅 환경
- 펌웨어 버전: 2.3.4
- 빌드번호: GINGERBREAD.TH13 / TL14
- 삼성 KIES를 통해 2011.09.12일경 업그레이드 한 순정 상태

2. 준비물
- Samsung Kies가 설치되어 있거나
- Galaxy neo용 통합 드라이버가 설치되어 있을것. [드라이버 다운로드]
- update.zip 파일 [다운로드 링크]
- micro sd카드(메모리카드)

3. 루팅하기
- 갤럭시 네오와 PC를 데이터 케이블을 사용하여 연결

- 네오의 화면에 이동식 메모리 화면이 뜨면 "이동식 메모리 연결" 버튼을 눌러 이동식 디스크를 사용하도록 설정


- SD카드의 최 상위폴더에 위에서 다운로드한 update.zip 파일을 복사
(내컴퓨터 -> 이동식 디스크 // 왼쪽처럼 하여 보이는 폴더에 다운로드한 파일을 붙여 넣으면 됨)


- "USB 저장장치를 끄세요" 버튼을 선택하여 이동식 디스크 해제

- 파워 버튼을 눌러 갤럭시 네오 종료

- HOME 키를 누른 상태로 파워키를 눌러 전원을 켬, 화면에 Galaxy Neo 글자가 보이면 파워버튼은 떼도 됨.

- 아래와 같이 리커버리 화면이 보이면 소리낮춤(Volume down) 버튼을 눌러 "apply update from sdcard"를 선택한 후 Home 키를 누름


- SD 카드의 내용이 보이면 Volume up/down 키를 사용하여 update.zip 파일을 선택한 후 Home키 누름


- 파일의 설치가 끝나고 complete 메시지가 화면에 보이면 "reboot system now"를 선택한 후 Home키를 눌러 재부팅

- 끝! 설치된 앱 목록에 Superuser가 보이면 루팅 완료^^

요렇게 갤럭시 네오 진저브레드 TH13의 루팅 끝~!

계속적으로 갤럭시 네오와 관련된 정보를 올릴 수 있도록 오른쪽에 광고 한번씩만 클릭해 주세요 +.+;;
버전이 또 업그레이드 되면 또 업데이트 할 수 있도록 노력해 보겠습니당ㅋ

2011. 7. 18.

안드로이드 전체 소스 다운로드 (Android full source download)

안드로이드 소스를 파이썬 스크립트(repo)를 사용하여 git으로 다운로드하면
다운로드에만 한시간 이상이 걸립니다. (너무 느리죠... 특히 나같이 성격 급한사람에게는...)

그래서 찾은 스크립트...
git을 이용한 간단한 스크립트인데 역시 아는것이 힘이고
모르면 손발이 고생이네요 -_-;;

http://android.git.kernel.org/?p=platform/frameworks/base.git;a=snapshot;h=HEAD;sf=tgz

이렇게 입력하면 tgz로 압축된 파일 하나로 전달되고 20분 정도면 풀 소스 다운로드가 됩니다.
(h=HEAD이기 때문에 git에 공유되어 있는 최신 버전이 그냥 다운됩니다.
특정 리비전을 아신다면 저기를 바꾸시면 되겠죠...)

원문 출처는
http://geekycoder.wordpress.com/2009/07/03/how-to-download-latest-zip-android-source-code-and-using-it-in-intellij/
입니다.

2011. 6. 3.

[Nexus One] FRG83G (Froyo)로 복귀하기 위한 롬 모음

Rooted / Trackball wake / a2sd / cache2sd 관련 Custom rom 모음
- http://forum.xda-developers.com/showthread.php?t=927935

Stock 순정 롬

관련 방법은 천천히

2011. 5. 23.

언루팅 Unrooting 방법

루팅 흔적 지우기

루팅 상태에서 아래의 파일들을 삭제.
system/bin/su
system/xbin/su
system/app/superuser.apk
data/data/com.noshufou.android.su

Root Explorer를 사용하여 삭제하면 되며
한번에 위 파일들을 삭제 못하면 추가로 삭제를 하지도 못하는 상황이 되어
루팅도 언루팅도 아닌 상태가 되니 한번에 싹 지워야 함.

반루팅 상태면 다시 루팅을 한 후 위 파일들을 지우면 됩니다.

2010. 11. 25.

[Android]인텐트 - Intent

Intent
- 애플리케이션 내부와 애플리케이션 간의 메시지 전달 메커니즘

1. 명시적 사용 : 실행할 클래스를 직접 지정하는 방식 (하나의 어플리케이션 내부에서 사용)

Intent intent = new Intent(ThisActivity.this, RunActivity.class);
startActivity(intent);
//실행한 Activity로부터 결과값을 받아야 할 경우
//startActivityForResult(intent);


2. 암시적 사용 : 특정 데이터에 대해 수행될 액션을 요청하는 방식

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:555-1111"));
startActivity(intent);


주의 : 하위 Activity도 반드시 AndroidManifest.xml에 등록 되어야 함

3. 하위 Activity로 부터 결과값 전달 받기
- 하위 Activity를 구분하기 위해 고유값(RESULT_NEWACTIVITY) 전달

private static final int RESULT_NEWACTIVITY = 1001;
Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, RESULT_NEWACTIVITY);


- NewActivity에서는 Result값을 돌려주어야 함

public void onStop()
{
setResult(RESULT_OK);
finish();
//혹은 추가적인 정보를 넘겨주기 위해 Intent를 같이 넘겨줄 수 있음
//Intent result = new Intent();
//result.putExtra("Select Account", "1");
//setResult(RESULT_CANCELED, result);
//finish();
}


- 하위Activity가 종료되면 호출한 Activity의 onActivityResult가 호출됨 여기서 호출한 결과를 처리

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case RESULT_NEWACTIVITY:
break;
}
}



Intent Filter
- 어플리케이션이 서비스 할 요청을 정의하기 위해 사용
- Action type, mimetype, 스킴(http, mailto, tel 등), 사용자 정의 타입등을 등록할 수 있음


인텐트를 이용한 이벤트 방송

Intent intent = new Intent(NEW_MINIST_INTENT);
intent.putExtra("ministName", strName);
intent.putExtra("longitude", currentLongitude);
intent.putExtra("latitude", currentlatitude);
sendBroadcast(intent);


브로드캐스트리시버

public class MinistBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
//수신된 인텐트 처리
}
}

- onReceiver는 무조건 5초이내에 끝내야 함, 그렇지 않으면 ANR 발생
- 종료된 상태에서도 일치하는 인텐트가 방송되면 실행됨 => 리소스 관리에 도움됨
- 화면에 보이지 않거나 종료될 때 receiver를 등록해제 해 주는것이 바람직함 -> 메모리관리
- AndroidManifest.xml 에 등록





- 코드로 등록

IntentFilter filter = new IntentFilter(NEW_MINIST_INTENT);
실행될_CLASS_name classX = new 실행될_CLASS_name();
registerReceiver(classX, filter);
//등록 해제 시
//unregisterReceiver(receiver);

2010. 10. 4.

넥서스원 2.2.1 업데이트 실패기

xda-developers 및 안드로이드펍에서 2.2.1이 OTA 중이라는 소식을 듣고 오매불망 기다리던 중 드디어 나의 넥원이도 2.2.1 업데이트 화면이 뿅!

(오+.+ SKT에서도 OTA가 되는구나.. 구글 만쉐~!
이거 캡쳐 성공한 사람이 얼마나 될까ㅋㅋ)

얼른 재시작 및 설치를 눌렀는데,

안드로이드 로봇이 박스옆에서 없어지지가 않는다....
한 10분 기다렸는데도 반응이 없어서 전원 + 볼륨Down + 트랙볼로 재부팅 후
수동 업데이트 실시...

헐.. CRC Failed 뜬다.... ㅜㅜ
OTA가 다운로드가 실패한 것은 아닐테고..
rooting해서 amazon MP3를 지워버렸더니 이것 때문인듯...

하지만 STOCK로 돌아가기엔 설치한 것이 너무 많다구요 ㅠ,.ㅠ
Amazon Mp3만 다시 넣어서 해봐야지+.+;;

2010. 9. 15.

넥서스원(Nexus One)에서 Tmap 동작화면

9월 7일 Desire 의 Froyo 업데이트와 함께 Tmap for Froyo가 나왔다.
기대하는 마음으로 설치하러 갔는데, 업로드 한시간만에 버그가 있어서 다운로드 중지!
14시 재 업로드한다고 공지가 떠서 밥먹고 와서 바로 들어갔더니,
웬걸.. 14일이란다 -_-;; 네비용 아몰레드를 추가 구입한 것이 탁월한 선택이었나 -_-??

13일 예상보다 하루 빨리 Desire for Froyo가 다시 업데이트 되었고,
관련 글을 보자마자 바로 업데이트 +.+

기대하는 마음으로 실행해 보니....

귀여운것.. 잘 되는구나..

혹시나 싶어 길 안내도 해보고 이것저것 눌러봤는데

디자이어가 아니다.. 넥서스원!
Ecleir때도 그랬지만, 정상적으로 넥원으로 인식한다 -_-;;
Tmap 제작사에서는 Nexus one 까지 지원하도록 만들었다는 말인데...
KT 넥서스원때문에 막은건가...

어쨋든 Tstore에서 Nexus one은 Tmap 지원불가기기...
SKT 님하.. 이거 좀 어케 안되겠니 +.+?
내가 베타테스터 해 줬으니 이제 지원목록 추가만 좀 해주센...
나도 1년 무료사용 좀 합시다!!(개인인증까지 받았는데 이러면 섭하자나ㅜㅜ)

[다자녀할인] 2자녀 이상 모든 공항 주차장 50% 할인받기 (둘 중 한명은 15세 이하)

다자녀 기준이 2명으로 완화되면서 자녀가 2명만 되어도 공영주차장 50%(지역에 따라 30%인 곳 도 있음) 할인이 가능하고, 전국의 공항주차장도 50% 할인이 가능하다. "다둥이카드" 나 "경기 I Plus 카드"...