전체 글29 Compose에서 Naver Map 적용하기 - 2) PolyLine으로 내 경로 그리기 onLocationChange에서 내 위치를 list에 담도록 했습니다. Polyline을 그릴 때는 2개 이상의 좌표가 필요하기 때문에 size가 2 이상일 때, PolyLine을 그릴 수 있도록 했습니다. 주의할 점! list 객체의 값이 변경되지 않는다면 PolyLine을 다시 그리지 않습니다. 따라서, 위처럼 사용하시면 Polyline은 처음 그려진 상태로 존재합니다. 최종 코드 2024. 2. 25. Compose에서 Naver Map 적용하기 - 1) 위치 가져오기, 카메라 이동 https://github.com/fornewid/naver-map-compose/tree/main 초기 설정은 위 링크에서 확인하시면 됩니다! Composable 함수 내에서 NaverMap()을 선언하여 쉽게 Naver Map을 적용할 수 있습니다. NaverMap() 1. 위치 정보 가져오기 위 방식은 구글에서 제공하는 fusedLocationProfierClient를 이용하는 방식입니다. 이 방식 말고도 NaverMap을 통해 위치 정보를 쉽게 받아올 수 있습니다. NaverMap의 locationSource에 rememeberFusedLocationSource()를 넣어주고 onLocationChange 콜백 함수를 통해 내 위치를 나타내는 Location 객체를 얻을 수 있습니다. rememe.. 2024. 2. 25. 오픈 소스 컨트리뷰터가 되다. 23.10.11 ~ 23.11.04 까지 GDG 송도에서 진행하는 오픈 소스 스터디에 참여했던 후기입니다. GDG 송도 측에서 진행했던 오픈 소스 스터디 1기에 참여하고 너무 배울 게 많고 좋았어서 이번 오픈 소스 2기에도 참여하게 되었습니다. 스터디 진행 목표는 각자 관심 있는 오픈 소스에 PR 해보기 로 하였고 평일에 하루 온라인으로 30분 정도 스터디장님이 멘토로 도와주시고 토요일에는 추가로 도움이 더 필요하신 분들이 나와, GDG 송도 측에서 대여해주신 장소에서 스터디장님이 추가적으로 도움을 주셨습니다. 스터디장님이신 인제님께서 각각 이슈 선정도 도와주시고 코드를 분석하고 이슈를 해결하는 과정에서 막히는 부분과 더 좋은 방법이 무엇인지 봐주셨습니다. (인제님 짱!) PR 이슈 선정 저는 다음과 같.. 2023. 12. 23. WEBP 파일 형식을 사용하여 이미지 파일 크기 문제를 해결하고 빌드 속도 향상, 앱 크기 줄이기 비대면 러닝 챌린지 서비스를 리팩토링하면서 WEBP로 파일 형식을 변경하여 이미지 파일 크기 문제를 해결하고 빌드 속도를 약 35% 개선, 앱 크기를 소폭 줄여냈습니다. 문제 발생 서버로 이미지를 업로드하는 API 요청에서 HTTP 413 Request Entity Too Large 에러가 발생하는 문제가 있었습니다. 이 에러는 서버에 허용하는 요청 엔티티 크기를 초과할 때 발생합니다. 이 에러로 이미지의 파일 크기에 대해 고려해보게 되었습니다. 고민점 1. 서버 허용량 늘리기 현재 서비스에서 사용되는 이미지들은 해상도가 크게 중요하지 않다고 생각해서 서버의 허용량은 조금만 늘리고 이미지 파일 크기를 최대한 줄여야겠다고 생각했습니다. (현재 클라우드 지원으로 무료로 네이버 클라우드 플랫폼을 사용하고 있지.. 2023. 12. 2. Android의 효과적인 메모리 관리 안드로이드의 메모리 관리 방법에 대해 설명하려 합니다. 잘못된 부분이나 이해가지 않는 부분이 있다면 댓글 꼭 달아주세요! 안드로이드는 페이징 기법을 사용합니다. 페이징에 대해서는 설명이 잘 되어있는 글이 많기 때문에 페이징에 대한 설명은 넘어가겠습니다. 안드로이드는 사용 가능한 메모리가 있다면 메모리를 낭비하고 있다고 보고 사용 가능한 메모리를 최대한 사용하려고 합니다. 앱이 닫힌 후에도 앱을 메모리에 보관하여 사용자가 앱으로 빠르게 다시 전환할 수 있게 하는 등 사용 가능한 메모리를 최대한 사용하기 때문에 메모리 관리를 알고 올바르게 사용하는 것이 중요합니다. zRAM Android는 zRAM을 활용합니다. zRAM 이란? RAM의 파티션(램의 일부분)으로 스왑 공간으로 사용됩니다. 페이지를 zRAM에.. 2023. 11. 13. Android 런타임(ART), Dalvik 기능까지 제대로 알아보기 ART와 Dalvik을 비교하고 특징에 대해 공부하면서 어떤 문제 때문에 ART를 도입하고 ART에서 새로운 기능을 도입하였는지 알 수 있었습니다. ART와 Dalvik 설명에 앞서서 DEX파일과 AOT 컴파일러와 JIT 컴파일러에 대해 가볍게 알아보겠습니다. DEX 파일 Android에서 DEX 파일은 "Dalvik Executable" 파일을 의미합니다. 이 파일 형식은 자바 바이트코드(.class 파일)를 Dalvik 가상 머신이나 Android Runtime (ART)에서 실행할 수 있는 형태로 변환한 것입니다. 안드로이드 환경에서 동작되도록 최적화되어 있습니다. AOT(Ahead Of Time) , JIT(Just In Time) JIT 컴파일러가 바이트 코드를 런타임에 기계어로 바꾼다면 AOT.. 2023. 11. 9. 직접 문제를 겪고 작성한 Flow asResult 확장 함수 직접 문제점을 겪고 보일러 플레이트를 줄이기 위해 asResult 확장 함수를 만들었던 과정을 공유합니다. (피드백을 받고 Now in Android에서 비슷한 구조의 asResult 함수가 존재한다는 것을 알게 되었습니다) sealed class ResultType { object Uninitialized : ResultType() object Loading : ResultType() object Empty : ResultType() object InputError : ResultType() data class Success(val data: T) : ResultType() data class Fail(val data: T) : ResultType() data class Error(val excepti.. 2023. 11. 6. 3. 경로 최적화로 좌표 데이터 약 73% 감소 경로를 최적화하여 좌표 데이터 175개를 46개로 약 73% 감소시킨 경험과 고민했던 부분에 대해서 설명드리려 합니다. 문제 인식 러닝 앱에서 4~5초마다 현재 위치를 좌표 리스트에 추가해주고, 이 좌표 리스트로 경로를 그려주었습니다. 하지만, 위치 정보는 오차가 존재합니다. (확인한 결과 latitude는 현재 위치에서 약 0.0005 정도, longitude는 약 0.0002 정도 오차가 있는 걸로 확인 됩니다.) 오차가 존재하기 때문에 유저가 일직선으로 뛰어도 경로에는 일직선으로 보이지 않고 삐뚤빼둘하게 그려집니다. 왼쪽) 위치 정보 오차에 따른 문제, 오른쪽) 그리고 싶은 경로 위 사진에서 오른쪽의 빨간 선과 같이 직선으로 진행하는 경로에서 직선에서 시작하는 점과, 끝나는 점을 하나로 이어주고, .. 2023. 10. 17. 편하게 사용하고자 만든 Extensions Android 프로젝트 중, Clean Architecture, Flow를 사용하며 편리하게 사용하고자 만든 확장 함수들에 대해서 소개드리려고 합니다. 1. ResultType 확장 함수 sealed class ResultType { object Uninitialized : ResultType() object Loading : ResultType() object Empty : ResultType() data class Success(val data: T) : ResultType() data class Fail(val data: T) : ResultType() data class Error(val exception: Throwable) : ResultType() { val isNetworkError = e.. 2023. 10. 4. 이전 1 2 3 4 다음