전체 글134 19-1 사용자 위치 얻기 여섯째 마당에서 앱에 다양한 기능을 추가하는 것에 대해 공부하고 있다. 17장 저장소에 데이터 보관하기, 18장 네트워크 프로그래밍에 이어 19장에서는 위치정보를 활용하는 것을 배울 것이다. 앱에서 사용자의 위치를 얻는 데는 1️⃣플랫폼 API를 이용하는 방법과 2️⃣구글 Play 서비스에서 제공하는 라이브러리를 이용하는 방법이 있다. 위치 접근 권한 먼저 앱에서 사용자의 위치를 추적하려면 3가지 권한을 얻어야 한다. 또한 각 상황에 맞춰 매니페스트 파일에 이 권한을 등록해야 한다. android.permission.ACCESS_COARSE_LOCATION: 와이파이나 모바일 데이터(또는 둘 다)를 사용해 기기의 위치에 접근하는 권한이다. 도시에서 1블록 정도의 오차 수준이다.(정확도 높아야 할 때. e.. 2023. 7. 13. 18-3 이미지 처리하기 - Glide 라이브러리 이번 절에서는 이미지를 다루는 Glide 라이브러리를 살펴볼 것이다. 이번 장의 주제는 네트워크 프로그래밍이지만 서버에서 이미지를 내려받을 때 Glide를 이용하면 네트워크 부분을 Volley나 Retrofit보다 더 쉽고 빠르게 개발할 수 잇다. Glide 는 Bump라는 앱에서 내부적으로 이용하다가 구글이 인수하여 공개한 라이브러리이다. Glide는 모든 종류의 이미지를 가능한 한 빠르게 가져와서 이용할 수 있게 한다. 또한 이미지의 크기를 조절하거나 로딩 이미지, 오류 이미지 표시 등을 쉽게 구현할 수 있다. Glide를 이용하려면 빌드 그래들의 dependencies에 다음처럼 등록해야 한다. // Glide 등록 implementation 'com.github.bumptech.glide:glid.. 2023. 7. 13. 18-2 HTTP 통신하기 앱에서 네트워크 통신을 구현하려면 우선 매니페스트 파일에 다음처럼 퍼미션을 선언해야 한다. // 인터넷 퍼미션 선언 안드로이드 앱은 네트워크 통신을 할 때 기본으로 HTTPS 보안 프로토콜을 사용한다. 만약 일반 HTTPS 프로토콜로 통신하려면 특정 도메인만 허용하도록 선언해 줘야 한다. res/xml 폴더에 임의의 이름으로 XML 파일을 만들고 다음처럼 작성한다. // HTTP 통신 허용 // 임의의 XML 파일? xxx.xxx.xxx.xxx // xxx.xxx 부분은 HTTP 프로토콜로 접속을 허용할 IP나 도메인 태그에 HTTP 통신을 허용할 서버의 IP나 도메인을 작성한다. 이렇게 작성한 XML 파일을 매니페스트의 태그에 networkSecurityConfig 속성으로 알려주면 해당 도메인에 한해.. 2023. 7. 13. 18-1 스마트폰 정보 구하기 전화 상태 변화 감지하기 - PhoneStateListener 앱에서 스마트폰의 상태를 파악해야 할 때가 있다. 예를 들면 전화가 걸려 오는 순간을 감지하거나 서비스 상태가 변경되는 순간을 감지하고 싶은 경우이다. 이처럼 스마트폰의 상태를 파악하는 방법은 PhoneStateListener를 이용하는 방법과 TelephonyCallback을 이용하는 방법이 있다. PhoneStateListener를 이용하는 방법은 안드로이드 초기 버전부터 제공되던 방식인데 안드로이드 12(API 레벨 31)에서 deprecated 되었고, 대신 TelephonyCallback이 추가되었다. 그러나 워낙 오랫동안 PhoneStateListener를 사용해왔고 안드로이드 12 하위 버전을 대상으로는 계속 사용해야 하므로 이 .. 2023. 7. 12. 17-3 공유된 프리퍼런스에 보관하기 공유된 프리퍼런스 이용하기 앱의 데이터를 내부 저장소에 저장하려면 앞에서 살펴본 데이터베이스나 파일을 이용할 수도 있지만 공유된 프리퍼런스(SharedPreferemces)를 사용하는 방법도 있다. 공유된 프리퍼런스는 플랫폼 API에서 제공하는 클래스로, 데이터를 키-값 형태로 저장할 때 사용한다. 공유된 프리퍼런스는 앱의 간단한 데이터를 저장하는 데 유용하며 내부적으로 내장 메모리의 앱 폴더에 XML 파일로 저장된다. SharedPreferences 객체를 얻는 방법은 다음 2가지를 제공한다. Activity.getPreferences(int mode) Context.getSharedPreferences(String name, int mode) Activity.getPreferences() 함수는 액티.. 2023. 7. 12. 17-2 파일에 보관하기 앞 절에서 살펴본 데이터베이스와 다음 절에서 살펴본 프리퍼런스는 모두 내부적으로는 파일로 저장되지만 코드에서 직접 파일을 읽거나 쓰지는 않고 특정 API를 이용하는 방법이다. 그러나 이번 절에서는 앱에서 직접 파일을 만들어 데이터를 쓰거나 읽는 방법을 살펴보자. 안드로이드 앱에서 파일을 다룰 때는 대부분 java.io 패키지에서 제공하는 클래스를 이용하므로 파일을 읽거나 쓰는 코드는 일반 자바 프로그램과 차이가 없다. File: 파일 및 디렉터리를 지칭하는 클래스이다. FileInputStream / FileOutputStream: 파일에서 바이트 스트림으로 데이터를 읽거나 쓰는 클래스이다. FileReader / FileWriter: 파일에서 문자열 스트림으로 데이터를 읽거나 쓰는 클래스이다. 안드로이.. 2023. 7. 12. 이전 1 ··· 7 8 9 10 11 12 13 ··· 23 다음