Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Các loại cảm biến

Phần này mô tả các trục cảm biến, cảm biến cơ sở và cảm biến tổng hợp (hoạt động, thái độ, chưa hiệu chỉnh và tương tác).

Trục cảm biến

Giá trị sự kiện cảm biến từ nhiều cảm biến được thể hiện trong một khung cụ thể là tĩnh so với thiết bị.

Trục thiết bị di động

API cảm biến chỉ liên quan đến hướng tự nhiên của màn hình (các trục không được hoán đổi khi hướng màn hình của thiết bị thay đổi.

Hệ thống tọa độ của API cảm biến cho thiết bị di động

Hình 1. Hệ thống tọa độ (liên quan đến thiết bị di động) được sử dụng bởi API cảm biến

Trục ô tô

Trong triển khai Android Automotive, các trục được xác định đối với khung thân xe. Gốc của hệ quy chiếu xe là trọng tâm của trục sau. Hệ quy chiếu của xe được định hướng sao cho:

  • Trục X hướng sang phải và nằm trên mặt phẳng nằm ngang, vuông góc với mặt phẳng đối xứng của xe.
  • Trục Y hướng về phía trước và nằm trên mặt phẳng nằm ngang.
Hệ thống tọa độ của API cảm biến cho các thiết bị ô tô

Hình 2. Hệ thống tọa độ (liên quan đến thiết bị ô tô) được sử dụng bởi API cảm biến

Hệ quy chiếu của xe là một hệ tọa độ thuận tay phải. Do đó, trục Z hướng lên.

Trục Z của hệ quy chiếu thẳng hàng với trọng lực, có nghĩa là trục X và trục Y đều nằm ngang. Do đó, trục Y có thể không phải lúc nào cũng đi qua trục trước.

Cảm biến cơ sở

Các loại cảm biến cơ sở được đặt tên theo cảm biến vật lý mà chúng đại diện. Các cảm biến này chuyển tiếp dữ liệu từ một cảm biến vật lý duy nhất (trái ngược với các cảm biến tổng hợp tạo ra dữ liệu từ các cảm biến khác). Ví dụ về các loại cảm biến cơ sở bao gồm:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

Tuy nhiên, cảm biến cơ sở không bằng và không nên nhầm lẫn với cảm biến vật lý bên dưới của chúng. Dữ liệu từ cảm biến cơ sở không phải là đầu ra thô của cảm biến vật lý vì các hiệu chỉnh (chẳng hạn như bù lệch và bù nhiệt độ) được áp dụng.

Ví dụ: các đặc tính của cảm biến cơ sở có thể khác với các đặc điểm của cảm biến vật lý bên dưới của nó trong các trường hợp sử dụng sau:

  • Một chip con quay hồi chuyển được đánh giá là có phạm vi thiên vị là 1 độ / giây.
    • Sau khi hiệu chuẩn tại nhà máy, bù nhiệt độ và bù thiên vị được áp dụng, độ chệch thực tế của cảm biến Android sẽ giảm xuống, có thể đến mức độ chệch được đảm bảo dưới 0,01 độ / giây.
    • Trong tình huống này, chúng tôi nói rằng cảm biến Android có độ lệch dưới 0,01 độ / giây, mặc dù bảng dữ liệu của cảm biến bên dưới cho biết 1 độ / giây.
  • Một khí áp kế có công suất tiêu thụ là 100 uW.
    • Vì dữ liệu được tạo ra cần phải được vận chuyển từ chip đến SoC, chi phí điện năng thực tế để thu thập dữ liệu từ cảm biến Android phong vũ biểu có thể cao hơn nhiều, ví dụ như 1000 uW.
    • Trong tình huống này, chúng tôi nói rằng cảm biến Android có mức tiêu thụ điện năng là 1000 uW, mặc dù mức tiêu thụ điện năng được đo tại các điểm dẫn của chip phong vũ biểu là 100uW.
  • Một từ kế tiêu thụ 100uW khi hiệu chuẩn, nhưng tiêu thụ nhiều hơn khi hiệu chuẩn.
    • Quy trình hiệu chuẩn của nó có thể yêu cầu kích hoạt con quay hồi chuyển, tiêu thụ 5000 uW và chạy một số thuật toán, tốn thêm 900 uW.
    • Trong tình huống này, chúng tôi nói rằng mức tiêu thụ điện năng tối đa của cảm biến Android (từ kế) là 6000 uW.
    • Trong trường hợp này, mức tiêu thụ điện năng trung bình là thước đo hữu ích hơn và đó là những gì được báo cáo trong các đặc tính tĩnh của cảm biến thông qua HAL.

Gia tốc kế

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) trả về cảm biến không đánh thức

Một cảm biến gia tốc báo cáo gia tốc của thiết bị dọc theo ba trục cảm biến. Gia tốc đo được bao gồm cả gia tốc vật lý (sự thay đổi của vận tốc) và trọng lực. Phép đo được báo cáo trong các trường x, y và z của sensor_event_t.acceleration.

Tất cả các giá trị đều tính theo đơn vị SI (m / s ^ 2) và đo gia tốc của thiết bị trừ đi lực hấp dẫn dọc theo ba trục cảm biến.

