728x90

IT/Android 49

[Android] Kotlin + RxJava + Retrofit + OkHttp 로 http 통신하기

이번 포스팅은 Kotlin + RxJava2 + Retrofit2 + OkHttp3 를 이용하여 HTTP 웹 통신을 하는데, Json 결과로 주고 받는 내용입니다. 예제는 Github의 Contributor 를 불러올 수 있는 API로 구성되어 있습니다. 완성된 예제는 https://github.com/ldhcjs/KotlinOKHttpRetrofitRxJava 에서 보실 수 있습니다. 바로 본론부터 들어갑시다. App 모듈의 build.gradle 은 아래와 같은 라이브러리가 추가되어야 합니다. 2019년 8월 기준 가장 최신 라이브러리로 구성되었습니다. 가끔 호환성 에러가 날 수 있는데 그럴 경우 이번 버전의 라이브러리로 교체해야 할 수도 있습니다. // App 모듈의 build.gradle depe..

IT/Android 2019.08.12

[Android] Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $ 에러

이 에러는 아래의 글과 거의 비슷한 에러이다. 에러 처리 또한 비슷한데, 에러 메시지가 아주 약간 달라서 따로 포스팅한다. [Android] jsonSyntaxException Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 에러 해결, Json 파싱 처리 JSON 형식의 데이터를 다루다보면 위의 에러를 간혹 접할 수 있다. 위의 에러의 원인은 GSON으로 JSON데이터를 파싱할 때 형식이 맞지 않아서 발생하는 에러이다. 문제의 원인을 살펴보자. 일반적인 JSON의 데이터.. like-tomato.tistory.com 결론부터 얘기하면 이 에러의 문제도 Json을 파싱할 때 형식을 제대로 맞추지 못해서 발생하는 문제이다. 위 링크의 글의 해결방..

IT/Android 2019.08.09

[Kotlin] 코틀린에서 변수 타입 ? 는 무엇을 의미 하는가

안드로이드 개발을 하면서 코틀린을 배울 필요가 생겨나서 요즘 계속 코틀린에 대한 공부를 하고 있다. 코틀린 코드를 보다면서 간혹 아래와 같은 코드가 보이게 된다. val languageName: String? = null 위의 코드 예제처럼 변수를 선언할 때 타입 뒤에 ?를 붙이는 경우이다. ?의 의미는 languageName 변수를 String 으로 선언을 하는데, String 의 값도 가질 수 있고, Null 값을 가질 수도 있다는 의미다. 그래서 만약 아래와 같이 코딩을 한다면 컴파일 시 에러가 발생한다. // Fails to compile val languageName: String = null 이런 경우의 의미는 타입 뒤에 ?가 없기 대문에 languageName은 Null 값을 가질 수 없다...

IT/Android 2019.08.01

[Kotlin] Not enough information to infer type variable T 에러

Kotlin으로 안드로이드 프로그래밍은 처음 시작한다면 이 에러를 거의 100% 확률로 접할 수 있다. 물론 초기만 당하고, 한 번 당해보면 그 뒤부터는 당할 일이 없는 에러이기도 하다. 위의 에러를 직역해본다면 다음의 뜻이다. "정보가 불충분하여 변수 T에 대한 타입을 추론할 수 없다." 실제 빌드타임에 에러는 아래와 같이 발생한다. C:\workspace\testkotlin1\app\src\main\java\com\testkotlin1\MainActivity.kt: (23, 13): Type inference failed: Not enough information to infer parameter T in fun findViewById(p0: Int): T! Please specify it expli..

IT/Android 2019.07.31

KT 와이파이 핫스팟(테더링) 제한 풀기

스마트폰으로 테더링이나 핫스팟을 사용할 때.. 간혹 스마트폰이서 핫스팟이 안켜지는 경우가 있다. 켜지더라도 바로 꺼지는 현상이 나타난다거나, 핫스팟에 기기가 연결이 되도 인터넷이 안되거나 하는 증상이 나타난다. 이 문제는 통신사에서 핫스팟(테더링)을 막아서 발생하는 문제다. 설정 - 모바일네트워크 - 액세스포인트 에 가보면.. 아래와 같이 KT 테더링이라고 적힌 APN이 있다. APN에 tethering만 적힌 경우는 아래와 같이 .ktfwing.com 을 더 적어주도록 한다. 그리고 APN유형을 nodun 으로 변경하도록 하자. 그러면 핫스팟(테더링)이 정상적으로 켜지고 기기를 연결해도 인터넷이 잘 동작한다.

