본문 바로가기

Android

(38)
[Android] 갤러리에서 사진 가져오기 - 기본 갤러리 앱 사용하기 안드로이드 앱에서 기존 사진을 가져오는 방법으로 다음 두 가지가 있습니다. 1. 기본 갤러리 앱 사용 2. 커스텀 갤러리 화면 만들기 이번에는 기본 갤러리 앱을 사용해 사진을 가져오도록 해보겠습니다. 암시적 Intent를 사용하면 쉽게 갤러리 앱을 사용할 수 있습니다. 1. 기본 갤러리 앱 실행 Intent 객체를 생성하고 갤러리 액티비티 실행하기 위한 정보를 Setting 합니다. startActivityForResult의 두 번째 인자로 나중에 확인을 위한 request Code 값을 넣습니다. private fun startDefaultGalleryApp() { val intent = Intent() intent.type = "image/*" intent.action = Intent.ACTION_G..
안드로이드 권한 (런타임 퍼미션) 요청하기 [Kotlin] 권한 요청이란?? 안드로이드 앱에서 다른 앱이나 시스템에 영향을 줄 수 있는 권한의 경우 위험한 권한으로 분류되어 사용자에게 사용 요청을 하고, 사용자에게 허가를 받아야 합니다. 사용자에게 권한 사용을 요청해야 하는 권한을 위험 권한, 런타임 권한이라고 합니다. 권한을 요청할 때 지켜야 할 주요 원칙 중 하나는 다음과 같습니다. 사용자가 권한이 필요한 기능과 상호작용하기 시작할 때 컨텍스트에 따라 권한을 요청합니다. 즉 앱 시작할 때 앱에 필요한 모든 권한을 요청하는 것이 아니라 사용자가 앱 내에서 특정 기능을 수행할 때 이에 대한 권한을 요청해야 한다는 것입니다. 예를 들어 프로필 사진 업로드를 하려고 할 때 카메라 권한을 요청하는 것과 같습니다. 구글에서 권장하는 권한 요청 프로세스는?? 구글에서 권..
Android 소리나는 카운트 다운 타이머 만들기 (CountdownTimer + SoundPool) 안녕하세요 이번엔 소리 나는 카운트 다운 타이머를 만들어보겠습니다. 구현할 기능 1~60분까지 타이머를 설정할 수 있다. 1초마다 화면을 갱신한다. 상황에 따른 타이머 효과음을 적용한다. (진행 중, 타이머 종료) 사용하는 기술 CountDownTimer SoundPool SeekBar CountDownTimer 일정한 간격에 대한 정기적인 알림과 함께 미래의 시간까지 카운트 다운을 예약하기 위한 타이머입니다. 다음은 텍스트 필드에 30초 카운트다운을 표시하는 예시입니다. object : CountDownTimer(30000, 1000) { override fun onTick(millisUntilFinished: Long) { mTextField.setText("seconds remaining: " + ..
SharedPreference로 데이터 저장하기 SharedPreference는 앱의 데이터를 영속적으로 저장하기 위한 클래스입니다. 데이터를 간단하게 키-값(key-value) 성격으로 저장합니다. SharedPreference로 저장하는 데이터는 결국 파일(XML)로 저장되지만, 개발자가 직접 파일을 읽고 쓰는 코드를 작성하지 않고 SharedPreference 객체를 이용해서 데이터를 저장할 수 있습니다. SharedPreference 객체를 획득하는 방법 SharedPreference 객체를 획득하는 방법은 두 가지가 있습니다. getPreferences(int mode) getSharedPreferences(String name, int mode) getPreferences은 별도의 파일명을 지정하지 않아 액티비티 이름의 파일 내에 저장됩니다..
안드로이드 데이터 및 파일 저장소 개요 및 내부 저장소 사용하기 Android는 다른 플랫폼의 디스크 기반 파일 시스템과 유사한 파일 시스템을 사용합니다. 시스템은 앱 데이터를 저장할 수 있는 몇 가지 옵션을 제공합니다. 데이터 및 파일 저장소 개요 앱별 저장소(App-specific storage) : 내부 저장소 또는 외부 저장소 안의 특정 디렉토리에 자신의 앱만이 전용으로 사용할 수 있는 파일을 저장합니다. 공유 스토리지 : 앱이 미디어, 문서 및 기타 파일을 포함하여 다른 앱과 공유하려는 파일을 저장합니다. Preferences : 키-값 쌍에 개인용 기본 데이터를 저장합니다. 데이터 베이스 : Room 지속성 라이브러리를 사용하여 구조화 된 데이터를 비공개 데이터베이스에 저장합니다. 이러한 옵션의 특성은 다음 표에 요약되어 있습니다. 콘텐츠 유형 접근 방법 ..
안드로이드 퍼미션 개념 정리 퍼미션은 AndroidManifest.xml에 들어가는 설정입니다. 안드로이드는 컴포넌트를 이용한 앱과 앱 사이의 연동이 빈번합니다. 이러한 연동에서 어떤 앱이 을 부여했다면 그 앱을 이용하는 다른 앱은 을 선언해야 합니다. permission 태그 이용 은 자신의 앱을 외부에서 이용할 때 권한을 부여하여 해당 권한을 가지고 들어올 때만 실행되게 하는 설정입니다. 으로 선언된 앱을 이용하는 앱이 을 선언하지 않으면 에러가 발생합니다. name: 퍼미션의 이름 label, description: 퍼미션에 대한 설명(사용자에게 보이는 문자열) protectionLevel: 보호 수준 normal: 낮은 수준의 보호. 사용자에게 권한 부여 요청이 필요 없는 경우 dangerous: 높은 수준의 보호. 사용자에..
Realm를 사용해서 안드로이드 앱에 데이터 저장하기 Realm이란? Realm은 https://realm.io에서 오픈소스로 만들어지고 있는 로컬 데이터베이스이다. Realm은 자바 객체를 해석해 그 객체의 데이터를 그대로 데이터베이스에 저장, 획득한다. Realm이 ORM을 제공한다는 것이 SQLite와 비교했을 때 가장 큰 차이이다. Realm은 안드로이드뿐만 아니라 다양한 곳에서 데이터베이스로 사용된다. 표준 라이브러리가 아니므로 플러그인 방식으로 이용해야 함 Realm를 사용해서 안드로이드 앱에서 데이터를 저장하기, 가져오기, 삭제하기에 대해 다뤄보겠습니다. Realm 플러그인 설치를 위한 의존성 설정 build.gradle(project) 5.6.0 버전으로 빌드하고 앱 실행 시 에러가 발생했습니다. 하위 버전과 관련된 이슈가 있습니다. buil..
Android SQLite를 사용하여 데이터를 저장하기 SQLite는 오픈소스로 만들어진 관계형 데이터 베이스입니다. (https://www.sqlite.org/) SQLite를 이용한 데이터는 파일에 저장되며 다음과 같은 경로에 저장됩니다. data/data/[package_name]/databases Android에서 데이터베이스를 사용할 때 필요한 API는 android.database.sqlite 패키지로 제공됩니다. SQLiteOpenHelper 클래스를 사용하여 데이터베이스 생성하기 SQLiteOpenHelper 클래스에는 데이터베이스 관리를 위한 유용한 API 세트가 포함되어 있습니다. 이 클래스를 사용하여 데이터베이스의 참조를 가져오면 시스템은 앱이 시작되고 있는 동안이 아닌 필요한 때에만 데이터베이스 생성 및 업데이트와 같이 장시간 실행될 수..