Dưới đây là các ví dụ:

  • Định mức của (x, y, z) phải gần bằng 0 khi rơi tự do.
  • Khi thiết bị nằm phẳng trên bàn và bị đẩy nghiêng bên trái về phía bên phải thì giá trị gia tốc x là dương.
  • Khi thiết bị nằm phẳng trên bàn, giá trị gia tốc dọc theo z là +9,81 alo, tương ứng với gia tốc của thiết bị (0 m / s ^ 2) trừ đi lực hấp dẫn (-9,81 m / s ^ 2).
  • Khi thiết bị nằm phẳng trên bàn và được đẩy lên trời, giá trị gia tốc lớn hơn +9,81, tương ứng với gia tốc của thiết bị (+ A m / s ^ 2) trừ đi lực hấp dẫn (-9,81 m / s ^ 2).

Các bài đọc được hiệu chuẩn bằng cách sử dụng:

  • Sự cân bằng nhiệt độ
  • Hiệu chuẩn thiên vị trực tuyến
  • Hiệu chuẩn quy mô trực tuyến

Chỉ được cập nhật thiên vị và hiệu chuẩn thang đo trong khi cảm biến được tắt, để tránh gây ra nhảy giá trị trong quá trình truyền trực tuyến.

Gia tốc kế cũng báo cáo mức độ chính xác mà nó mong đợi là các kết quả đọc của nó thông qua sensors_event_t.acceleration.status . Xem hằng số SENSOR_STATUS_* của SensorManager để biết thêm thông tin về các giá trị có thể có cho trường này.

Nhiệt độ môi trường xung quanh

Chế độ báo cáo: Thay đổi

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) trả về cảm biến không đánh thức

Cảm biến này cung cấp nhiệt độ môi trường (phòng) tính bằng độ C.

Cảm biến từ trường

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) trả về cảm biến không đánh thức

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

Một cảm biến từ trường (còn được gọi là từ kế) báo cáo từ trường xung quanh, như được đo dọc theo ba trục cảm biến.

Phép đo được báo cáo trong các trường x, y và z của sensors_event_t.magnetic và tất cả các giá trị đều ở dạng micro-Tesla (uT).

Từ kế cũng báo cáo độ chính xác mà nó mong đợi là các số đọc của nó thông qua sensors_event_t.magnetic.status . Xem hằng số SENSOR_STATUS_* của SensorManager để biết thêm thông tin về các giá trị có thể có cho trường này.

Các bài đọc được hiệu chuẩn bằng cách sử dụng:

  • Sự cân bằng nhiệt độ
  • Hiệu chuẩn sắt mềm tại nhà máy (hoặc trực tuyến)
  • Hiệu chuẩn sắt cứng trực tuyến

Con quay hồi chuyển

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) trả về cảm biến không đánh thức

Một cảm biến con quay hồi chuyển báo cáo tốc độ quay của thiết bị xung quanh ba trục cảm biến.

Quay là chiều dương theo chiều ngược chiều kim đồng hồ (quy tắc bàn tay phải). Nghĩa là, một người quan sát nhìn từ một số vị trí dương trên trục x, y hoặc z tại một thiết bị được định vị trên điểm gốc sẽ báo cáo chuyển động quay dương nếu thiết bị đó dường như đang quay ngược chiều kim đồng hồ. Lưu ý rằng đây là định nghĩa toán học tiêu chuẩn của chuyển động quay dương và không đồng ý với định nghĩa không gian vũ trụ về cuộn.

Phép đo được báo cáo trong các trường x, y và z của sensors_event_t.gyro và tất cả các giá trị đều tính bằng radian trên giây (rad / s).

Các bài đọc được hiệu chuẩn bằng cách sử dụng:

  • Sự cân bằng nhiệt độ
  • Bồi thường quy mô nhà máy (hoặc trực tuyến)
  • Hiệu chuẩn thiên vị trực tuyến (để loại bỏ sự trôi dạt)

Con quay hồi chuyển cũng báo cáo độ chính xác mà nó mong đợi là các kết quả đọc của nó thông qua sensors_event_t.gyro.status . Xem hằng số SENSOR_STATUS_* của SensorManager để biết thêm thông tin về các giá trị có thể có cho trường này.

Con quay hồi chuyển không thể được mô phỏng dựa trên từ kế và gia tốc kế, vì điều này sẽ khiến nó giảm tính nhất quán và khả năng phản hồi cục bộ. Nó phải dựa trên một chip con quay hồi chuyển thông thường.

Nhịp tim

Chế độ báo cáo: Thay đổi

getDefaultSensor(SENSOR_TYPE_HEART_RATE) trả về cảm biến không đánh thức

Cảm biến nhịp tim báo cáo nhịp tim hiện tại của người chạm vào thiết bị.

Nhịp tim hiện tại tính theo nhịp mỗi phút (BPM) được báo cáo trong sensors_event_t.heart_rate.bpm và trạng thái của cảm biến được báo cáo trong sensors_event_t.heart_rate.status . Xem hằng số SENSOR_STATUS_* của SensorManager để biết thêm thông tin về các giá trị có thể có cho trường này. Đặc biệt, trong lần kích hoạt đầu tiên, trừ khi thiết bị được biết là không ở trên thân, trường trạng thái của sự kiện đầu tiên phải được đặt thành SENSOR_STATUS_UNRELIABLE . Vì cảm biến này luôn thay đổi, các sự kiện được tạo khi và chỉ khi heart_rate.bpm hoặc heart_rate.status đã thay đổi kể từ sự kiện cuối cùng. Các sự kiện được tạo không nhanh hơn mọi lần sampling_period .

