목록Programming/Kotlin - Android (39)
외로운 Nova의 작업실
- 구글맵 API 키 얻기 구글맵을 앱에서 사용하려면 구글맵 키가 필요합니다. 아래 링크로 들어가서 포스팅을 보고 따라하시면됩니다. https://furang-note.tistory.com/16 [Android/Kotlin] Google Maps API 사용하기 현재 진행 중인 프로젝트에 지도API가 필요해서 Fragment에 Google Maps를 보여주는 방법을 기록한다. 1. Google API 프로젝트 생성 및 사용 등록 Google API에 접속하여 프로젝트 만들기를 클릭한다. 새 프로 furang-note.tistory.com - 지도 사용 설정 먼저 그래들 파일에 의존성을 추가해줍니다. implementation 'com.google.android.gms:play-services:12.0.1..
- 구글 play 서비스의 위치 라이브러리 사용자의 위치를 얻으려면 gps, wifi, seluer 등을 이용해서 위치를 얻을 수 있습니다. 위치 제공자등을 선정할때는 아래와 같은 고려사항들이 있습니다. 전력을 적게 소비하는가 정확도는 높은가 API가 간단한가 부가기능을 제공하는가 일반적인 방법으로는 이런 것들을 하나하나 확인하고 검증해서 위치를 얻어야하기때문에 코드가 길어집니다. 따라서 대신 확인해주는 구글 play 서비스 라이브러리를 사용합니다. - 퍼미션 매니페스트 파일에 아래와같이 선언해줍니다. - 의존성 gradle 파일에 아래와 같이 선언해줍니다. implementation 'com.google.android.gms:play-services:12.0.1' - 위치제공자 초기화 GoogleApi..
- Volley 네트워크 프로그래밍을 돕는 라이브러리는 여러가지가 있지만 구글에서 제공하는 Volley를 사용하는 방법을 살펴보겠습니다. 먼저 인터넷을 사용하려면 사용자로부터 퍼미션을 얻고, https의 도메인 정보를 적어줘야합니다. 매니페스트파일에 아래와 같이 작성합니다. res/xml 폴더에 임의의 이름으로 XML을 만들고 아래와 같이 작성합니다. 저는 network.xml로 만들었습니다. https://cdn.pixabay.com/ 그리고 위 정보를 매니페스트파일에 등록해줍니다. 맨 아래에 보이시죠? 만약 모든 도메인과 통신하게하려면 아래와 같이 적어줍니다. 맨 아래 보이시죠? Volley를 사용하려면 먼저 의존성 등록을 해줘야합니다. implementation 'com.android.volley:..
- 스마트폰 정보 앱들은 대부분 http 통신을 통해 서버에 데이터를 저장하거나 불러오는 통신을 하면서 앱을 운영합니다. 따라서 핸드폰이 네트워크가 가능한지 어떤 네트워크를 쓰고 있는지 확인하기위해선 스마트폰 정보를 구해야합니다. - 네트워크 정보 구하기 스마트폰의 네트워크를 알아볼때에는 ConnectivityManager를 사용하고 어떤 네트워크에 있는지를 알아보기 위해서는 ConnectivityManager의 getActivityNetwork() 함수로 Network 객체를 얻어서 이용합니다. ConnectivityManager을 사용하려면 다음 퍼미션을 선언해야합니다. 그런다음 퍼미션을 요구하는 코드를 짜줍니다. //in oncreate code val status = ContextCompat.ch..
- 프리퍼런스 공유된 프리퍼런스는 플랫폼 API에서 제공하는 클래스로 데이터를 키-값 형태로 저장할때 사용합니다. 공유된 프리퍼런스는 앱의 간단한 데이터를 저장하는데 유용하며 내부적으로 내장 메모리의 앱 폴더에 XML 파일로 저장됩니다. 프리퍼런스는 액티비티단위로 만들거나 앱 전체의 프리퍼런스로 만들 수 있습니다. - 메인액티비티에서 프리퍼런스를 이용해 데이터 저장 및 가져오기 메인 액티비티에서 프리퍼런스 저장소를 얻는 방법은 아래와 같습니다. Activity.getPreference(int mode) Context.getSharedPreferences(String name, int mode) 첫번째는 액티비티단위로 데이터를 저장할때 호출하며 아래는 앱 전체의 프리퍼런스를 얻어올때 사용합니다. 이 장에서..
- 내장 메모리와 외장메모리 안드로이드에서 파이저장소는 내장 메모리와 외장메모리 공간으로 구분됩니다. 외장 메모리 공간은 다시 앱별 저장소와 공용저장소로 나뉩니다. 앱별 저장소에는 다른 앱이 접근할 수 없지만 공용 저장소에는 다른 앱이 접근할 수 있습니다. - 내장 메모리의 파일 이용하기 내장메모리는 앱이 설치되면 시스템에서 자동으로 할당해줍니다. 안드로이드 시스템에서는 앱에서 파일을 이용하지않더라도 앱의 패키지명으로 디렉터리를 만들어줍니다. 이 디렉터리가 앱의 내장 메모리공간입니다. 하지만 내장 메모리는 외장 메모리보다 용량이 작아서 크기가 큰 데이터는 외장 메모리를 이용해야합니다. test.txt파일을 만들고 helloworld를 입력한후 값을 가져와 액티비티에 뿌려주는 앱을 만들어보겠습니다. 아래는..
- 저장소 안드로이드 기기에 데이터를 저장하는 방법은 크게 3가지로 나뉩니다. 데이터베이스, 파일, 프리퍼런스를 이용하는 방법입니다. 모두 자주 사용하므로 각각의 특징과 구현 방법을 살펴보겠습니다. 이번장에서는 데이터베이스를 사용하는 방법입니다. - 데이터베이스 안드로이드폰에서 이용하는 데이터베이스 관리 시스템은 오픈소스로 만들어진 SQLite입니다. 외부앱에서는 접근할 수 없습니다. 코드에서는 SQL 질의문만 작성하면되고 실제 데이터는 SQLite가 관리해줍니다. - 질의문 작성하기 질의문을 어떻게 작성하는지 먼저 코드로 보겠습니다. val db = openOrCreateDatabase("age", Context.MODE_PRIVATE, null) //create table db.execSQL("cre..
- 주소록 앱 연동하기 주소록은 가장 많이 이용하는 안드로이드의 기본앱입니다. 핸드폰의 주소록 앱을 연동하여 주소록 목록을 띄우고 전화번호를 가져와보도록 하겠습니다. 프로바이더를 사용할때는 query의 uri가 굉장히 중요합니다. 먼저, 매니페스트 파일에 퍼미션을 설정해줍니다. 이제 사용자에게 퍼미션을 얻어내는 코드와 주소록의 프로바이더에게 쿼리를 보내고그 값에따라 데이터를 받아옵니다. 아래는 메인 액티비티.kt 파일입니다. class MainActivity : AppCompatActivity() { lateinit var path: String override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) v..
- 콘텐츠 프로바이더 콘텐츠 프로바이더는 앱끼리 데이터를 연동하는 컴포넌트입니다. 다른앱의 데이터를 사용할때 콘첸츠 프로바이더를 이용합니다. 이때 데이터는 대상 앱의 데이터베이스나 파일 또는 앱에 할당된 메모리에 있습니다. 콘텐츠 프로바이더를 이용하면 이런 저장소에 있는 데이터를 가져오거나 수정할 수 있습니다. - 콘텐츠 프로바이더 만들기 먼저 다른 앱들이 저의 앱의 저장소를 사용할 수 있도록 저의 앱에 콘텐츠 프로바이더를 만들어보도록 하겠습니다. 먼저 외부앱이 사용할 수 있는 함수들을 만들어줍니다. 아래는 MyContentProvider.kt 파일입니다. class MyContentProvider: ContentProvider() { override fun delete(uri: Uri, selectio..
- 잡 스케줄러 잡 스케줄러는 앱실행시 구동되는 백그라운드가 아닌 특정 상황에서 실행되는 백그라운드입니다. 예를들어 네트워크가 와이파이일때, 배터리가 충전상태일때등등에만 실행되게끔 만들 수 있는게 잡 스케줄러입니다. 또한 실행주기도 정할 수 있어 일정 주기마다 실행되게끔 할 수 있습니다. - 잡 스케줄러의 구성요소 잡 스케줄러의 구성요소는 아래와 같습니다. 잡 서비스 : 백그라운드는 어떻게 돌아가는지 설정합니다. 잡 인포 : 잡 스케줄러가 어떤 상황에서 돌아가는지 설정합니다. 잡 스케줄러 :시스템에 잡스케줄러를 등록합니다. - 잡 서비스 잡 서비스를 만드는 방법을 알아보겠습니다. 잡서비스는 개발자가 만드는 서비스이므로 매니페스트에 태그로 등록합니다. 또한 아래와 같이 퍼미션도 등록해줍니다. 그런다음 Jo..