본문 바로가기

Android57

Camera를 이용하여 사진 촬영 및 저장하기 앱에서 사진을 촬영하여 얻기 위한 방법은 여러가지가 있다. 첫번째 방법은 사진 앱에 사진 촬영을 요청한 뒤 촬영된 jpeg 파일을 가져와 처리하는 것이다. 두번째 방법은 카메라 미리보기 화면을 앱에 넣은 뒤 화면을 캡쳐하여 사용하는 것이다. 두번째 방법은 앱을 새로 띄우지 않고 앱 내에서 처리 가능하다는 장점이 있지만. 카메라 설정이 기기마다 매우 다르기 때문에 예외 처리가 힘들어 첫번째 방법을 사용하는 것을 권장한다. 두가지 방법의 사용법을 하나씩 알아보자. 카메라 앱을 사용하여 촬영하기 먼저 manifest에 저장소에 읽고 쓰기 위한 권한을 요청해주자. ※ 저장소 접근 권한은 위험 권한이기 때문에 앱 실행 시 사용자에게 허가를 받아야 한다. 자세한 내용은 아래 글 참고. https://ju-hy.ti.. 2020. 5. 2.
Device의 Network 상태 가져오기 앱을 개발하다보면 사용자가 인터넷에 연결된 상태인지 아닌지 확인해야 할 때가 있다. 예를 들어 넷플릭스나 유튜브를 보면 동영상을 저장하여 오프라인일 때 시청할 수 있는 기능을 제공한다. 인터넷이 가능할 때는 서버로부터 컨텐츠를 가져와 보여주고, 인터넷에 연결되지 않았을 때는 미리 저장된 컨텐츠를 보여주는 것이다. 이와 같은 기능을 구현하기 위해서는 인터넷 연결 상태를 미리 확인할 수 있는 방법이 필요하다. Source Code 먼저 Manifest에 네트워크 상태를 확인할 수 있는 ACCESS_NETWORK_STATE 권한을 등록한다. package com.juhy.myapplication; import android.content.Context; import android.net.Connectivity.. 2020. 5. 1.
SQLiteOpenHelper 사용하여 DB 수정하기 SQLiteOpenHelper란? 많은 수의 사용자가 사용하고 있어 저장된 데이터의 양이 많을 때, 테이블을 수정하려면 어떻게 해야 할까? 사용중인 테이블의 column을 수정하거나 테이블을 삭제하는 것은 어려운 작업이다. SQLiteOpenHelper는 이런 상황에서 테이블의 수정, 삭제를 도와준다. 새로운 기능을 앱에 추가하려 테이블 구조와 코드를 수정했는데, 사용자가 앱을 업데이트 하지 않았다면 수정된 테이블과 테이블에 접근하는 코드가 맞지 않아 오류가 발생할 수 있다. 이 때 SQLiteOpenHelper를 통해 버전 관리를 해 코드 상태에 맞춰 db 구조를 변경할 수 있다. 예를 들어 DB와 소스코드를 모두 version1에서 version2로 수정했을 때, SQLiteOpenHelper를 통해.. 2020. 5. 1.
SQLite DB에 데이터 저장하기 Database란? 어플리케이션의 데이터를 저장할 때 서버를 통해 저장할 수도 있지만, 기기에 저장할 수도 있다. 안드로이드에서는 SharedPreference를 사용하여 (key,value) 형태로 데이터를 저장할 수 있는 기능을 제공한다. 하지만 단순한 형태로만 저장할 수 있기 때문에 복잡한 데이터를 저장하기에는 불편함이 따른다. 이 때, Database를 사용하면 더 체계적인 형태로 데이터를 저장할 수 있다. 안드로이드에서는 SQLite라는 임베디드 데이터베이스를 사용한다. SQLite는 관계형 데이터베이스로 Table의 형태로 데이터를 저장하며 SQL문을 통해 기능을 수행한다. 따라서 관계형 데이터베이스에 대한 지식과 SQL 문법에 대한 기본적인 지식이 필요하다. 그 내용은 아래 글을 참고하자. .. 2020. 5. 1.
Glide 라이브러리 사용법 Glide란? 서버로부터 이미지를 받아오는 것은 여러가지 방법이 있다. 기본적으로 비트맵을 직접 받아와 띄워줄 수도 있지만 이 경우 직접 처리해야 할 것이 많다. 자세한 방법과 내용은 아래 글 참고. https://ju-hy.tistory.com/68 서버로부터 Bitmap 이미지 받아오기 HttpURLConnection이나 Volley 라이브러리를 이용하여 http 통신으로 서버로부터 데이터를 받아올 수 있다. 하지만 이미지의 경우 용량이 크기 때문에 다른 데이터와 구분하여 다른 방식으로 받는 것이 ju-hy.tistory.com 따라서 구글에서는 이미지를 불러오고 관련 작업을 편하게 수행할 수 있도록 Glide 라이브러리를 제공하고 있다. https://github.com/bumptech/glide .. 2020. 4. 30.
서버로부터 Bitmap 이미지 받아오기 HttpURLConnection이나 Volley 라이브러리를 이용하여 http 통신으로 서버로부터 데이터를 받아올 수 있다. 하지만 이미지의 경우 용량이 크기 때문에 다른 데이터와 구분하여 다른 방식으로 받는 것이 효율적이다. 따라서 이미지를 별도의 url로 전달받아 해당 url을 통해 별도로 다운로드하여 사용하게 된다. 요즘에는 이미지 파일을 다운로드 할 때 여러가지 편리한 기능을 제공하는 라이브러리들을 사용한다. UniversalImageLoader 나 Glide 라이브러리를 사용하면 다운로드 및 캐싱까지 자동으로 처리해준다. 하지만 이 글에서는 기본적으로 제공되는 URL의 openConnection을 이용하여 직접 이미지를 다운로드하여, BitmapFactory를 이용하여 Bitmap으로 변환하고,.. 2020. 4. 27.
Gson을 이용하여 Json 파싱하기 Json이란? 서버에 요청을 보내고 응답을 받는 과정에서 String 데이터를 주고받게 된다. 이 때 단순한 String 데이터가 아닌 여러 종류의 데이터를 String 형태로 전달하기 위한 형식이 Json이다. 정해진 규칙대로 데이터를 문자열로 바꾸고, 문자열을 다시 데이터로 바꿈으로써 복잡한 데이터를 전송할 수 있다. Json 문자열은 다음과 같은 규칙을 따른다. 1. key와 value의 값은 각각 큰따옴표( " " )로 감싸며 콜론( : )으로 구분한다. (value 값은 기본적인 자료형 뿐만 아니라 Json 객체 혹은 배열도 가능) 2. 객체는 중괄호( { } )로 감싸며, 데이터들은 콤마( , )로 구분한다. 3. 배열은 대괄호( [ ] )로 감싸며, 데이터들은 콤마( , )로 구분한다. Gs.. 2020. 4. 27.
Volley 라이브러리 사용법 Volley란? 앱에서 서버와 http 통신을 할 때 HttpURLConnection을 사용하면 직접 요청과 응답을 받는 것이 가능하다. 하지만 직접 쓰레드를 구현해야 하며, 기본적인 코드 양 또한 많아 코드가 복잡해진다는 단점이 있다. 그래서 안드로이드에서는 쉽고 빠른 http 통신을 위해 Volley 라이브러리를 제공하고 있다. 코드가 간결해진다는 점 외에도 다음과 같은 여러가지 장점들이 있어 http 통신에 많이 사용된다. Volley 라이브러리는 다음과 같이 동작한다. 사용자가 Request 객체에 요청 내용을 담아 RequestQueue에 추가하기만 하면, RequestQueue가 알아서 쓰레드를 생성하여 서버에 요청을 보내고 응답을 받는다. 응답이 오면 RequestQueue에서 Request.. 2020. 4. 26.
HttpURLConnection을 이용한 HTTP 통신 HTTP 통신이란? HTTP란 HyperText Transfer Protocol의 약자로 서버와 클라이언트 간 통신에 사용되는 규약이다. 소켓을 이용한 TCP/IP 통신을 기반으로 수행되지만, 거기에 HTTP 규약이 추가된 형태로 수행된다. HTTP request와 response는 데이터의 정보를 담는 Header, 데이터를 담는 Body 부분으로 구성된다. Header의 정보들은 개행(\r\n)으로 구분되며 개행이 두번 되는 지점부터 Body가 시작된다. Request와 Response의 세부적인 구성은 다음과 같이 정의되어 있다. Request Format Response Format HttpURLConnection 사용법 간단하게 네이버 홈페이지에 request를 보내는 과정을 구현해보자. 코드를.. 2020. 4. 25.