2011년 1월 30일 일요일

글쓰기 테스트

음 블로그가 확장 이전 되었습니다..
새로 써보는 글인데 너무 어색하군요..
역시 적응 되었던 형식이 아니라..
하지만 이것도 금방 적응 될거라 생각합니다 ^^

2011년 1월 15일 토요일

LBSC (Location Based Search Call) Manual

 

 

 

 

소개:

콜 링크 서비스를 이용하여, 현재 위치나 관심 위치로 등록된 위치로부터

업체를 검색하고 무료로 통화를 지원해주는 안드로이드 애플리케이션입니다.

 

사용법:

<북 마크>:

원하는 업체는 신속하게 무료통화 연결을 위해 북 마크 기능을 제공해줍니다.

그리고 사용자만 알 수 있는 정보를 바탕으로 업체 명을 변경 가능합니다.

리스트를 누르게 되면 콜 링크 서비스를 이용 할 수 있습니다.

 

 

 

 

<업체 검색>:

현재 위치, 관심 위치 검색기능

위치가 선택되면 해당 지역의 주소가 시, 구, 동까지 주소란에 표시가 됩니다.

검색은 직접 입력하거나, 음성검색이 가능하고,

검색된 업체의 수는 검색 결과란에 표시되고, 다이얼로그로 결과는 띄어줍니다.

 

 

 

 

 

 

 

 

<업체 검색 결과 목록>:

검색된 업체를 리스트로 보여줍니다.

리스트를 클릭하면 콜 링크 서비스를 이용하실 수 있습니다.

하트에 화살 박힌 버튼을 클릭하면 북 마크 추가가 가능합니다.

 

 

 

<지도 보기>:

지도 보기를 통하여, 지정한 위치와 업체의 위치를 확인 할 수 있습니다.

메뉴 버튼의 메뉴를 이용하여, 현재 위치나 검색위치로 이동 할 수 있습니다.

지도위의 마커를 누르게 되면 그에 해당하는 정보를 다이얼로그로 보여주게 합니다.

 

 

 

<설정>:

본 애플리케이션의 정보나 콜 링크 수신 전화의 번호 설정 및 글씨체 변경 설정

지도 보기에서 위성모드, 줌 오버레이 설정이 가능하고,

에러에 대한 문의 문자를 보낼 수 있습니다.

 

 

 

 

 

 

 

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