sensor_t.requiredPermission luôn là SENSOR_PERMISSION_BODY_SENSORS .

Nhẹ

Chế độ báo cáo: Thay đổi

getDefaultSensor(SENSOR_TYPE_LIGHT) trả về cảm biến không đánh thức

Cảm biến ánh sáng báo cáo độ chiếu sáng hiện tại theo đơn vị SI lux.

Phép đo được báo cáo trong sensors_event_t.light .

Sự gần gũi

Chế độ báo cáo: Thay đổi

Thường được định nghĩa là cảm biến đánh thức

getDefaultSensor(SENSOR_TYPE_PROXIMITY) trả về cảm biến đánh thức

Cảm biến tiệm cận báo cáo khoảng cách từ cảm biến đến bề mặt có thể nhìn thấy gần nhất.

Lên đến Android 4.4, các cảm biến tiệm cận luôn là cảm biến đánh thức, đánh thức SoC khi phát hiện ra sự thay đổi về độ gần. Sau Android 4.4, chúng tôi khuyên bạn nên triển khai phiên bản đánh thức của cảm biến này trước tiên, vì nó là phiên bản được sử dụng để bật và tắt màn hình trong khi thực hiện cuộc gọi điện thoại.

Phép đo được báo cáo bằng cm trong sensors_event_t.distance . Lưu ý rằng một số cảm biến độ gần chỉ hỗ trợ phép đo "gần" hoặc "xa" nhị phân. Trong trường hợp này, cảm biến báo cáo giá trị sensor_t.maxRange của nó ở trạng thái "xa" và giá trị nhỏ hơn sensor_t.maxRange ở trạng thái "gần".

Sức ép

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_PRESSURE) trả về cảm biến không đánh thức

Một cảm biến áp suất (còn được gọi là phong vũ biểu) báo cáo áp suất khí quyển tính bằng hectopascal (hPa).

Các bài đọc được hiệu chuẩn bằng cách sử dụng

  • Sự cân bằng nhiệt độ
  • Hiệu chuẩn thiên vị nhà máy
  • Hiệu chuẩn quy mô nhà máy

Phong vũ biểu thường được sử dụng để ước tính sự thay đổi độ cao. Để ước tính độ cao tuyệt đối, áp suất mực nước biển (thay đổi tùy thuộc vào thời tiết) phải được sử dụng làm tham chiếu.

Độ ẩm tương đối

Chế độ báo cáo: Thay đổi

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) trả về cảm biến không đánh thức

Cảm biến độ ẩm tương đối đo độ ẩm không khí xung quanh tương đối và trả về giá trị tính bằng phần trăm.

Các loại cảm biến tổng hợp

Cảm biến tổng hợp tạo ra dữ liệu bằng cách xử lý và / hoặc kết hợp dữ liệu từ một hoặc một số cảm biến vật lý. (Bất kỳ cảm biến nào không phải là cảm biến cơ sở đều được gọi là cảm biến hỗn hợp.) Ví dụ về cảm biến hỗn hợp bao gồm:

  • Máy dò bướcchuyển động quan trọng , thường dựa trên gia tốc kế, nhưng cũng có thể dựa trên các cảm biến khác, nếu mức tiêu thụ điện năng và độ chính xác là chấp nhận được.
  • Véc tơ quay trò chơi , dựa trên gia tốc kế và con quay hồi chuyển.
  • Con quay hồi chuyển chưa được hiệu chuẩn, tương tự như cảm biến cơ bản của con quay hồi chuyển, nhưng với hiệu chuẩn thiên vị được báo cáo riêng thay vì được hiệu chỉnh trong phép đo.

Giống như với cảm biến cơ sở, các đặc điểm của cảm biến tổng hợp đến từ các đặc điểm của dữ liệu cuối cùng của chúng. Ví dụ: công suất tiêu thụ của một vectơ quay trò chơi có thể bằng tổng công suất tiêu thụ của chip gia tốc, chip con quay hồi chuyển, chip xử lý dữ liệu và các xe buýt vận chuyển dữ liệu. Một ví dụ khác, độ lệch của vectơ xoay trò chơi phụ thuộc nhiều vào chất lượng của thuật toán hiệu chỉnh cũng như vào các đặc tính của cảm biến vật lý.

Bảng sau liệt kê các loại cảm biến hỗn hợp có sẵn. Mỗi cảm biến tổng hợp dựa trên dữ liệu từ một hoặc một số cảm biến vật lý. Tránh chọn các cảm biến vật lý bên dưới khác để có kết quả gần đúng vì chúng cung cấp trải nghiệm người dùng kém.

Loại cảm biến Loại Cảm biến vật lý bên dưới Chế độ báo cáo

Vectơ xoay trò chơi

Thái độ

Gia tốc kế, con quay hồi chuyển, KHÔNG ĐƯỢC SỬ DỤNG từ kế

Tiếp diễn

Vectơ quay địa từ Cảm biến năng lượng thấp

Thái độ

Gia tốc kế, từ kế, KHÔNG ĐƯỢC SỬ DỤNG con quay hồi chuyển

Tiếp diễn

Cử chỉ liếc nhìn Cảm biến năng lượng thấp

Sự tương tác

Chưa xác định

Một Châu

