본문 바로가기

Study/Android

(21)
[Android] 블루투스 개념 1. 블루투스란? 블루투스는 2.4GHz 무선 링크를 통해 데이터를 주고 받는 근거리 무선통신 기술로 보안 프로토콜이며 단거리, 저전력, 저비용으로 다양한 장치들을 무선으로 연결하게 해준다. 최근에는 다양한 장치들이 무선으로 연결되어 편의를 제공해주고 있으며, 이 무선기술에는 블루투스가 대부분을 차지한다. 이어폰, 헤드셋, 마우스, 키보드, 스피커 등 다양한 장치들이 블루투스로 연결된다. 2. 블루투스의 작동원리 블루투스는 Unlicensed ISM Frequency Band - 2.4GHz 주파수 대역에서 작동하고, 이 주파수 대역은 WiFi 등에서도 작동하는 RF 대역이다. 따라서 블루투스는 다른 프로토콜과 분리되어 작동하도록 별도의 표준이 만들어져 있으며 표준에 대한 상세내용은 다음과 같다. htt..
[Android] Android 12에서 강화된 블루투스 퍼미션 블루투스를 켜고 끄거나 통신을 하여 정보를 가져오고 보내주는 작업을 하려한다. Android 개발자 문서에 나와있는대로 하였을 때 앱이 팅기면서 Security Exception을 터뜨리게 된다. Manifest에 권한 부여하기 Android 12 이상부터 블루투스 관련 Permission이 강화되었기 때문에 별도의 권한을 더 부여해야 한다. 화면 구성하기 우선은 다음과 같이 버튼 4개만 넣어두었고, 이 포스팅에서는 블루투스를 켜고 끄는 것까지만 구현할 것이다. 기능 구현하기 이제 블루투스 관련 모듈을 사용하기 위해 BluetoothAdapter를 사용할 것이며 블루투스 관련 변수를 1로 주어 전역에 설정해 둘 것이다 class MainActivity : AppCompatActivity() { priva..
Android : Google Maps, 구글 지도 사용하기 위치서비스 등을 사용하여 지도에 위치를 표시하거나 위치정보를 기반으로 좌표나 주소로 변경할 수 있습니다. 준비된 예제는 지도에 위치정보를 수집하여 현재 위치를 표시해주거나 지정한 위치를 지도에 표시해주는 것입니다. 준비사항 API KEY 발급 구글 지도를 사용하기 위해서는 API키 발급이 필요합니다. 아래 링크에서 발급하여 사용할 수 있습니다. https://developers.google.com/maps/documentation/android/start#get-key 여기에서 STEP3로 바로 넘어가서 사용자 인증 정보 페이지로 이동합니다. "프로젝트 선택"을 통해 프로젝트를 만들어줍니다. 그리고 API키를 발급받아 가져와줍니다. Maps프로젝트 생성 신규 프로젝트는 Map이 있는 프로젝트로 생성해줍니..
Android : Camera 카메라로 촬영한 사진을 이미지뷰에 불러오는 예제입니다. 앱 내부에서는 카메라를 실행할 수 있고, 촬영 후 확인버튼을 누르면 다시 메인 화면에 있는 이미지뷰에 해당 사진을 뿌립니다. 그리고 갤러리에서 불러온 사진을 이미지뷰에 가져올 수 있습니다. 0. 예제를 살펴보기 전에 카메라로 촬영한 사진을 이미지뷰에 띄워준다는 개념을 생각해보아야 합니다. 우선 이 예제에서 구상할 View의 구조는 두개의 버튼과 한개의 이미지뷰입니다. 카메라 실행버튼을 눌렀을 때 카메라가 켜지게 되고 사진을 촬영할 수 있게 됩니다. 셔터를 눌러 사진을 촬영하면 사진이 촬영되고, 카메라에 내장된 "확인"버튼을 누르면 사진이 갤러리에 저장될 것입니다. 이 때 사진의 이름을 특정한 패턴으로 저장해주는 함수가 필요할 것이며, 이 함수에 따라..
Android : SQLite 개요 웹에서의 DB 웹에서는 클라이언트(화면단)가 서버에 어떤 정보를 달라고 요청할 때, 서버는 데이터베이스로부터 그 정보를 꺼내서 클라이언트로 보내줍니다. Spring으로 예를 들면 DAO를 통해 DB에 접근하게 되는데 이 때 중간다리 역할로 MyBatis 같은 도구를 사용합니다. 이는 클라이언트, 서버, DB가 각각 독립된 환경임을 가정했을 때 성립할 수 있습니다. 안드로이드의 DB 물론 안드로이드에서도 독립된 DB로부터 데이터를 받아와서 화면단에 표현해 줄 수 있습니다. 그렇지만 굳이 외부에 있는 DB에 접근해서 정보를 가져올 필요가 없을 때, 다시 말해서 내부적으로만 데이터 교환이 이루어지는 경우가 있다고 가정한다면 외부에서 데이터를 가져오는 것은 다소 비효율적일 수 있습니다. 그래서 기기 내부에..
Android : 장면 전환 시 데이터 주고 받기 개요 접근 예를 들어서 어떤 화면에서 값을 입력받아 버튼을 누르면 다른 화면으로 이동해서 컨텐츠를 보여줘야 하는 경우가 있습니다. Fragment를 사용하지 않고 아예 다른 화면으로 넘어가서 이전 화면에서 입력받은 정보를 불러와 처리해야 한다면 가장 기본적으로 DB에 입력받은 데이터를 저장하고 다른 화면에서 DB에 들어간 정보를 다시 불러와서 처리해주는 방식을 떠올릴 수 있을 것입니다. 그러나 간단한 숫자나 문자열 등을 DB에 저장해서 다시 이를 불러오는 작업은 그렇게 효율적이라는 생각은 들지 않는 것 같습니다. Spring에서 Model이라는 객체를 사용하여 addAttribute로 전달해줄 값을 설정해주고 이를 불러올 곳에서 getAttribute로 값을 불러와 사용했습니다. 마찬가지로 안드로이드에서..
Android : JSON 파싱하기 개요 JSON이란? JSON은 JavaScript Object Notation의 약자로 자바스크립트의 객체 문법을 사용해 데이터를 전달하거나 받기 위해 사용하는 것입니다. "키 - 값"의 구조로 되어 있으며 RESTful API로 데이터를 전송하는데 큰 역할을 합니다. JSON 파일 Parsing JSON 파일 준비 main 디렉터리 하위에 assets 디렉터리를 만들어줍니다. [ { "id": "kotlin", "language": "코틀린" }, { "id": "java", "language": "자바" }, { "id": "swift", "language": "스위프트" } ] JSON 파일 읽어오기 import androidx.appcompat.app.AppCompatActivity import ..
Android : 파일 입출력 개요 파일 입출력이란? 파일 입출력은 말 그대로 디바이스에 파일로 저장하고 그 파일을 뷰에 출력해주는 일련의 과정을 말합니다. 파일 입출력 구현을 위한 레이아웃 레이아웃 우선 화면단에서 파일 입출력을 보여주기 위해 레이아웃을 만들어줍니다. 버튼 클릭 시 파일 읽고 쓰기, 뷰에 출력 코드를 뜯어가며 하나씩 살펴보겠습니다. import android.os.Bundle import android.provider.ContactsContract.Intents.Insert.NOTES import android.view.View import android.widget.Button import android.widget.EditText import android.widget.Toast import androidx.ap..