본문 바로가기

ANDROID

(125)
[안드로이드] 레이아웃에 실시간 Blur 효과 주기 (가우시안 블러) 배경 레이아웃에 Blur 효과를 주기 위한 몇몇 방법들을 조금 살펴보았는데, 적용할 정도에 비해 작업이 투머치가 들어가는 것 같아 적용하다 롤백을 반복했는데 그 와중에 좋은 라이브러리를 찾아 적용까지 마칠 수 있었다. https://github.com/mmin18/RealtimeBlurView mmin18/RealtimeBlurView A realtime blurring overlay for Android (like iOS UIVisualEffectView) - mmin18/RealtimeBlurView github.com 우선 일반적인 라이브러리 적용하는 대로 gradle에 implementation을 마치고 나면 Blur를 적용하고자 하는 영역 위에 전체 혹은 원하는 크기만큼 BlurView를 레이아..
[안드로이드] 구글 플레이스토어 업로드시 발생하는 no properties to serialize found on class Exception 잡기 구글 플레이스토어에 앱 업데이트를 위해 알파버전을 업로드해 테스팅을 진행하고 있는데, 구글에서 테스트한 기기에서 발생한 것 이외에도 직접 업데이트를 진행했을 때 no properties to serialize found on class Exception 이 발생하면서 앱이 초기에 종료되는 현상이 있었다. 서치에다 수정을 반복해서(거의 반나절을) 오류를 잡을 수 있었는데 원인은 1. 번들이나 apk로 만들어질 때 릴리즈 버전에 적용되는 proguard rule 2. Firebase와 연관된 변수들이 private으로 적용됨 정도가 있었다. 1번의 경우 #firebase 관련 이슈 핸들링 위해 proguard rules 수정 -keep public class com.회사.entity.* -keepclassm..
[안드로이드] 앱 스토어 릴리즈용 APK 혹은 Bundle을 만들고자 할 때 발생하는 “Exception while processing task java.io.IOException: Please correct the above warnings first” 곧 시범 릴리즈를 앞두고 앱 빌드를 하는중에 예기치 못한 거대한 숙제에 직면했다. “Exception while processing task java.io.IOException: Please correct the above warnings first” 라는 메시지와 함께 400개가 넘는 오류를 보여주었는데, 자잘자잘한 경고항목들을 수정하는 중에 개별 항목을 전부 수정할 필요가 없다는 것을 알았다. 물론 몇백개의 오류들이 이 문제 때문에 애초에 발생한 것이기 때문에 상당수의 경고를 줄일 수 있었던것이다. 문제는 프로젝트 내에서 사용하는 RxKotlin 때문인데, Rx관련 코드들을 Proguard가 난독화하는 과정에서 오류가 나는 것으로 여겨졌다. 첫번째로 시도한 해결방법은 build.gradle(Modul..
[Bluetooth] BLE에 대한 간단한 정리 BLE(Bluetooth Low Energy)란? - 2010년 6월 30일, 블루투스 4.0 버전의 등장과 함께 제공된 프로토콜 중 하나 - 전력소모 최소화, 배터리 수명연장에 중점을 둔 프로토콜 - 다른 무선 전송규격에 비해 상대적으로 느린 편. > 현재 웨어러블 기기를 중점으로 주로 사용되고 있는 프로토콜로 알려져 있음. 핵심 구성요소들 - GATT (Generic Attribute Profile) 데이터를 어떠한 방식으로 주고받을지에 대해 정의함. - Central(혹은 GATT Client) 컴퓨터, 태블릿, 모바일 기기등 주로 데이터 요청과 송신을 하는 주체 - Peripheral(혹은 GATT Server) Central의 요청에 따라 데이터를 전송하는 객체 - Services 주변 BLE ..
[안드로이드] static View array 혹은 static Bitmap array를 사용할 때의 nullpointerException 제목대로 static view 혹은 Bitmap array를 반복 사용해야 하는 경우 memory 문제때문에 단순하게 array 자체를 null 처리했었는데, 이후 해당 array에 접근시 nullPointerException이 발생. >> static array를 onCreate 부분에서 init하지 않으면 그대로 null로 남아있는 것으로 보임. 해결책 >> A. onCreate 내부에서 static array를 재생성한다>> B. array 전체를 null처리하는 대신에 Arrays.fill(배열, null)로 내용을 비울 수 있음> View와 Bitmap의 경우 0을 할당 할시 오류가 발생하기 때문에 null로 배열을 채워야 함.
[안드로이드] 이미지를 포함한 커스텀 ListView 구현 단순히 텍스트를 포함하는 리스트 뷰를 만드는 데는 적은 수의 리소스와 코드로 이를 구현할 수 있지만, 이미지나 기타 다양한 내용을 담은 row item을 출력하고자 한다면, 좀 더 많은 준비물이 필요하다. 우선 구현하고자 하는 item의 구성과 그에 따른 준비물을 나열해보자면 ** 텍스트뷰 한 개와 이미지 한 개를 포함하는 row item을 쓰고자 할 때 ** 1. row item의 구성을 정의하는 xml 레이아웃 여기에는 텍스트뷰와 이미지뷰 하나가 레이아웃 구성으로 들어가며 당연히 필히 id값을 달아두어야 한다. 2. row item의 레이아웃을 코드에 링크 시켜주는 커스텀 BaseAdapter 3. 각 row item의 텍스트에 적용하고자 하는 String 배열 : 여기에는 각 item에 넣고자 하는..
[안드로이드] 다중 블루투스 연결 Application 클래스에서 해결하기 기본적으로 한 앱에서 블루투스 소켓을 생성할 때에 들어가는 시간이 있는데, 한개의 기기와의 통신을 수행할 때에는 크게 고려할 정도가 아닌 딜레이지만 세 개 이상의 기기와 소켓을 생성하여 통신을 수행할 때에 소켓을 open하는데 걸리는 시간은 눈에 띄게 배로 증가하게 된다. 우선 액티비티 내부에서 이런 작업들을 수행할 경우, 다음 액티비티로 넘어갈 때 이전 액티비티에서 소켓을 클로징해주지 않으면 잡을 수 없어 오픈과 클로징을 반복해야만 하는 번거로운 과정과 타임 딜레이가 생기는 상황이었다. 이를 해결하기 위해 액티비티들과 독립되 독자적으로 존재하는 Application 클래스가 생각이 났고, 여기에서 블루투스 소켓 통신을 유지하면 되지 않을까 하는 아이디어를 가지고 서치를 조금 했다. 아니나다를까 그런 사..
[안드로이드] 여러 페이지를 담은 PDF 파일 생성하기 기존 프로젝트를 수행하면서 1개 페이지의 PDF를 만들어 본 적은 있었는데, 여러 페이지를 담은 PDF파일을 만들 수 있는지는 바로 쉽게 확신이 가지는 않았다. 초반에 자료검색을 하면서 이런 저런 사례들을 보았지만, 어쨌든 가능하다는 점을 확인하고 나서는 기존 코드를 사용해보기로 했다. 그랬는데 결과가 생각보다 순조롭게 나온 탓에 어깨춤을 출 뻔 했다. 우선 내가 원하고자 한 목표와 과정은 다음과 같다. GOAL? fragment로 존재하는 다수 페이지의 레이아웃을 캡처해 1개의 PDF 파일로 생성한다 HOW? 1. 레이아웃의 맨 바탕에 해당하는 어미 View를 id를 달아 참조해 View[] 배열에 담는다. 2. 저장한 View를 비트맵화 하여 Bitmap[] 배열에 담는다. 비트맵배열[k] = Bit..