2017/09 23

안드로이드 SDK 번호와 버전 정리

그때그때 항상 검색해서 찾아서 보는게 싫어서 직접 작성해 둡니다. 정보는 아래 링크에서 가져옵니다. http://developer.xamarin.com/guides/android/application_fundamentals/understanding_android_api_levels/ Released Android Version API Level Name August 2017 Android 8.0 26 Oreo December 2016 Android 7.1 25 Nougat August 2016 Android 7.0 24 Nougat August 2015 Android 6.0 23 Marshmallow March 2015 Android 5.1 22 Lollipop November 2014 Android 5..

안드로이드 Mixed Content The page at was loaded over HTTPS

안드로이드 Webview를 이용하다 보면 Mixed Content: The page at ‘Https주소’ was loaded over HTTPS 란 로그를 볼수 있습니다. 이렇게 되었을경우 대략적으로 이미지가 Http일 경우가 많은데 이미지가 보이지 않거나 깨져 보일수가 있습니다. 이 경고 메세지는 Https 사이트에서 Http를 사용하여 발생하는 이슈로 보입니다. 이럴때는 웹뷰에 아래와 같은 코드를 넣어주시면 되겠습니다. webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

안드로이드 라이브러리 등록(2.aar 파일 프로젝트 등록)

이번에는 이전 글에서 만들었던 aar파일을 프로젝트 등록 및 사용을 해보도록 하겠습니다. aar파일을 프로젝트에 등록하는 방법은 굳이 만들었던 파일을 프로젝트 안으로 옮기지 않아도 가능합니다. 안드로이드 스튜디오 메뉴에서 File > Project structure 클릭 후 뜨는 창 > 좌측상단 +버튼 을 클릭하여 Import .JAR/.AAR Package를 클릭하여 aar파일을 등록하여 주셔야 합니다. aar파일을 등록한 후 gradle에서 자신의 aar파일을 입력하여 주시면 되겠습니다. compile project(':라이브러리 파일명') //확장자 필요없음 자 이렇게 까지 하였다면 정상적으로 등록이 되었습니다. 이제 직접 만들었던 함수가 있는지 확인해 보시면 될것입니다. 저는 정상적으로 잘 나옵니다.

안드로이드 라이브러리 만들기(1.aar 파일 생성)