Trọng lực

Thái độ

Gia tốc kế, con quay hồi chuyển

Tiếp diễn

Con quay hồi chuyển chưa được hiệu chỉnh

Chưa được hiệu chuẩn

Con quay hồi chuyển

Tiếp diễn

Gia tốc tuyến tính

Hoạt động

Gia tốc kế, con quay hồi chuyển (nếu có), hoặc từ kế (nếu không có con quay)

Tiếp diễn

Từ trường không được hiệu chuẩn

Chưa được hiệu chuẩn

Từ kế

Tiếp diễn

Định hướng (không được dùng nữa)

Thái độ

Gia tốc kế, từ kế, con quay hồi chuyển (nếu có)

Tiếp diễn

Cử chỉ nhấc máy Cảm biến năng lượng thấp

Sự tương tác

Chưa xác định

Một Châu

Vectơ xoay

Thái độ

Gia tốc kế, từ kế, con quay hồi chuyển

Tiếp diễn

Chuyển động đáng kể Cảm biến năng lượng thấp

Hoạt động

Gia tốc kế (hoặc loại khác, miễn là công suất rất thấp)

Một Châu

Bộ đếm bước Cảm biến năng lượng thấp

Hoạt động

Gia tốc kế

Thay đổi

Máy dò bước Cảm biến năng lượng thấp

Hoạt động

Gia tốc kế

Đặc biệt

Máy dò độ nghiêng Cảm biến năng lượng thấp

Hoạt động

Gia tốc kế

Đặc biệt

Cử chỉ đánh thức Cảm biến năng lượng thấp

Sự tương tác

Chưa xác định

Một Châu

Cảm biến năng lượng thấp = Cảm biến năng lượng thấp

Cảm biến tổng hợp hoạt động

Gia tốc tuyến tính

Cảm biến vật lý bên dưới: Gia tốc kế và (nếu có) con quay hồi chuyển (hoặc từ kế nếu không có con quay hồi chuyển)

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) trả về cảm biến không đánh thức

Cảm biến gia tốc tuyến tính báo cáo gia tốc tuyến tính của thiết bị trong khung cảm biến, không bao gồm trọng lực.

Về mặt khái niệm, đầu ra là: đầu ra của gia tốc kế trừ đầu ra của cảm biến trọng lực . Nó được báo cáo bằng m / s ^ 2 trong các trường x, y và z của sensors_event_t.acceleration .

Số đọc trên tất cả các trục phải gần bằng 0 khi thiết bị bất động.

Nếu thiết bị sở hữu con quay hồi chuyển, cảm biến gia tốc tuyến tính phải sử dụng con quay hồi chuyển và gia tốc kế làm đầu vào.

Nếu thiết bị không có con quay hồi chuyển, cảm biến gia tốc tuyến tính phải sử dụng gia tốc kế và từ kế làm đầu vào.

Chuyển động đáng kể

Cảm biến vật lý bên dưới: Gia tốc kế (hoặc cái khác miễn là công suất thấp)

Chế độ báo cáo: Một lần

Năng lượng thấp

Chỉ triển khai phiên bản đánh thức của cảm biến này.

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) trả về cảm biến đánh thức

Một bộ phát hiện chuyển động quan trọng sẽ kích hoạt khi phát hiện một chuyển động quan trọng : một chuyển động có thể dẫn đến thay đổi vị trí của người dùng.

Ví dụ về các chuyển động quan trọng như vậy là:

  • Đi bộ hoặc đi xe đạp
  • Ngồi trên ô tô, xe khách hoặc xe lửa đang di chuyển

Ví dụ về các tình huống không kích hoạt chuyển động quan trọng:

  • Điện thoại trong túi và người không di chuyển
  • Điện thoại để trên bàn và bàn hơi rung do giao thông gần đó hoặc máy giặt

Ở cấp độ cao, máy dò chuyển động đáng kể được sử dụng để giảm tiêu thụ điện năng của việc xác định vị trí. Khi các thuật toán bản địa hóa phát hiện thấy thiết bị tĩnh, chúng có thể chuyển sang chế độ năng lượng thấp, nơi chúng dựa vào chuyển động đáng kể để đánh thức thiết bị khi người dùng đang thay đổi vị trí.

Cảm biến này phải có công suất thấp. Nó tạo ra sự cân bằng cho việc tiêu thụ điện năng có thể dẫn đến một lượng nhỏ âm tính giả. Điều này được thực hiện vì một số lý do:

  • Mục tiêu của cảm biến này là tiết kiệm điện năng.
  • Việc kích hoạt một sự kiện khi người dùng không di chuyển (dương tính giả) gây tốn kém về mặt điện năng, vì vậy cần tránh.
  • Việc không kích hoạt sự kiện khi người dùng đang di chuyển (âm tính giả) có thể chấp nhận được miễn là nó không được thực hiện nhiều lần. Nếu người dùng đã đi bộ trong 10 giây, việc không kích hoạt sự kiện trong 10 giây đó là không thể chấp nhận được.

Mỗi sự kiện cảm biến báo cáo 1 trong sensors_event_t.data[0] .

Máy dò bước

Cảm biến vật lý bên dưới: Gia tốc kế (+ có thể là những thứ khác miễn là công suất thấp)

Chế độ báo cáo: Đặc biệt (một sự kiện mỗi bước được thực hiện)

