اجرای اضطراری Affordance

تمام دستگاه‌های تلفن همراه فروخته شده در هند از اول ژانویه ۲۰۱۷ باید برای برآورده کردن الزامات وزارت مخابرات هند (DoT) دارای دکمه هشدار باشند. برای رسیدگی به این الزامات نظارتی، اندروید شامل پیاده‌سازی مرجعی از ویژگی Emergency Affordance برای فعال کردن دکمه هشدار در دستگاه‌های اندروید است.

این ویژگی به طور پیش‌فرض در نسخه‌های اندروید ۸.۰ و بالاتر فعال است، اما باید در نسخه‌های قبلی اصلاح شود. این ویژگی منحصراً برای دستگاه‌های فروخته شده در بازار هند در نظر گرفته شده است، اما می‌تواند در تمام دستگاه‌های فروخته شده در سراسر جهان گنجانده شود زیرا این ویژگی در خارج از هند هیچ تاثیری ندارد.

مثال‌ها و منابع

ویژگی Emergency Affordance در چارچوب‌ها/پروژه پایه پروژه متن‌باز اندروید (AOSP) پیاده‌سازی شده است. این ویژگی در آخرین نسخه اندروید موجود است و به طور پیش‌فرض در نسخه‌های اندروید ۸.۰ و بالاتر فعال است.

این ویژگی در شاخه‌ها و کامیت‌های زیر موجود است. این اطلاعات ارائه شده است تا تولیدکنندگان دستگاه بتوانند تغییرات لازم را در نسخه‌های موجود خود اعمال کنند. تولیدکنندگان دستگاهی که مایل به پیاده‌سازی ویژگی Emergency Affordance مرجع AOSP هستند، می‌توانند کامیت‌ها را از شاخه‌های مربوطه انتخاب کرده و در نسخه‌های خود اعمال کنند.

جدول 1. انتخاب‌های برتر برای ویژگی Emergency Affordance مرجع AOSP

شعبه کامیت‌ها
آخرین نسخه اندروید e0c3c66 ویژگی Emergency Affordance اضافه شد
42a4338 ترجمه‌های اضافه شده برای رشته اقدام اضطراری
4df8d64 مشکلی که باعث می‌شد ویژگی Emergency Affordance روی تبلت‌ها نمایش داده شود، برطرف شد.
نوقا-توسعه e6680d9 ویژگی Emergency Affordance اضافه شد
95e1865 ترجمه‌های اضافه شده برای رشته اقدام اضطراری
a70bb89 مشکلی که باعث می‌شد ویژگی Emergency Affordance در تبلت‌ها نمایش داده شود، برطرف شد.
مارشمالو-توسعه cd22634 ویژگی Emergency Affordance اضافه شد
13f51c6 ترجمه‌های اضافه شده برای رشته اقدام اضطراری
۶۵۳۱۶۶ مشکلی که باعث می‌شد ویژگی Emergency Affordance روی تبلت‌ها نمایش داده شود، برطرف شد.
lollipop-mr1-dev 5fbc86b ویژگی Emergency Affordance اضافه شد
1b60879 ترجمه‌های اضافه شده برای رشته اقدام اضطراری
d74366f مشکلی که باعث می‌شد ویژگی Emergency Affordance در تبلت‌ها نمایش داده شود، برطرف شد.

پیاده‌سازی

ویژگی Emergency Affordance هیچ تغییری در APIهای ارائه شده از طریق کیت توسعه نرم‌افزار اندروید (SDK) ایجاد نمی‌کند. این ویژگی در صورت فعال و غیرفعال بودن، دو تریگر ارائه می‌دهد که می‌توانند تماس اضطراری با شماره ۱۱۲ را آغاز کنند، که تنها شماره اضطراری مورد استفاده در هند است و طبق مقررات DoT هند الزامی است.

تماس اضطراری توسط یکی از موارد زیر آغاز می‌شود:

فشار دادن طولانی مدت دکمه اضطراری
روی صفحه قفل
ضربه زدن روی گزینه اضطراری
در منوی اقدام جهانی
صفحه قفل که دکمه اضطراری را نشان می‌دهد

شکل ۱. دکمه اضطراری روی صفحه قفل.

منوی اقدام سراسری با گزینه اضطراری انتخاب شده

شکل ۲. اقدام اضطراری در منوی اقدامات کلی (با فشار طولانی مدت کلید پاور قابل دسترسی است).

