개발새발 - IT 기술블로그
article thumbnail
[안드로이드] 안드로이드 스튜디오 버전 다운그레이드 하기!
Android 2023. 3. 24. 14:22

안녕하세요.이번 포스팅에선 안드로이드 스튜디오의 버전을 최신버전이 아닌 이전버전으로 변경하는 방법에 대해 알아보겠습니다.  설치방법에 관한 내용은 2번 설치과정 항목에 있습니다.      문제발생 최근에 진행하던 프로젝트를 안드로이드 13 버전 ( = SDK Version 33  = Code TIRAMISU)으로 올리면서    위와 같은 문제가 발생하였습니다. 해당 문제는 위 사진의 옵션에서만 해당되는 것이 아니라 곳곳에서 발견되었죠. 열심히 찾아본 결과 현재 제가 사용하는 안드로이드 스튜디오의 버전이 SDK 33 버전을 호환하지 못해서 발생하는 문제라는 것을 알아냈습니다.   제가 원래 쓰고있던 버전은 ChipMunk Patch 2 버전이었는데요.최신버전인 Electric Eel 버전이 정상적으로 다운..

article thumbnail
안드로이드에서 Firebase Realtime DB 사용하기
DB 2023. 3. 13. 17:55

데이터의 저장보통 우리는 어떠한 값을 저장할 때 데이터 저장소인 DB를 이용합니다.저장 하려는 데이터가 원시 데이터일 경우 안드로이드 SharedPreference API를 이용하기도 하고, 외부통신 없이 빠르게 로컬환경에서 데이터를 불러오기 위해 SQLite나 Room을 이용하기도 하죠. 또한 데이터의 양이 많아지고, 공유하는 환경이 늘어난다면 서버에 연결된 외부 DB에 요청을 보냅니다.  관계형 데이터베이스(RDB)와 비관계형 데이터베이스(No SQL)일반적인 DB구조에서 관계형 데이터베이스(RDBMS)는 스키마와 스키마를 요구하는 테이블의 구조를 따릅니다. 따라서 데이터의 무결성과 일관성을 보장합니다. 흔히 CRUD라고 부르는 데이터 조작어를 기본 명령어로 가집니다. 반대로 비관계형 데이터베이스(N..

article thumbnail
[안드로이드] Transition - 자연스러운 화면 연결 애니메이션
Android 2023. 2. 28. 15:22

안녕하세요. 이번 포스팅에서는 액티비티를 전환할 때 뷰의 이동 애니메이션을 부여하는 기능에 대해 알아보겠습니다. AnimationOptions의 하위 메서드인 makeSceneTransitionAnimation은 Transition이 발생할 때 전환 할 액티비티와 전환 되어질 액티비티에서 두 View를 연결하여 Animation을 지정해 주는 기능입니다. 먼저 실행화면부터 보시겠습니다. 코드 진행순서는 이렇습니다. 1. startActivity와 endActivity를 생성하고 레이아웃을 구성 2. transitionName을 동일하게 입력 3. ActivityOptions.makeSceneTransitionAnimation 메서드를 구현 4. 전환할 액티비티에 intent를 통해 데이터 전달 5. 전환..

article thumbnail
[안드로이드] 진동 커스텀하기 - VibratorManager
Android 2023. 2. 24. 17:38

안녕하세요. 이번 포스팅에서는 특정 이벤트가 발생한 것을 사용자에게 인지시켜주는 방법 중 하나인 진동을 구현해보도록 하겠습니다. 아래의 TODO TASK의 순서대로 진행하는 예제입니다. TODO TASK 1. 진동을 사용하기 위한 권한 추가 2. VibratorManager를 이용한 진동발생 클래스 구현 3. 버튼을 클릭하였을 때 SnackBar와 함께 진동 구현 4. 진동 List를 만들어 여러번 울리는 진동 구현 5. Coroutine으로 비동기 처리 본문👀 진동을 사용하기 위한 권한 추가 VibratorManager를 이용한 진동발생 클래스 구현 안드로이드 SDK 버전 31부터 VIBRATOR_SERVICE가 deprecated 되어 버전별 대응을 해줍니다. import android.content..

article thumbnail
[안드로이드] 앱 강제 재시작하는 방법!
Android 2023. 2. 15. 14:15

안녕하세요. 이번 포스팅에서는 현재 컨텍스트에서 앱을 재시작하는 방법에 대해 알아보겠습니다. 보통 데이터베이스를 롤백시키거나 언어설정을 변경하는 등 어플리케이션의 환경을 변경할 때 앱을 재시작하는 경우가 많습니다. 이럴 때 유용한 코드를 소개드리겠습니다. 원리는 현재 프로세스를 종료시키면서 앱의 패키지 컴포넌트를 Intent의 makeRestartActivityTask 메서드의 파라미터로 호출해 다시 실행시키는 방식입니다. 작성코드👀 Kotlin private fun restartApplication(mContext: Context) { val packageManager: PackageManager = mContext.packageManager val intent = packageManager.getLa..

article thumbnail
[안드로이드] 에러 'Inconsistency detected. Invalid view holder adapter positionViewHolder' 해결
Android 2023. 2. 2. 10:07

아이템을 삭제하고 갱신하는 로직을 구성하는 도중, 리사이클러뷰의 아이템을 삭제하는 뷰모델과 리스트를 불러오는 뷰모델이 충돌하여 해당 에러가 발생하고 말았습니다. 스택 오버플로를 참고하면 서로 다른 스레드에서 돌아가는 뷰모델이 작업을 완료하기 전에 같은 뷰의 제어를 호출해서 오류가 발생한 것으로 보입니다. 스택오버플로 페이지 링크 해결방법은 LayoutManager의 Wrapper를 생성하고 애니메이션을 false로 설정해 주면 해당 에러가 사라지게 됩니다. 이제 적용방법에 대해 알아보겠습니다. 코드 먼저 지정할 레이아웃매니저 클래스를 생성합니다. LinearLayoutManagerWrapper class LinearLayoutManagerWrapper: LinearLayoutManager { constr..

article thumbnail
[안드로이드] WifiManager로 연결 가능한 와이파이 검색하기
Android 2023. 1. 30. 11:23

안녕하세요. 이번 포스팅에서는 안드로이드의 WifiManager를 이용하여 연결 가능한 와이파이의 목록을 스캔하는 기능을 구현해보겠습니다. 가장 간단하게 목록만 출력하는 예제이니 연결이나 다른 기능들은 사용하지 않았습니다. 개요 해당 포스팅에서는 WiFi 목록을 호출하기 위한 권한 요청과 WifiManager 객체를 생성하여 스캔하고 결과를 리스트에 추가하는 예제입니다. 본문 권한 요청 먼저 AndroidManifest 파일에 권한을 사용하겠다고 명시해줍니다. 권한은 인터넷사용 + 현재위치 + 와이파이 접근 총 5가지입니다. 다음으로 유저에게 민감정보인 위치권한을 직접 요청하는 코드를 작성합니다. private fun requestPermission(activity: Activity) { if(Activ..

article thumbnail
[안드로이드] savedInstanceState 는 왜 있는걸까?
Android 2023. 1. 6. 15:39

안녕하세요. 앱개발을 공부하다 문득 onCreate()의 Parameter로 생성되는 savedInstanceState는 도대체 무슨 역할을 할까? 라는 의문이 들어 찾아보았습니다. 활동 상태 변경 앱의 생명주기(활동 수명주기)를 참고하면, Activity는 앱의 구성이 변경되면 모든 활동이 제거되고 다시 생성됩니다. 그 과정에서 onPause(), onStop() 및 onDestory() 콜벡을 호출하고 인스턴스가 소멸되며, 새 인스턴스가 생성될 때 onCreate(), onStart() 및 onResume() 콜벡을 호출합니다. savedInstanceState 는 화면 구성의 변경이 발생할 때 현재 인스턴스에서 데이터를 저장하고 새 인스턴스에서 다시 불러오기 위해 호출되며, 대표적인 구성의 변경으로..