Năng lượng thấp

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) trả về cảm biến không đánh thức

Bộ dò bước tạo ra một sự kiện mỗi khi người dùng thực hiện một bước.

Dấu thời gian của sự kiện sensors_event_t.timestamp tương ứng với thời điểm chân chạm đất, tạo ra sự thay đổi lớn trong gia tốc.

So với bộ đếm bước, bộ dò bước phải có độ trễ thấp hơn (ít hơn hai giây). Cả bộ dò bước và bộ đếm bước đều phát hiện khi người dùng đang đi bộ, chạy và đi lên cầu thang. Chúng không nên kích hoạt khi người dùng đang đi xe đạp, lái xe hoặc trên các phương tiện khác.

Cảm biến này phải có công suất thấp. Có nghĩa là, nếu không thể thực hiện phát hiện bước trong phần cứng, thì cảm biến này sẽ không được xác định. Đặc biệt, khi bộ dò bước được kích hoạt và không có gia tốc kế, thì chỉ có các bước mới kích hoạt ngắt (không phải mọi lần đọc gia tốc kế).

sampling_period_ns không có tác động đến trình phát hiện bước.

Mỗi sự kiện cảm biến báo cáo 1 trong sensors_event_t.data[0] .

Bộ đếm bước

Cảm biến vật lý bên dưới: Gia tốc kế (+ có thể là những thứ khác miễn là công suất thấp)

Chế độ báo cáo: Thay đổi

Năng lượng thấp

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) trả về cảm biến không đánh thức

Bộ đếm bước báo cáo số bước người dùng đã thực hiện kể từ lần khởi động lại cuối cùng trong khi được kích hoạt.

Phép đo được báo cáo dưới dạng uint64_t trong sensors_event_t.step_counter và chỉ được đặt lại về 0 khi khởi động lại hệ thống.

Dấu thời gian của sự kiện được đặt thành thời gian khi bước cuối cùng cho sự kiện đó được thực hiện.

Xem loại cảm biến dò bước để biết ý nghĩa của thời gian của một bước.

So với bộ dò bước, bộ đếm bước có thể có độ trễ cao hơn (lên đến 10 giây). Nhờ độ trễ này, cảm biến này có độ chính xác cao; số bước sau một ngày đo lường phải nằm trong 10% số bước thực tế. Cả bộ dò bước và bộ đếm bước đều phát hiện khi người dùng đang đi bộ, chạy và đi lên cầu thang. Chúng không nên kích hoạt khi người dùng đang đi xe đạp, lái xe hoặc trên các phương tiện khác.

Phần cứng phải đảm bảo số bước bên trong không bao giờ bị tràn. Kích thước tối thiểu của bộ đếm bên trong của phần cứng phải là 16 bit. Trong trường hợp sắp xảy ra sự cố tràn (nhiều nhất là sau mỗi ~ 2 ^ 16 bước), SoC có thể được đánh thức để người lái xe có thể thực hiện bảo trì bộ đếm.

Như đã nêu trong Tương tác , trong khi cảm biến này hoạt động, nó sẽ không làm gián đoạn bất kỳ cảm biến nào khác, cụ thể là gia tốc kế, rất có thể đang được sử dụng.

Nếu một thiết bị cụ thể không thể hỗ trợ các chế độ hoạt động này, thì loại cảm biến này sẽ không được HAL báo cáo. Có nghĩa là, không thể chấp nhận "mô phỏng" cảm biến này trong HAL.

Cảm biến này phải có công suất thấp. Có nghĩa là, nếu không thể thực hiện phát hiện bước trong phần cứng, thì cảm biến này sẽ không được xác định. Đặc biệt, khi bộ đếm bước được kích hoạt và không có gia tốc kế, thì chỉ có các bước mới kích hoạt ngắt (không phải dữ liệu gia tốc kế).

Máy dò độ nghiêng

Cảm biến vật lý bên dưới: Gia tốc kế (+ có thể là những thứ khác miễn là công suất thấp)

Chế độ báo cáo: Đặc biệt

Năng lượng thấp

Chỉ triển khai phiên bản đánh thức của cảm biến này.

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) trả về cảm biến đánh thức

Máy dò độ nghiêng tạo ra một sự kiện mỗi khi một sự kiện nghiêng được phát hiện.

Sự kiện nghiêng được xác định bằng hướng của trọng lực trung bình của cửa sổ trong 2 giây thay đổi ít nhất 35 độ kể từ khi kích hoạt hoặc sự kiện cuối cùng do cảm biến tạo ra. Đây là thuật toán:

  • reference_estimated_gravity = trung bình của các phép đo gia tốc kế trong giây đầu tiên sau khi kích hoạt hoặc trọng lực ước tính khi sự kiện nghiêng cuối cùng được tạo ra.
  • current_estimated_gravity = trung bình của các phép đo gia tốc kế trong 2 giây qua.
  • Kích hoạt khi angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

Gia tốc lớn mà không thay đổi hướng điện thoại sẽ không gây ra sự kiện nghiêng. Ví dụ: một khúc cua gấp hoặc tăng tốc mạnh khi đang lái xe ô tô sẽ không gây ra hiện tượng nghiêng, mặc dù góc của gia tốc trung bình có thể thay đổi hơn 35 độ. Thông thường, cảm biến này được thực hiện chỉ với sự trợ giúp của một gia tốc kế. Các cảm biến khác cũng có thể được sử dụng nếu chúng không làm tăng mức tiêu thụ điện năng đáng kể. Đây là một cảm biến năng lượng thấp sẽ cho phép SoC chuyển sang chế độ tạm ngừng. Không mô phỏng cảm biến này trong HAL. Mỗi sự kiện cảm biến báo cáo 1 trong sensors_event_t.data[0] .

