Android

    COCOS2D Android에서 드래그 앤 드랍(Drag & Drop)

    음, 안드로이드에서 COCOS2D를 쓰면 쓸수록 삽질을 많이 한다. 특히나 아이폰에 맞춰 만들어진 것을 안드로이드용으로 포팅하면서 많은 문제가 아직 남아있다는 걸 느낀다. 지난 게임 관련 포스팅을 할 때 COCOS2D 안드로이드 엔진에 대한 문제를 몇 가지 적어놓았다. 이번에는 드래그 앤 드랍을 안드로이드용으로 하는 소스를 써보려 한다. 아래 소스를 참조하자. [1]을 보고 만든 것이다. Objective C를 자바 형태로 센스있게 바꾸면서 작업했다. Objective C에 있는 메소드나 클래스명이 거의 그대로 자바 엔진에 있었다. 메소드명이나 파라미터 형태가 조금 다른게 몇 개 있었지만 나름 잘 짜여져 있었다. 다만 몇 가지 문제가 있었는데. 문제 1. 아이폰에서는 ccTouchesMoved(드래그중 ..

    안드로이드(Android) OnGestureListener 사용법

    OnGestureListener를 사용해보려고 구현을 하였는데 로그를 찍어보니 호출이 되지를 않았다. 어떤 문제인지 찾다가 곧 이유를 알게 되었다. 이 인터페이스는 메소드를 구현된다고 호출이 되지 않는다. 이 인터페이스를 사용할 경우 같이 사용해야 하는 것이 GestureDetector라는 것이다. 이 GestureDetector를 멤버 함수로 갖고 있으면서, onTouchEvent의 발생시에 GestureDetector를 통해 리턴을 해줘야 OnGestureListener의 메소드들이 올바로 호출이 된다. 아래는 참고 소스이다. import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import..

    [안드로이드] TabActivity에서 startActivityForResult의 결과 받기

    잠깐 이 문제로 많은 난항을 겼었다. 일반적인 Activity의 경우에는 startActivityForResult로 호출하고 호출되어진 Activity에서 setResult에 결과를 넣어주면 호출한 Activity에서 onActivityResult를 통해 결과를 받을 수 있다. 그런데, 문제는 TabActivity를 호출해서 TabHost의 Activity에서 결과를 돌려주려면 문제가 생겼다. 다음 상황이다. A.class - 메인 페이지, B 클래스를 startActivityForResult로 호출 B.class - TabActivity로서 TabHost로 C 클래스를 갖고 있다. C.class - setResult로 결과를 돌려준다. 이러한 구조를 갖고 있을 경우에 결과를 돌려줄 때, C 클래스에서 ..

    java.io.IOException: Unable to open sync connection! 해결법

    간단한 코드를 바꾸가며 기기로 테스트를 반복하던 도중 java.io.IOException: Unable to open sync connection! 라는 에러가 발생하였다. 이클립스 꺼보고, adb.exe 종료해보고, USB 선 뽑았다 빼도 문제가 해결돼지 않았다. 결국 해결은. 환경설정 > 응용프로그램 > 개발 > USB 디버깅 을 해제했다가 다시 설정하니 다시 정상 동작하였다.

    ListView 스크롤시 검은색 배경으로 바뀌는 문제

    * ListView 스크롤시 검은색 배경으로 바뀌는 문제 문제) 배경 지정한 Layout에 투명 ListView를 놓았는데 스크롤시 ListView의 배경이 검정색으로 바뀜 해결) [1][2]에 나온대로 ListView에 android:cacheColorHint="#00000000" 를 지정 처음에 #00000000이 아니고 #000000인줄 알고 #000000으로 고치는 삽질을 잠깐 함. * ListView 구분선 색깔 변경법 배경색 문제를 해결한 후에 이번에는 구분선 색깔을 바꾸려다 문제가 생겼다. ListView의 divider 속성을 바꾸면 돼는데 실행하면 바껴있지 않은 것이다. 알아보니 [3]에 나온대로 내가 마음대로 색깔을 줄 수 있는 것이 아니었다. 지정되어진 값이 있고 그 값을 지정해주어야..

    모바일상에서의 Network Programming

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

    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..