مجوزهای زمان اجرا در اندروید 6 و بالاتر به کاربران اجازه میدهد تا چه زمانی صدا را از میکروفون دستگاه یا ویدیو از دوربین دستگاه ضبط کنند، کنترل کنند. قبل از اینکه یک برنامه بتواند ضبط کند، یک کاربر باید از طریق گفتگویی که سیستم ارائه می دهد، به آن اجازه دهد یا رد کند.
Android 12 با نمایش نشانگرهایی که یک برنامه از منبع داده خصوصی از طریق دوربینها و مجوزهای اجرای میکروفون استفاده میکند، شفافیت را در اختیار کاربران قرار میدهد. App-ops دسترسی به APIهای محافظت شده با مجوز زمان اجرا را ضبط می کند.
App-op هم وضعیت فعالیت و هم تعداد تماسهای API منفرد را ردیابی میکند و با نشانگرهای میکروفون و دوربین در Android 12 تعامل میکند تا به کاربران نشان دهد که برنامهها به دادههای صوتی و دوربین دستگاههایشان دسترسی پیدا کردهاند. وقتی کاربران روی نشانگرهای میکروفون یا دوربین کلیک می کنند، می بینند که کدام برنامه به داده های آنها دسترسی پیدا کرده است. این ویژگی برای همه OEM ها اجباری است.
الزامات دید نشانگر
این موارد برای نشانگرهای میکروفون و دوربین در دستگاههای دارای Android 12 یا بالاتر هستند:
- نشانگرها باید در نوار وضعیت ظاهر شوند و بالاترین اولویت بصری را حفظ کنند (به عنوان مثال، در سمت راست ترین موقعیت در گوشه سمت راست بالا قرار دارند).
- نشانگرها باید به طور پیوسته در یک موقعیت قرار داشته باشند و هنگام راه اندازی برنامه نباید توسط برنامه مسدود شوند.
- هر دو نشانگر باید رنگ سبز (یا تغییر رنگ سبز) داشته باشند.
- با کلیک بر روی یک یا هر دو نشانگر باید یک اعلان هزینه انتساب برنامه ارائه شود که موارد زیر را انجام می دهد:
- نام برنامه ای را که از میکروفون و (یا) دوربین استفاده می کند نشان می دهد
- نام برنامه ای را نشان می دهد که در 15 ثانیه گذشته از میکروفون و (یا) دوربین استفاده کرده است
- کاربران را به صفحه مجوز برنامه در تنظیمات می برد
استفاده و ویژگی ها
در اندروید 12، رابط کاربری بین استفادههای در حال اجرا و استفادههای اخیر تمایز قائل میشود. استفادهها در صورتی فعال در نظر گرفته میشوند که توسط سیستم بهعنوان در حال اجرا علامتگذاری شده باشند یا کمتر از 5 ثانیه قدیمی باشند.
- نمادهای نوار وضعیت هر بار که برنامهای به میکروفون یا دوربین حساس به کاربر دسترسی دارد نشان داده میشود.
- کاربران میتوانند روی این نمادها کلیک کنند و ببینند کدام برنامهها به میکروفون، دوربین یا هر دو دسترسی دارند.
شکل 1. نشانگرهای میکروفون و دوربین در حال استفاده که دسترسی فعال را نشان می دهد (گوشه سمت راست بالا)
دسترسی تا زمانی که نشانگرها نشان می دهند فعال در نظر گرفته می شود. ابتدا یک نماد نشان داده می شود، سپس به نقطه ای منتقل می شود که تا زمانی که برنامه نادیده گرفته شود یا بسته شود، باقی می ماند.
وقتی کاربر روی نشانگرها ضربه میزند، یک گفتگو باز میشود که نشان میدهد یک برنامه از دوربین، میکروفون یا هر دو استفاده میکند.
شکل 2. نشانگرهای دسترسی فعال و اخیر
تصویر در شکل 2 نشانگرهای دسترسی فعال را نشان می دهد که در 5 ثانیه گذشته توسط یک برنامه در حال اجرا به داده ها دسترسی داشته باشید.
نشانگرهای دسترسی اخیر نشان می دهد که یک برنامه در 15 ثانیه قبل به داده ها دسترسی داشته است، اما برنامه فعال نیست. همه برنامههای فعال در گفتگو نشان داده میشوند، اما تنها یک برنامه بهعنوان منبع دسترسی اخیر نشان داده میشود، حتی زمانی که بیش از 1 برنامه در بازه زمانی 15 ثانیه قبلی به دادهها دسترسی داشته باشند. نمای دسترسی ثابت می ماند تا زمانی که کاربر گفتگوی اعلان را رد کند.
تحویل و فعال کنید
کلاس PermissionManager
روشی را برای پر کردن دیالوگ ارائه می دهد که در رابط کاربری سیستم قرار دارد.
- رابط کاربری سیستم به سوئیچ پیکربندی دستگاه واکنش نشان میدهد:
privacy/mic_camera_indicators_enabled
. - سوئیچ ضروری است زیرا دو وسیله نقلیه تحویل جداگانه وجود دارد، به ترتیب:
- تحویل دهید.
- فعال کردن
- اگر روش در
PermissionManager
نتواند داده های مورد نیاز را ارائه دهد، رابط کاربری سیستم نباید خراب شود.
جریان فرآیند
عملکرد نشانگر مجوز دارای سه بخش اصلی است:
- برنامه ها
- نشانگرها (که توسط SystemUI مدیریت می شود)
- راهی برای تعیین اینکه کدام برنامه ها از داده ها استفاده می کنند
PermissionController
مکانیزمی را برای تعیین برنامه هایی که از داده ها استفاده می کنند ارائه می دهد. SystemUI با استفاده از داده های خصوصی به برنامه ها گوش می دهد. SystemUI نمادی را در نوار پیمایش بالا نشان می دهد که مطابق با مجوزهای استفاده شده است. وقتی کاربر روی نماد کلیک می کند، PermissionController
داده های مربوط به استفاده را نشان می دهد.
شکل 3. اجزای سیستم و (UI) انتقال جریان
انتقال های شماره گذاری شده در شکل 3 در زیر توضیح داده شده است:
1- یک برنامه اطلاعات خصوصی را از سیستم درخواست می کند.
2- سیستم مجوزها را بررسی می کند. اگر مجوزها مجاز باشند، سیستم به ارائهدهنده دادهها اطلاع میدهد و استفاده در برنامهها را یادداشت میکند.
3- ارائه دهنده داده به برنامه داده می دهد.
4-5 کاربر روی آیکون ها کلیک می کند. سیستم UI داده ها را از PermissionManager
درخواست می کند و گفتگو را به کاربر ارائه می دهد.
جزئیات فرآیند
- برنامهها از میکروفون و دوربین استفاده میکنند و
AppOpsManager.startOp
،stopOp
و (یا)noteOp
صدا میزنند. با این کار رکوردهای app-op در سرور سیستم ایجاد می شود. - رابط کاربری سیستم با استفاده از شنوندگان
AppOpsManager.OnOpActiveChangedInternalListener
وOnOpNotedListener
به برنامه های جدید گوش می دهد. هنگامی که استفاده جدیدی وارد می شود (از طریق تماس باstartOp
یاnoteOp
)، رابط کاربری سیستم تأیید می کند که استفاده توسط یک برنامه سیستمی است. - اگر رابط کاربری سیستم استفاده از برنامه سیستم را تأیید کند، و اگر استفاده از میکروفون باشد، رابط کاربری سیستم بررسی میکند که آیا میکروفون بیصدا است یا خیر.
- اگر رابط کاربری سیستم استفاده از برنامه های غیر سیستمی را تأیید کند (و برای استفاده از میکروفون، میکروفون خاموش است، برای استفاده از دوربین، دوربین روشن است)، نمادی را نشان می دهد که چنین استفاده ای را منعکس می کند.
اگر رابط کاربری سیستم یک noteOp
دریافت کند که مدت زمان ندارد، نماد را برای حداقل 5 ثانیه نشان می دهد. در غیر این صورت، نماد یا تا زمانی که یک stopOp
دریافت کند، یا به مدت 5 ثانیه، هر کدام طولانیتر باشد، نشان داده میشود. کاربر با کلیک بر روی یک نماد، هدفی را آغاز می کند که به PermissionController
می رود تا گفتگو را شروع کند.
PermissionController
تمام موارد استفاده اخیر را برای میکروفون و دوربین بارگیری می کند. بررسی می کند که آیا هر یک از آن ها در حال اجرا هستند یا در بازه زمانی تعیین شده توسط System UI اجرا می شوند. اگر مطابقت پیدا کند، نام برنامه ای که از مجوز استفاده کرده است و مجوزهایی که برنامه استفاده کرده است را نشان می دهد.
به دلیل این تغییر در اندروید 12 و بالاتر، برخی از اپلیکیشن ها باید یا رفتار خود را تغییر دهند یا رفتار خاصی را اعمال کنند.
تلفن باید هنگام کار با برنامه جستجوی Google Android (AGSA) و Google Mobile Services (GMS) استفاده از مجوز (برای محاسبه پشته میکروفون جداگانه مورد استفاده در تماسهای تلفنی) را اجرا کند.