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.

Chế độ đình chỉ

Các trạng thái quyền lực của SoC

Các trạng thái năng lượng của hệ thống trên chip (SoC) là: bật, không hoạt động và tạm ngừng. “Bật” là khi SoC đang chạy. “Chờ” là chế độ công suất trung bình trong đó SoC được cấp nguồn nhưng không thực hiện bất kỳ tác vụ nào. “Tạm ngưng” là chế độ năng lượng thấp khi SoC không được cấp nguồn. Mức tiêu thụ điện của thiết bị ở chế độ này thường ít hơn 100 lần so với ở chế độ “Bật”.

Cảm biến không đánh thức

Cảm biến không đánh thức là cảm biến không ngăn SoC chuyển sang chế độ tạm ngừng và không đánh thức SoC để báo cáo dữ liệu. Đặc biệt, người lái xe không được phép giữ khóa đánh thức. Các ứng dụng có trách nhiệm giữ khóa đánh thức một phần nếu họ muốn nhận các sự kiện từ cảm biến không đánh thức trong khi màn hình tắt. Trong khi SoC ở chế độ tạm ngừng, các cảm biến phải tiếp tục hoạt động và tạo ra các sự kiện, được đưa vào FIFO phần cứng. (Xem Batching để biết thêm chi tiết.) Các sự kiện trong FIFO được chuyển đến các ứng dụng khi SoC thức dậy. Nếu FIFO quá nhỏ để lưu trữ tất cả các sự kiện, các sự kiện cũ hơn sẽ bị mất; dữ liệu cũ nhất bị loại bỏ để chứa dữ liệu mới nhất. Trong trường hợp cực đoan khi FIFO không tồn tại, tất cả các sự kiện được tạo ra trong khi SoC ở chế độ tạm ngừng sẽ bị mất. Một ngoại lệ là sự kiện mới nhất từ ​​mỗi cảm biến khi thay đổi: sự kiện cuối cùngphải được lưu bên ngoài FIFO để không thể bị mất.

Ngay sau khi SoC thoát khỏi chế độ tạm ngừng, tất cả các sự kiện từ FIFO sẽ được báo cáo và hoạt động trở lại như bình thường.

Các ứng dụng sử dụng cảm biến không đánh thức phải giữ khóa đánh thức để đảm bảo hệ thống không bị tạm ngừng, hủy đăng ký khỏi cảm biến khi chúng không cần đến hoặc có thể mất các sự kiện trong khi SoC ở chế độ tạm ngừng.

Cảm biến đánh thức

Trái ngược với cảm biến không đánh thức, cảm biến đánh thức đảm bảo rằng dữ liệu của chúng được phân phối độc lập với trạng thái của SoC. Trong khi SoC hoạt động, các cảm biến đánh thức hoạt động giống như các cảm biến không đánh thức. Khi SoC ở chế độ ngủ, các cảm biến đánh thức phải đánh thức SoC để cung cấp các sự kiện. Họ vẫn phải để SoC chuyển sang chế độ tạm ngừng, nhưng cũng phải đánh thức nó khi một sự kiện cần được báo cáo. Đó là, cảm biến phải đánh thức SoC và cung cấp các sự kiện trước khi độ trễ báo cáo tối đa trôi qua hoặc FIFO phần cứng đầy. Xem Batch để biết thêm chi tiết.

Để đảm bảo các ứng dụng có thời gian nhận sự kiện trước khi SoC chuyển sang chế độ ngủ, trình điều khiển phải giữ "khóa đánh thức hết thời gian" trong 200 mili giây mỗi khi một sự kiện được báo cáo. Có nghĩa là, SoC không được phép quay trở lại chế độ ngủ trong 200 mili giây sau khi bị gián đoạn đánh thức. Yêu cầu này sẽ biến mất trong bản phát hành Android trong tương lai và chúng tôi cần khóa chế độ thức thời gian chờ này cho đến lúc đó.

Làm thế nào để xác định cảm biến đánh thức và không đánh thức?

Tính đến KitKat, việc cảm biến đánh thức hay không đánh thức được quyết định bởi loại cảm biến: hầu hết là cảm biến không đánh thức, ngoại trừ cảm biến tiệm cận và cảm biến chuyển động quan trọng .

Bắt đầu từ L, việc một cảm biến nhất định có phải là cảm biến đánh thức hay không được chỉ định bởi một cờ trong định nghĩa cảm biến. Hầu hết các cảm biến có thể được xác định bằng các cặp biến thể đánh thức và không đánh thức của cùng một cảm biến, trong trường hợp đó, chúng phải hoạt động như hai cảm biến độc lập, không tương tác với nhau. Xem Tương tác để biết thêm chi tiết.

Trừ khi có quy định khác trong định nghĩa loại cảm biến, bạn nên triển khai một cảm biến đánh thức và một cảm biến không đánh thức cho từng loại cảm biến được liệt kê trong Các loại cảm biến . Trong mỗi định nghĩa loại cảm biến, hãy xem cảm biến nào (đánh thức hoặc không đánh thức) sẽ được SensorManager.getDefaultSensor(sensorType) . Nó là cảm biến mà hầu hết các ứng dụng sẽ sử dụng.