Saat dalam mode pesawat, perangkat masih dapat mengakses beberapa sensor untuk mengaktifkan fungsi tertentu, seperti rotasi layar dan mengambil gambar. Android 10 menyediakan setelan opsi developer untuk menonaktifkan semua sensor di perangkat. Fitur ini membantu developer menguji fungsi aplikasi mereka dalam situasi saat sensor tersebut tidak tersedia, dan juga memberi pengguna cara untuk mengontrol sensor di perangkat mereka.
    Saat developer atau pengguna mengaktifkan Sensor nonaktif di opsi
    developer (Setelan > Sistem >
    Opsi developer > Kartu developer setelan
    cepat), kartu baru akan muncul di baki setelan cepat. Mereka dapat menggunakan
    kartu untuk mencegah aplikasi mengakses kamera, mikrofon, dan semua sensor
    yang dikelola oleh class SensorManager.
    
Peringatan: Opsi ini hanya memengaruhi aplikasi yang mengakses sensor melalui `SensorService`, `CameraService`, dan `AudioPolicyService`. Fungsi telepon tidak menggunakan `AudioPolicyService` dan masih memiliki akses ke mikrofon selama panggilan telepon.
Implementasi
    Android 10 menyertakan implementasi referensi yang
    menangani sensor kamera, mikrofon, dan SensorManager. Layanan
    sistem yang mengelola status Sensor nonaktif dan
    memberi tahu klien tentang perubahan status terletak di
    frameworks/base/services/core/java/com/android/server/SensorPrivacyService.java.
    Pengelola yang memfasilitasi akses ke SensorPrivacyService
    dalam konteks aplikasi terletak di
    frameworks/base/core/java/android/hardware/SensorPrivacyManager.java.
    
    Jika perangkat Anda menggunakan implementasi default SensorService,
    CameraService, dan AudioPolicyService, tidak ada
    penyesuaian tambahan yang diperlukan untuk desain referensi. Jika Anda memiliki
    sensor lain, lihat Penyesuaian untuk mengetahui detail selengkapnya
      tentang dukungan fitur ini.
    
Masalah umum
    Saat menerapkan fitur ini, terkadang aplikasi kamera tidak merespons dengan benar
    callback onError, baik saat pertama kali mencoba mendapatkan
    kamera maupun saat kamera tidak lagi tersedia. Hal ini biasanya menyebabkan
    aplikasi error saat kartu ini diaktifkan, tetapi hal ini dapat digunakan sebagai sinyal
    untuk menunjukkan bahwa fitur berperilaku seperti yang diharapkan.
    
    Perilaku ini menunjukkan bahwa aplikasi tidak menangani callback
    onError dengan benar di
    CameraDevice.StateCallback. Saat
    Sensor nonaktif diaktifkan, callback onError
    dipanggil dengan
    CameraDevice.StateCallback.ERROR_CAMERA_DISABLED
    ditetapkan sebagai nilai error. Perbarui aplikasi pihak pertama untuk menangani callback onError dengan nilai ini dengan tidak melakukan panggilan berikutnya terhadap CameraDevice hingga panggilan openCamera berikutnya berhasil.
    
Perilaku sensor
    Jika Sensor nonaktif diaktifkan, sensor akan berhenti melaporkan
    data apa pun ke sistem atau aplikasi. Aplikasi masih dapat meminta sensor dan mendaftarkan pemroses saat Sensor nonaktif diaktifkan, tetapi keheningan akan ditampilkan untuk mikrofon atau callback onSensorChanged tidak pernah dipanggil untuk sensor. Segera setelah kartu dinonaktifkan, pemroses yang sama
    mulai menerima output sebenarnya dari mikrofon atau callback yang diharapkan ke
    onSensorChanged tanpa perlu melakukan pekerjaan tambahan. Perilaku
    default sensor yang dibisukan adalah sebagai berikut.
    
Kamera
    Jika aplikasi menggunakan kamera saat Sensor nonaktif diaktifkan,
    error akan dikirim ke metode callback onError dan
    CameraDevice ditutup.
    
    Jika aplikasi mencoba mengakses kamera saat Sensor nonaktif
    diaktifkan, error akan dikirim ke metode callback onError.
    
Mikrofon
Jika Sensor nonaktif diaktifkan, akses ke mikrofon masih dapat dilakukan, tetapi hanya suara bisu yang ditampilkan. Jika aplikasi menggunakan mikrofon saat Sensor nonaktif diaktifkan, tidak akan ada error yang dihasilkan, tetapi perekaman akan dibisukan dan hanya menampilkan array nol. Jika Sensor nonaktif dinonaktifkan saat aplikasi masih menggunakan mikrofon, data audio yang diharapkan akan ditampilkan.
Jika aplikasi mencoba mengakses mikrofon saat Sensor nonaktif diaktifkan, mikrofon akan menampilkan senyap.
Sensor
Saat aplikasi mencoba mengakses sensor lain saat Sensor nonaktif diaktifkan, jenis sensor akan memengaruhi perilaku default:
- Sensor berkelanjutan: Sensor dalam mode pelaporan ini berhenti mengirim peristiwa. Jika aplikasi berinteraksi dengan sensor berkelanjutan saat Sensor nonaktif diaktifkan, sensor tidak akan mengirimkan data tambahan ke aplikasi hingga fitur dinonaktifkan.
 - Peristiwa flush: Flush sensor dapat diminta saat kartu
    diaktifkan dan callback 
