2011년 1월 30일 일요일
2011년 1월 15일 토요일
LBSC (Location Based Search Call) Manual
소개:
콜 링크 서비스를 이용하여, 현재 위치나 관심 위치로 등록된 위치로부터
업체를 검색하고 무료로 통화를 지원해주는 안드로이드 애플리케이션입니다.
사용법:
<북 마크>:
원하는 업체는 신속하게 무료통화 연결을 위해 북 마크 기능을 제공해줍니다.
그리고 사용자만 알 수 있는 정보를 바탕으로 업체 명을 변경 가능합니다.
리스트를 누르게 되면 콜 링크 서비스를 이용 할 수 있습니다.
<업체 검색>:
현재 위치, 관심 위치 검색기능
위치가 선택되면 해당 지역의 주소가 시, 구, 동까지 주소란에 표시가 됩니다.
검색은 직접 입력하거나, 음성검색이 가능하고,
검색된 업체의 수는 검색 결과란에 표시되고, 다이얼로그로 결과는 띄어줍니다.
<업체 검색 결과 목록>:
검색된 업체를 리스트로 보여줍니다.
리스트를 클릭하면 콜 링크 서비스를 이용하실 수 있습니다.
하트에 화살 박힌 버튼을 클릭하면 북 마크 추가가 가능합니다.
<지도 보기>:
지도 보기를 통하여, 지정한 위치와 업체의 위치를 확인 할 수 있습니다.
메뉴 버튼의 메뉴를 이용하여, 현재 위치나 검색위치로 이동 할 수 있습니다.
지도위의 마커를 누르게 되면 그에 해당하는 정보를 다이얼로그로 보여주게 합니다.
<설정>:
본 애플리케이션의 정보나 콜 링크 수신 전화의 번호 설정 및 글씨체 변경 설정
지도 보기에서 위성모드, 줌 오버레이 설정이 가능하고,
에러에 대한 문의 문자를 보낼 수 있습니다.
2011년 1월 12일 수요일
2011년 1월 7일 금요일
[Android] View in Tag (View의 Tag활용 법)
Holder Pattern 사용하면서 알게된 Tag..이럴수가..
나는 그동안 뭘 하고 있었던가...........싶네요..
다음 부터는 태그를 많이 사용해야겟어요 !! -_ -v
[Intro]
오늘은 별거 아닌 팁 하나 포스팅 해봅니다.
정말 별거 없답니다. 아하하...
[Data in View]
가끔 어플리케이션을 만들다 보면 View안에 어떤 데이터를 집어 넣고 싶을 때가 종종 있습니다.
네... 있지요. 그런 경우 그냥 무작정 떠올릴 수 있는 방법은 extends 해버리는 겁니다.
OOP의 최대 장점이지요.
Id, Name, Address 세개의 정보를 View안에 담고 싶다고 한다면
아마 다들 아래와 같이 클래스를 만드실 겁니다.
public class CustomView extends View {
private int mId;
private String mName;
private String mAddr;
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public int getId() { return mId; }
public void setId(int id) { mId = id; }
public String getName() { return mName; }
public void setName(String name) { mName = name; }
public String getAddress() { return mAddr; }
public void setAddress(String addr) { mAddr = addr; }
}
별로 복잡하지 않은 구조입니다.
달랑 필드 세개에 get / set 메소드 하나씩 달려 있는 모양이지요.
사용법은 아래와 같이 그냥 get / set 메소드를 사용 하면 되는 겁니다.
CustomView customView = new CustomView(this);
customView.setId(1);
customView.setName("vizpei");
customView.setAddress("somewhere");
이와 같은 방법은 단순히 get/set 만 하지 않고 뭔가 좀더 복잡한 operation을 하는 경우에
아주 유용하게 쓰는, 그냥 평범하게 생각 할 수 있는 customization 이지요.
[Tag in View]
android.view.View, 즉 모든 View들의 상위에 있는 View 클래스에는
getTag() / setTag() 를 사용하여 View에 Tag를 붙일 수 있습니다.
Tag는 Object 타입이라 아무거나 다 들어 갈 수 있지요.
그냥 시시한 값 하나 넣을 수도 있지만 복잡한 클래스 인스턴스도 가볍게 넣을 수 있습니다.
아까 넣고 싶었던 데이터들을 일단 하나의 클래스로 만들어 봤습니다.
필드를 private로 만들고 get / set 메소드 만들어도 되지만 그냥 public으로 해버렸습니다.
어차피 그냥 데이터 저장용이니까요.
private class PersonInfo {
public int id;
public String name;
public String addr;
}
이제 PersonInfo 인스턴스를 만들고 View.setTag()로 집어 넣어주면 땡입니다.
PersonInfo pi = new PersonInfo();
pi.id = 1;
pi.name = "vizpei";
pi.addr = "somewhere";
View view = new View(this);
view.setTag(pi);
사용할때는 View.getTag() 로 가져오면 역시 땡이지요.
PersonInfo pi = (PersonInfo) view.getTag();
알면 유용하게 쓸 수 있지만, 모르면 맨날 extends만 하고 있을지는 모르는 일입니다.
[Appendix]
뭐 별로 쓴적은 없지만...
View.findViewWithTag() 를 사용하면 Tag로 View를 찾을 수 있답니다.
View.findViewById()로만 View를 찾을 수 있는건 아니란 것이지요.
다만 View.findViewWithTag()는 Object.equals() 비교를 하니
요것만 주의해서 사용 하시면 될 것 같습니다.
[출처] - http://blog.vizpei.kr/86999387
[Android] Worker Thread AND ProgressDialog Veiw
private ProgressDialog loagindDialog; // Loading Dialog
//스레드
void createThreadAndDialog() {
// ProgressDialog //
loagindDialog = ProgressDialog.show(this, "Connecting",
"Loading. Please wait...", true, false);
Thread thread = new Thread(new Runnable() {
public void run() {
// 시간걸리는 처리
handler.sendEmptyMessage(0);
}
});
thread.start();
}
//핸들러
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
loagindDialog.dismiss(); // 다이얼로그 삭제
// View갱신
}
};
createThreadAndDialog(); // 진행바 호출
2011년 1월 5일 수요일
[Android] Custom Toast
커스터 마이징한 토스트 만들기..
은근 쉽다는..
//함수 바디 부분
//커스터마이징된 토스트를 띄우는 부분
private void customToastShow(int img, CharSequence text) {
TextView tv = new TextView(this.getApplicationContext());
tv.setText("\t" + text + "\n");
tv.setTextSize(15);
tv.setTextColor(Color.BLACK);
LinearLayout ll = new LinearLayout(this.getApplicationContext());
ll.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
//NOTICE 그림
if(img == 1) {
ll.setBackgroundResource(R.drawable.notice);
}
ll.setGravity(Gravity.CENTER);
ll.addView(tv);
Toast t = Toast.makeText(this.getApplicationContext(), "", Toast.LENGTH_LONG);
t.setGravity(Gravity.CENTER, 0, 0);
t.setView(ll);
t.show();
}
//함수 호출 부분
customToastShow(1, "쏼라쏼라~");
2011년 1월 3일 월요일
[Android] Geocoder and Reverse Geocoding
1. Geocoder
- 주소를 가지고 latitude와 longitude를 얻어내는 방법
2. Reverse Geocoding
- latitude와 longitude를 가지고 주소를 얻어내는 방법
2011년 1월 2일 일요일
[Android] MapView에 나침반 띄우는 방법
안드로이드에 API를 너무 잘 제공해 주기에..
OnResume()에 다음 부분을 넣고,
/* 맵뷰에 나침반 띄우기 */
MyLocationOverlay mylocationoverlay = new MyLocationOverlay(this, mapView);
List<Overlay> listOfOverlays.add(mylocationoverlay);
mylocationoverlay.enableCompass();
mylocationoverlay.enableMyLocation(mapView.getMapController());
OnPause()부분에 나침반을 종료하는 코드를 넣어주도록 한다.
mylocationoverlay.disableMyLocation();
mylocationoverlay.disableCompass();
이런식으로 구현완료 -_ -v