Android 6 ve sonraki sürümlerde çalışma zamanı izinleri, kullanıcıların bir cihazın mikrofonundan gelen sesin veya cihazın kamerasından gelen sesin ne zaman kaydedileceğini kontrol edebilmesini sağlar. Bir uygulamanın kayıt yapabilmesi için kullanıcının, sistemin gösterdiği iletişim kutusunda uygulamaya izin vermesi veya vermemesi gerekir.
Android 12, kameralar ve mikrofon uygulama işlemi izinleri aracılığıyla gizli bir veri kaynağı kullanan uygulamalar için göstergeler görüntüleyerek kullanıcılara şeffaflık sağlar. Uygulama işlemleri, çalışma zamanı izniyle korunan API'lere erişimleri kaydeder.
App-op, hem etkinlik durumunu hem de tek tek API çağrılarının sayısını izler ve Android 12'deki mikrofon ve kamera göstergeleriyle etkileşime geçerek kullanıcılara uygulamaların cihazlarındaki ses ve kamera verilerine ne zaman eriştiğini gösterir. Kullanıcılar mikrofon veya kamera göstergelerini tıkladığında verilerine hangi uygulamaların eriştiğini görür. Bu özellik tüm OEM'ler için zorunludur.
Gösterge görünürlüğüyle ilgili gereksinimler
Android 12 veya sonraki sürümleri çalıştıran cihazlardaki mikrofon ve kamera göstergeleri için gereksinimler şunlardır:
- Göstergeler durum çubuğunda görünmeli ve en yüksek görsel önceliği almalıdır (örneğin, sağ üst köşedeki en sağ konumda yer almalıdır).
- Göstergeler her zaman aynı konumda olmalı ve bir uygulama başlatılırken engellenmemelidir.
- Her iki gösterge de yeşil (veya yeşilin bir varyantı) renkte olmalıdır.
- Göstergelerden birini veya ikisini birden tıklamak, aşağıdakileri yapan bir uygulama ilişkilendirmesi kolaylaştırma bildirimi oluşturmalıdır:
- Mikrofonu ve (veya) kamerayı kullanan uygulamanın adını görüntüler
- Son 15 saniye içinde mikrofonu ve (veya) kamerayı kullanan uygulamanın adını gösterir.
- Kullanıcıları Ayarlar'daki uygulama izni sayfasına yönlendirir.
Kullanım ve özellikler
Android 12'de kullanıcı arayüzü, çalışan kullanımlar ile son kullanımlar arasında ayrım yapar. Sistem tarafından çalışan olarak işaretlenen veya 5 saniyeden eski olan kullanımlar etkin olarak kabul edilir.
- Durum çubuğundaki simgeler, bir uygulamanın kullanıcıya duyarlı mikrofon veya kamera erişimi her zaman açık olduğunda gösterilir.
- Kullanıcılar bu simgeleri tıklayarak mikrofon, kamera veya her ikisine birden hangi uygulamaların eriştiğini görebilir.
Şekil 1. Etkin erişimi gösteren mikrofon ve kamera kullanım göstergeleri (sağ üst köşe)
Göstergeler gösterdiği sürece erişim etkin olarak kabul edilir. Önce bir simge görünür, ardından uygulama kapatılana veya kapatılana kadar devam eden bir noktaya geçiş yapılır.
Kullanıcı göstergelere dokunduğunda, bir uygulamanın kamerayı, mikrofonu veya her ikisini birden kullandığını gösteren bir iletişim kutusu açılır.
Şekil 2. Etkin ve son erişim göstergeleri
Şekil 2'deki resimde, son 5 saniye içinde çalışan bir uygulama tarafından verilere erişildiğinde etkin erişim göstergeleri gösterilmektedir.
Son erişim göstergeleri, önceki 15 saniye içinde bir uygulama tarafından verilere erişildiğini ancak uygulamanın etkin olmadığını gösterir. Etkin olan tüm uygulamalar iletişim kutusunda gösterilir ancak önceki 15 saniyelik zaman aralığında verilere birden fazla uygulama erişmiş olsa bile son erişimin kaynağı olarak yalnızca bir uygulama gösterilir. Kullanıcı bildirim iletişim kutusunu kapatana kadar erişim görünümü donar.
Yayınlama ve etkinleştirme
PermissionManager
sınıfı, sistem kullanıcı arayüzünde bulunan iletişim kutusunu doldurmak için bir yöntem sağlar.
- Sistem kullanıcı arayüzü, cihaz yapılandırması anahtarına tepki verir:
privacy/mic_camera_indicators_enabled
. - Aşağıdaki sırayla iki ayrı teslimat aracı olduğu için geçiş gereklidir:
- Yayınlayın.
- Etkinleştir'i tıklayın.
PermissionManager
içindeki yöntem gerekli verileri sağlayamazsa sistem kullanıcı arayüzü kilitlenmemelidir.
Süreç akışı
İzin Göstergesi işlevinin üç ana bölümü vardır:
- Uygulamalar
- Göstergeler (SystemUI tarafından yönetilir)
- Verileri hangi uygulamaların kullandığını belirleme
PermissionController
, hangi uygulamaların veri kullandığını belirleme mekanizmasını sağlar. SystemUI, gizli verileri kullanan uygulamaları dinler. SystemUI, üst gezinme çubuğunda kullanılan izinlere karşılık gelen bir simge gösterir. PermissionController
, kullanıcı bir simgeyi tıkladığında kullanımlarla ilgili verileri gösterir.
Şekil 3. Sistem bileşenleri ve kullanıcı arayüzü geçişleri akışı
Şekil 3'teki numaralı geçişler aşağıda açıklanmıştır:
1- Bir uygulama sistemden gizli veri ister.
2- Sistem izinleri kontrol eder. İzinlere izin verilirse sistem, veri sağlayıcıyı bilgilendirir ve uygulama işlemlerinde kullanımı not eder
3- Veri sağlayıcı, uygulamaya veri verir.
4-5 Kullanıcı simgeleri tıklar. Sistem kullanıcı arayüzü, PermissionManager
'den veri ister ve iletişim kutusunu kullanıcıya gösterir.
İşleme ayrıntıları
- Uygulamalar,
AppOpsManager.startOp
,stopOp
ve (veya)noteOp
çağrılarını kullanarak mikrofonu ve kamerayı kullanır. Bu işlem, sistem sunucusunda uygulama işlemi kayıtları oluşturur. - Sistem arayüzü,
AppOpsManager.OnOpActiveChangedInternalListener
veOnOpNotedListener
dinleyicilerini kullanarak yeni uygulama işlemlerini dinler. Yeni bir kullanım geldiğinde (startOp
veyanoteOp
çağrısı üzerinden) Sistem Kullanıcı Arayüzü, kullanımın bir sistem uygulaması tarafından yapıldığını doğrular. - Sistem kullanıcı arayüzü, sistem uygulaması kullanımını doğrularsa ve kullanım mikrofon içinse mikrofonun sesinin kısılıp kısılmadığını kontrol eder.
- Sistem kullanıcı arayüzü, sistem dışı uygulama kullanımını (ve mikrofon kullanımı için mikrofonun sesinin açıldığını, kamera kullanımı için de kameranın açıldığını) doğrularsa bu tür kullanımları yansıtan bir simge gösterir.
Sistem kullanıcı arayüzü, süresi olmayan bir noteOp
alırsa simgeyi en az 5 saniye boyunca gösterir. Aksi takdirde simge, stopOp
tıklanana kadar veya en fazla 5 saniye boyunca gösterilir. Kullanıcı bir simgeyi tıkladığında, iletişim kutusunu başlatmak için PermissionController
'e giden bir intent başlatılır.
PermissionController
, mikrofon ve kamera için son kullanımların tümünü yükler. Bunlardan herhangi birinin çalışıp çalışmadığını veya Sistem Kullanıcı Arayüzü tarafından belirlenen zaman aralığında çalışıp çalışmadığını kontrol eder. Eşleşme bulunursa izni kullanan uygulamanın adını ve uygulamanın hangi izinleri kullandığını gösterir.
Android 12 ve sonraki sürümlerde yapılan bu değişiklik nedeniyle bazı uygulamaların davranışlarını değiştirmesi veya özel davranışlar uygulaması gerekir.
Telefon hizmeti, Android Google Arama uygulaması (AGSA) ve Google Mobil Hizmetleri (GMS) ile çalışırken izin kullanımı (telefon görüşmelerinde kullanılan ayrı mikrofon yığınını hesaba katmak için) uygulamalıdır.