개발바닥곰발바닥
article thumbnail
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의 모드

  1. Reader/write 모드 : NFC 장치가 활성화되어 있고 주로 수동적인 태그를 읽는다. 예를 들면 스마트 포스터를 구현할 수 있다.
  2. P2P mode : 2개의 NFC 장치들이 데이터를 교환한다. 예를 들면 가상 명함이나 디지털 포토를 서로 교환할 수 있다. 안드로이드 빔도 이 모드를 사용한다.
  3. Card emulation : NFC 장치가 기존의 무선 카드처럼 동작한다. 따라서 기존 기술의 인프라구조 안에서 사용될 수 있다. 예를 들어서 대형 마트의 POS 터미널에 설치된 NFC 리더 장치가 읽을 수 있다.

NDEF의 구조

NDEF 레코드는 크게 헤더(header)페이로드(payload)로 나누어진다.

NDEF Record

  • 일반적으로 하나의 NDEF Record를 가진다.
  1. TNF(Type Name Format) 가변 길이 필드를 어떻게 해석하는지를 나타낸다.
  2. 타입 : 레코드의 타입을 기술한다.
  3. 아이디 : 레코드의 유일한 아이디를 기술한다.
  4. 페이로드 : 읽고 쓰기를 원하는 실제 데이터이다. NDEF 메시지는 여러 개의 NDEF 레코드를 가질 수 있으므로 페이로드도 여러 개의 레코드로 분산되어 저장될 수 있다.

3-bit TNK (Type Name Format)

  1. TNF_ABSOLUTE_URI : 페이로드에는 URI가 저장된다(UTF-8로 엔코딩된다.)
  2. TNF_MIME_MEDIA : 페이로드에는 타입 필드에서 지정된 MIME 타입의 데이터가 저장되어 있다.
  3. TNF_WELL_KNOWN : 잘 알려진 값들로 레코드 타입 정의에 따라서 MIME 타입이나 URI를 결정한다.

타입

  1. RTD_SMART_POSTER : 텍스트나 URI가 여러 레코드에 저장된다.
  2. RTD_TEXT : text/plain 타입
  3. RTD_URI : 페이로드에 URI가 저장된다. 첫 번째 바이트가 표준적인 URI의 접두사를 지정한다.
728x90
profile

개발바닥곰발바닥

@bestinu

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!