Devlopment

    Android 타이틀 바 관련.

    자체 타이틀 바 사용 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title); 타이틀 바 제거 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); AndroidManifest.xml에서 타이틀 바 제거 Activity 또는 Application 태그 안에 android:theme="@android:style/Theme.NoTitleBar"

    안드로이드 ListView구현시 Adapter의 getView 중복 호출 문제

    부왘ㅋㅋㅋㅋㅋㅋㅋㅋ!! 오랜만에 미친듯한 삽질을 경험하게 해주는 안드로이드에게 경의를 표한다. 안드로이드 개발을 하는 중에 내가 만든 페이지가 자꾸 느려지는 현상을 발견하고 로그를 찍어서 로그캣에서 느려지는 구간을 찾았다. 문제는 이 문제점을 찾는데 너무 많은 시간을 소비했다. 나의 코딩 스타일에 문제가 있나 의구심이 들었는데, 안드로이드만에 독특한 문제였다. 문제점은 레이아웃 xml에 있었는데 ListView를 구현할 때 getView가 중복 호출되면서 미묘하게 시간을 잡아먹는 문제였다. 찾아보니 많은 사람들이 나와 같은 문제를 겪고 있었다. Reference [1] 해결법 1 : http://www.androidpub.com/41674 [2] getView 호출에 대한 좋은 설명을 해주신 개발자분 :..

    String vs StringBuffer

    어쩌다 보게 되었는데 기본적이지만 너무 중요한 내용이다. 그간 있던 오해가 풀렸다. Reference [1] String vs StrinvBuffer - http://youngrok.com/wiki/wiki.php/StringVsStringBuffer

    [Android] 알림 - AlertDialog, Toast

    [Android] 알림 - AlertDialog, Toast

    AlertDialog를 이용하면 알림과 버튼을 제공하고 Toast를 이용하면 메시지를 사용자에게 전달해줄 수 있다. 1. Toast Toast.makeText(PersonalActivity.this, "Message", Toast.LENGTH_LONG).show(); 2. AlertDialog AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Title"); builder.setMessage("Message"); builder.setNegativeButton("NegativeButton", new DialogInterface.OnClickListener() { @Override public void onClick(..

    모바일상에서의 Network Programming

    모바일 교육을 받다가 듣게 된 여담이다. 모바일 상에서의 소켓 프로그래밍은 일반 소켓 프로그래밍과 틀리지 않다. 다만, 잘 쓰지 않던 UDP를 쓸 경우가 종종 있다. 설계 관점에서 생각해볼만한 문제이다. 국내 통신과금은 패킷 단위이다. 그러므로 TCP로 하게 되면 많이 주고받기 때문에 패킷이 많이 과금되며 서버에서의 오버헤드도 심하다. 그러므로 모바일 상에서는 UDP를 쓰는 것이 좋다. 그러나 서버에서 데이터를 보내야 할 때는 어쩔 수 없이 TCP를 써야한다. ex) 채팅 Android Socket Programming는 완벽히 J2SE와 동일하게 사용 가능하다. * Mobile 단말에서의 통신이라 자주 끊길 수 있음을 감안해야 한다. * TCP Protocol보다는 UDP Protocol을 권장하며, ..

    Android Sensor 활용

    Sensor의 경우에는 Primission이 없다. Sensor는 상대적으로 밧데리 소모량이 적고 개인정보와도 무관하기 때문인것 같다. Sensor 식별자 [1]에서 퍼온 식별자이다. 문제는 SENSOR_ALL과 같은 것은 버전 2 이하에서 쓰던 것이다. 2.0이상부터는 TYPE_으로 시작한다. Constants int TYPE_ACCELEROMETER A constant describing an accelerometer sensor type. int TYPE_ALL A constant describing all sensor types. int TYPE_GRAVITY A constant describing a gravity sensor type. int TYPE_GYROSCOPE A constant de..

    Android 진동 다루기

    Vibrator 클래스 장치 진동을 제어한다. Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); vibrator.vibrate(100); // 배열을 주면 진동이 배열 시간대별로 울린다.

    Android Camera

    Android Camera

    Camera Class Cameara camera = Camera.open(); ... camera.release(); 카메라 설정 제어 카메라 Parameters 객체를 이용하여 이미지 크기, 미리보기, 포맷, 프레임 속도 등을 지정 Camera.Parameters parameters = camera.getParameters(); parameters.setPictureFormat(PixelFormat.JPEG); camera.setParameters(parameters); * 카메라 세팅 잘못하면 기기 특성을 타게 되서 어플이 죽을 수 있다. Camera 미리 보기 SurfaceView를 이용하여 실시간으로 카메라 미리보기를 표시할 수 있다. 현재 증감현실 어플리케이션 대부분이 이 기능을 이용한다. C..

    Android Drawing

    Bitmap을 그릴 때 Bitmap의 크기가 3mb가 넘으면 OutOfMemory가 날 가능성이 있다. 해결책) Options 를 이용해서 크기를 줄여준다. ex) Options opts = new Options(); opts.inSampleSize = 2; Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.kara_1); 일반적으로 좌표는 왼쪽위지만 다른 것과 다르게 Text는는 좌표가 좌측 하단에서 시작한다. 그러므로 0,0으로 좌표를 지정하면 화면에 나오지 않는다. XML에서 상태값이 없는 것이 맨 위에 있으면 아래값들을 무시한다. View를 상속받아서 onTouchEvent()를 구현할 경우 기본적으로 return은 "supe..

    안드로이드 OS Version 및 이름

    안드로이드 이름별 버전 및 API Level, 이름들 Version API Level Linux Kernel Nick Name Image 1.0 1 Android 1.1 2 1.5 3 2.6.27 Cupcake 1.6 4 2.6.29 Donut 2.0 5 Eclair 2.0.1 6 2.1 7 2.6.29 2.2 8 2.6.32 Froyo 2.3 9 Gingerbread 2.3.4 10 2.6.35 3.0 11 Honeycomb Reference [1] 위키피디아 - http://ko.wikipedia.org/wiki/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C_(%EC%9A%B4%EC%98%81_%EC%B2%B4%EC%A0%9C) [2] 즐거운 일상 - http://..