Android Studio (6) 썸네일형 리스트형 [TIL] 24.06.05 안드로이드 스튜디오 에뮬레이터 Extended Contorls의 location이 제대로 동작하지 않을 때 안드로이드 스튜디오의 에뮬레이터의 Extended Controls 패널을 보면 저렇게 Location을 설정하고, Route를 play 할 수 있는 기능도 지원한다. 그런데 오늘 지도 API를 테스트 하려고 해당 기능을 오랜만에 동작시켰는데 저 하얗게 표시한 부분에 지도가 제대로 뜨지 않았다. 지도의 메뉴(검색, 줌 인/아웃 버튼)는 뜨는 상태인데, 지도는 정상적으로 로드되지 않고 그냥 흰 화면만 뜨는 상태였다. 당최 이유를 알 수 없어서 꽤나 고생을 했다. 당연히 안드로이드 스튜디오와 에뮬레이터 재부팅은 해봤고, 캐시도 날려봤지만 지도가 뜨지 않았다. 처음에는 에뮬레이터 내에 연동된 구글 시스템에 문제가 있나 싶어서, 구글 계정을 다시 로그인 해보고 구글 맵을 켜서 위치 정보를 확인했더니 그 곳에서는.. [TIL] 24.03.07 알고리즘, 사이드 프로젝트 1. 알고리즘 문제 해결 가운데를 말해요(백준 1655): 발상해내는데 꽤 걸린 문제다. 매번 정렬을 하면서 풀자니 O(n^2 log n)으로 시간 초과가 날 것이다. 일반적인 정렬 알고리즘이 아닌 Radix Sort나 Counting Sort를 써도 원소를 입력받을 때마다 반복한다면 O(n^2)을 넘기 때문에, 이 또한 불가능하다. 전체 동작 시간이 O(n log n) 선에서 끝나야 했다. 그래서 매번 리스트에 대해 이진 탐색으로 들어갈 자리를 찾아 삽입하고, 중앙값을 출력하게 해 볼까도 생각했다. 하지만 배열 기반 리스트라면 삽입 과정에서 O(n)이 걸리고, 연결 리스트라면 이진 탐색이 힘들어 보였다. 어쨌든 입력은 n번을 받아야하고, 결국 입력을 받으면서 매번 O(log n)의 연산을 통해 중앙값을.. [안드로이드 짤막공부] 23.09.05 1. 위치 기반 서비스를 구현하기 위해서 구글의 FusedLocationProvider를 사용하는데, 자꾸 lastLocation 값이 이상한 곳으로 뜨는 문제가 있었다. 가상 머신에서만 유독 그런 오류가 생겨서 AVD 세팅 문제인 거 같아서 좀 헤맸다. 아무래도 AVD가 처음 구동되면 내가 설정해 둔 좌표로 기기가 제대로 인식되고 있지 않는 상태인 거 같았다. 현재 위치 기반으로 시간대를 자동으로 설정하게 해 두었는데 시간대가 맞지 않는 걸 보면.. 그래서 부팅 이후 AVD 설정 내에서 set location을 다시 하고 디바이스 내에서 위치 기능을 껐다가 킨 후, 구글맵에 들어가서 현재 위치가 제대로 뜨는 걸 확인했다. 이후 앱을 재실행했는데 그럼에도 lastLocation의 위도와 경도 값이 이상하.. [안드로이드 짤막공부] 23.08.22 1. 안드로이드 13을 탑재한 가상 머신의 오디오가 정상적으로 출력이 되지 않는 문제가 있었다. 더 낮은 레벨의 안드로이드 머신들에서는 정상적으로 출력되는데, 처음에는 디바이스 세팅 문제인가 싶어 꽤 헤맸다. 도저히 내 문제가 아닌 거 같아서 찾아보니 꽤나 오래 묵은 문제인 거 같았다. 그래서 포기하고 더 낮은 API레벨의 안드로이드로 테스트하려던 찰나에 마침 오늘자 당장 몇 시간 전 코멘트로 저런 게 있길래, 안드로이드 스튜디오 내에서 sdk를 업데이트해 주고 새 기기를 만들어 실행하니 오디오가 정상적으로 출력됐다. 코멘트가 올라온 타이밍이 예술이었다. 2. Foreground Service와 Notification을 이용한 음악 플레이어를 구현하고 있었는데, 만든 Notification에 대해 set.. [안드로이드 짤막공부] 23.08.21 1. 요즘 강의를 새로 듣고 있어서 혼자 고민할 부분이 적다보니 딱히 블로그에 쓸만한 오류가 발생하지 않았다. 그러던 차에 오랜만에 오류가 생겼다. ActivityCompat.requestPermissions( this, arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE), REQUEST_READ_EXTERNAL_STORAGE ) 외부 저장소 읽기 권한 요청을 발생시키는 위 코드가 기대한대로 동작하지 않았다. 리스너를 달아둔 버튼을 아무리 클릭해도 묵묵부답. 로그를 찍어 확인해봤지만 분명히 클릭 리스너와 메소드 진입은 정상적으로 일어나고 있었다. 혹시나 권한 요구 창을 이미 무시했나싶어 앱 재설치도 여러번 해봤는데도 결과는 같았다. 공식문서를 뒤져보니.. [안드로이드 짤막공부] 23.07.21 1. 강의 중에서, 내가 선택한 유저가 나를 좋아요 했는지 알아보기 위한 로직을 작성하는 부분이 있었다. firebase를 이용하기 위해 ValueEventListener 내의 onDataChange()를 오버라이드 하는 내용이었는데 처음에 강사 분은 이렇게 작성하셨다. val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { for (dataModel in dataSnapshot.children) { val likeUserKey = dataModel.key.toString() if(likeUserKey.equals(uid)) { Toast.makeText(this@MyLik.. 이전 1 다음