· Android
1. 스마트폰 정보 구하기전화 정보앱에서 전화 기능을 이용하려면 PhoneStateListener를 상속받아 그 객체를 TelephonyManager에 등록해야 합니다. 그러면 스마트폰의 전화 관련 상태가 바뀔 때마다 PhoneStateListener의 다음과 같은 함수가 자동으로 호출됩니다.onCallForwardingIndicatorChanged(boolean cfi): 통화 전달 상태 변경onCallStateChanged(int state, String incomingNumber): 통화 상태 변경onCellLocationChanged(CellLocation location): 폰의 기지국 위치 변경onDataActivity(int direction): 데이터 송수신 활동onDataConnectio..
· Android
1. 데이터베이스에 보관하기 안드로이드폰에서 이용하는 데이터베이스 관리 시스템은 오픈소스로 만들어진 SQLite 입니다. SQLite 는 테이블의 데이터를 앱의 저장소에 파일로 저장하며 외부 앱에서는 접근할 수 없습니다. 코드에서는 SQL 질의문만 작성하면 되고 실제 데이터는 SQLite 가 관리해 줍니다. 질의문 작성하기SQLite를 사용하려면 SQLiteDatabase 라는 API를 이용해야 합니다. SQLiteDatebase 객체는 openOrCreateDatabase() 함수를 호출해서 얻습니다.val db = openOrCreateDatabase("testdb", Context.MODE_PRIVATE, null) openOrCreateDatabase() 함수는 첫 번째 매개변수로 전달한 DB 파..
· Android
1. 콘텐츠 프로바이더 이해하기 콘텐츠 프로바이더는 앱끼리 데이터를 연동하는 컴포넌트입니다. 예를 들어 앱을 개발하면서 다른 앱의 데이터를 사용할 때 콘텐츠 프로바이더를 이용합니다. 이때 데이터는 대상 앱의 데이터베이스나 파일 또는 앱에 할당된 메모리에 있습니다. 콘텐츠 프로바이더를 이용하면 이런 저장소에 있는 데이터를 가져오거나 수정할 수 있습니다. 앱의 데이터는 그 앱의 구성 요소에서 이용할 때는 문제가 없지만 외부 앱에서는 기본적으로 접근하지 못합니다. 외부 앱에서 마음대로 접근하면 보안 문제가 발생하기 때문입니다. 그렇지만 앱을 만들다 보면 공유해야 하는 데이터도 있기 마련입니다. 예를 들어 휴대폰에 저장된 주소록은 주소록 앱의 데이터고, 카메라로 촬영한 사진은 갤러리 앱에 저장돼 있지만 모두 다..
· Android
1. 서비스 이해하기 서비스는 오래 걸리는 작업을 백그라운드에서 처리할 수 있게 해주는 컴포넌트입니다. 따라서 서비스에 화면을 구현하지는 않습니다. 그리고 서비스 역시 안드로이드의 컴포넌트이므로 생명주기를 시스템에서 관리합니다.서비스 생성과 실행서비스 컴포넌트는 Service 클래스를 상속받아서 작성합니다. 서비스에는 다양한 생명주기 함수를 재정의할 수 있지만 onBind()는 필수적입니다.class MyService : Service() { override fun onBind(intent: Intent): IBinder? { return null }} 서비스도 컴포넌트이므로 매니페스트에 등록해야 합니다. 서비스를 실행하려면 시스템에 인텐트를 전달해야 하는데 이때 사용하는 함수는 ..
· Android
1. 브로드캐스트 리시버 이해하기 브로드캐스트 리시버는 흔히 이벤트 모델로 실행되는 컴포넌트라고 정의합니다. 여기서 이벤트란 액티비티를 다룰 때 살펴본 사용자 이벤트가 아니라 부팅이 완료되는 것과 같은 시스템의 특정한 상황을 의미합니다. 시스템에 어떤 이벤트가 발생하면 브로드캐스트 리시버를 실행해 앱이 해당 상황에 맞게 동작하도록 할 수 있습니다. 브로드캐스트 리시버는 줄여서 리시버라고도 하며 우리말로 직역하면 '방송 수신기'라고 할 수 있습니다. 즉, 시스템에서 특정한 상황을 알리는 방송을 할 때(이벤트 발생) 이를 받아서 처리하는 수신기를 앱에 장착한다고 생각하면 쉽습니다. 이 수신기도 액티비티처럼 안드로이드의 컴포넌트이므로 인텐트를 시스템에 전달함으로써 실행합니다.브로드캐스트 리시버 만들기브로드캐스..
· Android
1. 인텐트 이해하기인텐트란 안드로이드 앱은 모두 4개의 컴포넌트로 개발하는데 이 때 핵심 클래스가 바로 Intent입니다. 인텐트는 한마디로 '컴포넌트를 실행하려고 시스템에 전달하는 메시지'라고 정의할 수 있습니다. 즉, 기능을 수행하는 함수를 제공하는 클래스가 아니라 데이터를 담는 클래스입니다. 이 데이터는 컴포넌트를 실행하는 정보이며 이 정보가 담긴 인텐트 객체를 시스템에 전달하면 컴포넌트가 실행됩니다.  한 앱에 MainActivity와 DetailActivity가 있다고 가정해봅시다. MainActivity가 실행되고 나서 DetailActivity로 화면을 전환한다면 DetailActivity 클래스의 객체를 생성해서 실행하면 될 것 같습니다. 하지만 DetailActivity가 안드로이드의 ..
· Android
1. 앱바 사용하기 구글의 머티리얼 디자인(material design)은 모바일과 데스크톱, 그리고 그 밖에 다양한 장치를 아우르는 일관된 애플리케이션 디자인 지침입니다. 구글에서는 머티리얼 디자인을 다음처럼 소개합니다.질감이 느껴지는 표면과 대담하고 선명한 그래픽 디자인, 그리고 아름답고 직관적인 사용자 경험을 위한 자연스러운 애니메이션을 특징으로 한다. 이러한 머티리얼 디자인 지침에 맞게 앱을 개발하려면 다양한 뷰가 필요한데, 구글은 이를 지원하려고 머티리얼 라이브러리를 제공합니다. 앱바 레이아웃 - 화면 위쪽 영역 꾸미기앱바(AppBar)란 화면 위쪽의 꾸밀 수 있는 영역을 의미합니다. 앱바를 이용해 화면 위쪽 영역의 크기만 늘릴 수도 있지만 메뉴를 출력하는 툴바를 포함할 수도 있습니다. 그리고 ..
· Android
1. 제트팩과 androidx 소개 구글에서는 안드로이드 앱을 개발하는 데 필요한 다양한 라이브러리 모음을 제트팩(Jetpack) 이라는 이름으로 제공합니다. 제트팩은 안드로이드 플랫폼이 기본으로 제공하는 플랫폼 API 외에 따로 추가된 라이브러리입니다.  플랫폼 API플랫폼 API는 ART(Android runtime)에서 제공하는 안드로이드 앱의 핵심 라이브러리입니다. ART는 대부분 android나 java로 시작하는 패키지명을 사용합니다.안드로이드 앱은 런타임 때 ART에 의해 실행되므로 ART에서 제공하는 플랫폼 API를 이용해 개발합니다. 하지만 기기 버전에 따른 호환성 문제가 발생할 수 있습니다. 또한 플랫폼 API는 기본 재료일 뿐 실제 앱을 개발할 때는 더 다양한 기능이나 화면을 구현해야..
· Android
1. API 레벨 호환성 고려하기 build.gradle 에서 설정하는 targetSdkVersion과 minSdkVersion은 API 레벨을 의미하며 앱 개발에 큰 영향을 주는 중요한 요인입니다.minSdkVersion 16targetSdkVersion 30 만약 위와 같이 설정했다면 targetSdkVersion에 설정한 30 버전의 API로 앱을 개발한다는 의미입니다. 그런데 minSdkVersion을 16으로 지정했으므로 이 앱은 16버전(안드로이드 4.1 젤리빈) 기기부터 설치할 수 있습니다. 결국 이 앱은 30 버전의 API로 개발하지만 16버전 기기에서도 오류를 발생하지 않고 동작해야 합니다. 따라서 앱을 개발할 때 minSdkVersion 설정값보다 상위 버전에서 제공하는 API를 사용한..
· Android
1. 리소스의 종류와 특징 안드로이드 앱 개발에서 리소스란 정적인 자원이라고 할 수 있습니다. 앱에서 사용하는 리소스는 크게 앱 리소스와 플랫폼 리소스로 구분됩니다. 앱 리소스 사용하기앱 리소스란 개발자가 직접 추가한 리소스를 의미합니다. 앱을 개발하기 위해 모듈을 만들면 자동으로 res라는 디렉터리가 생기고 그 아래에 drawable, layout, mipmap, values라는 디렉터리 4개가 생성됩니다. 개발자는 이 리소스 디렉터리에 리소스 파일을 각각 만듭니다. 모듈을 만들면 기본으로 디렉터리 4개가 만들어지지만 리소스 파일의 종류는 더 많습니다. 즉, 기본 디렉터리뿐만 아니라 더 많은 디렉터리를 res 아래에 만들어 쓸 수 있습니다. 안드로이드 앱에서 이용되는 리소스의 종류를 정리해 보면 아래와..
나말지
'앱' 태그의 글 목록