onFlushCompletedipanggil untuk menunjukkan bahwa flush yang diminta berhasil diselesaikan, tetapi tidak ada peristiwa baru dengan data sensor yang dihasilkan dan ditampilkan ke callbackonSensorChanged. - Peristiwa sesuai perubahan: Jika Sensor nonaktif diaktifkan, tidak ada peristiwa perubahan baru yang dilaporkan.
 - Peristiwa pemicu: Jika Sensor nonaktif diaktifkan, peristiwa pemicu akan berhenti dibuat. Semua peristiwa yang ada telah selesai.
 
Penyesuaian
    Jika perangkat Anda menggunakan implementasi default
    SensorService, CameraService, dan
    AudioPolicyService, tidak diperlukan penyesuaian tambahan
    pada desain referensi. Namun, Anda dapat mendukung sensor yang dikelola
    di luar SensorManager, menghapus Sensor nonaktif
    dari perangkat, atau mengubah UI Sistem untuk kartu setelan cepat
    developer atau ikon untuk kartu Sensor nonaktif.
    
Mendukung lebih banyak sensor
    Jika perangkat Anda berisi sensor yang dikelola di luar SensorManager,
    Anda harus menambahkan dukungan untuk sensor tersebut menggunakan SensorPrivacyService dan
    SensorPrivacyManager.
    
    Saat kartu Sensor nonaktif diaktifkan,
    SensorPrivacyService akan memanggil callback satu arah untuk semua pemroses
    yang terdaftar. Saat callback ini diterima, pemroses terdaftar dapat mengambil
    langkah-langkah yang diperlukan berdasarkan status kartu. Jika diaktifkan, semua koneksi yang ada dapat dihentikan dan menampilkan data kosong, serta tanda yang ditetapkan untuk mencegah koneksi baru. Jika dinonaktifkan, tanda ini dapat direset untuk
    mengizinkan koneksi baru. Dengan menggunakan layanan kamera
    (platform/frameworks/av/services/camera/libcameraservice/)
    sebagai contoh, ikuti langkah-langkah berikut untuk menambahkan dukungan bagi sensor baru.
    
- Mengimplementasikan antarmuka 
BnSensorPrivacyListener. Untuk detail selengkapnya, lihatSensorPrivacyPolicydiCameraService.h. - Daftar dengan 
SensorPrivacyManagerdan dapatkan status kartu saat memulai. Untuk detail selengkapnya, lihatSensorPrivacyPolicy::registerSelfdiCameraService.cpp. - Tangani perubahan status Sensor nonaktif dalam callback. Untuk detail
    selengkapnya, lihat 
SensorPrivacyPolicy::onSensorPrivacyChangeddanCameraService::blockAllClientsdiCameraService.cpp. - Mencegah akses ke data sensor saat kartu diaktifkan. Untuk detail
    selengkapnya, lihat pemeriksaan kebijakan privasi sensor di
    
CameraService::validateClientPermissionsLockeddiCameraService.cpp. 
Menghapus Sensor nonaktif
Sebagai alat developer untuk pengujian, Sensor nonaktif disembunyikan karena pengguna harus mengaktifkan mode developer terlebih dahulu, lalu memilih untuk menyediakan kartu di setelan.
    Jika Anda tidak ingin mendukung Sensor nonaktif di perangkat,
    hapus tag layanan dari
    packages/apps/Settings/AndroidManifest.xml. Jika Anda menghapus
    tag layanan, kartu Sensor nonaktif tidak akan tersedia untuk diaktifkan
    dari halaman kartu setelan cepat developer.
    
Mengubah UI Sensor nonaktif
Ada dua elemen yang dapat disesuaikan untuk UI Sensor nonaktif: ikon yang ditampilkan untuk kartu setelan cepat developer dan ikon yang ditampilkan di status bar saat kartu diaktifkan. Untuk menyesuaikan tampilan ikon ini, ganti file berikut:
- Ikon kartu setelan cepat:
    
packages/apps/Settings/res/drawable/tile_icon_sensors_off.xml - Ikon status bar:
    
frameworks/base/packages/SystemUI/res/drawable/stat_sys_sensors_off.xml 
Validasi
Sebagai alat developer opsional, tidak ada pengujian CTS untuk fitur ini.
Anda dapat menguji secara manual dengan menginstal aplikasi dari Google Play yang membaca dan menampilkan semua sensor perangkat. Saat Anda mengaktifkan kartu Sensor nonaktif, pastikan tidak ada nilai untuk sensor yang berubah, audio mikrofon tidak bersuara, dan kamera tidak dapat diakses.