Cảm biến tổng hợp thái độ

Vectơ xoay

Cảm biến vật lý bên dưới: Gia tốc kế, từ kế và con quay hồi chuyển

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR) trả về cảm biến không đánh thức

Cảm biến vectơ quay báo cáo hướng của thiết bị so với khung tọa độ Đông-Bắc-Lên. Nó thường có được bằng cách tích hợp các kết quả đo gia tốc, con quay hồi chuyển và từ kế. Hệ tọa độ Đông-Bắc-Lên được xác định là cơ sở trực chuẩn trực tiếp trong đó:

  • X hướng về phía đông và là phương tiếp tuyến với mặt đất.
  • Y hướng về phía bắc và là phương tiếp tuyến với mặt đất.
  • Z hướng lên trời và vuông góc với mặt đất.

Hướng của điện thoại được thể hiện bằng cách xoay cần thiết để căn chỉnh tọa độ Đông-Bắc-Lên với tọa độ của điện thoại. Tức là, việc áp dụng phép xoay cho khung hình thế giới (X, Y, Z) sẽ căn chỉnh chúng với tọa độ điện thoại (x, y, z).

Xoay có thể được coi là xoay điện thoại một góc quanh trục rot_axis để đi từ hướng thiết bị tham chiếu (căn thẳng theo hướng Đông-Bắc-Lên) sang hướng thiết bị hiện tại. Vòng quay được mã hóa dưới dạng bốn thành phần x, y, z, w ít hơn một đơn vị của một quaternion đơn vị:

  • sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
  • sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
  • sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
  • sensors_event_t.data[3] = cos(theta/2)

Ở đâu:

  • Các trường x, y và z của rot_axis là tọa độ Đông-Bắc-Lên của một vectơ độ dài đơn vị biểu thị trục quay
  • theta là góc quay

Quaternion là một quaternion đơn vị: Nó phải có tiêu chuẩn 1 . Nếu không đảm bảo điều này sẽ gây ra hành vi thất thường của thân chủ.

Ngoài ra, cảm biến này báo cáo độ chính xác tiêu đề ước tính:

sensors_event_t.data[4] = estimated_accuracy (tính bằng radian)

Lỗi tiêu đề phải nhỏ hơn 95% độ chính estimated_accuracy . Cảm biến này phải sử dụng con quay hồi chuyển làm đầu vào thay đổi hướng chính.

Cảm biến này cũng sử dụng đầu vào gia tốc kế và từ kế để bù cho hiện tượng trôi của con quay hồi chuyển và không thể thực hiện chỉ sử dụng gia tốc kế và từ kế.

Vectơ xoay trò chơi

Cảm biến vật lý bên dưới: Gia tốc kế và con quay hồi chuyển (không có từ kế)

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) trả về cảm biến không đánh thức

Cảm biến vectơ quay trong trò chơi tương tự như cảm biến vectơ quay nhưng không sử dụng trường địa từ. Do đó, trục Y không hướng về phía bắc mà thay vào đó là một số tham chiếu khác. Tham chiếu đó được phép trôi theo cùng một độ lớn khi con quay hồi chuyển quay quanh trục Z.

Xem Cảm biến vectơ xoay để biết chi tiết về cách đặt sensors_event_t.data[0-3] . Cảm biến này không báo cáo độ chính xác tiêu đề ước tính: sensors_event_t.data[4] được đặt trước và phải được đặt thành 0 .

Trong trường hợp lý tưởng, điện thoại được xoay và quay về cùng một hướng trong thế giới thực sẽ báo cáo cùng một vectơ xoay trò chơi.

Cảm biến này phải dựa trên con quay hồi chuyển và gia tốc kế. Nó không thể sử dụng từ kế làm đầu vào, ngoài ra, gián tiếp, thông qua ước tính độ lệch của con quay hồi chuyển.

Trọng lực

Cảm biến vật lý bên dưới: Gia tốc kế và (nếu có) con quay hồi chuyển (hoặc từ kế nếu không có con quay hồi chuyển)

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_GRAVITY) trả về cảm biến không đánh thức

Một cảm biến trọng lực báo cáo hướng và độ lớn của trọng lực trong tọa độ của thiết bị.

Các thành phần vectơ trọng lực được báo cáo bằng m / s ^ 2 trong các trường x, y và z của sensors_event_t.acceleration .

Khi thiết bị ở trạng thái nghỉ, đầu ra của cảm biến trọng lực phải giống với đầu ra của cảm biến gia tốc. Trên Trái đất, cường độ là khoảng 9,8 m / s ^ 2.

Nếu thiết bị sở hữu con quay hồi chuyển, cảm biến trọng lực phải sử dụng con quay hồi chuyển và gia tốc kế làm đầu vào.

Nếu thiết bị không có con quay hồi chuyển, cảm biến trọng lực phải sử dụng gia tốc kế và từ kế làm đầu vào.

Vector quay địa từ

Cảm biến vật lý bên dưới: Gia tốc kế và từ kế (không có con quay hồi chuyển)

