기본 콘텐츠로 건너뛰기

글

라벨이 Android인 게시물 표시

Android에서 BLE 통신을 사용하는 방법

Android에서 BLE 통신을 사용하는 방법 BLE(Bluetooth Low Energy)는 이름 그대로 전력 사용량을 낮춘 Bluetooth 통신 방식입니다. 센서, 비콘, 건강 측정기, 소형 IoT 기기처럼 작은 데이터를 주기적으로 주고받는 환경에 특히 잘 맞습니다. Classic Bluetooth와 달리 소켓으로 자유롭게 데이터를 주고받기보다, 정해진 GATT 구조 안에서 데이터를 읽고 쓰는 방식으로 동작합니다. 목차 BLE를 사용하기 전 알아둘 점 BLE의 핵심 구조: Central, Peripheral, GATT Service와 Characteristic 이해하기 Android 버전별 BLE 권한 BLE 통신 흐름 스캔 및 연결 샘플 코드 1. BLE를 사용하기 전 알아둘 점 BLE는 배터리 효율이 좋지만, 많은 양의 데이터를 빠르게 전송하는 용도에는 적합하지 않을 수 있습니다. 연결하려는 기기가 제공하는 Service UUID와 Characteristic UUID, 데이터 형식은 제조사 문서나 기기 사양으로 반드시 확인해야 합니다. BLE는 작은 데이터를 주기적으로 전송하는 데 적합합니다. 스캔은 배터리 사용량이 크므로 시간 제한을 두고, 기기를 찾으면 바로 멈춥니다. 기기별 UUID와 데이터 형식은 다르므로 공통값으로 가정하면 안 됩니다. 연결, 서비스 탐색, 데이터 수신은 모두 비동기 콜백으로 처리됩니다. 연결이 끝나면 disconnect() 와 close() 로 리소스를 해제합니다. 2. BLE의 핵심 구조: Central, Peripheral, GATT BLE에서는 스마트폰이 보통 Central 역할을 맡습니다. 주변 BLE 기기를 스캔하고 연결을 요청하는 쪽입니다. 센서나 측정 장치는 Peripheral 역할을 하며, 자신의 데이터와 기능을 외부에 제공합니다. 이때 데이터의 구조와 접근 방식은 G...

Android에서 Bluetooth 통신을 사용하는 방법

Android에서 Bluetooth 통신을 사용하는 방법 Bluetooth는 스마트폰과 차량용 기기, 센서, 블랙박스, 이어폰처럼 가까운 장치끼리 무선으로 데이터를 주고받을 때 사용하는 기능입니다. Android에서는 기기 검색부터 연결, 데이터 송수신까지 API로 처리할 수 있습니다. 이번 글에서는 Bluetooth 통신을 시작할 때 알아두면 좋은 개념과 권한, 그리고 간단한 연결 예제를 정리해 보겠습니다. 목차 Bluetooth 통신을 만들기 전 고려할 점 Bluetooth Classic과 BLE의 차이 Android 버전별 Bluetooth 권한 Bluetooth 통신 흐름 연결 및 데이터 전송 샘플 코드 1. Bluetooth 통신을 만들기 전 고려할 점 Bluetooth는 가까운 거리에서 편리하게 통신할 수 있지만, 항상 연결되어 있다고 가정하면 안 됩니다. 기기 전원이 꺼지거나 통신 범위를 벗어나면 연결이 끊길 수 있고, 페어링 여부나 장치별 지원 프로파일도 다를 수 있습니다. 기기에 Bluetooth 기능이 있는지 확인합니다. 사용자가 Bluetooth를 꺼 둔 경우, 켜도록 안내합니다. 연결·데이터 수신 작업은 메인 스레드가 아닌 별도 스레드에서 처리합니다. 연결 실패와 연결 해제 상황을 항상 처리합니다. 기기마다 통신 규격과 UUID, 데이터 형식이 다를 수 있음을 고려합니다. 2. Bluetooth Classic과 BLE의 차이 Bluetooth는 크게 Bluetooth Classic 과 Bluetooth Low Energy(BLE) 로 나눌 수 있습니다. 이름은 비슷하지만 통신 방식과 잘 맞는 사용 사례가 다릅니다. 구분 Bluetooth Classic BLE 특징 지속적인 데이터 전송에 적합 낮...

Android에서 GPS 위치 정보를 사용하는 방법