این ویژگی اجزای داخلی زیر را معرفی می‌کند:

  • EmergencyAffordanceManager
        frameworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java
        
  • EmergencyAffordanceService
        frameworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
        

مدیر بودجه اضطراری

EmergencyAffordanceManager یک API داخلی برای استفاده از ویژگی Emergency Affordance ارائه می‌دهد. این API متدهایی برای شروع تماس اضطراری و پرس‌وجو در زمان اجرا در صورت نیاز به فعال بودن این ویژگی ارائه می‌دهد.

  • void performEmergencyCall() ‎ یک تماس اضطراری را آغاز می‌کند.
  • boolean needsEmergencyAffordance() . تعیین می‌کند که آیا ویژگی باید فعال باشد یا خیر.

این ویژگی می‌تواند در زمان ساخت با تغییر ثابت EmergencyAffordanceManager.ENABLED به false برای همیشه غیرفعال شود. این باعث می‌شود needsEmergencyAffordance() همیشه false برگرداند و از شروع EmergencyAffordanceService جلوگیری کند.

خدمات رفاهی اضطراری

EmergencyAffordanceService یک سرویس سیستمی است که کد کشور موبایل (MCC) تمام شبکه‌های تلفن همراه شناسایی‌شده و MCC سیم‌کارت‌های نصب‌شده را رصد می‌کند. اگر هر یک از سیم‌کارت‌های نصب‌شده یا شبکه‌های تلفن همراه شناسایی‌شده دارای MCC مطابق با یکی از MCCهای هند (404 یا 405) باشند، این ویژگی فعال می‌شود. این بدان معناست که این ویژگی را می‌توان در هند حتی بدون وجود سیم‌کارت فعال کرد. فرض بر این است که شبکه تلفن همراه حتی بدون نصب سیم‌کارت، ثبت نام برای تماس‌های اضطراری را مجاز می‌داند. این ویژگی تا زمانی که یک سیم‌کارت غیر هندی نصب شود و هیچ یک از شبکه‌های شناسایی‌شده MCC مطابق نداشته باشند، فعال می‌ماند.

منابع و تنظیمات زیر بر عملکرد ویژگی Emergency Affordance تأثیر می‌گذارند. اگر نوع پیکربندی:

  • منبع: یک منبع داخلی که در frameworks/base/core/res/res/values/config.xml تعریف شده است.
  • تنظیمات: تنظیماتی که در ارائه‌دهنده تنظیمات سیستم ذخیره شده است.

جدول 2. تنظیمات مؤثر بر رفتار ویژگی Emergency Affordance

نوع پیکربندی نام توضیحات
منبع شماره تماس اضطراری پیکربندی شماره تلفنی که هنگام شروع تماس اضطراری به طور خودکار شماره گیری می شود.
نوع: رشته
پیش‌فرض: ۱۱۲
منبع کدهای پیکربندی اضطراری mcc آرایه‌ای از اعداد صحیح که MCCهایی را که ویژگی باید در آنها فعال باشد، فهرست می‌کند.
نوع: آرایه‌ای از اعداد صحیح
پیش‌فرض: {404,405}
تنظیم شماره_تأمین_بودجه_اورژانسی تنظیمات سراسری با شماره‌ای که باید با قابلیت اضطراری تماس گرفته شود، لغو می‌شود. این فقط روی تصاویر ساخت قابل اشکال‌زدایی تأثیر می‌گذارد (یعنی نوع ساخت، userdebug یا eng است). این فقط برای آزمایش در نظر گرفته شده است.
نوع: رشته
پیش‌فرض: تنظیم نشده
تنظیم نیروی_اورژانسی_قابلیت_تامین تنظیم سراسری، اینکه آیا ویژگی Emergency Affordance صرف نظر از وضعیت دستگاه نمایش داده شود یا خیر. این فقط برای آزمایش در نظر گرفته شده است.
نوع: بولی (۱ یا ۰)
پیش‌فرض: غیرفعال --> 0

فعال کردن تماس‌های اضطراری با شماره ۱۱۲

ویژگی Emergency Affordance تماس را با استفاده از شماره‌گیر اضطراری متصل می‌کند تا تماس بتواند هنگام فعال بودن صفحه قفل نیز برقرار شود. شماره‌گیر اضطراری تماس‌ها را فقط از طریق ویژگی سیستم به لیست شماره‌های ارائه شده توسط لایه رابط رادیویی (RIL) متصل می‌کند:

  • ril.ecclist وقتی هیچ سیم‌کارتی نصب نشده باشد.
  • ril.ecclist SimSlotNumber زمانی که یک سیم‌کارت وارد می‌شود و SimSlotNumber شناسه اسلات مشترک پیش‌فرض است.

