Mode tunda

Status daya SoC

Status daya sistem pada sebuah chip (SoC) adalah: on, idle, dan suspend. “On” adalah saat SoC sedang berjalan. "Idle" adalah mode daya sedang di mana SoC diaktifkan tetapi tidak melakukan tugas apa pun. "Suspend" adalah mode daya rendah di mana SoC tidak diaktifkan. Konsumsi daya perangkat dalam mode ini biasanya 100 kali lebih sedikit daripada dalam mode "Aktif".

Sensor non-bangun

Sensor non-wake-up adalah sensor yang tidak mencegah SoC masuk ke mode suspend dan tidak membangunkan SoC untuk melaporkan data. Secara khusus, pengemudi tidak diperbolehkan untuk menahan wake-lock. Ini adalah tanggung jawab aplikasi untuk menjaga penguncian layar saat aktif sebagian jika mereka ingin menerima peristiwa dari sensor non-bangun saat layar mati. Saat SoC dalam mode tunda, sensor harus terus berfungsi dan menghasilkan peristiwa, yang dimasukkan ke dalam FIFO perangkat keras. (Lihat Batching untuk detail lebih lanjut.) Peristiwa di FIFO dikirim ke aplikasi saat SoC bangun. Jika FIFO terlalu kecil untuk menyimpan semua peristiwa, peristiwa yang lebih lama akan hilang; data tertua dijatuhkan untuk mengakomodasi data terbaru. Dalam kasus ekstrim di mana FIFO tidak ada, semua peristiwa yang dihasilkan saat SoC dalam mode tunda akan hilang. Satu pengecualian adalah peristiwa terbaru dari setiap sensor perubahan: 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-bangun harus menahan penguncian layar untuk memastikan sistem tidak ditangguhkan, membatalkan pendaftaran dari sensor saat tidak diperlukan, atau berharap kehilangan peristiwa saat SoC dalam mode tunda.

Sensor bangun

Berbeda dengan sensor non-bangun, sensor bangun memastikan bahwa datanya dikirim secara independen dari status SoC. Saat SoC terjaga, sensor bangun berperilaku seperti sensor non-bangun. Saat SoC tertidur, sensor bangun harus membangunkan SoC untuk mengirimkan acara. Mereka masih harus membiarkan SoC masuk ke mode tunda, tetapi juga harus membangunkannya ketika suatu peristiwa perlu dilaporkan. Artinya, sensor harus membangunkan SoC dan mengirimkan peristiwa sebelum latensi pelaporan maksimum berlalu atau FIFO perangkat keras menjadi penuh. Lihat Batching untuk lebih jelasnya.

Untuk memastikan aplikasi memiliki waktu untuk menerima event sebelum SoC kembali tidur, pengemudi harus menahan "timeout wake lock" selama 200 milidetik setiap kali sebuah event dilaporkan. Artinya, SoC tidak boleh dibiarkan tidur kembali dalam 200 milidetik setelah interupsi bangun. Persyaratan ini akan hilang dalam rilis Android mendatang, dan kami memerlukan penguncian bangun batas waktu ini hingga saat itu.

Bagaimana cara menentukan sensor bangun dan tidak bangun?

Hingga KitKat, apakah sensor adalah sensor bangun atau tidak, ditentukan oleh jenis sensor: sebagian besar adalah sensor non-bangun, dengan pengecualian sensor jarak dan detektor gerakan yang signifikan .

Mulai dari L, apakah sensor yang diberikan adalah sensor bangun atau tidak ditentukan oleh tanda dalam definisi sensor. Sebagian besar sensor dapat ditentukan oleh pasangan varian bangun dan tidak bangun dari sensor yang sama, dalam hal ini mereka harus berperilaku sebagai dua sensor independen, tidak berinteraksi satu sama lain. Lihat Interaksi untuk detail selengkapnya.

Kecuali ditentukan lain dalam definisi jenis sensor, direkomendasikan untuk menerapkan satu sensor bangun dan satu sensor tidak bangun untuk setiap jenis sensor yang tercantum dalam Jenis sensor . Dalam setiap definisi jenis sensor, lihat sensor apa (bangun atau tidak bangun) yang akan dikembalikan oleh SensorManager.getDefaultSensor(sensorType) . Ini adalah sensor yang akan digunakan sebagian besar aplikasi.