728x90
센서
요즘 스마트폰에는 자이로, 근접, 가속도, 조도, 나침반 등의 여러 가지 센서들이 내장되어 있다.
샌서 관리자 클래스
SensorManager 클래스는 장치에 내장되어 있는 센서의 리스트를 제공한다.
sensor_manager = (SensorManager)getSystemService(SENSOR_SERVICE);
Sensor getDefaultSensor(int type)
- 주어진 타입에 대한 디폴트 센서를 얻을 수 있다.
센서의 타입
센서로부터 값을 받는 방법
값을 받고 싶은 센서에 리스너를 등록해 놓으면 애플리케이션에서 값을 전달받을 수 있다.
SensorEventListener listener = new SensorEventListener() {
public void onSensorChanged(SensorEvent event) {
//여기서 센서 값을 읽는다.센서 값에 변화가 있는 경우에 호출
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// 센서 값의 정확도에 변화가 있는 경우에 호출
}
}
방향 센서
방향 센서는 현재 장치의 자세를 나타낸다. 3개의 값이 제공되는데 각각 방위각, 피치, 롤이라고 한다.
방위각(azimuth)
- 장치가 북쪽을 향하고 있는지 아니면 남쪽을 향하고 있는지를 나타낸다. 간단히 말하면 나침반이 가리키는 방향을 각도로 표시한 것이다. 0도는 북쪽, 90도는 동쪽, 180도는 남쪽, 270도는 서쪽을 나타낸다.
피치(pitch)
- y축을 기준으로 장치가 얼마나 회전하였는지를 나타낸다. 장치가 평평한 곳에 놓여져 0도이고, 수직으로 서있을 때는 -90도, 거꾸로 서있을 때는 90도가 된다.
롤(roll)
- 장치가 z축을 기준으로 얼마나 회전하였는지를 나타낸다. 장치가 똑바로 놓여져 있을 때는 0도이고 화면이 오른쪽에 있으면 90도, 왼쪽에 있을 때는 -90이다.
NFC
- 단거리 무선 통신 기술의 일종
- 보통 1-4cm 이하의 거리
- NFC는 13.56mhz 주파수를 사용
- 전송 속도는 106kbit/s 에서 848kbit/s
NFC의 특징
- 연결 절차가 아주 간단하다.
- 블루투스처럼 발견이나 페이링과 같은 절차가 필요 없다.
- 아주 가까이 접촉하여야 되므로 보안이나 사생활 침해의 염려가 비교적 적다.
- 이러한 특징들을 이용하여서 많은 흥미로운 애플리케이션을 제작할 수 있다.
NFC에서 사용되는 데이터의 형식은 NDEF이다.
NFC의 모드
- Reader/write 모드 : NFC 장치가 활성화되어 있고 주로 수동적인 태그를 읽는다. 예를 들면 스마트 포스터를 구현할 수 있다.
- P2P mode : 2개의 NFC 장치들이 데이터를 교환한다. 예를 들면 가상 명함이나 디지털 포토를 서로 교환할 수 있다. 안드로이드 빔도 이 모드를 사용한다.
- Card emulation : NFC 장치가 기존의 무선 카드처럼 동작한다. 따라서 기존 기술의 인프라구조 안에서 사용될 수 있다. 예를 들어서 대형 마트의 POS 터미널에 설치된 NFC 리더 장치가 읽을 수 있다.
NDEF의 구조
NDEF 레코드는 크게 헤더(header)와 페이로드(payload)로 나누어진다.
NDEF Record
- 일반적으로 하나의 NDEF Record를 가진다.
- TNF(Type Name Format) 가변 길이 필드를 어떻게 해석하는지를 나타낸다.
- 타입 : 레코드의 타입을 기술한다.
- 아이디 : 레코드의 유일한 아이디를 기술한다.
- 페이로드 : 읽고 쓰기를 원하는 실제 데이터이다. NDEF 메시지는 여러 개의 NDEF 레코드를 가질 수 있으므로 페이로드도 여러 개의 레코드로 분산되어 저장될 수 있다.
3-bit TNK (Type Name Format)
- TNF_ABSOLUTE_URI : 페이로드에는 URI가 저장된다(UTF-8로 엔코딩된다.)
- TNF_MIME_MEDIA : 페이로드에는 타입 필드에서 지정된 MIME 타입의 데이터가 저장되어 있다.
- TNF_WELL_KNOWN : 잘 알려진 값들로 레코드 타입 정의에 따라서 MIME 타입이나 URI를 결정한다.
타입
- RTD_SMART_POSTER : 텍스트나 URI가 여러 레코드에 저장된다.
- RTD_TEXT : text/plain 타입
- RTD_URI : 페이로드에 URI가 저장된다. 첫 번째 바이트가 표준적인 URI의 접두사를 지정한다.
728x90
'Android' 카테고리의 다른 글
[Android] 안드로이드 작업 스레드에서 UI 업데이트 (0) | 2021.12.08 |
---|---|
[Android] XML처리와 안드로이드 멀티미디어 (0) | 2021.12.04 |
[Android] 스레드 (0) | 2021.10.13 |
[Android] 안드로이드 방송 수신자(Broadcast Receiver) (0) | 2021.10.07 |
[Android] 안드로이드 서비스 (0) | 2021.10.07 |