Android에서 GPS 위치 정보를 사용하는 방법 지도 표시, 주행 기록, 주변 정보 검색처럼 위치가 필요한 기능은 생각보다 고려할 것이 많습니다. 단순히 GPS를 켜고 좌표를 받는 작업이 아니라, 권한·배터리·정확도·통신 상태까지 함께 다뤄야 안정적인 기능이 됩니다. 이번 글에서는 Android 기본 위치 API인 LocationManager 를 기준으로 정리해 보겠습니다. 목차 GPS 기능을 만들기 전 고려할 점 위치 Provider란? GPS Provider와 Network Provider의 차이 Android 버전별 위치 권한 위치 정보 수신 샘플 코드 1. GPS 기능을 만들기 전 고려할 점 위치 정보는 민감한 개인정보입니다. 따라서 “정말 정확한 위치가 필요한가?”부터 먼저 판단하는 것이 좋습니다. 단순히 사용자의 현재 도시나 주변 매장 정도만 알면 되는 기능이라면 대략적인 위치 권한으로도 충분할 수 있습니다. 현재 위치가 꼭 필요한 시점에만 권한을 요청합니다. 정확한 위치가 필요 없다면 대략적 위치 권한을 우선 고려합니다. 위치 업데이트 주기가 짧을수록 배터리 사용량이 커집니다. GPS는 실내, 지하 주차장, 터널 등에서 수신이 늦거나 불가능할 수 있습니다. 사용자가 권한을 거부하거나 위치 서비스를 꺼 둔 경우도 처리해야 합니다. 2. 위치 Provider란? Provider는 Android가 “어떤 방법으로 위치를 계산할지” 선택하는 기준입니다. LocationManager 는 대표적으로 GPS와 네트워크 Provider를 제공합니다. 앱은 필요한 정확도와 배터리 사용량을 고려해 Provider를 선택할 수 있습니다. Provider 위치 계산 방식 특징 GPS_PROVIDER GNSS 위성 신호 정...

여러 앱에서 쓰는 기능, 라이브러리로 묶어보자

여러 앱에서 쓰는 기능, 라이브러리로 묶어보자 목차 왜 공통 기능을 라이브러리로 만들까? 장점과 주의할 점 Android Library 모듈 만들기 앱에 라이브러리 연결하기 연동 후 사용하기 왜 공통 기능을 라이브러리로 만들까? 모바일 앱, 차량용 앱처럼 여러 앱을 만들다 보면 블루투스 연결, 네트워크 확인, 위치 정보처럼 반복되는 기능이 생깁니다. 처음에는 각 앱에 코드를 복사해서 넣는 편이 빠르게 느껴질 수 있습니다. 하지만 기능 수정이나 버그 대응이 필요해지면 같은 코드를 여러 번 고쳐야 하는 상황이 생깁니다. 이럴 때 공통 기능만 별도의 라이브러리 모듈로 꺼내면 됩니다. 앱은 화면과 앱별 정책에 집중하고, 공통 기능은 하나의 모듈에서 관리하는 구조입니다. 장점과 주의할 점 가장 큰 장점은 수정 지점이 하나라는 것입니다. 예를 들어 블루투스 연결 로직을 개선하면, 라이브러리를 사용하는 모든 앱에 같은 개선 사항을 반영할 수 있습니다. 중복 코드가 줄고 테스트 기준도 통일됩니다. 다만 모든 코드를 라이브러리로 옮기면 안 됩니다. 특정 화면 UI, 차종별 예외 처리, 앱마다 달라지는 정책은 각 앱에 남겨두는 편이 좋습니다. “두 개 이상의 앱에서 같은 방식으로 쓰는가?”를 기준으로 판단하면 됩니다. Android Library 모듈 만들기 Android Studio에서 File > New > New Module 을 선택한 뒤 Android Library 를 만들면 됩니다. 여기서는 common-library 라는 모듈을 만들었다고 가정해보겠습니다. 공통 기능은 라이브러리 안에 작성합니다. public class NetworkHelper { public static boolean isConnected(Context context) { ConnectivityManager manager = ...

안드로이드 기초 파트 1: 안드로이드 개발 환경 설정

파트 1: 안드로이드 개발 환경 설정 1.1 안드로이드 스튜디오 설치 및 설정 1.2 안드로이드 SDK 및 필수 도구 설치 1.3 에뮬레이터 또는 실제 기기 연결 1.4 첫 번째 프로젝트 생성 및 "Hello, World!" 출력 1.5 안드로이드 스튜디오 기본 사용법 (프로젝트 구조, 주요 기능 소개)