تولیدکنندگان دستگاه‌هایی که از ویژگی Emergency Affordance استفاده می‌کنند، باید تأیید کنند که دستگاه‌های موجود در هند همیشه شماره ۱۱۲ را به عنوان شماره اضطراری در RIL فعال می‌کنند.

اعتبارسنجی

هنگام آزمایش روی یک نسخه قابل اشکال‌زدایی، عددی که فراخوانی می‌شود را می‌توان با دستور زیر تغییر داد:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

اگرچه این تنظیم را می‌توان در یک نسخه معمولی کاربر تنظیم کرد، اما نادیده گرفته می‌شود. برای برقراری تماس، شماره باید در فهرست شماره‌های اضطراری ارائه شده توسط RIL باشد. این را می‌توان به طور موقت با استفاده از دستور زیر که از یک پوسته ریشه در یک دستگاه userdebug اجرا می‌شود، تنظیم کرد:

setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"

دستور زیر همچنین می‌تواند برای فعال کردن اجباری ویژگی Emergency Affordance حتی در غیاب شناسایی شبکه تلفن همراه هندی یا وارد کردن سیم‌کارت هندی استفاده شود.

adb shell settings put global force_emergency_affordance 1

حداقل، توصیه می‌شود موارد زیر را آزمایش کنید:

  • وقتی این ویژگی فعال می‌شود، با فشار دادن طولانی مدت دکمه اضطراری روی صفحه قفل (شکل ۱) تماس با شماره اضطراری مشخص شده آغاز می‌شود.
  • وقتی فعال شود، گزینه اضطراری در منوی اقدامات کلی نمایش داده می‌شود و با لمس آن، تماس با شماره اضطراری مشخص شده آغاز می‌شود.
  • این ویژگی در غیاب یک شبکه تلفن همراه هندی شناسایی شده با سیم کارت غیر هندی نصب شده فعال نمی‌شود .
  • این ویژگی صرف نظر از شبکه‌های تلفن همراه شناسایی‌شده، با نصب یک سیم‌کارت هندی روی دستگاه فعال می‌شود .
  • این ویژگی صرف نظر از سیم کارت‌های نصب شده، در صورت وجود شبکه تلفن همراه هند روی دستگاه فعال می‌شود .

اگر دستگاهی از چندین سیم‌کارت پشتیبانی می‌کند، آزمایش باید تأیید کند که تشخیص MCC سیم‌کارت در هر اسلات سیم‌کارت به درستی کار می‌کند. ویژگی Emergency Affordance تحت نظارت مجموعه تست سازگاری اندروید (CTS) نیست، بنابراین هیچ آزمایش CTS برای آن وجود ندارد.

سوالات متداول

س: شماره اضطراری ۱۱۲ هنوز در هند راه‌اندازی نشده است. آیا هنوز باید از آن استفاده کرد؟

۱۱۲ شماره‌ای است که در هند به عنوان نقطه پاسخگویی به امنیت عمومی (PSAP) طبق تعریف سیستم‌های یکپارچه ارتباطات و پاسخگویی اضطراری (IECRS) استفاده می‌شود. تا زمان راه‌اندازی PSAP، تمام تماس‌های گرفته شده با ۱۱۲ به شماره اضطراری ۱۰۰ موجود هدایت می‌شوند (البته این مسئولیت بر عهده اپراتور است، نه اندروید).

س: در مورد سایر محرک‌ها مانند سه بار فشار دادن دکمه پاور چطور؟

تولیدکنندگان دستگاه می‌توانند محرک‌های اضافی را پیاده‌سازی کنند. با این حال، در حالی که وزارت حمل و نقل هند سه بار ضربه زدن روی دکمه پاور سخت‌افزاری را تأیید می‌کند، این محرک در پیاده‌سازی مرجع AOSP پشتیبانی نمی‌شود ، زیرا برخی از برنامه‌های پرکاربرد (به عنوان مثال، برنامه دوربین) از حرکات دکمه پاور استفاده می‌کنند که شامل ضربه زدن مکرر به دکمه پاور است. چنین برنامه‌هایی ممکن است با شماره‌گیر اضطراری تداخل داشته باشند یا کاربر ممکن است هنگام تلاش برای فعال کردن اقدامات در این برنامه‌ها، به طور تصادفی دکمه وحشت را فعال کند.