Chế độ báo cáo: Liên tục

Năng lượng thấp

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) trả về cảm biến không đánh thức

Vectơ quay địa từ tương tự như cảm biến vectơ quay nhưng sử dụng từ kế và không có con quay hồi chuyển.

Cảm biến này phải dựa trên một từ kế. Nó không thể được thực hiện bằng cách sử dụng con quay hồi chuyển và đầu vào con quay hồi chuyển không thể được sử dụng bởi cảm biến này.

Xem Cảm biến vectơ xoay để biết chi tiết về cách đặt sensors_event_t.data[0-4] .

Cũng giống như đối với cảm biến vectơ quay, lỗi tiêu đề phải nhỏ hơn độ chính xác ước tính ( sensors_event_t.data[4] ) 95% thời gian.

Cảm biến này phải có công suất thấp, vì vậy nó phải được thực hiện trong phần cứng.

Định hướng (không được dùng nữa)

Cảm biến vật lý bên dưới: Gia tốc kế, từ kế và (nếu có) con quay hồi chuyển

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_ORIENTATION) trả về cảm biến không đánh thức

Lưu ý: Đây là loại cảm biến cũ hơn đã không còn được dùng trong Android SDK. Nó đã được thay thế bằng cảm biến vectơ quay, được xác định rõ ràng hơn. Sử dụng cảm biến vectơ quay trên cảm biến định hướng bất cứ khi nào có thể.

Một cảm biến định hướng báo cáo thái độ của thiết bị. Các phép đo được báo cáo theo độ trong các trường x, y và z của sensors_event_t.orientation :

  • sensors_event_t.orientation.x : góc phương vị, góc giữa hướng bắc của từ trường và trục Y, xung quanh trục Z ( 0<=azimuth<360 ). 0 = Bắc, 90 = Đông, 180 = Nam, 270 = Tây.
  • sensors_event_t.orientation.y : cao độ, quay quanh trục X ( -180<=pitch<=180 ), với các giá trị dương khi trục Z di chuyển về phía trục Y.
  • sensors_event_t.orientation.z : cuộn, quay quanh trục Y ( -90<=roll<=90 ), với giá trị dương khi trục X di chuyển về phía trục Z.

Xin lưu ý, vì lý do lịch sử, góc cuộn là dương theo chiều kim đồng hồ. (Về mặt toán học, nó phải là số dương theo chiều ngược chiều kim đồng hồ):

Mô tả hướng liên quan đến thiết bị

Hình 3. Định hướng liên quan đến thiết bị

Định nghĩa này khác với yaw, pitch và roll được sử dụng trong ngành hàng không khi trục X nằm dọc theo cạnh dài của máy bay (từ đuôi đến mũi).

Cảm biến định hướng cũng báo cáo mức độ chính xác mà nó mong đợi sẽ đọc được thông qua sensors_event_t.orientation.status . Xem hằng số SENSOR_STATUS_* của SensorManager để biết thêm thông tin về các giá trị có thể có cho trường này.

Cảm biến chưa hiệu chỉnh

Cảm biến chưa hiệu chuẩn cung cấp nhiều kết quả thô hơn và có thể bao gồm một số sai lệch nhưng cũng chứa ít "bước nhảy" hơn từ các hiệu chỉnh được áp dụng thông qua hiệu chuẩn. Một số ứng dụng có thể thích các kết quả chưa được hiệu chỉnh này mượt mà hơn và đáng tin cậy hơn. Ví dụ: nếu một ứng dụng đang cố gắng tiến hành hợp nhất cảm biến của riêng mình, thì việc áp dụng các hiệu chuẩn thực sự có thể làm sai lệch kết quả.

Gia tốc kế chưa được hiệu chuẩn

Cảm biến vật lý bên dưới: Gia tốc kế

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) trả về cảm biến không đánh thức

Cảm biến gia tốc kế chưa hiệu chỉnh báo cáo gia tốc của thiết bị dọc theo ba trục cảm biến mà không có bất kỳ hiệu chỉnh sai lệch nào (độ lệch của nhà máy và bù nhiệt độ được áp dụng cho các phép đo chưa hiệu chuẩn), cùng với ước tính độ chệch. Tất cả các giá trị được tính bằng đơn vị SI (m / s ^ 2) và được báo cáo trong các trường của sensors_event_t.uncalibrated_accelerometer :

  • x_uncalib : gia tốc (không bù lệch) dọc theo trục X.
  • y_uncalib : gia tốc (không bù lệch) dọc theo trục Y
  • z_uncalib : gia tốc (không bù lệch) dọc theo trục Z
  • x_bias : độ chệch ước tính dọc theo trục X
  • y_bias : độ chệch ước tính dọc theo trục Y
  • z_bias : độ chệch ước tính dọc theo trục Z

Con quay hồi chuyển chưa được hiệu chỉnh

Cảm biến vật lý bên dưới: Con quay hồi chuyển

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) trả về cảm biến không đánh thức

