본문 바로가기

안드로이드

[안드로이드] onPurchaseFinished() 메서드가 호출되지 않는 경우 인앱결제 v3(In-App Billing, v3)가 문제가 종종 발견되는군요, 이번에 포스팅할 내용은 문제라고 하기엔 좀 그렇지만 인앱결제 구현시 빼먹기 쉬운 내용입니다. 처음 인앱결제를 구현하시는 분들은 인앱결제에 관련된 또다른 이슈를 해결하는 방법도 참고하시면 좋을 듯 합니다. 2014/07/02 - [Development Note/JAVA] - [안드로이드] 인앱결제 (In-App Billing, v3) IllegalArgumentException 해결방법 In-App Billing v3를 구현하다 보면 IapHelper.OnIabPurchaseFinished() 메소드를 오버라이드하게 됩니다. 이 메소드는 인앱구매창에서 인앱구매가 성공(혹은 실패)한 경우에 호출되는 콜백베소드입니다. 인앱구매가 완.. 더보기
[안드로이드] 코드만으로 버튼 만들기 안드로이드에서 레이아웃 위에 버튼을 만들기 위해서 보통 xml 편집기를 사용합니다. 하지만 때때로 xml편집기는 너무 느리고, 짜증나게 하죠. 안드로이드 앱의 레이아웃상에 코드만을 이용해서 간단한 버튼을 생성하는 법을 알아보겠습니다. onCreate(){ Button mButton = new Button(this); //버튼을 선언 LayoutParams pm = new LayoutParams(); //레이아웃파라미터 생성 pm.width = LayoutParams.WRAP_CONTENT; //버튼의 너비를 설정(픽셀단위로도 지정가능) pm.height = LayoutParams.WRAP_CONTENT; //버튼의 높이를 설정(픽셀단위로도 지정 가능) pm.gravity = Gravity.CENTER; .. 더보기
[안드로이드] 인앱결제 (In-App Billing, v3) IllegalArgumentException 해결방법 안드로이드 인앱 결제 최신버전(v3)을 앱에 적용하면 액티비티를 종료할 때 다음과 같은 에러 메시지를 볼 수 있습니다. java.lang.RuntimeException: Unable to destroy activity {com.package.application/com.package.applicationname.MainActivity}: java.lang.IllegalArgumentException: Service not registered: com.package.applicationname.IabHelper$1@b1d79398 //가독 편의성을 위해서 줄바꿈을 했습니다 해당 IllegalArgumentException은 인앱결제가 적용된 앱 내의 IabHelper.java 클래스를 수정해주면 해결됩니다.. 더보기
[안드로이드] 안드로이드 키보드 완료 버튼 클릭 시 이벤트 안드로이드 개발을 하다 보면 키보드 액션에 특정 이벤트를 주고 싶은 때가 있습니다. 이를테면 키보드의 완료 버튼을 누르면 키보드가 사라지면서 다음 화면으로 넘어간다던지 하는 등의 이벤트죠. 이런 경우에 사용할 수 있는 안드로이드 API가 있습니다. OnEditorActoinListener 가 그것입니다. OnEditorActionListener는 네 가지 단계에 걸쳐 프로젝트에 적용할 수 있습니다. 1. 해당 클래스에 OnEditorActionListener 인터페이스를 implement한다(OnEditorActionListener를 import한다). 2. onEditorAction() 메소드를 오버라이드한다. 3. onEditorAction() 메소드 내에 조건을 주고, 원하는 이벤트를 작성한다. 4.. 더보기
[안드로이드] 안드로이드 SDK 업데이트후 ADT 실행 오류 ADT(혹은 이클립스)를 이용해서 안드로이드 앱 개발을 하는 분들에게 유용한 문제 해결 팁입니다. 안드로이드 SDK를 최신 버전으로 업데이트 할 경우, ADT는 [Help > Check for Updates] 항목을 통해 ADT를 업데이트 하라는 다이얼로그를 출력합니다. 그래서 지시한 대로 [Help > Check for Updates]를 클릭하면 업데이트할 항목이 없다는 의미로 다음 다이얼로그를 출력합니다. No updates were found 그리고 팩키지 로드가 제대로 이루어지지 않아 멀쩡하던 프로젝트는 에러투성이가 되어 있습니다. 이와 같이 SDK는 업데이트 했으나 ADT가 업데이트 되지 않는 경우, [Help > Install New Software] 항목으로 갑니다. 그리고 [Work wit.. 더보기
[안드로이드] 액티비티 화면을 가로, 혹은 세로로 고정하기 안드로이드 앱을 개발하다 보면 부득이하게 액티비티 화면을 가로, 혹은 세로로 고정해야 할 때가 있습니다. 예를 들자면 게임의 경우는 대부분 가로모드로 고정이 되어 실행되죠. 물론 액티비티 화면을 세로 모드로 고정해야 할 때도 있습니다. 화면의 레이아웃이 가로, 혹은 세로 모드에 최적화되어 있는 경우에는 부득이하게 화면의 회전을 강제로 막아야만 합니다. 가로 모드는 Landscape, 세로 모드는 Portrait가 정식 명칭입니다. 안드로이드 액티비티의 화면을 Landscape 혹은 Portrait로 고정하고 싶은 경우, 두 가지 방법이 있습니다. 첫번째는 Manifest 파일에서 Activity에 screenOrientation 속성을 주는 방법이고, 두번째는 안드로이드 액티비티의 onCreate() 메.. 더보기
이클립스(Eclipse) 'could not write file: ~.classpath' 에러(Error) 해결방법 이클립스(Eclipse) 'could not write file: ~.classpath' 에러(Error) 해결방법 [ENG] How to solve the problem: 'could not write file: ~.classpath' 이전 포스트에서도 밝혔듯, 저는 맥 플랫폼에서 안드로이드 개발을 쭉 해 왔습니다. 이번에 안드로이드 프로젝트들을 윈도우 플랫폼으로 마이그레이션 하는 과정에서 몇 가지 이슈가 발생했는데요, import 과정에서 발생하는 다음과 같은 에러가 그 중 하나입니다. [ENG] As I mentioned at last post, I am using Mac for Android development. Recently I tried to migrate every android proj.. 더보기
안드로이드 개발환경 준비하기 [How to prepare Android Development environment] 본래 정석으로 정해진 것은 아니지만, 통상적으로 안드로이드 앱 개발은 윈도우에서 하는 경우가 많습니다. iOS 개발이 맥에서 이루어지는 것처럼 뭔가 자연스럽다고 할까요? (iOS는 맥에서만 개발이 가능합니다) 여러 개발자들의 이야기를 들어보면 그냥 그게 편하다더군요. 제 경우에는 맥에서 안드로이드 개발을 해 왔습니다. 특별히 불편한 점은 못 느꼈지만, 다들 한다길래 저도 윈도우로 안드로이드 개발 환경을 옮기려고 합니다. 이제 저의 맥에서는 iOS 개발을 준비하려고 하죠. 개발 환경을 분리한다고 할까요? 별로 큰 의미는 없지만 그냥 이원화하고 싶었습니다. [ENG] There's no rules, but normally android developers use windows-based computer. I.. 더보기
넥서스7, 올킬은 못해도 팀킬은! Nexus 7 by John Biehler 넥서스7, 7인치 타블렛의 초신성으로 등장하다 구글 넥서스7, 7인치 타블렛Tablet의 초신성인 넥서스7에 대한 관심이 국내외에서 매우 높습니다. 아마도 넥서스7에 대한 이런 불꽃같은(?)관심은 7인치 태블릿임에도 가격이 무척 저렴한 US달러 기준 249달러이기 때문인 것 같습니다. 그렇다고 '저렴한 태블릿'이라고 부르기엔 사양이 굉장히 높습니다. 넥서스7은 7인치 태블릿으로, 아이패드iPad 및 뉴아이패드에 비해 훨씬 더 가볍고 작기 때문에 전자책, 내비게이션 대용으로 사용되기에 충분한 편의를 제공할 것으로 보입니다. 물론 넥서스7은 최초의 쿼드코어 태블릿인 만큼 사양도 출중한 편입니다. 거기에 더해서, 넥서스7은 저렴한 가격이라는 카드까지 사용하면서 폭풍관.. 더보기
구글 넥서스7, 늦었지만 괜찮아. 모든 걸 용서할게. 구글의 레퍼런스 디바이스, 넥서스7 얼마전 구글Google에서 넥서스7 Nexus7을 발표했습니다. 넥서스가 무어냐고 묻는 여러분은 없으리라 생각합니다(각주참조). 네 번째 레퍼런스Reference 디바이스인 넥서스7의 제조사로 구글은 아수스ASUS를 낙점했습니다. 지금까지 구글은 HTC, 삼성Samsung 등의 제조사와 레퍼런스 디바이스를 생산 해 왔었고, 이번에는 어떤 이유에선지, 삼성이 아닌 아수스를 택해 넥서스7을 제조, 발표하였습니다. 기술력으로는 삼성이 한참 위였을텐데 말이죠. 개인적인 생각으로는 아마 구글은 삼성과 함께 넥서스7을 제작하기 원했지만 판매가격면에서 타협하기가 힘들지 않았을까 합니다. 어쩌면 구글이 지난 모토로라 인수 건 이후로 촉각이 곤두선 안드로이드 디바이스 제조사들을 다독이.. 더보기