목록안드로이드 (58)
개발자 블로그
오늘 이거 때문에 짜증나 죽는 줄 알았네.. 쉽게 찾을 수 있는 문제였는데 안될려면 이렇게도 안된다.일단 상황 설명을 좀 해야될 것 같은데,설정화면에서 색상을 선택할 수 있는 UI를 구현하고 있었다.색상을 표시하기 위해서 ImageView를 사용했고, xml 파일에서 ImageView의 src 속성 적용해줬다. 사용자가 Color Picker를 통해서 색상을 선택하면, 아래 코드를 통해서 ImageView에 적용한 Drawable의 색상을 변경해준다. selColorView = view.findViewById(R.id.img_sel_color); if (selColorView != null) { selColorView.setColorFilter(selColor); }안드로이드 N(누가)에서는 잘 동작하는..
2017년도에, 그것도 이제 두 달만 있으면 2018년이 되는데, 이제와서 왜 오래된 넥서스5x를 샀나? 하는 의문을 갖는 사람들이 있을지도 모르겠다.혹시 세컨폰으로 산거 아닌가? 하고 생각할지 모르겠지만 엄연히 내 메인 폰이다. 그럼 전에 쓰던 폰은 뭐였냐고? 2014년 2월에 구입한 LG G2다. 3년 하고도 9개월이나 썼네. 단통법 때문에 폰 가격이 너무 비싸서 그냥 안사고 버텼다. 나름 알아보면 - 신도림 테크노마트 같은 - 싸게 살 수도 있었을텐데.. 나이 먹으니깐 이젠 그런것도 귀찮더라. 그리고 스마트폰 가지고 게임을 하는것도 아니라서 최신폰이 그닥 필요가 없었다.그러다가 이제와서 바꾼건 몇가지 이유가 있었다.- 선택약정 할인 종료 - G2 배터리 광탈 (반나절 쓰기도 힘들다..) - G2 발..
앱을 사용하다가 백그라운드로 전환 된 후에 시간이 한참 지나면 시스템이 메모리 확보를 위해서 앱을 종료 시킨다. 다시 앱이 Active 상태로 전환 될 때 정상적인 동작을 위해서는 onSaveInstanceState 함수를 오버라이딩해서 필요한 멤버변수의 값을 저장하는 등의 필요한 조치를 해야 된다. onCreate에서는 인자로 넘어온 Bundle값을 체크해서 다시 멤버변수의 값을 복원해주는 등의 작업을 해야 되고. 사실 코딩하는건 간단한데, 테스트 하는게 쉽지가 않다. 시스템이 앱을 kill 시키는 경우를 만들어야 되는데 사용자가 제어할 수 있는게 아니니깐.내가 가지고 있는 안드로이드 책에는 DDMS에서 프로세스를 종료시키면 된다고 써있는데.. 막상 해보면 앱이 완전히 종료되어 버린다. 사실 [개발자 ..
안드로이드 오레오(8.0, API26)에서 ProgressDialog가 Deprecated 되었다. iOS에는 원래 이게 없어서 만들어 썼었는데.. 안드로이드에서는 있던 걸 Deprecate 시켰다. 아니 왜?? 이유를 찾아보니..ProgressDialog가 모달(Modal) 대화상자기 대문에 사용자와의 상호작용성을 떨어트리기 때문이란다. 아예 ProgressBar를 화면에 추가하던지, Notification을 통해서 구현하라고 한다. 아래는 그 내용. (출처)This class was deprecated in API level 26. ProgressDialog is a modal dialog, which prevents the user from interacting with the app. Instea..
안드로이드 새 버전이 출시 되었다. 이번에는 알파벳 O로 시작할 차례. 이미 공개된지 오래지만, 이름은 오레오(Oreo)다.그동안 앱 업데이트를 조금 소홀히 했더니 검색 순위에서도 엄청 밀리고.. 유입보다 삭제가 더 많은 지경에 까지 이르렀다,, 개발한다고 끝나는게 아니구나. 블로그도 새로운 포스팅 작성 안하면 유입이 점점 줄어들던데 앱 개발도 별로 다르지 않은 것 같다.targetSdkVersion을 올리는건 조심해야 된다. 예전에 안드로이드 마시멜로 버전이 출시 되었을 때 한 번 달라진 권한 모델 때문에 피를 본 경험이 있다. 이 때의 기억이 트라우마로 남은건지.. 버전을 올릴 때 마다 늘 걱정이 된다..-_-;;안드로이드 오레오(Android 8.0)에서 달라진 동작들은 여기서 확인 할 수 있다. ..
안드로이드 마시멜로 버전이 출시되었을 때, 변경된 권한 모델로 인해서 꽤 많은 피(?)를 본 경험이 있다. 그래서 그런지 새로운 안드로이드 버전이 출시 될 때마다 '권한'과 관련된 변경사항은 특별히 더 신경을 써서 챙겨본다.과거 마시멜로 권한 관련 에피소드는 아래 링크를 참조2016/10/20 - [전업개발자 이야기] - 첫 번째 앱을 출시했다가 다시 내리기까지.. 이번에 새롭게 출시 된 안드로이드 오레오(Oreo, 8.0) 버전에서도 '권한'에 대한 변경이 있다. (원문 보기 : https://developer.android.com/about/versions/oreo/android-8.0-changes.html?hl=ko#rmp)간단하게 설명하면, 안드로이드 마시멜로(6.0)부터 누가(7.1) 까지는 ..
MS의 Windows와는 다르게, iOS나 안드로이드는 하위 버전에 대한 호환성을 별로 지원하지 않는 듯 하다. 특히 iOS쪽이 좀 더 심한 것 같은데, 이 부분은 그래도 애플에서 OS업데이트를 오랫동안 지원해줘서 크게 문제는 안되는 것 같다.반면 안드로이드는 삼성나 LG같은 대기업에서 제조한 플래그쉽 모델조차 OS 업데이트는 두 번이 최대인 것 같다. 일단 지금 내가 사용중인 G2도 킷캣이랑 롤리팝 이렇게 두 번의 업데이트가 전부였다. 그리고 얼마 전에는 G4의 누가 업데이트를 하지 않겠다고 밝혔다가 여론이 악화되자 다시 번복하는 일도 있었다. (안되는데는 이유가 있다.)관련기사 - LG전자, 'G4'·'V10' 최신 업데이트 지원한다(종합) 개발하는 앱의 성격에 따라서 조금씩 다르기는한데, 내 경우에..
메뉴에 별도로 "파일관리자"앱이 없어서 에뮬레이터에서는 파일관리자앱이 없는 줄 알았다. 그래서 지금까지 "Android Device Monitor"를 사용해서 파일을 확인하고 관리했었는데.. 이제서야 파일관리자 앱을 찾았다. 지금까지 참 불편하게 일했었네..-_-;;일단 첨부한 이미지는 안드로이드 마시멜로우(API 23) 버전이 설치된 에뮬레이터 기준이다. 하지만 누가(API 24)에서도 같은 방법으로 파일관리자 앱을 실행할 수 있다. 메뉴에서 [설정] 아이콘을 클릭. 설정 앱에서 [저장소 및 USB] 항목을 클릭. [내부 저장소] 항목을 클릭. 만약 SD카드의 파일을 확인하려면 밑에 있는 [SDCARD]를 클릭하면 된다. 내부 저장소 화면에서 화면을 밑으로 조금 내리면.. [탐색] 이라는 항목이 보인다..
처음 이 에러가 발생하지는 꽤 오래 됐는데 이제서야 해결을 했다. 원인을 찾고나면 참 별거 아닌건데.. 지금까지 버그 수정했던 것들 중 제일 나를 괴롭혔던 문제같다. (사실은 아직 해결못한 놈들이 더 나를 괴롭히고 있겠지만..)계속해서 발생하던 에러는 아니고, 삼성 단말 중 안드로이드 마시멜로우 버전에서만 발생했다. SecurityException이 뜨게되면 제일 먼저 의심하는게 AndroidManifest.xml 파일의 이지만 이건 그런 문제가 아니었다. 아,, 일단 먼저 에러메시지를 봐야겠구나..전체 에러메시지는 아래와 같다. (패키지명은 *로 가렸다.) Fatal Exception: java.lang.SecurityException: Permission Denial: starting Intent {..
안드로이드 Developers 사이트에 보면 "Device Art Generator"라는게 있다. 이름에서 대략 유추 가능하듯이 뭔가를 만들어주는거다. 뭐를? 디바이스 프레임이 추가된 형태의 스크린샷을. 나는 단지 스크린샷만 준비해서 업로드(드래그) 하면 된다.사실 개발자가 하기에는 되게 귀찮은 일인데 클릭한번으로 아래 이미지처럼 근사한 이미지를 얻을 수 있다니 참 고마운 기능이다. 그런데 해당 페이지를 자세히 보면 아래와 같은 내용이 있다.여기서 만든 이미지를 구글 플레이의 스크린샷에는 사용하지 말라는 것. 솔직히 위에 저런 이미지를 만드는 이유중에 하나가 구글 플레이 스크린샷에 등록하려고 하는건데 쓰지말라니...이유가 궁금해서 구글링을 좀 해봤는데 아마도 예전에는 스크린샷 등록과 관련해서 "가공되지 ..
관련글 : https://code.google.com/p/android/issues/detail?id=62800위에 링크를 보면 알겠지만 안드로이드 킷캣에서만 발생하는 문제인 듯 하다. 실제로 롤리팝이나 마시멜로우 기기에서 테스트해보면 발생하지 않는다. 젤리빈에서도 역시 발생하지는 않는 것 같은데,, 확실하지는 않다. 테스트 기기 해상도가 낮아서 문제가 되는 크기의 큰 텍스트를 그리지 못했기 때문일 수도 있어서,,해결방법도 역시 링크로 대체.. (위에 관련글도 같은 링크를 안내하고 있다.)해결방법 : http://stackoverflow.com/questions/1723846/how-do-you-draw-text-with-a-border-on-a-mapview-in-android/5817510#58175..
이틀 연속으로 해당 에러가 리포팅 되었다. 한번도 보고되지 않았던 에러인데.. 아마도 최근에 사용자가 좀 늘어나면서 보고된 걸로 보인다. 전체 에러메시지는 아래와 같다. Fatal Exception: java.lang.NullPointerException android.webkit.WebViewClassic.setBaseLayer (WebViewClassic.java:5898) android.webkit.WebViewClassic.setNewPicture (WebViewClassic.java:11916) android.webkit.WebViewClassic$PrivateHandler.handleMessage (WebViewClassic.java:11099) android.os.Handler.dispatc..
안드로이드 화면을 켜진 상태로 유지하는 두 가지 방법이 있다.1. FLAG_KEEP_SCREEN_ON 플래그를 이용하는 방법 2. PowerManager를 이용하는 방법일단 대부분의 경우에는 1번의 방법을 사용하면 된다.OnCreate() 메서드 안에 아래 코드 한 줄만 추가해주면 된다. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 특별한 퍼미션도 요구하지 않고 쉽게 사용할 수 있지만 한가지 제약사항이 있다. 해당 액티비티가 백그라운드로 전환되면 화면 켜짐 상태가 더이상 유지되지 않는다. 화면을 항상 켜진 상태를 유지하도록 토글기능을 제공하는 위젯처럼 몇몇 특수한 경우에는 액티비티가 백그라운드 상태에 있더라도 화면을 계속해서..
예전에 사용하던 브라운관 TV는 알람 시간을 설정해 놓으면 그 시간에 TV가 켜져서 시끄럽고 의미없는 자명종이나 스마트폰 알람 대신에 사용을 했었다. 아침 뉴스를 듣다보면 자연스레 거기에 집중을 하게되고 잠에서 깨는 것도 어렵지 않았는데..새로 구입한 LED TV에는 알람 기능이없다. 주변 친구들한테 물어보니 대기업 제품을 사용중이라서 그런건지.. 다 알람기능이 있다고 한다. 스마트 TV에는 당연히 알람 기능이 들어있고. 어쩌면 중소기업 TV라서 그런지도 모르겠다. 아니 어쩌면 알람 기능을 필요로 하는 사람이 없어서 그런건지도.. 딱 필요한 기능만 넣어서 만들어봤다. IR센서 각도가 좁아서 방향을 잘 맞춰야 된다는게 조금 불편하기는 한데.. 뭐 하드웨어의 한계니깐 어쩔수가 없다. 이번에 만들면서 알게된건..
경고 표시 뜨는걸 강제로 무시하는게 좋은 방법은 아니지만, 경우에 따라서는 의도 된 코드인 경우가 종종있다. 공통으로 사용하는 유틸 클래스 같은경우.. 사용안하는 메소드가 있기도 하고, 접근 제한자에 대한 경고가 표시되기도 한다. https://gist.github.com/elevenetc/bf795f94aaf3e92169ef 위 링크에서 전체 SuppressWarnings 목록을 볼 수 있다. 내가 자주 사용하는 몇 가지에 대해서 정리해본다. ResultOfMethodCallIgnored 메서드의 호출의 결과값을 사용하지 않음 UnusedDeclaration 사용되지 않는 메서드 WeakerAccess 접근제한자 SuspiciousNameCombination 의심스러운 이름 결합 (width를 인자로 ..
안드로이드 공식 가이드에 나와있는 방법은 아래 링크를 참조Doze 및 앱 대기 모드 최적화 > 잠자기 및 앱 대기 모드로 테스트 ☞ https://developer.android.com/training/monitoring-device-state/doze-standby.html#testing_doze_and_app_standby 가이드 방법이 잘 나와있지만 내 경우에는 몇 가지 절차들이 필요했다. 초보자에 맞춰서 단계별로 방법을 소개한다. 1. error: more than one device/emulator 에러가 발생한 경우 $ adb kill-server $ adb start-server 위 명령을 실행하면 해결된다.만약 위 명령으로 해결이 안된다면, 명령어를 입력할 때 에뮬레이터를 직접 지정하는 방..
조금 지난 이야기인데 한 번 해보려고 한다. 생애 처음으로 앱을 출시하면서 겪은 이야기다. 참고로 안드로이드 앱이다. 두 번째 앱까지 출시한 지금은 앱 등록하는게 별거 아니지만 처음 할 때는 참 어려웠다. 아, 스토어 등록정보 작성하는건 지금도 너무 어렵다. 글쓰는 재주가 없어서 그런 것 같다. 글쎄다.. 내 나름의 판단으로는 첫 번째 앱이었지만 꽤 성공적이었다고 생각했다. 처음에는 반응이 없었지만, 이건 모든 앱이 공통적으로 겪는 일인 것 같다. 구글 플레이에서 검색결과 노출 알고리즘을 모르겠지만 처음 출시하면 순위가 꽤 낮다. 계속 업데이트 하다보면 어느 순간 순위가 오르는데 순위가 슬금슬금 오를수록 다운로드 수도 점점 증가한다. 그렇게해서 내 앱을 대표하는 키워드로 검색했을 때 검색결과 네 번째 순..
지난번 글에서 이야기 했던 것 처럼 새로운 개발PC를 주문했다. 정확하게 이야기 하자면 CPU, 메인보드, 램 이렇게 부품을 업그레이드 하는거다. 솔직히 저거 교체하는게 PC 새로 사는거나 마찬가지지. 이전글 보기 ☞ 2016/08/30 - [전업개발자 이야기] - 개발용 PC를 주문했다.아주 오래전에 인텔 펜티엄3 888MHz CPU 이후로 처음 써보는 인텔 CPU다. 그동안은 돈 없는 거지라서 AMD만 썼었는데 이번에는 단순 개인사용 용도로 구입하는게 아니고 안드로이드 앱 개발 목적이라서 일부러 인텔 CPU로 주문을 했다. 안드로이드 에뮬레이터가 AMD CPU의 가상화 명령을 지원하지 않아서.. 택배왔다. 구입은 '디스컴'이라는 곳에서 했다. 현금가로 살 때는 여기가 진짜 싸더라. (업체에서 따로 받..
안드로이드 인앱구매 기능을 개발하다가 바보 같이 실제 결제처리를 해버렸다. 실제 돈이 왔다갔다 하는거라서 개발문서 꼼꼼히 읽어보고 구글링 하면서 어떻게 하는건지 잘 파악했다고 생각했는데.. 바보 같이 테스터 e-mail 등록하는걸 깜빡했다.테스트 하면서 '어? 이거 뭔가 진짜 결제되는 것 같은 느낌인데?'라는 생각이 들었지만 실제 결제를 진행해본 경험이 없어서 이게 진짜로 실결제인지를 몰랐다. 실결제와 동일하게 진행되고 청구만 안되는건 줄 알았다. 지금 생각하니깐 되게 바보 같았네..참고로 테스터 e-mail 등록은 "개발자 콘솔"에서 [설정] > [계정 세부정보] 메뉴로 이동한 뒤 "테스트 권한이 있는 Gmail 계정"에 추가해주면 된다. 아래에서 설명하는 내용은 잘못 결제한 구매를 환불처리 하는 방법..
영문 윈도우10 사용자를 대상으로 하는 글입니다. 영어랑 좀 친해져 볼 생각으로 윈도우의 언어를 영어로 변경했다. 시스템 언어를 변경했더니 약간의 문제가 생겼다. 안드로이드 스튜디오의 UI 텍스트가 아래 이미지처럼 깨져서 나왔다. 딱 보니깐.. 한글만 저렇게 네모로 깨져서 보인다. 아마도 윈도우 시스템 언어를 변경하면서 안드로이드 스튜디오에서 사용하는 UI 폰트가 변경되었나보다. 해결하는 방법은 안드로이드 스튜디오 UI 텍스트에 사용하는 폰트를 변경해주면 된다. (한글이 정상적으로 표시되는 폰트로..) 안드로이드 스튜디오의 셋팅 메뉴로 들어간다. 위치는 [File] > [Settings].셋팅 화면에서 [Appearance & Behavior] > [Appearance]로 들어간다. (위 이미지에서 왼쪽..
AMD CPU쓰는 거지라서 안드로이드 스튜디오에 내장 된 에뮬레이터는 거의 사용이 불가능하다. (가상화를 지원하지 않기 때문에 인텔 CPU에 비해서 10배는 더 느리다.)안드로이드 앱을 개발하거나 테스트 할 때는 실제 디바이스를 이용하는데 모든 버전의 안드로이드 기기를 가지고 있지 않다보니깐 특정 버전에 문제가 되는 오류를 수정하고 테스트 해볼수가 없다. 이번에 문제가 생긴 부분은 안드로이드 마시멜로 버전의 권한 관련된 문제. 마시멜로부터는 사용자가 앱별로 권한을 부여하거나 거부하는게 가능하다고 하는데 아마도 사용자가 권한을 거부해서 발생한 문제인 것 같다. 나는 마시멜로 버전의 안드로이드 폰이 없어서 지니모션이라는 에뮬레이터를 사용해보려고 했는데(이게 평이 좋더라..) 이게 무료가 아니었네?? (꽤 많..
매번 쓸 때 마다 찾아보는게 귀찮아서 블로그에 남김..왜 이렇게 안외워지냐..-_-;; 안드로이드버전 명칭(영문) 명칭(한글) API버전 2.3 GINGERBREAD 진저브레드 10 4.0 ICE CREAM SANDWICH 아이스크림 샌드위치 15 4.1 JELLY BEAN 젤리빈 16 4.2 JELLY BEAN 젤리빈 17 4.3 JELLY BEAN 젤리빈 18 4.4 KITKAT 킷캣 19 5.0 LOLLIPOP 롤리팝 21 5.1 LOLLIPOP 롤리팝 22 6.0 MARSHMALLOW 마시멜로 23 7.0 NOUGAT 누가 24 7.1 NOUGAT 누가 25 8.0 OREO 오레오 26 8.1OREO오레오27 9.0PIE 파이 28 내가 개발할 때 주로 사용하는 minSdkVersion은 15. ..
안드로이드에서 날짜를 출력하는 경우 "yyyy", "MM", "dd" 같은 포맷 지정문자를 이용해서 원하는 형식으로 날짜를 가져올 수 있다. (날짜 포맷 지정 문자에 대한 자세한 내용은 여기를 참조)사용자에게 보여지지 않고 내부적으로 사용하거나 특정 국가 한정으로 개발하는 앱이라면 위 형식으로도 충분하지만 "다국어지원"을 염두해 둔다면 결코 좋은 방법이 아니다. 한국에서는 "년-월-일" 순서의 날짜표기를 사용하지만, 미국의 경우에는 "월-일-년"으로 출력하는 순서가 서로 다르다. 로케일로 구분해서 포맷을 달리 적용해서 해결 할 수도 있겠지만 아래 코드를 이용하면 매우 깔끔하게 해결이 가능하다. Calendar cal = Calendar.getInstance(); // the value to be form..
안드로이드 앱을 개발할 때 프로그래밍을 통한 방법으로 스마트폰의 이름을 구할 수 있는 방법 몇가지를 소개한다. 최신기기와 구형기기에서 사용할 수 있는 방법에 차이가 있다. 사용자 기준에서 가장 쉽게 "내 스마트폰"을 구분할 수 있는 방법을 제공해주는게 목표인데, 구형기기에서는 한계가 있었다.개발환경은 아래와 같다. - 스마트폰1 : 삼성 갤럭시s2, 젤리빈 - 스마트폰2 : LG G2, 롤리팝 1. android.os.Build 정보를 이용하는 방법 개발자 입장에서는 제일 편한 방법이라고 할 수 있다. 퍼미션도 필요없고, 별도의 절차도 없다. 그냥 상수처럼 가져다 쓸 수 있다. 사용방법이 너무 간단해서 따로 설명할 것도 없다. 코드는 아래와 같다. String tmpStr = ""; tmpStr += "..
사용환경에 대해서 먼저 설명하자면, 아래와 같다. OS : Windows10 64bit IDE : 안드로이드 스튜디오(Android Studio) 1.5.1 Device : LG G2, 롤리팝(Lollipop) 윈도우10에서는 스마트폰의 드라이버를 자동으로 설치해주기 때문에 별도의 드라이버를 다운받아서 설치할 필요가 없다. (모든 스마트폰에 다 해당되는지는 모르겠지만, 일단 내가 가지고 있는 LG G2와 삼성 갤럭시s2의 경우에는 바로 인식이 되었다.) 스마트폰(G2)을 연결했는데 안드로이드 스튜디오에서 장치가 표시되지 않는다.스마트폰 설정 메뉴의 [개발자 옵션]에서 [USB 디버깅] 옵션은 당연히 선택 한 상태. 여기서 몇가지 추가적인 설정을 해줘야 정상적으로 연결이 된다. 스마트폰을 PC와 연결하면 ..
안드로이드에서 특정 날짜의 요일은 Calendar 객체의 get 함수를 통해서 int 형식으로 얻을 수 있다. 그렇다면 int 타입의 요일에 해당하는 요일이름은 어떻게 구할까?String 배열을 미리 선언해서 int 타입의 요일을 인덱스로 요일명을 구할 수 있지만 아래 두가지 면에서 그다지 좋은 방법은 아니다. 1. 추가적인 배열을 필요로 한다. 2. 사용언어가 바뀌면 프로그램 소스코드도 변경해야 된다.위 문제를 해결할 수 있는 방법이 있다. 코드는 아래와 같다. String weekDay; // SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US); // 특정 언어로 출력하고 싶은 경우 SimpleDateFormat dayFormat..
내가 좋아하는 시리즈다.'ㅇㅇㅇ이 보이는 그림책' 시리즈일단 책이 얇고 그림도 많아서 가볍게 볼 수 있다.당연히 깊은 내용은 다루고있지 않고, 내용은 수박 겉 핥기 식이지만. 내가 좋아하는 공부방법이다.일단 쉬운책으로 가볍게 보면서 대략적인 개념을 잡고, 그 뒤에 두꺼운 책으로 다시한번 본다. 처음 공부했던 프로그래밍 언어인 'C언어'도 이런식으로 입문했다.'C가 보이는 그림책'이 내가 처음 본 책이었고, 그 뒤에 'Teach yourself C'로 깊은 내용까지 파악한다. 일단 내용은 전반적인 부분을 가볍게 다루고 있다. Java 언어에 대한 섹션도 있지만.. 자바만 해도 두꺼운 책 한 권 분량인데.. 여기서 다뤄봤자 얼마나 다루겠는가..기본적으로 Java 언어는 알고있는 상태에서 보기를 추천한다. 안..
이것이 안드로이드다 - 박성근의 안드로이드 앱 프로그래밍표지만 보면 게임개발 관련된 책이 아닌가 싶지만 게임과는 전혀 관련없는 안드로이드 개발 입문서이다.안드로이드 입문서를 찾던 중 네이버 평점이 꽤 높길래 구입하게 됐다. 안드로이드로 책검색 했을 때 판매량순으로 네 번째에 랭크되어있다. 글 제목에 썼듯이 이 책은 안드로이드 입문자를 대상으로 한 책이다. 책에서 사용 된 예제들도 정말 쉽게 되어있다. 저자가 최대한 눈높이를 낮춰서 설명하려 노력한게 책에서 느껴진다. 몇 군데 중요한 오류가 있긴한데 저자의 카페를 통해서 정오표를 제공하기 때문에 일단 그 것 부터 확인하는걸 추천한다. 아무리 입문자를 대상으로 했다고는 하지만 기본적으로 프로그래밍 경험이 없으면 곤란하다. Java 언어는 기본적으로 알고있는 ..