Mode penangguhan

Status daya SoC

Status daya sistem di chip (SoC) adalah: aktif, tidak ada aktivitas, dan ditangguhkan. “Aktif” adalah saat SoC berjalan. “Idle” adalah mode daya sedang saat SoC diaktifkan, tetapi tidak melakukan tugas apa pun. “Suspend” adalah mode daya rendah saat SoC tidak diberi daya. Penggunaan daya perangkat dalam mode ini biasanya 100 kali lebih rendah daripada dalam mode “Aktif”.

Sensor non-bangun

Sensor non-wake-up adalah sensor yang tidak mencegah SoC memasuki mode penangguhan dan tidak mengaktifkan SoC untuk melaporkan data. Secara khusus, driver tidak diizinkan untuk menahan wake-lock. Aplikasi bertanggung jawab untuk mempertahankan kunci layar aktif sebagian jika ingin menerima peristiwa dari sensor non-aktif saat layar nonaktif. Saat SoC dalam mode penangguhan, sensor harus terus berfungsi dan menghasilkan peristiwa, yang dimasukkan ke dalam FIFO hardware. (Lihat Pengelompokan untuk mengetahui detail selengkapnya.) Peristiwa dalam FIFO dikirim ke aplikasi saat SoC aktif. Jika FIFO terlalu kecil untuk menyimpan semua peristiwa, peristiwa yang lebih lama akan hilang; data terlama akan dihapus untuk mengakomodasi data terbaru. Dalam kasus ekstrem saat FIFO tidak ada, semua peristiwa yang dihasilkan saat SoC dalam mode penangguhan akan hilang. Satu pengecualian adalah peristiwa terbaru dari setiap sensor on-change: peristiwa terakhir harus disimpan di luar FIFO sehingga tidak dapat hilang.

Segera setelah SoC keluar dari mode penangguhan, semua peristiwa dari FIFO dilaporkan dan operasi dilanjutkan seperti biasa.

Aplikasi yang menggunakan sensor non-wake-up harus menahan kunci layar aktif untuk memastikan sistem tidak ditangguhkan, membatalkan pendaftaran dari sensor saat tidak memerlukannya, atau mengharapkan kehilangan peristiwa saat SoC dalam mode penangguhan.

Sensor aktivasi

Berbeda dengan sensor non-wake-up, sensor wake-up memastikan bahwa datanya dikirim secara independen dari status SoC. Saat SoC aktif, sensor wake-up berperilaku seperti sensor non-wake-up. Saat SoC dalam mode tidur, sensor pengaktifan harus mengaktifkan SoC untuk mengirimkan peristiwa. SoC tetap harus mengizinkan SoC masuk ke mode penangguhan, tetapi juga harus membangunkannya saat peristiwa perlu dilaporkan. Artinya, sensor harus mengaktifkan SoC dan mengirimkan peristiwa sebelum latensi pelaporan maksimum berlalu atau FIFO hardware penuh. Lihat Pengelompokan untuk mengetahui detail selengkapnya.

Untuk memastikan aplikasi memiliki waktu untuk menerima peristiwa sebelum SoC kembali ke mode tidur, driver harus menahan "timeout wake lock" selama 200 milidetik setiap kali peristiwa dilaporkan. Artinya, SoC tidak boleh diizinkan untuk kembali ke mode tidur dalam 200 milidetik setelah gangguan pengaktifan. Persyaratan ini akan hilang dalam rilis Android mendatang, dan kami memerlukan kunci layar aktif waktu tunggu ini hingga saat itu.

Bagaimana cara menentukan sensor wake-up dan non-wake-up?

Hingga KitKat, apakah sensor merupakan sensor aktivasi atau non-aktivasi ditentukan oleh jenis sensor: sebagian besar adalah sensor non-aktivasi, dengan pengecualian sensor kedekatan dan detektor gerakan signifikan.

Mulai dari L, apakah sensor tertentu adalah sensor bangun atau tidak ditentukan oleh flag dalam definisi sensor. Sebagian besar sensor dapat ditentukan oleh pasangan varian wake-up dan non-wake-up dari sensor yang sama, dalam hal ini, sensor tersebut harus berperilaku sebagai dua sensor independen, tidak berinteraksi satu sama lain. Lihat Interaksi untuk mengetahui detail selengkapnya.

Kecuali jika ditentukan lain dalam definisi jenis sensor, sebaiknya terapkan satu sensor wake-up dan satu sensor non-wake-up untuk setiap jenis sensor yang tercantum dalam Jenis sensor. Dalam setiap definisi jenis sensor, lihat sensor apa (wake-up atau non-wake-up) yang akan ditampilkan oleh SensorManager.getDefaultSensor(sensorType). Ini adalah sensor yang akan digunakan sebagian besar aplikasi.