Android

USB 케이블이 불편해 케이블을 이용하지 않고 테스트 폰을 연결하는 방법을 알아보았다. Android 11부터 무선 디버깅(wireless debugging)이 추가 되었다. 포스팅에서 이전 버전의 방법과 추가된 기능의 방법을 포스팅 할 것이다. Android 11 이전의 방법 디바이스에서 adb를 위한 TCP/IP port를 열어놓고, PC에서 adb로 디바이스 IP:port 로 연결 1) USB 연결 2) Android Studio 에서 Terminal 실행 : Android Studio 하단에 Terminal을 연다. 3) 다음의 커맨드를 실행해서 adb를 위한 tcpip 포트를 연다. > adb tcpip 5555 뒤에 오는 5555는 포트번호로 사용가능한 포트를 써준다. adb가 터미널에서 실행..
startActivityForResult()가 deprecated된 이유 AndroidX Activity, Fragment에 도입된 Activity Result API 사용을 적극 권장하고 있음 결과를 얻는 Activity를 실행하는 로직을 사용할 때, 메모리 부족으로 인해 프로세스와 Activity가 사라질 수 있음 기존 Activity에서는 startActivityResult를 통해서 콜백을 등록하고, onActivityResult에서 콜백을 처리한다. 두 메서드가 같은 곳에서 구현을 해야하는데, 메모리 부족으로 제대로 동작을 안할 수 있다는 것 - Activity가 종료되었다가 다시 생성되었을 때 Activity에게 결과를 기다리는 중임을 다시 알려야 한다. 기존 API 화면 전환 startActi..
안드로이드는 앱 간의 데이터 이동을 위해 OS 차원에서 클립보드를 지원하고 있다. 클립보드를 이용해 공유할 수 있는 데이터 포맷은 다음과 같다. 텍스트 : 단순 문자열. URI : 데이터의 위치를 가리키는 URI. 실제 데이터를 제공하려면 ContentProvider를 구현해야 한다. Intent : 앱 실행 명령과 관련된 데이터. HTML 텍스트 : HTML 형태의 서식있는 문자열. 4.1(API 16)부터 추가되었다. 각 데이터 타입에 따라 MIME 타입을 지정함으로써, 클립보드로부터 데이터를 받는 애플리케이션은 이 MIME 타입을 읽어서 데이터가 무슨 타입인지 판별할 수 있다. 클립보드는 저장 공간이 한개 뿐이므로, 한번에 하나의 데이터만 교환할 수 있다. 클립보드에 새로운 데이터가 들어오면, 기존..
오류가 시스템 레벨에서 발생한다면, 예외(Exception)는 개발자가 구현한 로직에서 발생한다. 예외는 발생할 상황을 미리 예측하여 처리할 수 있다. 예외는 개발자가 처리할 수 있기 때문에 예외를 구분하고 그에 대한 처리 방법을 명확히 알고 적용하는 것이 중요하다. Exception 종류 내용 ClassNotFoundException 클래스를 찾지 못함 CloneNotSupportedException 인터페이스를 미구현함 IllegalAccessException 클래스에 접근 불가함 InstantiationException 추상 클래스, 인터페이스를 인스턴스화 하고자 함 InterruptedException Thread가 중단됨 NoSuchFieldException 지정된 필드가 없음 NoSuchMet..
뒤로 가기 두번 클릭후 종료 구현중 Toast Message가 Test 단말기에서는 나오나 Emulator 에서는 나오지 않아 찾아보았다. 1. Device Manager에서 해당 Emulator의 데이터 지우기 (WipeData) 위 방법을 해보아도 Toast가 출력되지 않을시 아래 방법 실행 2. Tools > SDK Manager > SDK Tools > Android Emulator 설치 2번째를 해보니 Toast 출력 확인
ViewPager2 View를 Paging 하는 매개체 즉, 사용하는 View를 슬라이드 쇼처럼 넘기게 할 수 있는 페이징 툴 ViewPager ViewPager2와 ViewPager ViewPager2는 AndroidX가 발표된 이후 새롭게 나온 ViewPager로 안드로이드 공식 문서에서도 아래와 같은 이유로 ViewPager보다 ViewPager2를 활용하여 페이징 하는 것을 권장 Horizontal Paging에서 Vertical Paging도 지원 가능(orientation 속성 활용) RTl(Right To Left) 페이징 지원(layoutDirection 속성 활용) notifyDatasetChanged로 Mutable Fragment Collection을 활용하여 동적 페이징 구현 주로 ..
안드로이드에서는 특정 동작을 위하여 권한이 필요 Android 6.0 (Marshmallow) 이전에는 앱 설치 시 모든 권한이 요청되었지만 이후 버전은 권한이 크게 일반 권한과 위험 권한으로 나뉨 일반권한 개인정보를 요청하지 않는 권한으로 앱 설치 시 권한을 요청하며, 대표적으로 인터넷 접근 권한, 와이파이 접근 권한, 블루투스 접근 권한 등이 있다. 위험 권한 개인정보를 요청하는 권한으로 그 기능이 동작할 때 권한을 요청하며, 대표적으로 카메라, 위치, 갤러리, 주소록 권한 등이 있다. 그룹 내 권한 허용 시, 동일 그룹 내 권한이 요청될 경우 자동으로 허용 Permission 요청 예시 Manifest 위치 권한 추가 FINE은 GPS 센서, COARSE는 네트워크로 위치를 측정 권한 요청 (Act..
단일 Activity에서 다수의 프레그먼트 사용 시 같은 Data를 이용할 경우가 많다. 프레그먼트 별로 ViewModel 객체를 생성할 경우 데이터 공유가 어렵다. 다수의 프레그먼트에서 Data를 공유해서 사용할 경우가 있다. 1개의 Activity에 2개의 Fragment가 있고, 각 Fragment는 text Data를 전송/수신한다고 할 시 Fragment1 : Text 변경 역할 Fragment2 : 수신후 보여주는 역할 ViewModel class MyViewModel : ViewModel() { val text = MutableLiveData() fun sendText(text: String) { text.value = text } } Fragment1 class Fragment1 : Fra..
데이터를 이용한 다중 Marker를 찍고 마커가 많을 시 GoogleMap이 지저분 하지 않기 위해 클러스터를 통해 마커를 모아주기 GoogleMap API 사용과 기본 마커 찍기 Android Google Map API 사용 방법 및 예제 Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com Google Developers Console 사이트에 접속 후 프로젝트 생성 적당한 프로.. bumjae.tistory.com 코로나 진료소 API를 찔러 위도, 경도를 받고 다중 마커를 찍었는데 마커가 많아 가독성을 흐려 클러스터링을 사용하고 싶어 구현해보았다. Clustering ..
bumjae
'Android' 카테고리의 글 목록 (3 Page)