안드로이드

    [안드로이드 게임 개발] 1. 시작과 시행착오

    처음 안드로이드에서 게임을 개발해보고자 마음 먹었던 것은 2011년도 10월쯤이었던 것 같다. 처음 게임을 만들었던 것은 초등학교 시절 RPG쭈꾸르, 95, 2000로 만들었지만 정작 프로그래머가 된 이후에 스스로 제대로 된 게임을 만들어 본 적은 없었다. 나는 프로그래머지만, 게임 프로그래머가 아니다. 프레임워크나 애플리케이션단을 주로 개발하기 때문에 게임을 어떻게 개발하는지도 모르고 게임업계에 종사하고 있지도 않다. 그러나 게임을 만드는 것은 프로그래머의 로망이 아닌가 싶다. 게임을 만들기로 마음 먹은 이후 우선은 안드로이드로 만들기로 했다. 시작하는데는 아이폰이 더 좋을것 같지만, 안드로이드를 선택한 이유는 맥북이 없다는 점과 내가 Java나 안드로이드 개발 스킬이 뛰어나고(?) GIS 안드로이드용..

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

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

    안드로이드에서 OpenGL ES를 사용하는 GLSurfaceView의 기본 골격

    이전 포스팅에서는 기본적인 View와 SurfaceView를 사용하는 기본 구조에 대해 포스팅했다. 그러나 OPENGL ES를 사용한다면 GLSurfaceView를 사용해야 하며 이 구조는 이전과는 또 상이하다. import android.app.Activity; import android.opengl.GLSurfaceView; import android.os.Bundle; import android.view.Window; public class Main extends Activity { private GLSurfaceView mView = null; private MainRenderer mRenderer = null; @Override public void onCreate(Bundle savedInst..

    안드로이드 View, SurffaceView를 사용하는 기본 골격

    1. View View는 onDraw를 통해 그림을 그려주고 invalidate를 호출하면 다시 onDraw()가 호출된다. 하지만, 안드로이드에서는 invalidate()를 호출하면 에러가 난다. Handler를 사용하거나 postInvalidate()를 호출해야 한다. import android.content.Context; import android.graphics.Canvas; import android.view.View; public class MyView extends View{ public MyView(Context context) { super(context); // invalidate postInvalidate(); } @Override protected void onDraw(Canvas..

    안드로이드 게임 엔진

    안드로이드 게임 엔진이 많다. 전부터 찾다보니 더 생기기도 하고 중단하기도 한 엔진이 있는데 이중에서 AndEngine라는게 제일 괜찮아 보여서 이걸 조금씩 보고 있는 중이다. AndEngine Refenence [1] AndEigine (http://www.andengine.org/forums/) [2] AndEngine 분석글 (http://sgap.springnote.com/pages/7399251) [3] Tiled 이용글 (http://togalaxy.tistory.com/4) [4] AndEngine 설명 링크글 (http://blog.naver.com/badskyblood?Redirect=Log&logNo=30113071726) [5] AndEngine Tutorial list (http:/..

    안드로이드 앱 'SD 카드로 이동', '디바이스로 이동' 기능

    안드로이드에서 설정 > 응용프로그램 > 응용프로그램 관리 > 에서 앱을 하나 선택하면, 'SD 카드로 이동', '디바이스로 이동'을 눌러서 저장위치를 선택할 수 있다. 물론 되는 앱도 있고 그렇지 않은 앱도 있다. 이 기능은 안드로이드 2.2부터 지원되는 기능이다. 따라서, 폰 펌웨어 자체가 2.1 이하라면 어떠한 앱도 이 기능을 지원하지 않는다. 펌 웨어 2.2이상 폰에서는, 이 기능을 지원하도록 설정해준 앱들만 사용 가능하다. 개발시, 이것을 지원해주기 위해서는 Platform 2.2, API Level 8이 필요하다. AndroidManifest.xml 에서 두가지만 잘 설정해주면 된다. 과 같이 최소 SDK 버전 8이상을 설정해주고 ... manifest태그에 android:installLocat..

    안드로이드 여러 버전의 APK 배포

    원래는 하나의 APK만 마켓에 올릴 수 있었지만 얼마 전(2011년 7월쯤)부터 마켓에서 여러 버전의 APK를 올릴 수 있도록 지원해준다고 한다.[1][2][3] 각기 다른 플랫폼 버전, 화면 구성, OpenGL 텍스쳐 압축 포맷에 따라서 APK를 따로 올릴 수 있는 것이다. 올리는 방법은 기존에 올라가있는 APK에 추가적으로 APK를 올리고 같이 활성화할 수 있는 듯하다. (아직 나도 안해보았다.) 개발자 입장에서 볼 떄, 한 가지 버전에 따라서 여러가지 장비에 맞춰 개발을 각기 하고 관리한다는 것은 매우 번거롭고 힘든 일이다. 굳이 따로 하고 싶지 않았지만 이것에 대해 찾아보게 된 이유는 기존에 올렸던 앱이 2.1만을 지원하게 해놓았는데, SD카드와 기기설치를 고를 수 있게 해달라는 요청이 있어서였다..

    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]에 나온대로 내가 마음대로 색깔을 줄 수 있는 것이 아니었다. 지정되어진 값이 있고 그 값을 지정해주어야..

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

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