Con quay hồi chuyển chưa hiệu chỉnh báo cáo tốc độ quay xung quanh các trục cảm biến mà không áp dụng bù lệch cho chúng, cùng với ước tính chệch. Tất cả các giá trị tính bằng radian / giây và được báo cáo trong các trường của sensors_event_t.uncalibrated_gyro :

  • x_uncalib : tốc độ góc (không có bù lệch) quanh trục X.
  • y_uncalib : tốc độ góc (không có bù lệch) quanh trục Y
  • z_uncalib : tốc độ góc (không bù trôi) quanh trục Z
  • x_bias : ước tính độ lệch xung quanh trục X
  • y_bias : ước tính trôi dạt quanh trục Y
  • z_bias : độ trôi ước tính quanh trục Z

Về mặt khái niệm, phép đo chưa hiệu chuẩn là tổng của phép đo đã hiệu chuẩn và ước tính độ chệch: _uncalibrated = _calibrated + _bias .

Các giá trị x_bias , y_biasz_bias dự kiến ​​sẽ nhảy ngay khi ước tính độ lệch thay đổi và chúng sẽ ổn định trong thời gian còn lại.

Xem định nghĩa của cảm biến con quay hồi chuyển để biết chi tiết về hệ tọa độ được sử dụng.

Hiệu chuẩn nhà máy và bù nhiệt độ phải được áp dụng cho các phép đo. Ngoài ra, ước tính độ lệch con quay hồi chuyển phải được thực hiện để các ước tính hợp lý có thể được báo cáo trong x_bias , y_biasz_bias . Nếu quá trình triển khai không thể ước tính độ lệch, thì cảm biến này không được triển khai.

Nếu có cảm biến này, thì cảm biến Con quay hồi chuyển tương ứng cũng phải có mặt và cả hai cảm biến phải chia sẻ cùng các giá trị sensor_t.namesensor_t.vendor .

Từ trường không được hiệu chuẩn

Cảm biến vật lý bên dưới: Từ kế

Chế độ báo cáo: Liên tục

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) trả về cảm biến không đánh thức

Cảm biến từ trường chưa hiệu chỉnh báo cáo từ trường xung quanh cùng với ước tính hiệu chuẩn sắt cứng. Tất cả các giá trị đều ở dạng micro-Tesla (uT) và được báo cáo trong các trường của sensors_event_t.uncalibrated_magnetic :

  • x_uncalib : từ trường (không bù sắt cứng) dọc theo trục X.
  • y_uncalib : từ trường (không bù sắt cứng) dọc theo trục Y
  • z_uncalib : từ trường (không bù sắt cứng) dọc theo trục Z
  • x_bias : độ chệch sắt cứng ước tính dọc theo trục X
  • y_bias : độ chệch sắt cứng ước tính dọc theo trục Y
  • z_bias : độ chệch sắt cứng ước tính dọc theo trục Z

Về mặt khái niệm, phép đo chưa hiệu chuẩn là tổng của phép đo đã hiệu chuẩn và ước tính độ chệch: _uncalibrated = _calibrated + _bias .

Từ kế chưa hiệu chỉnh cho phép các thuật toán cấp cao hơn xử lý ước tính sắt cứng không tốt. Các giá trị x_bias , y_biasz_bias dự kiến ​​sẽ nhảy ngay sau khi ước tính của hard-iron thay đổi và chúng sẽ ổn định trong thời gian còn lại.

Hiệu chuẩn sắt mềm và bù nhiệt độ phải được áp dụng cho các phép đo. Ngoài ra, ước tính sắt cứng phải được thực hiện để các ước tính hợp lý có thể được báo cáo trong x_bias , y_biasz_bias . Nếu quá trình triển khai không thể ước tính độ chệch, thì cảm biến này không được triển khai.

Nếu có cảm biến này, thì cảm biến từ trường tương ứng phải có mặt và cả hai cảm biến phải có cùng giá trị sensor_t.namesensor_t.vendor .

Góc bản lề

Chế độ báo cáo: Thay đổi

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) trả về cảm biến đánh thức

Cảm biến góc bản lề đo góc, tính bằng độ, giữa hai phần không thể tách rời của thiết bị. Chuyển động của bản lề được đo bằng loại cảm biến này dự kiến ​​sẽ thay đổi cách thức mà người dùng có thể tương tác với thiết bị, chẳng hạn như bằng cách mở hoặc để lộ màn hình.

Cảm biến tổng hợp tương tác

Một số cảm biến chủ yếu được sử dụng để phát hiện các tương tác với người dùng. We don't define how those sensors must be implemented, but they must be low power and it's the responsibility of the device manufacturer to verify their quality in terms of user experience.

Wake up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) returns a wake-up sensor

A wake up gesture sensor enables waking up the device based on a device specific motion. When this sensor triggers, the device behaves as if the power button was pressed, turning the screen on. This behavior (turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings don't impact the behavior of the sensor: only whether the framework turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7.

Each sensor event reports 1 in sensors_event_t.data[0] .

Pick up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) returns a wake-up sensor

A pick-up gesture sensor triggers when the device is picked up regardless of wherever it was before (desk, pocket, bag).

Each sensor event reports 1 in sensors_event_t.data[0] .

Glance gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) returns a wake-up sensor

A glance gesture sensor enables briefly turning the screen on to enable the user to glance content on screen based on a specific motion. When this sensor triggers, the device will turn the screen on momentarily to allow the user to glance notifications or other content while the device remains locked in a non-interactive state (dozing), then the screen will turn off again. This behavior (briefly turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings do not impact the behavior of the sensor: only whether the framework briefly turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7. Each sensor event reports 1 in sensors_event_t.data[0] .