Android Studio를 이용하여 라이브러리 파일(aar 파일)을 생성하고 사용하여 봅시다. 우선 샘플인 코드를 하나 만들어 보도록 하겠습니다. 기본적으로 프로젝트를 만들어 보겠습니다. 프로젝트는 평소 사용하듯이 만들어 주시면 됩니다. 괜히 쓸대없는 파일이 안늘어 나도록 add No Activity만 선택하여 주시면 되겠습니다. 프로젝트를 만든후 테스트할 코드를 작성합니다. 저는 아래와 같이 현재 네트워크 상태를 체크하는 함수를 사용해봤네요. public static int getConnectivityStatus(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNEC..

안드로이드 절전모드 체크(위젯 Timeout)

안드로이드에서 절전모드를 실행시키면 화면밝기, 해상도, 백그라운드 네트워크를 제한하네요.. 제가 절전모드를 사용하는지도 모르고 위젯에서 통신시 TimeOut 나는 현상을 하루종일 찾아봤네요...전 반쪽자리 개발자 인가 봅니다. 현상을 재현하기도 어려웠던게 개발자이다 보니 항상 디바이스에 잭을 꽂아 놓으니 재현하기 어려웠습니다.(절전모드를 실행하여도 디바이스가 충전중일땐 예외로 되는거 같아요.) 이 이부분으로 인하여 앱의 로직도 조금은 수정을 해야했습니다. //절전모드 체크 PowerManager powerManager = (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE); if (android.os.Build.VERSION.SDK_..

안드로이드 사이드바 생성

안드로이드 사이드바 만들기입니다. 사이드바를 생성하는 방법은 여러가지가 있습니다. 정답이 없죠. 자신이 원하는, 생각하는 구조 형태마다 다르게 생성할수 있을것 입니다. 코드와 함께 차근차근 따라해 보시길 바랍니다. 따라서 완성하시면 아래와 같이 보이실 것입니다. 1. 사이드바 xml생성입니다. 샘플에 들어있는 이미지들은 따로 첨부안할게요...쓰고 싶은 이미지들 다운받아 쓰셔요. 2. 사이드바 CustomView를 만들어 줍니다. public class SideBarView extends RelativeLayout implements View.OnClickListener{ /** 메뉴버튼 클릭 이벤트 리스너 */ public EventListener listener; public void setEventL..

Webview를 이용한 APP간 통신[Scheme, Androidbridge]

안드로이드 WebView 사용시 앱과 웹간에 특정한 값을 주고 받아서 값을 해결해야 할 경우가 엄청나게 많이 있습니다. 네이티브영역으로 되어있는 Activity로 이동을 해야한다던지, 카메라기능을 연다던지 할 경우 웹페이지에서 앱의 모든 기능을 사용할수 없기때문이죠. 위와 같은 기능을 해야할 경우가 딱! 웹앱간 특정값을 주고 받는 일이 일어나서 그값에 따라서 동작을 해야하는 경우지요. 웹과 앱 사이에 데이터를 주고 받는 패턴이 2가지가 있습니다. 하나는 스킴(SCHEME)값을 이용한 방법과 두번째는 안드로이드 브릿지를 이용한 호출이 되겠는데요. 제가 최초 하이브리드 앱 개발시에는 안드로이드 브릿지를 이용한 호출 방법을 이용했습니다. 웹 개발자 분도 저에게 어떻게 값을 줘야하는지 몰라서 제가 구글링을 하다..

REST API 테스트 툴[ARC]

내가 만든 API가 정상적으로 잘 작동하고있는가? 라는 의문이 들때가 있다. 특히 이 API는 웹개발자도 앱개발자도 이게 잘 작동하는지 확인이 필요할 경우 쓰면 좋은거 같다. 일단 크롬이 설치되어있어야 합니다. 크롬이 설치되어있다면 좌측 상단에 앱 클릭 -> 앱스토어 클릭 -> ARC 검색후 설치하시면 되겠습니다. ☟ ☟ 위의 이미지대로 설치하여 실행을 하시면 아래와 같이 보일것입니다. 밑에 Setting 부분도 있지만 한번도 건드려 본적이 없네요. 저는 간단하게 History 밑 API 실행정도밖에 사용하지 않습니다. 보시는데로 GET, POST, PUT, DELETE 가 있고 헤더값 셋팅과 POST API사용시 Data form을 클릭하여 데이터를 넣어서 API를 테스트 해볼수 있습니다.

IT 2017.09.13

안드로이드 웹뷰에서 pdf파일 열기[Webview PDF]

안드로이드 하이브리드앱을 작업하다보면 .PDF 다운받거나 웹에있는 파일을 열어서 보여줘야하는 상황이 생긴다. 막상 그냥 PDF파일을 url로 열경우 이상하게 깨지거나 하는등의 문제점등이 발생한다. 그래서 웹뷰에서 PDF파일을 열어 보기 위해서 특별한 작업을 해줘야 하는데 웹개발자가 data를 던저주는 형식에 따라 조금 달라지는거 같다. 첫번째 웹 개발자가 PDF에 대한 url을 storage/product/brochures파일명.pdf 이런 형식으로 준다면 docs.google.com/gview?embedded=true&url= loadUrl("https://docs.google.com/viewer?url=" +data);

안드로이드 애니메이션 코드[Android Animation]

두번째 안드로이드 애니메이션 작업에 대한 글입니다. 이전 글에서 Xml을 이용한 안드로이드 애니메이션 처리방법이었습니다. 이번에는 오직 코드로 작업하는 방법에 대해서 바로 설명 드리겠습니다. Translate 는 TranslateAnimation 이란 함수를 이용하고 Alpha는 AlphaAnimation 함수를 이용합니다. 샘플 코드로 설명드리겠습니다. TranslateAnimation animation = new TranslateAnimation(0, fromX , 0, fromY); animation.setDuration(3000); animation.setFillAfter(false); animation.setFillEnabled(true); animation.setAnimationListener..

1 2 3