본문 바로가기

모바일(Mobile)/안드로이드(Android)

(13)
[Android] 안드로이드 기기와 USB 외부 장치 개요 (OverView) 안드로이드에서 USB 장치와의 통신 및 상호작용은 AOA (Android Open Accessory)라는 기술에 의해서 지원됩니다. 가장 대표적인 사례로는 마우스, 로봇 컨트롤러, 키오스크, 카드리더기 등이 이에 해당합니다. 일반적인 사용자 환경에서는 보통 안드로이드 기기에 마우스나 키보드 같은 USB 외부 장치를 연결하면 자동으로 HID(Human Interface Descriptor)라는 기술을 통해 통신이 지원되고 따라서 안드로이드 장치 내에서 USB 장치를 사용할 수 있습니다. 서로 다른 두 장치(하드웨어)를 서로 USB(Universal Serial Bus)로 연결하면 일어나는 일 마우스, PC, 스마트폰 등 다양한 하드웨어 장치를 USB로 서로 연결하면 두 장치는 US..
[Android] 안드로이드와 스케줄링 알고리즘 개요 오늘은 안드로이드에서 사용되는 스케줄링 알고리즘(scheduling Algorithm)에 대해서 알아보도록 하겠습니다. 안드로이드는 Linux Kernal 부터 시스템 앱까지 다양한 소프트웨어가 결합된 하나의 거대한 플랫폼 입니다. 안드로이드의 플랫폼 구조, 즉 플랫폼 아키텍처는 아래의 그림과 같습니다. 안드로이드 개발자 사이트의 설명을 인용하자면, 안드로이드란 "Android는 다양한 기기와 폼 팩터에 사용할 수 있도록 제작된 Linux 기반의 오픈소스 소프트웨어 스택" 이라고 설명할 수 있습니다. 따라서, 이러한 안드로이드 플랫폼에서도 다른 운영체제, 예를 들면 Window나 Mac처럼 컴퓨터에서 동작할 다양한 프로그램들 즉 '프로세스'의 관리를 위한 '스케줄링 알고리즘'이 적용됩니다. 스케줄링..
[Android] SQLite와 데이터 베이스 오버 플로우에 관하여 개요 최근 안드로이드 애플리케이션을 만들면서 사용자의 데이터를 영구적으로 저장하고, 분석하는 작업이 필요했는데요. 그래서, 자연스럽게 안드로이드에서 지원하는 데이터베이스, SQLite를 사용해서 DB를 설계해보았습니다. SQLite는 아래와 같이, 직접 헬퍼 클래스 (eg. DBHelper)를 선언하여 데이터베이스를 관리할 수도 있습니다. public class DBHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydb.db"; private static final int DATABASE_VERSION = 1; public DBHelper(Context context) { super(context, DATABA..
[Android] 데이터 바인딩과 뷰모델(DataBinding & ViewModel) 데이터 바인딩을 하는 이유 지난 포스트에서는 데이터 바인딩(DataBinding)의 가장 간단한 형식에 대해서 알아보았습니다. https://1-hee.tistory.com/87 [Android] 데이터 바인딩(DataBinding) 데이터 바인딩(DataBinding)이란? 안드로이드 스튜디오 개발자 사이트에서 정의한 표현을 인용하자면 다음과 같이 정의할 수 있습니다. 프로그래매틱 방식이 아니라 선언적 형식으로 레이아웃의 UI 1-hee.tistory.com 데이터 바인딩은 더 이상 개발자가 xml로 설계한 화면에 대하여 일일히 findViewById() 메소드를 통해서 뷰 바인딩을 해주지 않아도 된다는 이점을 가집니다. 처음 안드로이드 개발을 배우는 상황에서는 명시적으로 뷰를 Id를 통해 찾아내고 뷰..
[Android] 안드로이드 스튜디오에서 원격으로 디버깅 하기 with ADB 안드로이드 스튜디오(Android Studio)에서는 원격 접속을 통해 디바이스에 앱을 설치하거나 디버깅을 할 수 있다. 안드로이드 앱의 시스템 설정에서 빌드 번호를 찾아 열심히 터치하면 개발자 모드를 켤 수 있는데, 보통 한국인이 많이 사용하는 갤럭시 스마트폰을 기준으로 하면 설정 > 휴대전화 정보 > 소프트웨어 정보 에서 빌드 번호를 찾을 수 있다. 아래와 같이 빌드번호를 찾아 열심히 연타하면 개발자 모드를 활성화할 수 있고, 원격이 아니더라도 안드로이드 스튜디오에서 스마트폰 등을 사용해서 개발하거나 테스트할 때는 개발자 모드가 필요하니 알아두면 좋다. 위와 같이 설정에서 빌드번호를 연타했다면, 휴대폰 내에서 개발자 모드가 켜지는데, 개발자 모드가 켜져있을 경우 외부로부터 파일을 주고 받거나 앱을 설..
[Android] 데이터 바인딩(DataBinding) 데이터 바인딩(DataBinding)이란? 안드로이드 스튜디오 개발자 사이트에서 정의한 표현을 인용하자면 다음과 같이 정의할 수 있습니다. 프로그래매틱 방식이 아니라 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리 안드로이드에서 앱은 xml을 기반으로 하여 화면을 설계하고, Java나 Kotlin 소스 코드를 통해 필요한 로직을 구현하고 앱의 동작을 만들어낼 수 있습니다. 이와 관련하여 아래의 글을 참조하면 향후 이어지는 글에 대해 조금은 도움이 되실거 같습니다 😀 https://1-hee.tistory.com/86 따라서, 데이터 바인딩이 없더라도 자바나 코틀린 소스 코드에서 레이아웃을 참조하여 기능을 구현하고 값을 바꿀 수 있습니다. 그리고 이렇게 사용자..
[Android] 뷰 바인딩(ViewBinding) 뷰바인딩(ViewBinding)이란? 안드로이드 앱은 크게 화면의 구현과 배치를 담당하는 XML과 레이아웃을 참조하고 앱의 동작, 로직 등 필요론 하는 기능의 구현을 담당하는 Java/Kotlin 파일로 구성됩니다. 물론, 앱을 빌드하고 서명을 추가하는 gradle(or KTS(Kotlin DSL))도 있지만, 지금은 자세히 다루지 않겠습니다. 안드로이드 앱은 xml로 그려놓은 화면을 다양한 클래스들의 상호작용을 통하여 그려냅니다. 이 과정에는 정말 많은 클래스가 관여하며 이 부분은 앱 개발자가 신경 쓸 부분은 아닌지라, 아래의 포스트를 참조하여 어떻게 동작하는지 그림이라도 파악해두면 좋을 것 같습니다. https://velog.io/@ows3090/Android-findViewById-%EC%9B%90..
[TIP] 안드로이드 컴포즈 환경에서 토스 결제 API 사용하기 💡 본 포스팅은 안드로이드 프로젝트 內 Jetpack Compose를 사용하는 환경에서 XML 기반 액티비티로 결제 기능을 구현하였습니다. 즉, 컴포즈로 결제 기능을 직접 구현한 것은 아닙니다. 😀 개요 컴포즈 환경에서 앱 개발하던 중 앱 내 결제 기능이 필요해서 toss 의 api를 사용해서 결제 기능을 구현했습니다. https://docs.tosspayments.com/reference/widget-android 결제위젯 Android SDK | 토스페이먼츠 개발자센터 결제위젯 Android SDK를 추가하고 메서드를 사용하는 방법을 알아봅니다. docs.tosspayments.com 이때, 컴포즈로 직접 컴포저블을 만들어서 대응하는 방법도 있겠지만, 일단 저는 초보(?)고 잘 모르겠어서 컴포저블과 ..