목록프로그래밍/안드로이드 (43)
개발자 블로그
이틀 연속으로 해당 에러가 리포팅 되었다. 한번도 보고되지 않았던 에러인데.. 아마도 최근에 사용자가 좀 늘어나면서 보고된 걸로 보인다. 전체 에러메시지는 아래와 같다. 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); 특별한 퍼미션도 요구하지 않고 쉽게 사용할 수 있지만 한가지 제약사항이 있다. 해당 액티비티가 백그라운드로 전환되면 화면 켜짐 상태가 더이상 유지되지 않는다. 화면을 항상 켜진 상태를 유지하도록 토글기능을 제공하는 위젯처럼 몇몇 특수한 경우에는 액티비티가 백그라운드 상태에 있더라도 화면을 계속해서..
경고 표시 뜨는걸 강제로 무시하는게 좋은 방법은 아니지만, 경우에 따라서는 의도 된 코드인 경우가 종종있다. 공통으로 사용하는 유틸 클래스 같은경우.. 사용안하는 메소드가 있기도 하고, 접근 제한자에 대한 경고가 표시되기도 한다. 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 위 명령을 실행하면 해결된다.만약 위 명령으로 해결이 안된다면, 명령어를 입력할 때 에뮬레이터를 직접 지정하는 방..
안드로이드 스튜디오.. Stable 버전이라고 해서 다운받았는데 늘 업데이트 할 때 마다 문제가 생긴다. 2.1 버전으로 업데이트 했을 때도 한글이 네모 모양으로 깨지는 현상이 발생했고, 이 때는 레이아웃 프리뷰 화면에서 API 버전을 "24"가 아닌 낮은 버전(예를 들면 "23")으로 변경하면 한글이 정상적으로 표시 되었다.2.2 버전으로 업데이트 한 뒤에... 역시 또 문제가 생겼다. (이쯤 되면 업데이트 하기가 참 불안해진다...) 지난번 버전에서 발생한 것 처럼 또 한글이 깨진다. 이번에는 API 버전을 바꿔봐도 소용이 없다.해결방법은 있다! 잘 설명된 블로그가 있어서 링크로 대체한다.Android Studio 2.2에서 Layout Preview 한글 깨짐 현상 해결 방법 : http://thd..
안드로이드 인앱구매 기능을 개발하다가 바보 같이 실제 결제처리를 해버렸다. 실제 돈이 왔다갔다 하는거라서 개발문서 꼼꼼히 읽어보고 구글링 하면서 어떻게 하는건지 잘 파악했다고 생각했는데.. 바보 같이 테스터 e-mail 등록하는걸 깜빡했다.테스트 하면서 '어? 이거 뭔가 진짜 결제되는 것 같은 느낌인데?'라는 생각이 들었지만 실제 결제를 진행해본 경험이 없어서 이게 진짜로 실결제인지를 몰랐다. 실결제와 동일하게 진행되고 청구만 안되는건 줄 알았다. 지금 생각하니깐 되게 바보 같았네..참고로 테스터 e-mail 등록은 "개발자 콘솔"에서 [설정] > [계정 세부정보] 메뉴로 이동한 뒤 "테스트 권한이 있는 Gmail 계정"에 추가해주면 된다. 아래에서 설명하는 내용은 잘못 결제한 구매를 환불처리 하는 방법..
영문 윈도우10 사용자를 대상으로 하는 글입니다. 영어랑 좀 친해져 볼 생각으로 윈도우의 언어를 영어로 변경했다. 시스템 언어를 변경했더니 약간의 문제가 생겼다. 안드로이드 스튜디오의 UI 텍스트가 아래 이미지처럼 깨져서 나왔다. 딱 보니깐.. 한글만 저렇게 네모로 깨져서 보인다. 아마도 윈도우 시스템 언어를 변경하면서 안드로이드 스튜디오에서 사용하는 UI 폰트가 변경되었나보다. 해결하는 방법은 안드로이드 스튜디오 UI 텍스트에 사용하는 폰트를 변경해주면 된다. (한글이 정상적으로 표시되는 폰트로..) 안드로이드 스튜디오의 셋팅 메뉴로 들어간다. 위치는 [File] > [Settings].셋팅 화면에서 [Appearance & Behavior] > [Appearance]로 들어간다. (위 이미지에서 왼쪽..
매번 쓸 때 마다 찾아보는게 귀찮아서 블로그에 남김..왜 이렇게 안외워지냐..-_-;; 안드로이드버전 명칭(영문) 명칭(한글) 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..
※ 개발 PC의 CPU가 AMD 모델인 경우에만 해당되는 글 입니다. ※ 이미지는 클릭하면 확대됩니다. 개발PC를 윈도우10으로 업그레이드 한 뒤 안드로이드 스튜디오(Android Studio)를 다시 설치했다. 정상적으로 동작하지 확인하기 위해서 테스트 어플리케이션을 만들고 안드로이드 가상머신(AVD)에서 돌려보기 위해서 실행했는데 아래와 같은 에러가 발생했다. 에러메시지의 내용을 해석하면, x86 에뮬레이션이 하드웨어 가속을 필요로한다. 인텔 HAXM이 현재 설치되어있고 사용가능한지 확인하라. CPU 가속 상태 : HAX 커널 모듈이 설치되지 않음. Intel x86 에뮬레이터 가속기(HAXM installer)는 이미 설치가 되어있다. (근데 난 어차피 AMD CPU인데..??)설치여부 확인은 SD..