IT/Android 2019.07.23

[VoLTE] Pixel 2 XL 볼테 활성화를 위한 커스텀롬 설치하기(IMS, VoLTE)

결과. 실패. 큰픽셀2를 다시 구해서 가지고 놀아본다. Pixel 2 XL은 유일하게 KT망에서 VoLTE가 붙지 않고 있다. 카페나 구글링을 가이드 되어 있는 다양한 VoLTE 활성화 방법을 써봐도, SKT / LGU 만 VoLTE가 가능한 상황이다. 그러나 희망의 끈을 놓지 않고 계속 구글링하다가 발견한 한 줄의 글.. https://forum.xda-developers.com/showpost.php?p=79788457&postcount=178 의 코멘트를 읽어보면 Havoc 이라는 커롬을 올리고, 루팅 후, vendor/mbn에 SDM835 칩셋에 맞는 mcfg_sw.mbn 파일들을 밀어넣었더니 VoLTE가 된다는 글을 볼 수 있다. Havoc 롬을 찾아보니 기본적으로 build.prop에 VoLT..

IT/Android 2019.06.27

Android webview 사용 방법 및 팁(모바일 화면 맞추기, 줌 기능 사용)

안드로이드 개발을 하다 보면 웹뷰를 사용할 일이 종종 발생한다. 일반적인 웹페이지를 웹뷰로 불러들이면 폰 화면에 꽉 차게 나오는 것이 아니라 삐져 나가서 화면에 스크롤이 생기는 경우가 종종 있다. 또한 작은 스마트폰 화면으로 보기가 어려울땐 손가락 핀치로 줌 기능을 사용하고 싶을 경우가 있다. 위 2가지 경우에 대한 팁을 적어본다. 아래의 코드 블럭에서 적절히 가져가다 사용하도록 하자. import android.webkit.WebView; import android.webkit.WebViewClient; WebView mWebview = findViewById(R.id.webview); // Initial webview mWebView.setWebViewClient(new WebViewClient())..

IT/Android 2019.06.13

프래그먼트에서 백키로 이전 프래그먼트로 이동하기(Go to the previous Fragment by backKey)

Fragment(프래그먼트)를 사용하다보면 백키를 눌렀을 때 이전에 보여졌던 프래그먼트로 이동하고 싶을 경우가 있다. 이에 관련하여 구글링을 하다보면 인터페이스를 선언해서 프래그먼트에 리스너를 생성하고 메인 액티비티에서 해당 리스너가 NULL이 아닐 경우 프래그먼트 이동을 컨트롤하거나... 리플렉션 방법을 이용해서 복잡하게 되어 있다. 하지만 사실 간단한 경우라면 위의 복잡한 방법이 필요없고 아래와 같이 간단하게만 사용하면 된다. getActivity().getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame, new FragmentWeb()) .addToBackStack(null) .commit(); 위의 예시는 프래그먼트..

IT/Android 2019.06.04

[Android] jsonSyntaxException Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 에러 해결, Json 파싱 처리

현재의 글은 Java8 + RxJava2 + Retrofit2 + OkHttp3 으로 되어 있다. Kotlin + RxJava2 + Retrofit2 + OkHttp3의 내용을 원하면 아래의 글도 참고해볼 수 있다. [IT/Android] - [Android] Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $ 에러 JSON 형식의 데이터를 다루다보면 위의 에러를 간혹 접할 수 있다. 위의 에러의 원인은 GSON으로 JSON데이터를 파싱할 때 형식이 맞지 않아서 발생하는 에러이다. 문제의 원인을 살펴보자. 일반적인 JSON의 데이터는 아래와 같이 되어있다. { "name": "Apple", "family": "Fruit", "age":..

IT/Android 2019.05.28
728x90