android studio
[Kotlin] 서비스(Service)
사용자에게 노출되지 않고 무엇인가를 지속적으로 처리해야 하는 경우에 사용되는 서비스는 백그라운드에서 보이지 않게 동작합니다. 얼핏 백그라운드 스레드와 비슷해 보이기는 하지만 스레드는 별도의 메인 스레드와는 상관없이 다중적인 작업 처리가 가능한 반면 서비스는 메인 스레드를 사용하므로 메인 스레드와 서비스 중 하나에만 처리를 집중할 수 있다는 차이가 있습니다. 서비스는 서비스가 시작하는 방식에 따라 2가지 정도로 나뉠 수 있는데 각각의 서비스에 대해서는 실제 서비스를 만들어 동작시켜 보면서 조금씩 살펴보도록 하겠습니다. 1. 스타티드 서비스 startService() 메서드로 실행되는 스타티드 서비스는 Ativity와는 무관하게 독립적으로 동작할 수 있습니다. 때문에 Activity가 종료되어도 지속적인 실..
[Kotlin] 사진저장하고 가져오기
[Mobile/Kotlin] - [Kotlin] 카메라 사용하기 위의 포스팅에서 카메라를 사용하기 위한 절차와 권한 처리에 대해서 알아보았습니다. 이 내용을 계속이어서 이번에는 찍은 사진을 갤러리에 저장하고 저장된 사진을 가져오는 과정에 대해서 살펴보도록 하겠습니다. 참고로 카메라를 통해 촬영된 사진은 내부저장소나 외부 저장소에 저장할 수 있는데 이번에는 외부 저장소에 파일을 저장하고 가져오는 방식을 사용해 보고자 합니다. app -> manifests -> AndroidManifest.xml 에서 카메라에 관한 권한 추가와 더불어 저장소에 대한 2개의 태그를 추가합니다. MainActivity 클래스에서는 상단에 STORAGE권한 처리에 필요한 변수를 추가하고 val CAMERA = arrayOf(Ma..
[kotlin] SQLite - 연결및 사용하기
이전 아래 글에서 SQLite Open Helper클래스를 상속받아 SQLite를 사용하기 위한 Helper클래스를 만들어 보았습니다. 2020/10/09 - [Mobile/Kotlin] - [kotlin] SQLite - SQLite Open Helper 구현하기 이번에는 위에서 만든 이 Helper클래스를 이용해 간단한 전화번호부 앱을 만들면서 직접 연결하고 사용하는 방법을 알가 보고자 합니다. 우선 Activity Main에서 화면을 다음과 같이 디자인합니다. 가장 상단에는 RecyclerView를 배치하고 그 아래 2개의 Plain Text 그리고 Button하나를 순서대로 배치합니다. 예제에서 RecyclerView의 ID는 rccList, Plain Text는 txtName과 txtPhone,..
[kotlin] androidx.preference
androidx.preference는 이전에 알아본 Preferences의 구조를 차용해 앱에서 필요한 설정값을 손쉽게 관리할 수 있도록 해주는 API를 제공합니다. 이 API를 사용하면 XML을 구성하는 것만으로도 사용자로부터 설정값을 저장하고 저장된 값을 읽을 수 있습니다. 우선 androidx.preference를 사용하기 위해서는 의존성 라이브러리를 추가해야 합니다. 우선 Gradle Scripts -> build.gradle (Module:app) 파일을 열고 오른쪽 상단에 Open(Ctrl+Alt+Shift+S)를 클릭합니다. 이어지는 화면의 왼쪽 메뉴에서 Dependencies를 클릭하고 + 버튼을 눌러 Library Dependency를 선택합니다. 그리고 step1에서 preperence..
[kotlin] Preferences
키와 값을 쌍으로 내부 저장소에 데이터를 저장시켜주는 Preferences는 앱에서 사용하는 간단한 설정 내용이나 기타 필요한 값을 쉽게 저장하고 가져올 수 있도록 합니다. 참고로 설정값은 내부 저장소에 XML형태로 데이터를 보관합니다. Preferences를 알아보기 전에 우선 Activity화면에서 아래와 같이 버튼 하나를 추가합니다. 그리고 버튼 클릭에 대한 리스너를 작성해 주세요. 아래부터 생성되는 코드는 이 리스너안에서 작성할 것입니다. Preferences를 사용하려면 당연히 Preference 파일을 생성해야 하는데 사용하고자 하는 범위에 따라 2가지 생성 방법이 존재합니다. 첫 번째로는 여러 Activity에서 공유할 수 있도록 생성하는 방법이며 아래와 같습니다. val myPF = get..
[kotlin] 저장소및 파일처리
Android(안드로이드)는 Linux(리눅스)를 기반으로 합니다. 그래서 Filesystem(파일 시스템)도 리눅스와 파일 시스템과 동일한데 리눅스 파일 시스템의 특징은 System(시스템)을 사용하는 계정별로 권한을 다루게 부여할 수 있다는 것입니다. 이러한 특징을 통해 Android에서는 앱하나당 하나의 내부저장소인 디렉터리를 마련해 두고 앱에 해당하는 계정 하나를 생성해 해당 저장소에 접근하도록 권한을 부여해 줍니다. 당연히 앱의 계정으로는 자신의 저장소에 자유롭게 접근할 수 있지만 다른 앱의 저장소에는 권한이 제한되어 있으므로 접근이 불가능하게 됩니다. 반면 모든앱이 접근할 수 있는 저장공간이 있는데 이를 외부 저장소라고 합니다. 위에서 언급한 내부 저장소는 만약 앱이 삭제되면 함께 삭제되어 안..
[kotlin] 권한 처리하기
사용자 기기의 특정 영역에 접근하려면 그에 해당하는 권한을 얻어야 합니다. 이번 예제에서는 카메라에 접근하는 앱을 만들어 권한을 어떻게 처리할 수 있을지를 알아보도록 하겠습니다. 우선 다음과 같이 app -> manifests에 있는 AndroidManifest.xml파일을 열어 다음과 같이 user-permission태그를 추가해 카메라 사용자 권한을 추가합니다. 그리고 임의의 버튼 하나를 만들어 둡니다. MainActivity에서 카메라에 접근하기 전에 이미 해당 권한이 부여되어 있는지를 확인하도록 하는 함수를 작성합니다. 권한이 부여되어 있는데 계속 권한 요청을 하면 문제가 되겠죠. 예제에서는 checkPermission으로 이 부분을 구현하였으며 checkSelfPermission의 결과가 PER..
[Kotlin] 위젯 - ViewPager2
ViewPager2는 스와이프(Swipe)를 통해 화면 전환을 구현할 때 사용되는 위젯입니다. 본래 ViewPager가 있었으나 여러 가지 문제로 현재는 ViewPager2로 완전히 대체되었습니다. 그럼 이번에는 ViewPager2에 대한 간단한 사용방법을 알아보도록 하겠습니다. ViewPager2에서 화면전환을 위해서 Fragment를 이용할 수 있습니다. 이런 경우 필요한 화면만큼 Fragment화면을 추가해야 합니다. 이번 예제에서는 대략 3개 정도의 화면을 만들어 보도로 하겠습니다. 다음과 같이 app -> java 아래의 패키지에서 마우스 오른쪽 버튼을 눌러 New -> Fragment -> Fragment(Blank)를 선택합니다. Fragment Name에서 이름을 MyFragment1 이라..