본문 바로가기

Android Studio (Kotlin)

(14)
가속도 센서 이용하여 화면 갱신하기 센서 사용을 위한 클래스 및 인터페이스 4가지 Sensor : SensorManager를 통해 활용하고자 하는 유형의 센서 클래스 생성 가능 SensorEvent : 센서를 통해 발생하는 이벤트의 정보를 담고있는 객체 SensorManager : 센서를 관리하고 이용할 수 있도록 하는 클래스, 센서 이벤트 리스너 등록, 센서의 값을 얻어올 수 있음 SensorEventListener : 센서 값이 변경되었을 때 SensorManager에서 이벤트 형태로 값을 전달받을 수 있도록 한다. SensorManager의 registerListener 메소드로 리스너를 등록, 센서 데이터 업데이트가 필요하지 않으면 unregisterListener로 리스너를 해제한다 가속도 센서 가속도계 센서는 3차원 공간에서의 ..
Android Component (5) Content Provider : 어떤 앱이 다른 앱으로 데이터를 제공하고자 할 경우 사용 요청은 ContentResolver 클래스에 의해 처리된다. 다양한 방법으로 데이터를 저장할 수 있다. 하나의 안드로이드 디바이스에는 다수의 ContentProvider가 존재할 수 있다. 특정 ContentProvider가 어떤 앱과 통신하는지 알아야하며 모든 데이터의 동기화를 유지해야한다. ContentResolver ContentResolver에서 아래 메서드들 중 하나를 호출하면 ContentResolver가 ContentProviders에게 해당 기능을 수행하라고 알려준다. query() : 데이터 읽기 insert() : 데이터에 행 추가 updeate() : 데이터 갱신 delete() : 데이터로부터..
Android Component (4) Fragment간 통신 서로 다른 Fragment들은 직접적으로 정보를 주고받을 수 없다. 반드시 Host Activity를 거쳐서 이루어져야한다. ViewModel 혹은 인터페이스를 활용하여 통신이 이루어진다. interface를 선언하고 해당 interface의 구현을 통한 간접 호출 : interface를 선헌하고, Activity에서 구현한다. fragment에서는 interface를 호출한다. bundle을 이용한 통신 : Activity가 중간 전달자 역할을 수행한다. activity의 method를 호출하면서 parameter로 전달한다. activity에서는 받은 값을 하위 fragment로 전달한다. 전달 받는 fragment에서는 arguments에서 읽는다. fragmentResult..
Android Component (3) bindService : startService()와는 달리 하나 이상의 클라이언트 컴포넌트 간의 통신을 구현 가능. 서비스를 실행시켜놓고 필요할 때마다 서비스의 메소드에 접근하여 통신할 수 있는 구조. bindService 생명주기 서비스가 bindService로 시작되면 onCreate()->onBind() 함수가 호출되면서 Running 상태가 된다. bindService()로 실행된 서비스는 unbindService()로 종료 종료하면서 onUnBind()->onDestroy() 함수가 호출된다. onCreate()->onBind()->onUnbind()->onDestoy() startService 생명주기 onCreate()->onStartCommand()->onDestroy() Binder를 ..
Android Component (2) Fragment Fragment : Activity와 마찬가지로 사용자에게 UI 화면을 제공하는데 사용하는 컴포넌트 여러 개의 Fragment를 하나의 액티비티에 결합하여 다향한 화면 구성의 UI를 제작할 수 있다. Fragment는 항상 Activity 내에서 호스팅 되어야 한다. Fragment의 생명주기는 호스트 Activity의 생명주기에 직접적으로 영향을 받는다. 자체적인 생명주기를 가져서 Activity가 실행중인 동안 Fragment로 이루어진 분할된 화면들의 상태를 자체적으로 조작할 수 있다. FragmentManager를 통해 관리한다. Fragment 생명주기 onAttach() : Fragment가 Activity에 붙을 때 호출된다. 하지만 아직 fragment가 완벽하게 생성된 단..
Android Component (1) Activity Activity : 사용자에게 UI 화면을 제공하는데 있어 가장 기본이 되는 앱 컴포넌트 하나의 앱은 앱 최초 실행 시 보여지는 하나의 메인 액티비티를 가진다. 액티비티에 다양한 컴포넌트들을 추가하여 다채로운 UI를 구성할 수 있다. Activity 생성 : 모든 Activity는 반드시 Manifest 파일에 선언되어야 한다. Activity 생명주기 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() 순으로 실행된다. 경우에 따라 onRestart() 메소드 호출 필요성 : PC환경에서 모바일 환경으로 전환되면서 사용자가 사용하는 디스플레이의 화면이 작아졌으며 이에 따라 여러 이슈들 발생, 생명주기를 통해 특정 Ac..
Tedpermission을 사용한 권한 설정 (Contacts 쓰기 권한 사용) Gradle 파일 추가 implementation 'io.github.ParkSangGwon:tedpermission-normal:3.3.0' Manifest 파일 추가 (연락처 쓰기 권한) Manifest permission에 대한 정보는 https://developer.android.com/reference/android/Manifest.permission Manifest.permission | Android Developers developer.android.com val permissionlistener = object : PermissionListener { //권한 허용 시 override fun onPermissionGranted() { var name = binding.tvName.text..
contentResolver를 이용한 연락처 저장 https://developer.android.com/guide/topics/providers/contacts-provider 연락처 제공자 | Android 개발자 | Android Developers 연락처 제공자 연락처 제공자는 사람에 대한 데이터를 저장하는 기기의 중앙 리포지토리를 관리하는 강력하고 유연한 Android 구성요소입니다. 연락처 제공자는 기기의 주소록 애플리케이션에서 developer.android.com private fun addContacts(name: String, tel: String) { val p = ContentValues() p.put(ContactsContract.RawContacts.ACCOUNT_TYPE, "com.google") p.put(ContactsCon..